Changeset 663
- Timestamp:
- 11/28/06 08:35:40
- Files:
-
- qPloneCaptchas/trunk/CaptchaTool.py (modified) (1 diff)
- qPloneCaptchas/trunk/Extensions/Install.py (modified) (3 diffs)
- qPloneCaptchas/trunk/__init__.py (modified) (1 diff)
- qPloneCaptchas/trunk/skins/plone_captchas/dynamic/captcha_validator.vpy (modified) (3 diffs)
- qPloneCaptchas/trunk/skins/plone_captchas/static/captcha_validator.vpy (modified) (3 diffs)
- qPloneCaptchas/trunk/utils.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneCaptchas/trunk/CaptchaTool.py
r662 r663 1 1 from Products.Transience.Transience import TransientObjectContainer 2 2 from Globals import InitializeClass 3 from AccessControl import ClassSecurityInfo 4 5 def constructCaptchaTool(self, id, title='', timeout_mins=20, 6 addNotification=None, delNotification=None, 7 limit=0, period_secs=20, 8 REQUEST=None): 9 ob = CaptchaTool(id, title, timeout_mins, 10 addNotification, delNotification, 11 limit=limit, period_secs=period_secs) 12 self._setObject(id, ob) 13 if REQUEST is not None: 14 return self.manage_main(self, REQUEST, update_menu=1) 15 3 16 class CaptchaTool(TransientObjectContainer): 4 17 """portal_captcha tool class 5 18 """ 19 security = ClassSecurityInfo() 20 security.declarePublic('addExpiredKey') 21 def addExpiredKey(self, key): 22 self.new(key) 6 23 7 24 InitializeClass(CaptchaTool) qPloneCaptchas/trunk/Extensions/Install.py
r662 r663 1 1 from Products.qPloneCaptchas.config import * 2 from Products.qPloneCaptchas.CaptchaTool import constructCaptchaTool 2 3 from Products.CMFCore.utils import getToolByName 3 4 from StringIO import StringIO … … 9 10 from random import randint 10 11 from Products.CMFPlone.migrations.migration_util import safeEditProperty 11 from Products.Transience.Transience import constructTransientObjectContainer12 12 13 13 def install(self): … … 16 16 # add captchas_tool 17 17 if not hasattr(portal, TOOL_ID): 18 construct TransientObjectContainer(portal, id=TOOL_ID, timeout_mins=60)18 constructCaptchaTool(portal, id=TOOL_ID, timeout_mins=60) 19 19 20 20 safeEditProperty(self, 'captcha_key', generateKey(8)) qPloneCaptchas/trunk/__init__.py
r662 r663 11 11 tools = (CaptchaTool.CaptchaTool, ) 12 12 def initialize(context): 13 ToolInit("CaptchaTool", tools=tools, icon=config.TOOL_ICON).initialize(context) 13 context.registerClass(CaptchaTool.CaptchaTool, 14 constructors=(CaptchaTool.constructCaptchaTool,)) 15 16 ToolInit("CaptchaTool", 17 tools=tools, 18 icon=config.TOOL_ICON,).initialize(context) qPloneCaptchas/trunk/skins/plone_captchas/dynamic/captcha_validator.vpy
r662 r663 1 1 from Products.qPloneCaptchas.utils import decrypt, parseKey, \ 2 encrypt1, getWord , addExpiredKey2 encrypt1, getWord 3 3 from DateTime import DateTime 4 4 from Products.CMFCore.utils import getToolByName 5 5 if state.getStatus()=='failure': 6 6 return state … … 11 11 decrypted_key = decrypt(context.captcha_key, hashkey) 12 12 parsed_key = parseKey(decrypted_key) 13 13 14 14 index = parsed_key['key'] 15 15 date = parsed_key['date'] … … 17 17 enc = test_key 18 18 solution = getWord(int(index)) 19 20 if (enc != solution) or (c ontext.portal_captchas.has_key(decrypted_key)) \19 captcha_tool = getToolByName(context, 'portal_captchas') 20 if (enc != solution) or (captcha_tool.has_key(decrypted_key)) \ 21 21 or (DateTime().timeTime() - float(date)>3600): 22 22 state.setError('key', 'Please re-enter validation code.', 'key_required') 23 23 return state.set(status="failure", portal_status_message = "Please re-enter validation code.") 24 24 else: 25 addExpiredKey(context,decrypted_key)25 captcha_tool.addExpiredKey(decrypted_key) 26 26 return state.set(status="success") qPloneCaptchas/trunk/skins/plone_captchas/static/captcha_validator.vpy
r662 r663 1 1 from Products.qPloneCaptchas.utils import decrypt, parseKey, \ 2 encrypt1, getWord , addExpiredKey2 encrypt1, getWord #, addExpiredKey 3 3 from DateTime import DateTime 4 4 from Products.CMFCore.utils import getToolByName 5 5 if state.getStatus()=='failure': 6 6 return state … … 11 11 decrypted_key = decrypt(context.captcha_key, hashkey) 12 12 parsed_key = parseKey(decrypted_key) 13 13 14 14 index = parsed_key['key'] 15 15 date = parsed_key['date'] … … 18 18 solution = img.title 19 19 enc = encrypt1(test_key) 20 21 if (enc != solution) or (c ontext.portal_captchas.has_key(decrypted_key)) \20 captcha_tool = getToolByName(context, 'portal_captchas') 21 if (enc != solution) or (captcha_tool.has_key(decrypted_key)) \ 22 22 or (DateTime().timeTime() - float(date)>3600): 23 23 state.setError('key', 'Please re-enter validation code.', 'key_required') 24 24 return state.set(status="failure", portal_status_message = "Please re-enter validation code.") 25 25 else: 26 addExpiredKey(context,decrypted_key)26 captcha_tool.addExpiredKey(decrypted_key) 27 27 return state.set(status="success") qPloneCaptchas/trunk/utils.py
r662 r663 11 11 except: 12 12 import Crypto 13 13 14 14 def encrypt1(s): 15 15 return md5.new(s).hexdigest().upper() … … 92 92 def encrypt(key, s): 93 93 return toHex(Crypto.new(key).encrypt(s)) 94 94 95 95 def decrypt(key, s): 96 96 return Crypto.new(key).decrypt(toStr(s)) … … 100 100 return {'date': ps.group(1), 'key':ps.group(2)} 101 101 102 """ 102 103 def addExpiredKey(context, key): 103 104 context.portal_captchas.new(key) 105 """ 104 106 105 107 def toHex(s): … … 110 112 hv = '0'+hv 111 113 lst.append(hv) 112 114 113 115 return reduce(lambda x,y:x+y, lst) 114 116
