home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- from logging import getLogger
- from yahoo.YahooSocket import DEFAULT_YMSG_VERSION
- from yahoo.yahooutil import from_ydict
- from yahoo.yahooutil import YahooLoginError
- from util.threads import threaded
- from yahoo.login import yahoo_v15_auth, yahoo64, YahooRateLimitException, YahooAuthException
- from hashlib import md5
- from yahoo.yahooutil import to_ydict
- from yahoo.YahooSocket import YahooSocket
- import common
- log = getLogger('YahooLoginSocket')
-
- class YahooLoginSocket(YahooSocket):
-
- def __init__(self, yahoo, server):
- YahooSocket.__init__(self, yahoo, server)
- log.info('connecting to %s with user: %s', self.server, self.yahoo.username)
-
- def onfail(exc = (None,)):
- self.yahoo.set_disconnected(self.yahoo.Reasons.CONN_FAIL)
- self.close()
-
- self.connect(self.server, error = onfail)
- if not self.readable():
- onfail()
-
-
-
- def logon(self):
- y = self.yahoo
-
- def fail(exc = (None,)):
- y.set_disconnected(y.Reasons.CONN_FAIL)
-
- user = y.username
- password = y.password
- log.info('logging in %s', user)
- y.change_state(y.Statuses.AUTHENTICATING)
- yield self.gsend('auth', 'custom', {
- 1: user }, v = DEFAULT_YMSG_VERSION)
- yield self.gwait('auth', 'brb', self.logon_err)
- (hdr, data) = None
- auth_challenge = from_ydict(data)
- if '94' not in auth_challenge:
- log.warning('auth challenge packet did not have challenge str (94): %r', auth_challenge)
- fail()
- return None
-
- challenge_str = auth_challenge['94']
- threaded(yahoo_15_weblogin)(y, user, password, challenge_str, error = fail)
-
-
- def logon_err(self):
- y = self.yahoo
- y.set_disconnected(y.Reasons.CONN_FAIL)
- self.close()
-
-
- def generic_error(self):
- y = self.yahoo
- y.set_disconnected(y.Reasons.CONN_FAIL)
-
-
- def chatlogon(self, sv, st, data):
-
- def gen(sv, st, data):
- me = self.yahoo.self_buddy.name
- yield self.gsend('chatonline', 'available', to_ydict({
- '1': me,
- '109': me,
- '6': 'abcde' }))
- yield self.gwait('chatonline', 'brb', self.generic_error)
- yield self.gsend(sv, st, data)
-
- self.async_proc(gen(sv, st, data))
-
-
- def conflogon(self, roomname, callback):
-
- def gen():
- me = self.yahoo.self_buddy.name
- yield self.gsend('conflogon', 'available', to_ydict({
- '1': me,
- '3': me,
- '57': roomname }))
- yield self.gwait('conflogon', 'brb', self.generic_error)
- YahooConf = YahooConf
- import yahoo.YahooConversation
- conf = self.yahoo.conferences.setdefault(roomname, YahooConf(self.yahoo, roomname))
- conf.buddy_join(self.yahoo.self_buddy)
- callback(conf)
-
- self.async_proc(gen())
-
-
- def handle_connect(self):
- log.info('Yahoo Socket connected to %s:%d', *self.server)
- self.async_proc(self.logon())
-
-
- def handle_close(self):
- log.critical('handle_close')
- if self.yahoo.offline_reason == self.yahoo.Reasons.NONE:
- rsn = self.yahoo.Reasons.CONN_LOST
- else:
- rsn = self.yahoo.offline_reason
- self.yahoo.set_disconnected(rsn)
- self.close()
- self.yahoo = None
-
-
- def handle_error(self, *a, **k):
- import traceback
- traceback.print_exc()
- log.error('handle_error')
- if self.yahoo:
- self.yahoo.set_disconnected(self.yahoo.Reasons.CONN_LOST)
-
- common.socket.handle_error(self, *a, **k)
-
-
- def handle_expt(self):
- log.error('handle_expt: out-of-band data')
- self.yahoo.set_disconnected(self.yahoo.Reasons.CONN_LOST)
- self.close()
- self.yahoo = None
-
-
-
- def yahoo_15_weblogin(y, user, password, challenge_str):
-
- try:
- (crumb, yc, t, jar) = yahoo_v15_auth(challenge_str, password, user)
- except YahooRateLimitException:
- return y.set_disconnected(y.Reasons.RATE_LIMIT)
- except YahooAuthException:
- return y.set_disconnected(y.Reasons.BAD_PASSWORD)
-
- y.cookies.update(Y = yc.split()[0][:-1], T = t.split()[0][:-1])
- y.jar = jar
- crumbchallengehash = yahoo64(md5(crumb + challenge_str).digest())
- log.info('logging on with initial status %s', y.initial_status)
- (None, None, None, None, common.netcall)((lambda : y.send('authresp', y.initial_status, [
- 'ycookie',
- yc,
- 'tcookie',
- t,
- 'crumbchallengehash',
- crumbchallengehash,
- 0,
- user,
- 'identity',
- user,
- 1,
- user,
- 'mystery_login_num',
- '2097087',
- 'version_str',
- '8.1.0.421',
- 148,
- '300'])))
-
-