]>
Commit | Line | Data |
---|---|---|
e3aced8e MM |
1 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et |
2 | ||
3 | import os | |
6b4b841a | 4 | import sys |
e3aced8e MM |
5 | import socket |
6 | import time | |
7 | import config | |
8 | ||
e3aced8e MM |
9 | pubsock=config.value['pubsock'] |
10 | ||
11 | if os.environ.has_key('HOME'): | |
6992b18d | 12 | privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock' |
e3aced8e MM |
13 | socketname=privsock |
14 | else: | |
15 | socketname=pubsock | |
16 | ||
b55905f2 | 17 | def connect(name=None): |
e3aced8e MM |
18 | global sock |
19 | sock=socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) | |
20 | sock.connect(socketname) | |
6b4b841a AM |
21 | if not name: |
22 | name = "pid_%d_name_%s" % (os.getpid(), sys.argv[0]) | |
23 | sock.send('name %s\0' % name) | |
e3aced8e | 24 | |
6992b18d MM |
25 | def login_passwd(login, passwd): |
26 | 'Return cookie if ok' | |
27 | sock.send('linp %s\n%s\0' % (login, passwd)) | |
28 | retval=sock.recv(256) | |
29 | if retval=='FAIL': | |
30 | return '' | |
31 | else: | |
32 | return retval[3:] | |
33 | ||
34 | def login_cookie(cookie): | |
35 | 'Return login if ok' | |
36 | sock.send('linc %s\0' % cookie) | |
37 | retval=sock.recv(256) | |
38 | if retval=='FAIL': | |
39 | return '' | |
40 | else: | |
41 | return retval[3:] | |
42 | ||
43 | def logout(): | |
88d4cb67 | 44 | sock.send('lout\0') |
6992b18d | 45 | |
e3aced8e MM |
46 | def lock(path, hard=False): |
47 | def dolock(): | |
48 | if hard: | |
49 | sock.send('lckh %s\0' % path) | |
50 | else: | |
51 | sock.send('lcks %s\0' % path) | |
52 | return sock.recv(20) | |
53 | for i in range(3): | |
54 | retcode=dolock() | |
55 | if retcode=="OK": | |
56 | return True | |
57 | elif retcode=="HARD": | |
58 | return False | |
59 | if i!=2: | |
60 | time.sleep(1) | |
61 | return False | |
62 | ||
63 | def unlock(path): | |
64 | sock.send('ulck %s\0' % path) | |
6b4b841a AM |
65 | ret = sock.recv(20) |
66 | if ret == "OK": | |
67 | return True | |
68 | return False | |
e3aced8e | 69 | |
459e7d48 MM |
70 | def log(msg): |
71 | sock.send('log1 %s\0' % msg) | |
e3aced8e | 72 | |
6b4b841a AM |
73 | def locks_dump(): |
74 | sock.send('slck\0') | |
75 | ||
08b49edd MM |
76 | def gettree(): |
77 | sock.send('gett\0') | |
78 | pkgs=[] | |
79 | len=int(sock.recv(6)) | |
80 | if len: | |
5d490a9c MM |
81 | for pkg in sock.recv(len).split('\0'): |
82 | tmp=pkg.split('\n') | |
83 | pkgs.append((tmp[0], int(tmp[1]), int(tmp[2]))) | |
08b49edd | 84 | return pkgs |
b55905f2 | 85 |