]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blob - modules/ftpio.py
- do not break when pkg name has '+' or '.' signs in it
[projects/pld-ftp-admin.git] / modules / ftpio.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import os
4 import socket
5 import time
6 import config
7
8 pubsock=config.value['pubsock']
9
10 if os.environ.has_key('HOME'):
11     privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock'
12     socketname=privsock
13 else:
14     socketname=pubsock
15
16 def connect(name=None):
17     global sock
18     sock=socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
19     sock.connect(socketname)
20     if name:
21         sock.send('name %s\0' % name)
22
23 def login_passwd(login, passwd):
24     'Return cookie if ok'
25     sock.send('linp %s\n%s\0' % (login, passwd))
26     retval=sock.recv(256)
27     if retval=='FAIL':
28         return ''
29     else:
30         return retval[3:]
31
32 def login_cookie(cookie):
33     'Return login if ok'
34     sock.send('linc %s\0' % cookie)
35     retval=sock.recv(256)
36     if retval=='FAIL':
37         return ''
38     else:
39         return retval[3:]
40
41 def logout():
42     sock.send('lout\0')
43
44 def lock(path, hard=False):
45     def dolock():
46         if hard:
47             sock.send('lckh %s\0' % path)
48         else:
49             sock.send('lcks %s\0' % path)
50         return sock.recv(20)
51     for i in range(3):
52         retcode=dolock()
53         if retcode=="OK":
54             return True
55         elif retcode=="HARD":
56             return False
57         if i!=2:
58             time.sleep(1)
59     return False
60     
61 def unlock(path):
62     sock.send('ulck %s\0' % path)
63
64 def log(msg):
65     sock.send('log1 %s\0' % msg)
66
67 def gettree():
68     sock.send('gett\0')
69     pkgs=[]
70     len=int(sock.recv(6))
71     if len:
72         for pkg in sock.recv(len).split('\0'):
73             tmp=pkg.split('\n')
74             pkgs.append((tmp[0], int(tmp[1]), int(tmp[2])))
75     return pkgs
76
This page took 0.025906 seconds and 3 git commands to generate.