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 Operation
from weboob.capabilities.bank import Account from weboob.capabilities.bank import Account
from weboob.tools.browser import BasePage, BrowserUnavailable 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 from logging import error
import tempfile 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): class LoginPage(BasePage):
def myXOR(self,value,seed): def myXOR(self,value,seed):
s='' s=''
@ -34,49 +68,14 @@ class LoginPage(BasePage):
return s return s
def login(self, agency, login, passwd): 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: try:
vk=VirtKeyboard(self.browser.openurl("/UWBI/UWBIAccueil?DEST=GENERATION_CLAVIER"), vk=LCLVirtKeyboard(self.browser,self.document,(255,255,255,255))
coords,(255,255,255,255))
except VirtKeyboardError,err: except VirtKeyboardError,err:
error("Error: %s"%err) error("Error: %s"%err)
return False return False
for s in symbols.keys(): password=vk.get_string_code(passwd)
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=''
for c in passwd:
password+=vk.get_symbol_code(symbols[c])
seed=-1 seed=-1
str="var aleatoire = " str="var aleatoire = "
for script in self.document.findall("/head/script"): for script in self.document.findall("/head/script"):