LCL: prefer MappedVirtKeyboard to VirtKeyboard

Signed-off-by: Pierre Mazière <pierre.maziere@gmail.com>
This commit is contained in:
Pierre Mazière 2011-11-04 10:13:38 +01:00
commit 9bcb448b99

View file

@ -22,10 +22,44 @@ from datetime import date
from weboob.capabilities.bank import Operation
from weboob.capabilities.bank import Account
from weboob.tools.browser import BasePage, BrowserUnavailable
from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
from logging import error
import tempfile
class LCLVirtKeyboard(MappedVirtKeyboard):
symbols={'0':'9da2724133f2221482013151735f033c',
'1':'873ab0087447610841ae1332221be37b',
'2':'93ce6c330393ff5980949d7b6c800f77',
'3':'b2d70c69693784e1bf1f0973d81223c0',
'4':'498c8f5d885611938f94f1c746c32978',
'5':'359bcd60a9b8565917a7bf34522052c3',
'6':'aba912172f21f78cd6da437cfc4cdbd0',
'7':'f710190d6b947869879ec02d8e851dfa',
'8':'b42cc25e1539a15f767aa7a641f3bfec',
'9':'cc60e5894a9d8e12ee0c2c104c1d5490'
}
url="/UWBI/UWBIAccueil?DEST=GENERATION_CLAVIER"
def __init__(self,browser,document,color):
img=document.find("//img[@id='idImageClavier']")
MappedVirtKeyboard.__init__(self,browser.openurl(self.url),document,img,color)
if browser.responses_dirname is None:
browser.responses_dirname = \
tempfile.mkdtemp(prefix='weboob_session_')
self.check_symbols(self.symbols,browser.responses_dirname)
def get_symbol_code(self,md5sum):
code=MappedVirtKeyboard.get_symbol_code(self,md5sum)
return code[-5:-3]
def get_string_code(self,string):
code=''
for c in string:
code+=self.get_symbol_code(self.symbols[c])
return code
class LoginPage(BasePage):
def myXOR(self,value,seed):
s=''
@ -34,49 +68,14 @@ class LoginPage(BasePage):
return s
def login(self, agency, login, passwd):
symbols={'0':'9da2724133f2221482013151735f033c',
'1':'873ab0087447610841ae1332221be37b',
'2':'93ce6c330393ff5980949d7b6c800f77',
'3':'b2d70c69693784e1bf1f0973d81223c0',
'4':'498c8f5d885611938f94f1c746c32978',
'5':'359bcd60a9b8565917a7bf34522052c3',
'6':'aba912172f21f78cd6da437cfc4cdbd0',
'7':'f710190d6b947869879ec02d8e851dfa',
'8':'b42cc25e1539a15f767aa7a641f3bfec',
'9':'cc60e5894a9d8e12ee0c2c104c1d5490'
}
map=self.document.find("//map[@id='claviermap']")
coords={}
for area in map.getiterator("area"):
code=area.attrib.get("onclick")[-5:-3]
area_coords=[]
for coord in area.attrib.get("coords").split(','):
area_coords.append(int(coord))
coords[code]=tuple(area_coords)
try:
vk=VirtKeyboard(self.browser.openurl("/UWBI/UWBIAccueil?DEST=GENERATION_CLAVIER"),
coords,(255,255,255,255))
vk=LCLVirtKeyboard(self.browser,self.document,(255,255,255,255))
except VirtKeyboardError,err:
error("Error: %s"%err)
return False
for s in symbols.keys():
try:
vk.get_symbol_code(symbols[s])
except VirtKeyboardError:
if self.browser.responses_dirname is None:
self.browser.responses_dirname = \
tempfile.mkdtemp(prefix='weboob_session_')
vk.generate_MD5(self.browser.responses_dirname)
error("Error: Symbol '%s' not found; all symbol hashes are available in %s" \
% (s,self.browser.responses_dirname))
return False
password=vk.get_string_code(passwd)
password=''
for c in passwd:
password+=vk.get_symbol_code(symbols[c])
seed=-1
str="var aleatoire = "
for script in self.document.findall("/head/script"):