]> gitweb.michael.orlitzky.com - untangle-https-backup.git/blobdiff - src/untangle/untangle.py
Add nominal support for Untangle v12 (which is the same as v11).
[untangle-https-backup.git] / src / untangle / untangle.py
index 09c5723c9c11a08a98dc250973716ec081ecdd3a..f8fd795aa49dbb3533d8f7a45d005a4d80f0b584 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,7 +18,7 @@ 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.
@@ -57,6 +61,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 +73,27 @@ 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 == 12:
+            # The procedure for v12 is the same as for v11.
+            return self.get_backup_v11()
 
 
     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')
@@ -83,6 +105,11 @@ class Untangle:
 
 
     def get_backup_v11(self):
+        """
+        Retrieve a backup from Untangle version 11.
+
+        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')