]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blame - modules/ftpio.py
- no need to use the exceptions module; Exception is a builtin class
[projects/pld-ftp-admin.git] / modules / ftpio.py
CommitLineData
e3aced8e
MM
1# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3import os
6b4b841a 4import sys
e3aced8e
MM
5import socket
6import time
7import config
8
e3aced8e
MM
9pubsock=config.value['pubsock']
10
11if os.environ.has_key('HOME'):
6992b18d 12 privsock=os.environ['HOME']+'/pld-ftp-admin/var/privsock'
e3aced8e
MM
13 socketname=privsock
14else:
15 socketname=pubsock
16
b55905f2 17def 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
25def 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
34def 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
43def logout():
88d4cb67 44 sock.send('lout\0')
6992b18d 45
e3aced8e
MM
46def 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
63def 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
70def log(msg):
71 sock.send('log1 %s\0' % msg)
e3aced8e 72
6b4b841a
AM
73def locks_dump():
74 sock.send('slck\0')
75
08b49edd
MM
76def 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
This page took 0.07531 seconds and 4 git commands to generate.