User Interfaces DNS Boss has several User Interfaces: 1) The standard X User Interface. Example: ________ # /opt/DNSBoss/bin/dnsboss 2) The Web User Interface. To run the Web User Interface, a user must add an entry for themself in the /opt/DNSBoss/etc/passwd.txt file, and then start the DNS Boss Web application server. Nothing else should need to be configured to get the standard Web UI working. This would give jane_doe web access with a password of: janes-secret-password, and she would have access to all DNS domains from the Web UI. Example: ________ # vi /opt/DNSBoss/etc/passwd.txt jane_doe:janes-secret-password:* # /opt/DNSBoss/bin/S99dnsbossweb start # netscape https://localhost:8080 3) The Command Line User Interface. The following shows the Command Line Interface options. Example: ________ # /opt/DNSBoss/bin/dnsboss_commandline -help /opt/DNSBoss/bin/dnsboss /opt/DNSBoss/bin/dnsboss_commandline -help /opt/DNSBoss/bin/dnsboss_commandline -gui /opt/DNSBoss/bin/dnsboss_commandline -autobuild_all_domains /opt/DNSBoss/bin/dnsboss_commandline -autobuild your_domain.com /opt/DNSBoss/bin/dnsboss_commandline -autobuild_no_restart your_domain.com /opt/DNSBoss/bin/dnsboss_commandline -add_domain your_domain.com /opt/DNSBoss/bin/dnsboss_commandline -delete_domain your_domain.com /opt/DNSBoss/bin/dnsboss_commandline -converter /opt/DNSBoss/bin/dnsboss_commandline -license_agree /opt/DNSBoss/bin/dnsboss_commandline -add_ip_to_domain your_domain.com subnet ip name /opt/DNSBoss/bin/dnsboss_commandline -add_host_to_next_available_ip name your_domain.com subnet true /opt/DNSBoss/bin/dnsboss_commandline -remove_host name your_domain.com /opt/DNSBoss/bin/dnsboss_commandline -ip_exists ip /opt/DNSBoss/bin/dnsboss_commandline -name_exists_in_domain name yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_all_domains /opt/DNSBoss/bin/dnsboss_commandline -list_names_in_domain yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_domain yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_domain yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_names_in_domain yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_cnames_in_domain yourdomain.com /opt/DNSBoss/bin/dnsboss_commandline -list_ips_in_all_domains /opt/DNSBoss/bin/dnsboss_commandline -list_subnets_in_all_domains /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_in_all_domains /opt/DNSBoss/bin/dnsboss_commandline -list_duplicate_ips_names_and_cnames_in_all_domains /opt/DNSBoss/bin/dnsboss_commandline -list_percent_fill_of_ip_address_space_in_all_domains /opt/DNSBoss/bin/dnsboss_commandline -set_property default_dns_server ns1.yourdomain.com /opt/DNSBoss/etc/server.properties /opt/DNSBoss/bin/dnsboss_commandline -license /opt/DNSBoss/bin/dnsboss_commandline -version /opt/DNSBoss/bin/dnsboss_commandline -show_authorized_domains jane_doe /opt/DNSBoss/bin/lockdnboss 4) The Java API. Because of the open, extensible, nature of DNS Boss, Developers, Systems Integrators, and Systems Administrators can easily extend the DNS Boss product and integrate it into their environment. Because it is widely accepted, powerful, and safe, the Java programming language was selected as the programming interface. To see an already working, pre-built, example which exercises most of the capabilities of the Java API, do the following. Example: ________ # cd /opt/DNSBoss/lib/tools/java_api # ./api_demo To see the Java source used to run the api_demo, just look at the APIDemo.java source. Example: ________ # cat APIDemo.java /* APIDemo.java This stand alone Java application demonstrates the features of the DNS Boss Java API. */ import java.util.Vector; import java.util.TreeMap; import java.util.Iterator; class APIDemo { APIDemo() { DNSBoss myDNSBoss = new DNSBoss(); System.out.println( "___________________________________________________________________________________" ); TreeMap domainNamesTreeMap = myDNSBoss.getDomainNames(); int domainNamesCounter = 0; for ( Iterator mainIterator = domainNamesTreeMap.keySet().iterator(); mainIterator.hasNext(); ) { ++domainNamesCounter; String dns_domain = (String)mainIterator.next(); System.out.println( " " ); System.out.println( "___________________________________________________" ); System.out.println( "DNS domain #" + domainNamesCounter + ": " + dns_domain ); // // List all subnets. // TreeMap subNetsForDomainTreeMap = myDNSBoss.getSubNetsForDomain( dns_domain ); int subNetsForDomainCounter = 0; for ( Iterator myIterator = subNetsForDomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) { ++subNetsForDomainCounter; String subNet = (String)myIterator.next(); System.out.println( subNetsForDomainCounter + " Subnets for " + dns_domain + ": " + subNet ); } // // List all available IP's for a subnet. // System.out.println( "___________________________________________________" ); System.out.println( "Available IP's:" ); TreeMap subNetsForDomainTreeMap1 = myDNSBoss.getSubNetsForDomain( dns_domain ); subNetsForDomainCounter = 0; for ( Iterator myIterator = subNetsForDomainTreeMap1.keySet().iterator(); myIterator.hasNext(); ) { ++subNetsForDomainCounter; String subNet = (String)myIterator.next(); System.out.println( subNetsForDomainCounter + " Subnets for " + dns_domain + ": " + subNet ); Vector availableIPsVector = myDNSBoss.getAllAvailableIPsForDomainOnSubNet( dns_domain, subNet ); for ( int i=0;i < availableIPsVector.size();++i) { String anAvailableIP = (String)availableIPsVector.elementAt(i); System.out.println( "Available IP for domain: " + dns_domain + " on subnet: " + subNet + " IP: " + anAvailableIP ); } } System.out.println( "___________________________________________________" ); System.out.println( " " ); // // Add a host. // System.out.println( "___________________________________________________" ); System.out.println( "Add hosts" ); TreeMap subNetsForDomainTreeMap2 = myDNSBoss.getSubNetsForDomain( dns_domain ); for ( Iterator myIterator = subNetsForDomainTreeMap2.keySet().iterator(); myIterator.hasNext(); ) { String subNet = (String)myIterator.next(); // Use: true to really write the next available IP. boolean write = false; String addHostToNextAvailableIP = myDNSBoss.addHostToNextAvailableIPForDomainOnSubNet( "robin", dns_domain, subNet, write ); System.out.println( " Prepared to add: " + addHostToNextAvailableIP ); } // // List out names in a domain. // System.out.println( "___________________________________________________" ); TreeMap namesInADomainTreeMap = myDNSBoss.getNamesInADomain( dns_domain ); int namesInADomainCounter = 0; for ( Iterator myIterator = namesInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) { ++namesInADomainCounter; String name = (String)myIterator.next(); if ( namesInADomainTreeMap.containsKey( name ) ) { System.out.println( namesInADomainCounter + " Unique name for " + dns_domain + ": " + name ); } System.out.println( " " + name + "." + dns_domain + " exists: " + myDNSBoss.nameExistsInDomain( name, dns_domain ) ); } // // List out unique IP's in a domain. // System.out.println( "___________________________________________________" ); TreeMap uniqueIPsInADomainTreeMap = myDNSBoss.getUniqueIPsInADomain( dns_domain ); int uniqueIPsInADomainCounter = 0; for ( Iterator myIterator = uniqueIPsInADomainTreeMap.keySet().iterator(); myIterator.hasNext(); ) { ++uniqueIPsInADomainCounter; String ip = (String)myIterator.next(); if ( uniqueIPsInADomainTreeMap.containsKey( ip ) ) { System.out.println( uniqueIPsInADomainCounter + " Unique IP for " + dns_domain + ": " + ip ); } } // // List out unique names in a domain. // System.out.println( "___________________________________________________" ); System.out.println( "Hosts:" ); Vector aDomainsHostDataVector = myDNSBoss.getHostsInADomain( dns_domain ); for ( int i=0;i < aDomainsHostDataVector.size();++i) { HostEntry myHostEntry = (HostEntry)aDomainsHostDataVector.elementAt(i); System.out.println( i + " " + myHostEntry.getIP() + " " + myHostEntry.getName() ); } // // List duplicate names in a domain. // System.out.println( "___________________________________________________" ); System.out.println( "Duplicate names in: " + dns_domain ); Vector duplicateNamesInADomainVector = myDNSBoss.getDuplicateNamesInADomain( dns_domain ); for ( int i=0;i < duplicateNamesInADomainVector.size();++i) { System.out.println( duplicateNamesInADomainVector.elementAt(i) ); } System.out.println( "___________________________________________________" ); System.out.println( " " ); System.out.println( "___________________________________________________________________________________" ); } // // List all IP's and names in all domains. // System.out.println( "___________________________________________________________________________________" ); System.out.println( " " ); System.out.println( "Listing all IP's and names in all domains." ); System.out.println( " " ); displayTreeMap( myDNSBoss.getGlobalIPsAndNames() ); System.out.println( " " ); System.out.println( "___________________________________________________________________________________" ); // // List all subnets in all domains. // System.out.println( " " ); System.out.println( "Listing all subnets in all domains." ); System.out.println( " " ); displayTreeMap2( myDNSBoss.getGlobalSubNets() ); System.out.println( " " ); System.out.println( "___________________________________________________________________________________" ); // // Listing all duplicate: IP's, names, and CNAMES in all domains. // System.out.println( " " ); System.out.println( "Listing all duplicate: IP's, names, and CNAMES in all domains. " ); System.out.println( " " ); displayVector( myDNSBoss.getDuplicateIPsNamesAndCNamesInAllDomains() ); System.out.println( " " ); System.out.println( "___________________________________________________________________________________" ); // // Listing only duplicate IP's in all domains. // System.out.println( " " ); displayVector( myDNSBoss.getGlobalDuplicateIPs() ); System.out.println( " " ); System.out.println( "___________________________________________________________________________________" ); } public void displayVector( Vector myVector ) { for(int i=0;i < myVector.size();++i) { System.out.println( (String)myVector.elementAt(i) ); } } public void displayTreeMap( TreeMap myTreeMap ) { for ( Iterator myIterator = myTreeMap.keySet().iterator(); myIterator.hasNext(); ) { String data = (String)myIterator.next(); System.out.println( myTreeMap.get( data ) ); } } public void displayTreeMap2( TreeMap myTreeMap ) { for ( Iterator myIterator = myTreeMap.keySet().iterator(); myIterator.hasNext(); ) { String data = (String)myIterator.next(); System.out.println( data ); } } public static void main(String args[]) { new APIDemo(); } }