]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blame - modules/ftpio.py
pexpect needs explicit encoding when run under python3
[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
16b37c0d 11if 'HOME' in os.environ:
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])
8d9e1014 23 sock.send(bytearray('name %s\0' % name, encoding='utf-8'))
e3aced8e 24
6992b18d
MM
25def login_passwd(login, passwd):
26 'Return cookie if ok'
8d9e1014
JR
27 sock.send(bytearray('linp %s\n%s\0' % (login, passwd), encoding='utf-8'))
28 retval=sock.recv(256).decode("utf-8")
6992b18d
MM
29 if retval=='FAIL':
30 return ''
31 else:
32 return retval[3:]
33
34def login_cookie(cookie):
35 'Return login if ok'
8d9e1014
JR
36 sock.send(bytearray('linc %s\0' % cookie, encoding='utf-8'))
37 retval=sock.recv(256).decode('utf-8')
6992b18d
MM
38 if retval=='FAIL':
39 return ''
40 else:
41 return retval[3:]
42
43def logout():
8d9e1014 44 sock.send(bytearray('lout\0', encoding='utf-8'))
6992b18d 45
e3aced8e
MM
46def lock(path, hard=False):
47 def dolock():
48 if hard:
8d9e1014 49 sock.send(bytearray('lckh %s\0' % path, encoding='utf-8'))
e3aced8e 50 else:
8d9e1014
JR
51 sock.send(bytearray('lcks %s\0' % path, encoding='utf-8'))
52 return sock.recv(20).decode("utf-8")
e3aced8e
MM
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):
8d9e1014
JR
64 sock.send(bytearray('ulck %s\0' % path, encoding='utf-8'))
65 ret = sock.recv(20).decode("utf-8")
6b4b841a
AM
66 if ret == "OK":
67 return True
68 return False
e3aced8e 69
459e7d48 70def log(msg):
8d9e1014 71 sock.send(bytearray('log1 %s\0' % msg, encoding='utf-8'))
e3aced8e 72
6b4b841a 73def locks_dump():
8d9e1014
JR
74 sock.send(bytearray('slck\0', encoding='utf-8'))
75 ret = sock.recv(4096).decode("utf-8")
461bc5ab
ER
76 if ret == "NLCK":
77 return "No locks held"
78
79# nbytes = int(ret.split("BLOB:")[1])
8d9e1014 80# ret = sock.recv(nbytes).decode("utf-8")
461bc5ab 81 return ret
6b4b841a 82
08b49edd 83def gettree():
8d9e1014 84 sock.send(bytearray('gett\0', encoding='utf-8'))
08b49edd 85 pkgs=[]
8d9e1014 86 len=int(sock.recv(6).decode("utf-8"))
08b49edd 87 if len:
8d9e1014 88 for pkg in sock.recv(len).decode("utf-8").split('\0'):
5d490a9c
MM
89 tmp=pkg.split('\n')
90 pkgs.append((tmp[0], int(tmp[1]), int(tmp[2])))
08b49edd 91 return pkgs
b55905f2 92
This page took 1.231466 seconds and 4 git commands to generate.