Revision: 7607
Author: alexsh
Date: 2009-11-08 17:02:12 +0000 (Sun, 08 Nov 2009)
Log Message:
-----------
make some handle for centralauth cross-project identify (I'm working now)
Modified Paths:
--------------
trunk/pywikipedia/login.py
Modified: trunk/pywikipedia/login.py
===================================================================
--- trunk/pywikipedia/login.py 2009-11-08 16:58:01 UTC (rev 7606)
+++ trunk/pywikipedia/login.py 2009-11-08 17:02:12 UTC (rev 7607)
@@ -126,6 +126,8 @@
Returns cookie data if succesful, None otherwise.
"""
+ L = []
+ CenL = []
if api:
predata = {
'action': 'login',
@@ -161,6 +163,10 @@
#elif faildInfo == "Throttled":
#
return False
+ #L.append('%s_session=%s' % (data['login']['cookieprefix'],
data['login']['sessionid'])
+
+ #if __name__ == "__main__":
+ # wikipedia.output('%s' % data['login'])
else:
response, data = self.site.postData(address,
self.site.urlEncode(predata))
if self.verbose:
@@ -173,43 +179,47 @@
config.transliterate = trans
fakeresponsemsg = re.sub(r"(session|Token)=..........",
r"session=XXXXXXXXXX", data)
wikipedia.output(u"%s/%s\n%s" % (response.code, response.msg,
fakeresponsemsg))
- wikipedia.cj.save(wikipedia.COOKIEFILE)
+ #wikipedia.cj.save(wikipedia.COOKIEFILE)
- Reat=re.compile(': (.*?);')
+ Reat=re.compile(': (.*?)=(.*?);')
- L = []
+ L = {}
+ CenL = {}
for eat in response.info().getallmatchingheaders('set-cookie'):
m = Reat.search(eat)
if m:
- L.append(m.group(1))
+ #if 'central' in x:
+ # CenL.append(x)
+ #else:
+ L[m.group(1)] = m.group(2)
got_token = got_user = False
- for Ldata in L:
- if 'Token=' in Ldata:
+ for Ldata in L.keys():
+ if 'Token' in Ldata:
got_token = True
- if 'User=' in Ldata or 'UserName=' in Ldata:
+ if 'User' in Ldata or 'UserName' in Ldata:
got_user = True
if got_token and got_user:
- return "\n".join(L)
+ return L
elif not captcha:
solve = self.site.solveCaptcha(data)
if solve:
return self.getCookie(api = api, remember = remember, captcha
= solve)
return None
- def storecookiedata(self, data):
+ def storecookiedata(self, filename, data):
"""
Stores cookie data.
The argument data is the raw data, as returned by getCookie().
Returns nothing."""
- filename = wikipedia.config.datafilepath('login-data',
- '%s-%s-%s-login.data'
- % (self.site.family.name, self.site.lang,
self.username))
- f = open(filename, 'w')
- f.write(data)
+ s = u''
+ for v, k in data.iteritems():
+ s += "%s=%s\n" % (v, k)
+ f = open(wikipedia.config.datafilepath('login-data',filename), 'w')
+ f.write(s)
f.close()
def readPassword(self):
@@ -227,7 +237,7 @@
("my_sysop_user", "my_sysop_password")
("en", "wikipedia", "my_en_user", "my_en_pass")
"""
- file = open(wikipedia.config.datafilepath(config.password_file))
+ file = open(wikipedia.config.datafilepath(config.password_file), 'r')
for line in file:
if not line.strip(): continue
entry = eval(line)
@@ -256,7 +266,8 @@
api = False
return self.login(False, retry)
if cookiedata:
- self.storecookiedata(cookiedata)
+ fn = '%s-%s-%s-login.data' % (self.site.family.name,
self.site.lang, self.username)
+ self.storecookiedata(fn,cookiedata)
wikipedia.output(u"Should be logged in now")
# Show a warning according to the local bot policy
if not self.botAllowed():
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn