[tor-commits] [gettor/master] Better format for sending the links

ilv at torproject.org ilv at torproject.org
Tue Nov 3 19:31:30 UTC 2015


commit c745cbd07d09b368b058b208a51c5ae66e8aa736
Author: ilv <ilv at users.noreply.github.com>
Date:   Thu Aug 27 15:16:08 2015 -0300

    Better format for sending the links
---
 gettor/core.py                      |   86 +++++++++++++++++++++++++++++++----
 gettor/smtp.py                      |   19 +++++---
 lang/core/i18n/en/en.po             |    2 +-
 lang/smtp/i18n/en/LC_MESSAGES/en.po |    4 +-
 4 files changed, 94 insertions(+), 17 deletions(-)

diff --git a/gettor/core.py b/gettor/core.py
index 219fed2..49fbbb2 100644
--- a/gettor/core.py
+++ b/gettor/core.py
@@ -197,7 +197,18 @@ class Core(object):
 
         # read the links files using ConfigParser
         # see the README for more details on the format used
-        links = []
+        links_files = []
+        
+        links32 = {}
+        links64 = {}
+        
+        # for the message to be sent
+        if osys == 'windows':
+            arch = '32/64'
+        elif osys == 'osx':
+            arch = '64'
+        else:
+            arch = '32'
 
         # look for files ending with .links
         p = re.compile('.*\.links$')
@@ -205,7 +216,7 @@ class Core(object):
         for name in os.listdir(self.linksdir):
             path = os.path.abspath(os.path.join(self.linksdir, name))
             if os.path.isfile(path) and p.match(path):
-                links.append(path)
+                links_files.append(path)
 
         # let's create a dictionary linking each provider with the links
         # found for os and lc. This way makes it easy to check if no
@@ -216,7 +227,7 @@ class Core(object):
         spt = '=' * 72
 
         # reading links from providers directory
-        for name in links:
+        for name in links_files:
             # we're reading files listed on linksdir, so they must exist!
             config = ConfigParser.ConfigParser()
             # but just in case they don't
@@ -231,14 +242,34 @@ class Core(object):
 
                 # check if current provider pname has links for os in lc
                 providers[pname] = config.get(osys, lc)
-                # avoid showing it all together
-                providers[pname] = providers[pname].replace(",", "")
-                providers[pname] = providers[pname].replace("$", "\n\n")
+            except ConfigParser.Error as e:
+                # we should at least have the english locale available
+                self.log.error("Request for %s, returning 'en' instead" % lc)
+                providers[pname] = config.get(osys, 'en')
+            try:
+                #test = providers[pname].split("$")
+                #self.log.debug(test)
+                if osys == 'linux':
+                    t32, t64 = [t for t in providers[pname].split(",") if t]
+                    
+                    link, signature, chs32 = [l for l in t32.split("$") if l]
+                    links32[link] = signature
+
+                    link, signature, chs64 = [l for l in t64.split("$") if l]
+                    links64[link] = signature
+                    
+                else:
+                    link, signature, chs32 = [l for l in providers[pname].split("$") if l]
+                    links32[link] = signature
+                    
+                #providers[pname] = providers[pname].replace(",", "")
+                #providers[pname] = providers[pname].replace("$", "\n\n")
 
                 # all packages are signed with same key
                 # (Tor Browser developers)
                 fingerprint = config.get('key', 'fingerprint')
-                fingerprint_msg = self._get_msg('fingerprint', lc)
+                # for now, english messages only
+                fingerprint_msg = self._get_msg('fingerprint', 'en')
                 fingerprint_msg = fingerprint_msg % fingerprint
             except ConfigParser.Error as e:
                 raise InternalError("%s" % str(e))
@@ -246,10 +277,47 @@ class Core(object):
         # create the final links list with all providers
         all_links = []
 
+        msg = "Tor Browser %s-bit:" % arch
+        for link in links32:
+            msg = "%s\n%s" % (msg, link)
+            
+        all_links.append(msg)
+        
+        if osys == 'linux':
+            msg = "\n\n\nTor Browser 64-bit:"
+            for link in links64:
+                msg = "%s\n%s" % (msg, link)
+        
+            all_links.append(msg)
+        
+        msg = "\n\n\nTor Browser's signature %s-bit (in the same order):" %\
+              arch
+        for link in links32:
+            msg = "%s\n%s" % (msg, links32[link])
+        
+        all_links.append(msg)
+        
+        if osys == 'linux':
+            msg = "\n\n\nTor Browser's signature 64-bit:"
+            for link in links64:
+                msg = "%s\n%s" % (msg, links64[link])
+            
+            all_links.append(msg)
+        
+        msg = "\n\n\nSHA256 of Tor Browser %s-bit (advanced): %s\n" %\
+              (arch, chs32)
+        all_links.append(msg)
+        
+        if osys == 'linux':
+            msg = "SHA256 of Tor Browser 64-bit (advanced): %s\n" % chs64
+            all_links.append(msg)
+
+        """
         for key in providers.keys():
             # get more friendly description of the provider
             try:
-                provider_desc = self._get_msg('provider_desc', lc)
+                # for now, english messages only
+                provider_desc = self._get_msg('provider_desc', 'en')
                 provider_desc = provider_desc % key
 
                 all_links.append(
@@ -258,6 +326,7 @@ class Core(object):
                 )
             except ConfigError as e:
                 raise InternalError("%s" % str(e))
+        """
 
         # add fingerprint after the links
         all_links.append(fingerprint_msg)
@@ -405,6 +474,7 @@ class Core(object):
         """Add request to database."""
         self.log.debug("Trying to add request to database")
         try:
+            self.db.connect()
             self.db.add_request()
             self.log.debug("Request added!")
         except db.DBError as e:
diff --git a/gettor/smtp.py b/gettor/smtp.py
index 4db3ac7..34477ef 100644
--- a/gettor/smtp.py
+++ b/gettor/smtp.py
@@ -76,7 +76,7 @@ class SMTP(object):
         config = ConfigParser.ConfigParser()
 
         if cfg is None or not os.path.isfile(cfg):
-            cfg = DEFAULT_CONFIG_FILE
+            cfg = default_cfg
 
         try:
             with open(cfg) as f:
@@ -240,7 +240,12 @@ class SMTP(object):
         """
         req = self._parse_text(msg)
         lc = self._get_lc(addr)
-        req['lc'] = lc
+        supported_lc = self.core.get_supported_lc()
+
+        if lc in supported_lc:
+            req['lc'] = lc
+        else:
+            req['lc'] = 'en'
 
         return req
 
@@ -361,8 +366,8 @@ class SMTP(object):
         """
         # obtain the content in the proper language and send it
         try:
-            links_subject = self._get_msg('links_subject', lc)
-            links_msg = self._get_msg('links_msg', lc)
+            links_subject = self._get_msg('links_subject', 'en')
+            links_msg = self._get_msg('links_msg', 'en')
             links_msg = links_msg % (os, lc, links)
 
             self._send_email(
@@ -490,7 +495,7 @@ class SMTP(object):
                     self.log.debug("Trying to send help...")
                     # make sure we can send emails
                     try:
-                        self._send_help(req['lc'], our_addr, norm_from_addr)
+                        self._send_help('en', our_addr, norm_from_addr)
                         status = 'success'
                     except SendEmailError as e:
                         status = 'internal_error'
@@ -503,7 +508,7 @@ class SMTP(object):
                     self.log.debug("Trying to send the mirrors...")
                     # make sure we can send emails
                     try:
-                        self._send_mirrors(req['lc'], our_addr, norm_from_addr)
+                        self._send_mirrors('en', our_addr, norm_from_addr)
                         status = 'success'
                     except SendEmailError as e:
                         status = 'internal_error'
@@ -519,7 +524,7 @@ class SMTP(object):
                             'SMTP', req['os'], req['lc']
                         )
                     # if core fails, we fail too
-                    except (core.InternalError, core.ConfigurationError) as e:
+                    except (core.InternalError, core.ConfigError) as e:
                         status = 'core_error'
                         self.log.debug("FAILED: %s" % str(e))
                         # something went wrong with the core
diff --git a/lang/core/i18n/en/en.po b/lang/core/i18n/en/en.po
index b8d4509..0b28a70 100644
--- a/lang/core/i18n/en/en.po
+++ b/lang/core/i18n/en/en.po
@@ -2,7 +2,7 @@ domain "en"
 
 #: Fingerprint message
 msgid "fingerprint"
-msgstr "Fingerprint of the key used to sign Tor Browser:\n%s"
+msgstr "Fingerprint of key used to sign Tor Browser (advanced): %s"
 
 #: Provider description
 msgid "provider_desc"
diff --git a/lang/smtp/i18n/en/LC_MESSAGES/en.po b/lang/smtp/i18n/en/LC_MESSAGES/en.po
index dcb2e35..ee6a24e 100644
--- a/lang/smtp/i18n/en/LC_MESSAGES/en.po
+++ b/lang/smtp/i18n/en/LC_MESSAGES/en.po
@@ -28,6 +28,7 @@ Below are the links for your request (Tor Browser for %s, %s package):\n\
 \n\
 %s\n\
 \n\
+===========================================================================\n\
 Still need help? If you have any questions, trouble connecting to Tor\n\
 network, or need to talk to a human, please contact our support team at:\n\
 \n\
@@ -63,7 +64,8 @@ Please reply to this message with one of the options below:\n\
     windows\n\
     linux\n\
     osx\n\
+    mirrors\n\
 \n\
-And I will send you the download instructions quickly.\n\
+And I will send you the download/access instructions quickly.\n\
 \n\
 Tip: Just send a blank reply to this message if you are not sure."





More information about the tor-commits mailing list