none

 
UI's: X, Web, Command, API
Download Full Demo Now
Reduce Operations Costs
Technical Information
Staging / Failover
IP Management
Snapshots
Solaris 10!
README
Converter
Buy Online
Documentation
BIND: 4.x, 8.x, 9.x
Open And Extensible
Platforms: Solaris, Linux
Other resources
Backup Power Generators
 

none

DNS file generators for UNIX. With the DNS Boss file generators, you can easily create your ASCII DNS BIND files for your DNS servers. No need to do it by hand.
none none none none





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();
     }

}