]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blob - modules/user.py
- I'm not sure if a non blocking socket can generate an exception on recv, but
[projects/pld-ftp-admin.git] / modules / user.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import Cookie, time, md5
4
5 UserNotLoggedIn="UserNotLoggedIn"
6
7 class User:
8     def __init__(self, cookies, options):
9         self.loggedin=False
10         if (cookies.has_key('ftpsessid') and
11           self.checksession(cookies['ftpsessid'])):
12             self.loggedin=True
13
14         if options.has_key('action'):
15             if options['action'] == 'register':
16                 self.checkloginpass(options)
17             elif options['action'] == 'logout':
18                 self.logout()
19
20     def checkloginpass(self, options):
21         if not options.has_key('login') or not options.has_key('pass'):
22             return
23         f=open('../../passwd', 'r')
24         for line in f.readlines():
25             list=line.strip().split(':')
26             if (list[0]==options['login'] and
27               list[1]==md5.new(options['pass']).hexdigest()):
28                 self.loggedin=True
29                 self.login=list[0]
30                 C = Cookie.SimpleCookie()
31                 cookiestring=md5.new(list[0]+`time.time()`).hexdigest()
32                 C['ftpsessid']=cookiestring
33                 #C['ftpsessid']['expires']=time.strftime(
34                                             #"%a, %d-%b-%y %H:%M:%S GMT",
35                                             #time.gmtime(time.time()+86400))
36                 print C
37                 break
38         f.close()
39         if self.loggedin:
40             cookies=self.loadcookies()
41             cookies[cookiestring]=options['login']
42             self.writecookies(cookies)
43     
44     def checksession(self, ftpsessid):
45         cookies=self.loadcookies()
46         if cookies.has_key(ftpsessid):
47             self.login=cookies[ftpsessid]
48             self.ftpsessid=ftpsessid
49             return True
50
51     def loadcookies(self):
52         f=open('../../cookies', 'r')
53         cookies={}
54         for line in f.readlines():
55             list=line.strip().split(':')
56             cookies[list[0]]=list[1]
57         f.close()
58         return cookies
59
60     def writecookies(self, cookies):
61         f=open('../../cookies', 'w+')
62         for key in cookies.keys():
63             f.write("%s:%s\n" % (key, cookies[key]))
64         f.close()
65
66     def logout(self):
67         if self.loggedin:
68             cookies=self.loadcookies()
69             if cookies.has_key(self.ftpsessid):
70                 del cookies[self.ftpsessid]
71                 self.writecookies(cookies)
72
73             self.loggedin=False
74
75             C = Cookie.SimpleCookie()
76             C['ftpsessid']=''
77             C['ftpsessid']['expires']=time.strftime("%a, %d-%b-%y %H:%M:%S GMT",
78                                         time.gmtime(time.time()-31536000))
79             print C
80
This page took 0.044921 seconds and 3 git commands to generate.