{
    use strict;
    use esmith::util;
    use esmith::ConfigDB;
    use esmith::AccountsDB;

    $OUT='';

    my $conf = esmith::ConfigDB->open() 
	or die "Unable to open configuration db";

    my $edb;
    
    $edb = esmith::ConfigDB->open('/home/e-smith/db/ddclient')
	or $edb = esmith::ConfigDB->create('/home/e-smith/db/ddclient');
    
    #------------------------------------------------------------
    # Look up domains and domain descriptions
    #------------------------------------------------------------

    my $key;
    my @virtualDomains = ();
    foreach my $domain ($edb->get_all_by_prop(type=>'ddhost'))
    {
	$key = $domain->key;
	push (@virtualDomains, $key);
    }

    my $numDomains = @virtualDomains;
    if ($numDomains > 0) {
	foreach my $dom (sort @virtualDomains)
	{
	    my $edom=$edb->get($dom);

	    if( defined $edom ) 
	    {
		my $dns      = $edom->prop('dns');
		   $dns =~ tr/a-z/A-Z/;
		my $login    = $edom->prop('login');
		my $password = $edom->prop('password');
                my $customdns = $edom->prop('customdns') || '';
                my $customprotocol = $edom->prop('customprotocol') || '';
		my $pubserv='';
		my $static='';
		my $custom='';
		my $wildcard='';
		my $mx=$edom->prop('mx') || '';
		my $backupmx='';
		my $protocol='';
		my $explain='';
		
		if( $dns eq 'DYNDNS1')
		    {
			$explain='## dyndns.org dynamic addresses';
			$pubserv ='members.dyndns.org';
			$protocol='dyndns2';
			$static='no';
			$custom='no';
			$wildcard='yes';
		    }
		elsif( $dns eq 'DYNDNS2')
		    {
			$explain='## dyndns.org static addresses';
			$pubserv ='members.dyndns.org';
			$protocol='dyndns2';
			$static  ='yes';
			$custom  ='no';
			$wildcard='yes';
		    }
		elsif( $dns eq 'DYNDNS3')
		    {
			$explain='## dyndns.org static2 addresses';
			$pubserv='members.dyndns.org';
			$custom  ='yes';
			$protocol='dyndns2';
			$static  ='';
			$wildcard='yes';
		    }
		elsif( $dns eq 'ZONEDIT')
		    {
			$explain='## zoneedit dynamic addresses';
			$pubserv='dynamic.zoneedit.com';
			$protocol='zoneedit1';
		    }
		elsif( $dns eq 'EASYDNS')
		    {
			$explain='## easydns.com dynamic addresses';
			$pubserv='members.easydns.com';
			$protocol='easydns';
		    }
		elsif( $dns eq 'HAMMER')
		    {
			$explain='## hammer dup.hn.org dynamic addresses';
			$pubserv='dup.hn.org';
			$protocol='hammernode1';
		    }
		elsif( $dns eq 'DSLREPORTS' )
		    {
			$explain='## dslreports.org dynamic addresses';
			$pubserv='members.dslreports.com';
			$protocol='dslreports1';
		    }
		elsif( $dns eq 'EURODYNDNS' )
		    {
			$explain='## euroddyndns.org dynamic addresses';
			$pubserv='eurodyndns.org';
			$protocol='namecheap';
		    }
		elsif( $dns eq 'DTDNS' )
		    {
			$explain='## DtDNS (www.dtdns.com) dynamic addresses';
			$pubserv='www.dtdns.com';
			$protocol='dtdns';
		    }
		elsif( $dns eq 'LOOPIA' )
		    {
			$explain='## Loopia (loopia.se) dynamic addresses';
			$pubserv='dns.loopia.se';
			$protocol='dyndns2';
		    }
		elsif( $dns eq 'DNSPARK' )
		    {
			$explain='## dnspark.com dynamic addresses';
			$pubserv='www.dnspark.com';
			$protocol='dnspark';
		    }
		elsif( $dns eq 'DYNHOST' )
		    {
			$explain='## DynHost (ovh.com) dynamic addresses';
			$pubserv='www.ovh.com';
			$protocol='dyndns2';
		    }
		elsif( $dns eq 'NOIP' )
		    {
			$explain='## Noip (noip.com) dynamic addresses';
			$pubserv='dynupdate.no-ip.com';
			$protocol='noip';
		    }
		elsif( $dns eq 'CHANGEIP' )
		    {
			$explain='## ChangeIP (changeip.com) dynamic addresses';
			$pubserv='nic.changeip.com';
			$protocol='dyndns2';
		    }				

                elsif( $dns eq 'NAMECHEAP' )
                    {
                        $explain='## NAMECHEAP (namecheap.com) dynamic addresses';
                        $pubserv='dynamicdns.park-your-domain.com';
                        $protocol='namecheap';
                    }
		
                elsif( $dns eq 'SPDNS' )
                    {
                        $explain='## SPDNS (spdyn.de FORMER spdns.de) dynamic addresses';
                        $pubserv='update.spdyn.de'; # update.spdyn.de (IPv4 + IPv6) update4.spdyn.de (IPv4 only) update6.spdyn.de (IPv6 only)
                        $pubserv='update.spdns.de';
                        $protocol='dyndns2';
                    }

                elsif( $dns eq 'CUSTOMDNS' )
                    {
                        $explain='## CUSTOMDNS PROVIDER dynamic addresses';
                        $pubserv= $customdns;
                        $protocol= $customprotocol;
                    }

		if($pubserv ne '')
		{
		    $OUT .="##\n";
		    $OUT .=$explain."\n";
		    $OUT .="##\n";
		    $OUT .="server=".$pubserv.", \\\n";
		    $OUT .="protocol=".$protocol.", \\\n";
		    if( $dns eq 'DTDNS' ) {
			$OUT .="client=ddclient, \\\n";
		    }
		    if( $dns eq 'LOOPIA' ) {
			$OUT .="use=web, \\\n";
			$OUT .="web=loopia, \\\n";
			$OUT .="script=/XDynDNSServer/XDynDNS.php, \\\n";
		    }
		    if($static ne '') {
		    	$OUT .="static=".$static.", \\\n";
		    }
		    
		    if($wildcard ne '') {
		    	$OUT .="wildcard=".$wildcard.", \\\n";
		    }
		    
		    if($custom ne '') {
		    	$OUT .="custom=".$custom.", \\\n";
		    }
		    
		    if ($mx ne '') {
			$OUT .="mx=".$mx.", \\\n";
		    }
		    
		    $OUT .="login=".$login.", \\\n";
		    $OUT .="password=".$password." \\\n";
                    $OUT .="\@\n" if ( $dns eq 'NAMECHEAP' );

		    $OUT .=$edom->key()."\n" if ( $dns ne 'NAMECHEAP' );
		    $OUT .="##\n";
		    $OUT .="##\n";
		}
	    }
	}
    }
}

