complete documentation with client setup
[dyn-nsupdate.git] / client-scripts / dyn-ns-client
index 2923e066d5a868f4a446fce3631bdb52c33e0494..0fc88e6fc978f3195f4c2d4b6b4e1740c930fd0d 100755 (executable)
 # The views and conclusions contained in the software and documentation are those
 # of the authors and should not be interpreted as representing official policies, 
 # either expressed or implied, of the FreeBSD Project.
 # The views and conclusions contained in the software and documentation are those
 # of the authors and should not be interpreted as representing official policies, 
 # either expressed or implied, of the FreeBSD Project.
-
-import urllib.request, socket, sys, argparse
-
+#==============================================================================
 # configuration variables
 # configuration variables
-domains = ['domain.dyn.ralfj.de'] # list of domains to update
-password = 'yourpassword'
+domains = ['test.dyn.example.com'] # list of domains to update
+password = 'some_secure_password'
 haveIPv4 = True
 haveIPv6 = False
 
 haveIPv4 = True
 haveIPv6 = False
 
-serverIPv4 = 'ipv4.ns.ralfj.de' # Only needed if haveIPv4 is True. This server should NOT have an AAAA record!
-serverIPv6 = 'ipv6.ns.ralfj.de' # Only needed if haveIPv6 is True. This server should NOT have an A record!
-server     = 'ns.ralfj.de'
+serverIPv4 = 'ipv4.ns.example.com' # Only needed if haveIPv4 is True. This server should NOT have an AAAA record!
+serverIPv6 = 'ipv6.ns.example.com' # Only needed if haveIPv6 is True. This server should NOT have an A record!
+server     = 'ns.example.com'
 # END of configuration variables
 # END of configuration variables
+#==============================================================================
+
+import urllib.request, socket, sys, argparse
 
 def urlopen(url):
     return urllib.request.urlopen(url).read().decode('utf-8').strip()
 
 def urlopen(url):
     return urllib.request.urlopen(url).read().decode('utf-8').strip()
@@ -47,7 +48,8 @@ def getMyIP(server):
 
 def getCurIP(domain, family):
     try:
 
 def getCurIP(domain, family):
     try:
-        return socket.getaddrinfo(domain, None, family=family)[0][4][0]
+        addr = socket.getaddrinfo(domain, None, family=family)
+        return addr[0][4][0]
     except socket.gaierror: # domain not found
         return ""
 
     except socket.gaierror: # domain not found
         return ""
 
@@ -64,6 +66,8 @@ def update_domain(server, domain, ipv4, ipv6, password, verbose):
     # check what the domain is currently mapped to
     curIPv4 = getCurIPv4(domain)
     curIPv6 = getCurIPv6(domain)
     # check what the domain is currently mapped to
     curIPv4 = getCurIPv4(domain)
     curIPv6 = getCurIPv6(domain)
+    if verbose:
+        print("Current status of domain {0} is: IPv4 address '{1}', IPv6 address '{2}'".format(domain, curIPv4, curIPv6))
     
     # check if there's something to do
     needUpdate = (ipv4 is not None and curIPv4 != ipv4) or (ipv6 is not None and curIPv6 != ipv6)
     
     # check if there's something to do
     needUpdate = (ipv4 is not None and curIPv4 != ipv4) or (ipv6 is not None and curIPv6 != ipv6)
@@ -108,9 +112,20 @@ if __name__ == "__main__":
                         help="The domains to update")
     args = parser.parse_args()
 
                         help="The domains to update")
     args = parser.parse_args()
 
-    # get our own IPs
-    myIPv4 = getMyIP(serverIPv4) if haveIPv4 else None
-    myIPv6 = getMyIP(serverIPv6) if haveIPv6 else None
+    # get our own IPv4
+    if haveIPv4:
+        myIPv4 = getMyIP(serverIPv4)
+        if args.verbose:
+            print("My IPv4 is",myIPv4)
+    else:
+        myIPv4 = None
+    # and IPv6
+    if haveIPv6:
+        myIPv6 = getMyIP(serverIPv6)
+        if args.verbose:
+            print("My IPv6 is",myIPv6)
+    else:
+        myIPv6 = None
 
     # update all the domains
     exitcode = 0
 
     # update all the domains
     exitcode = 0