]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blob - modules/ftpio.py
1adf5e4d1771e27761faff37fdf29d8f0243e182
[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 sys
5 import socket
6 import time
7 import config
8
9 pubsock=config.value['pubsock']
10
11 if os.environ.has_key('HOME'):
12     privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock'
13     socketname=privsock
14 else:
15     socketname=pubsock
16
17 def connect(name=None):
18     global sock
19     sock=socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
20     sock.connect(socketname)
21     if not name:
22         name = "pid_%d_name_%s" % (os.getpid(), sys.argv[0])
23     sock.send('name %s\0' % name)
24
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():
44     sock.send('lout\0')
45
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)
65     ret = sock.recv(20)
66     if ret == "OK":
67         return True
68     return False
69
70 def log(msg):
71     sock.send('log1 %s\0' % msg)
72
73 def locks_dump():
74     sock.send('slck\0')
75
76 def gettree():
77     sock.send('gett\0')
78     pkgs=[]
79     len=int(sock.recv(6))
80     if len:
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])))
84     return pkgs
85
This page took 0.023174 seconds and 2 git commands to generate.