]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
- www stuff auths through ftpiod (daemon just has stub functions, but adding
authorMariusz Mazur <mmazur@pld-linux.org>
Wed, 12 Jan 2005 23:52:15 +0000 (23:52 +0000)
committerMariusz Mazur <mmazur@pld-linux.org>
Wed, 12 Jan 2005 23:52:15 +0000 (23:52 +0000)
  full account support is a piece of cake)

Changed files:
    modules/cmds.py -> 1.5
    modules/common.py -> 1.6
    modules/ftpio.py -> 1.4
    modules/user.py -> 1.2

modules/cmds.py
modules/common.py
modules/ftpio.py
modules/user.py

index e58d3fbf0f85543d3f05c38ce971160579e23e16..c4966bf8f94b29b39a54f9167da4a96a6193421b 100644 (file)
@@ -16,8 +16,18 @@ def parse(con):
         if not con.authorized and not (cmdname=='linp' or cmdname=='linc'):
             raise BailOut
             # TODO: log unauthorized access
-        if cmdname in cmdlist:
-            cmdlist[cmdname](con, cmd[5:])
+        if cmdname in cmdlist_noargs:
+            if len(cmd)==4:
+                cmdlist_noargs[cmdname](con)
+            else:
+                pass
+                # TODO: log malicious msg
+        elif cmdname in cmdlist_args:
+            if len(cmd)>5:
+                cmdlist_args[cmdname](con, cmd[5:])
+            else:
+                pass
+                # TODO: log malicious msg
         else:
             raise BailOut
             # TODO: log this
@@ -54,6 +64,34 @@ def cmd_log(con, msg):
 def cmd_name(con, name):
     con.name=name
 
-cmdlist={'lcks':cmd_lock_soft, 'lckh':cmd_lock_hard, 'ulck':cmd_unlock,
-         'log1':cmd_log, 'name':cmd_name}
+def cmd_login_passwd(con, data):
+    tmp=data.split('\n')
+    if len(tmp)!=2:
+        raise BailOut
+    login=tmp[0]
+    passwd=tmp[1]
+    if login=='mmazur' and passwd=='ziew':
+        con.sock.send('OK ciasteczko')
+    else:
+        # TODO: log this
+        con.sock.send('FAIL')
+        raise BailOut
+
+def cmd_login_cookie(con, cookie):
+    if cookie=='ciasteczko':
+        con.sock.send('OK mmazur')
+    else:
+        # TODO: log this (or not)
+        con.sock.send('FAIL')
+
+def cmd_logout(con):
+    # TODO: remove cookie
+    pass
+
+cmdlist_args={'lcks':cmd_lock_soft, 'lckh':cmd_lock_hard, 'ulck':cmd_unlock,
+         'log1':cmd_log, 'name':cmd_name, 'linp':cmd_login_passwd,
+         'linc':cmd_login_cookie}
+
+cmdlist_noargs={'lout':cmd_logout}
+
 
index 938250b6c15303a0d8bf8d9f68cc4b467b9b3f2b..7fafb22cfe89babf52aeec1f675827177ec18bad 100644 (file)
@@ -14,7 +14,10 @@ def checkdir(dir):
         print config.value['ftp_dir']+'/'+sys.argv[1] + " does not exist"
         sys.exit(1)
 
-pldftpadmdir=os.environ['HOME']+'/pld-ftp-admin/'
+if 'HOME' in os.environ:
+    pldftpadmdir=os.environ['HOME']+'/pld-ftp-admin/'
+else:
+    pldftpadmdir='../'
 noarchcachedir=pldftpadmdir+'var/noarch-cache/'
 tmpdir=pldftpadmdir+'var/tmp'
 
index 14a032d4de1675df9635538061b3d6d2f50f2b44..929b22b5fdd865fe05a60b74c4b1b88c8bfc00db 100644 (file)
@@ -5,10 +5,10 @@ import socket
 import time
 import config
 
-privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock'
 pubsock=config.value['pubsock']
 
 if os.environ.has_key('HOME'):
+    privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock'
     socketname=privsock
 else:
     socketname=pubsock
@@ -20,6 +20,27 @@ def connect(name=None):
     if name:
         sock.send('name %s\0' % name)
 
+def login_passwd(login, passwd):
+    'Return cookie if ok'
+    sock.send('linp %s\n%s\0' % (login, passwd))
+    retval=sock.recv(256)
+    if retval=='FAIL':
+        return ''
+    else:
+        return retval[3:]
+
+def login_cookie(cookie):
+    'Return login if ok'
+    sock.send('linc %s\0' % cookie)
+    retval=sock.recv(256)
+    if retval=='FAIL':
+        return ''
+    else:
+        return retval[3:]
+
+def logout():
+    sock.send('lout')
+
 def lock(path, hard=False):
     def dolock():
         if hard:
index 6ec6a3fef3b5ad57d0706945f0a1b63f344e0443..850c87e703759388771cec02907a94cdb7582985 100644 (file)
@@ -1,80 +1,44 @@
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
-import Cookie, time, md5
+import Cookie, time, ftpio
 
 UserNotLoggedIn="UserNotLoggedIn"
 
 class User:
     def __init__(self, cookies, options):
         self.loggedin=False
-       if (cookies.has_key('ftpsessid') and
-          self.checksession(cookies['ftpsessid'])):
-            self.loggedin=True
+        ftpio.connect()
+       if 'ftpsessid' in cookies and cookies['ftpsessid']:
+            self.login=ftpio.login_cookie(cookies['ftpsessid'])
+            if self.login:
+                self.loggedin=True
 
-        if options.has_key('action'):
+        if 'action' in options:
             if options['action'] == 'register':
                 self.checkloginpass(options)
             elif options['action'] == 'logout':
                 self.logout()
 
     def checkloginpass(self, options):
-        if not options.has_key('login') or not options.has_key('pass'):
+        if 'login' not in options or 'pass' not in options:
             return
-        f=open('../../passwd', 'r')
-        for line in f.readlines():
-            list=line.strip().split(':')
-            if (list[0]==options['login'] and
-              list[1]==md5.new(options['pass']).hexdigest()):
-                self.loggedin=True
-                self.login=list[0]
-                C = Cookie.SimpleCookie()
-                cookiestring=md5.new(list[0]+`time.time()`).hexdigest()
-                C['ftpsessid']=cookiestring
-                #C['ftpsessid']['expires']=time.strftime(
-                                            #"%a, %d-%b-%y %H:%M:%S GMT",
-                                            #time.gmtime(time.time()+86400))
-                print C
-                break
-        f.close()
-        if self.loggedin:
-            cookies=self.loadcookies()
-            cookies[cookiestring]=options['login']
-            self.writecookies(cookies)
-    
-    def checksession(self, ftpsessid):
-        cookies=self.loadcookies()
-        if cookies.has_key(ftpsessid):
-            self.login=cookies[ftpsessid]
-            self.ftpsessid=ftpsessid
-            return True
-
-    def loadcookies(self):
-        f=open('../../cookies', 'r')
-        cookies={}
-        for line in f.readlines():
-            list=line.strip().split(':')
-            cookies[list[0]]=list[1]
-        f.close()
-        return cookies
-
-    def writecookies(self, cookies):
-        f=open('../../cookies', 'w+')
-        for key in cookies.keys():
-            f.write("%s:%s\n" % (key, cookies[key]))
-        f.close()
-
-    def logout(self):
-        if self.loggedin:
-            cookies=self.loadcookies()
-            if cookies.has_key(self.ftpsessid):
-                del cookies[self.ftpsessid]
-                self.writecookies(cookies)
-
-            self.loggedin=False
-
+        self.cookie=ftpio.login_passwd(options['login'], options['pass'])
+        if self.cookie:
+            self.login=options['login']
+            self.loggedin=True
             C = Cookie.SimpleCookie()
-            C['ftpsessid']=''
-            C['ftpsessid']['expires']=time.strftime("%a, %d-%b-%y %H:%M:%S GMT",
-                                        time.gmtime(time.time()-31536000))
+            C['ftpsessid']=self.cookie
+            #C['ftpsessid']['expires']=time.strftime(
+                                        #"%a, %d-%b-%y %H:%M:%S GMT",
+                                        #time.gmtime(time.time()+86400))
             print C
+    
+    def logout(self):
+        self.loggedin=False
+        ftpio.logout()
+        C = Cookie.SimpleCookie()
+        C['ftpsessid']=''
+        C['ftpsessid']['expires']=time.strftime("%a, %d-%b-%y %H:%M:%S GMT",
+                                    time.gmtime(time.time()-31536000))
+        print C
 
This page took 0.122828 seconds and 4 git commands to generate.