Java API DNS Boss has an extremely powerful Java API to modify data, and generate reports. With the DNS Boss API, a rich set of features become available to: customize, automate, and program your DNS environment. To demo the DNS Boss API, simply do the following: # cd /opt/DNSBoss/lib/tools/java_api # ls api_demo APIDemo.java # ./api_demo The APIDemo.java Java program gives a running example of how to use the features of the API. When recompiling, make sure to use SDK 1.2 or greater, and use the following CLASSPATH. Example: /usr/java/bin/javac -classpath \ /usr/java/lib/rt.jar:/opt/DNSBoss/lib/dnsboss.jar:/opt/DNSBoss/lib/tools/java_api \ APIDemo.java For best results, create a few DNS domains and add some sample data into each domain. Then run: /opt/DNSBoss/lib/tools/java_api/api_demo. Here is the current version of the Java API example source code. /* 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( " " ); displayTreeMap( 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 static void main(String args[]) { new APIDemo(); } }