[Checkins] SVN: grokproject/trunk/ fix the tests for the extends-cache directory, ecnode the initial password as ssha

Jan-Wijbrand Kolman janwijbrand at gmail.com
Tue May 18 08:08:13 EDT 2010


Log message for revision 112444:
  fix the tests for the extends-cache directory, ecnode the initial password as ssha

Changed:
  U   grokproject/trunk/grokproject/template/etc/site.zcml.in_tmpl
  U   grokproject/trunk/grokproject/templates.py
  U   grokproject/trunk/grokproject/utils.py
  U   grokproject/trunk/tests_alternative_release_url.txt
  U   grokproject/trunk/tests_paste.txt

-=-
Modified: grokproject/trunk/grokproject/template/etc/site.zcml.in_tmpl
===================================================================
--- grokproject/trunk/grokproject/template/etc/site.zcml.in_tmpl	2010-05-18 11:25:17 UTC (rev 112443)
+++ grokproject/trunk/grokproject/template/etc/site.zcml.in_tmpl	2010-05-18 12:08:13 UTC (rev 112444)
@@ -16,7 +16,7 @@
       <principal id="zope.manager"
                  title="Manager"
                  login=${user}
-                 password_manager="SHA1"
+                 password_manager="SSHA"
                  password=${passwd}
                  />
 

Modified: grokproject/trunk/grokproject/templates.py
===================================================================
--- grokproject/trunk/grokproject/templates.py	2010-05-18 11:25:17 UTC (rev 112443)
+++ grokproject/trunk/grokproject/templates.py	2010-05-18 12:08:13 UTC (rev 112444)
@@ -8,7 +8,7 @@
 from grokproject.utils import run_buildout
 from grokproject.utils import ask_var
 from grokproject.utils import get_boolean_value_for_option
-from grokproject.utils import get_sha1_encoded_string
+from grokproject.utils import get_ssha_encoded_string
 from grokproject.utils import create_buildout_default_file
 from grokproject.utils import exist_buildout_default_file
 
@@ -63,7 +63,7 @@
         for name in skipped_vars:
             vars[name] = skipped_vars[name]
 
-        vars['passwd'] = get_sha1_encoded_string(vars['passwd'])            
+        vars['passwd'] = get_ssha_encoded_string(vars['passwd'])
         for var_name in ['user', 'passwd']:
             # Escape values that go in site.zcml.
             vars[var_name] = xml.sax.saxutils.quoteattr(vars[var_name])
@@ -99,9 +99,9 @@
 
         vars['package_directory'] = os.path.abspath(os.path.join(
                 os.getcwd(), vars['project']))
-        
+
         return vars
-    
+
     def download(self, url):
         """Downloads a file and returns the contents.
 
@@ -122,7 +122,7 @@
             print "Server may be down.  Please try again later."
             sys.exit(1)
         return contents
-    
+
     def post(self, command, output_dir, vars):
         if not vars['run_buildout']:
             return

Modified: grokproject/trunk/grokproject/utils.py
===================================================================
--- grokproject/trunk/grokproject/utils.py	2010-05-18 11:25:17 UTC (rev 112443)
+++ grokproject/trunk/grokproject/utils.py	2010-05-18 12:08:13 UTC (rev 112444)
@@ -1,12 +1,13 @@
+from base64 import urlsafe_b64encode
+from paste.script.templates import var
+from random import randint
 import codecs
+import logging
 import os
+import pkg_resources
+import shutil
 import sys
-import shutil
 import tempfile
-import pkg_resources
-import logging
-from random import randint
-from paste.script.templates import var
 
 try:
     from hashlib import sha1
@@ -50,15 +51,17 @@
         config_file.write(contents)
         config_file.close()
 
-def get_sha1_encoded_string(passwd):
-    """Encode the given `string` using SHA1.
+def get_ssha_encoded_string(password):
+    """Encode the given `string` using "Secure" SHA.
+
+    Taken from zope.password.password, however grokproject itself
+    cannot depend on that package.
     """
     encoder = codecs.getencoder('utf-8')
-    salt = "%08x" % randint(0, 0xffffffff)
-    # This is apparently a wrong use of salt, but the old SHA1
-    # password manager of `zope.app.authentication` handles it this way.
-    result = salt + sha1(encoder(passwd)[0]).hexdigest()
-    return result
+    hash = sha1(encoder(password)[0])
+    salt = os.urandom(4)
+    hash.update(salt)
+    return '{SSHA}' + urlsafe_b64encode(hash.digest() + salt)
 
 def get_boolean_value_for_option(vars, option):
     value = vars.get(option.name)
@@ -134,7 +137,7 @@
         remove_old_logger_handlers()
 
     print "Invoking zc.buildout..."
-    
+
     # Now do the rest of the install.
     zc.buildout.buildout.main(extra_args + ['install'])
     remove_old_logger_handlers()

Modified: grokproject/trunk/tests_alternative_release_url.txt
===================================================================
--- grokproject/trunk/tests_alternative_release_url.txt	2010-05-18 11:25:17 UTC (rev 112443)
+++ grokproject/trunk/tests_alternative_release_url.txt	2010-05-18 12:08:13 UTC (rev 112444)
@@ -46,15 +46,15 @@
     >>> print open(os.path.join(package_dir, 'buildout.cfg')).read()
     [buildout]
     extends = file:///.../fake_release/0.555/versions.cfg
-    extends-cache = cache
+    extends-cache = extends-cache
     find-links = file:///.../fake_release/0.555/eggs/
     ...
 
     >>> ls(package_dir)
     bootstrap.py
     buildout.cfg
-    cache
     etc
+    extends-cache
     setup.py
     src
 

Modified: grokproject/trunk/tests_paste.txt
===================================================================
--- grokproject/trunk/tests_paste.txt	2010-05-18 11:25:17 UTC (rev 112443)
+++ grokproject/trunk/tests_paste.txt	2010-05-18 12:08:13 UTC (rev 112444)
@@ -31,7 +31,7 @@
     >>> print open(os.path.join(package_dir, 'buildout.cfg')).read()
     [buildout]
     extends = http://grok.zope.org/releaseinfo/1.1rc1/versions.cfg
-    extends-cache = cache
+    extends-cache = extends-cache
     find-links = http://grok.zope.org/releaseinfo/1.1rc1/eggs/
     ...
 
@@ -40,9 +40,9 @@
     bin
     bootstrap.py
     buildout.cfg
-    cache
     develop-eggs
     etc
+    extends-cache
     parts
     setup.py
     src
@@ -95,7 +95,7 @@
 buildout files to support offline building. We know what the filename of the
 cached versions file for 1.1rc1 will look like:
 
-    >>> ls(os.path.join(package_dir, 'cache'))
+    >>> ls(os.path.join(package_dir, 'extends-cache'))
     000739fbb1c7d540a2861c7476c5ec2d
 
 We used a projectname with uppercase letters. This is respected by
@@ -107,7 +107,7 @@
     site-definition ...GrokExample/parts/etc/site.zcml
     ...
 
-The password given is stored SHA1 encoded::
+The password given is stored SSHA encoded::
 
     >>> site_zcml_in = os.path.join(package_dir, 'etc',
     ...                             'site.zcml.in')
@@ -117,8 +117,8 @@
         <principal id="zope.manager"
                    title="Manager"
                    login="a"
-                   password_manager="SHA1"
-                   password="...86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"
+                   password_manager="SSHA"
+                   password="{SSHA}..."
                    />
     ...
 
@@ -239,21 +239,17 @@
     >>> cmd = os.path.join(bin_dir, 'buildout')
     >>> output = read_sh(cmd)
     >>> print output
-    Develop: ...
+    Develop: '...'
     Updating app.
-    ...
     Updating site_zcml.
     Updating zope_conf.
     Updating debug_ini.
     Updating deploy_ini.
     Updating i18n.
     i18n: setting up i18n tools
-    ...
     Updating mkdirs.
     Updating test.
-    ...
     Updating zpasswd.
-    ...
     Updating data.
     Updating log.
     *************** PICKED VERSIONS ****************
@@ -287,9 +283,9 @@
     >>> print open(os.path.join(package_dir, 'buildout.cfg')).read()
     [buildout]
     extends = http://grok.zope.org/releaseinfo/1.1a2/versions.cfg
-    extends-cache = cache
+    extends-cache = extends-cache
     find-links = http://grok.zope.org/releaseinfo/1.1a2/eggs/
     ...
 
-    >>> ls(os.path.join(package_dir, 'cache'))
+    >>> ls(os.path.join(package_dir, 'extends-cache'))
     eb77a071fb78a2da37cbe18aff8b2a5a



More information about the checkins mailing list