]> gitweb.michael.orlitzky.com - untangle-https-backup.git/blobdiff - src/untangle/untangle.py
Rearrange a comment.
[untangle-https-backup.git] / src / untangle / untangle.py
index 09c5723c9c11a08a98dc250973716ec081ecdd3a..31ab60e4d7a9f4291edfca8ec8f987c160fb9273 100644 (file)
@@ -5,7 +5,11 @@ import urllib.parse
 import urllib.request
 
 class Untangle:
-
+    """
+    This class wraps one instance of Untangle. It gets initialized with
+    some configuration information, and then provides the methods to
+    retreive a backup.
+    """
     def __init__(self, s):
         """
         Initialize this Untangle object with a ConfigParser section.
@@ -14,11 +18,11 @@ class Untangle:
         self.host = s['host']
         self.username = s.get('username', 'admin')
         self.password = s['password']
-        self.version = int(s.get('version', '11'))
+        self.version = int(s.get('version', '12'))
         self.base_url = 'https://' + self.host + '/' # This never changes
 
         # Sanity check the numerical version.
-        if self.version not in [9, 11]:
+        if self.version not in [9, 10, 11, 12]:
             msg =  'Invalid version "' + str(self.version) + '" '
             msg += 'in section "' + s.name + '"'
             raise configparser.ParsingError(msg)
@@ -34,7 +38,6 @@ class Untangle:
             msg += 'in section "' + s.name + '"'
             raise configparser.ParsingError(msg)
 
-        #
         # Finally, create a URL opener to make HTTPS requests.
         #
         # First, create a cookie jar that we'll attach to our URL
@@ -57,6 +60,10 @@ class Untangle:
 
 
     def login(self):
+        """
+        Perform the HTTPS request to log in to the Untangle web admin
+        UI. The resulting session cookie is stored by our ``self.opener``.
+        """
         login_path = 'auth/login?url=/setup/welcome.do&realm=Administrator'
         url = self.base_url + login_path
         post_vars = {'username': self.username, 'password': self.password }
@@ -65,13 +72,25 @@ class Untangle:
 
 
     def get_backup(self):
+        """
+        Version-agnostic get-me-a-backup method. Dispatches to the
+        actual implementation based on ``self.version``.
+        """
         if self.version == 9:
             return self.get_backup_v9()
-        elif self.version == 11:
-            return self.get_backup_v11()
+        elif self.version in [10, 11, 12]:
+            # The procedure for v11 or v12 is the same as for v10.
+            return self.get_backup_v10()
 
 
     def get_backup_v9(self):
+        """
+        Retrieve a backup from Untangle version 9. This requires two
+        requests; the first just hits the page, and the second actually
+        retrieves the backup file.
+
+        Returns the binary HTTPS response (i.e. the file).
+        """
         url = self.base_url + '/webui/backup'
         post_vars = {'action': 'requestBackup'}
         post_data = urllib.parse.urlencode(post_vars).encode('ascii')
@@ -82,7 +101,12 @@ class Untangle:
             return response.read()
 
 
-    def get_backup_v11(self):
+    def get_backup_v10(self):
+        """
+        Retrieve a backup from Untangle version 10.
+
+        Returns the binary HTTPS response (i.e. the file).
+        """
         url = self.base_url + '/webui/download?type=backup'
         post_vars = {'type': 'backup'}
         post_data = urllib.parse.urlencode(post_vars).encode('ascii')