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

Reply via email to