]> git.pld-linux.org Git - projects/pld-ftp-admin.git/blame - modules/cons.py
- all scripts use ftpiod for locking and logging
[projects/pld-ftp-admin.git] / modules / cons.py
CommitLineData
e3aced8e
MM
1# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3import socket
4import os
5import select
6from common import fileexists
7import ftpio
8import cmds
9
10class Connection:
11 def __init__(self, sock, authorized):
235da16e 12 sock.setblocking(False)
e3aced8e
MM
13 self.sock=sock
14 self.authorized=authorized
15 self.fileno=sock.fileno
b55905f2 16 self.name=""
e3aced8e
MM
17 self.data=""
18 def destroy(self):
19 self.sock.close()
20 rm(self)
21 def handleinput(self):
5b5cb482
MM
22 try:
23 newdata=self.sock.recv(8192)
24 except:
25 self.destroy()
e3aced8e
MM
26 if not newdata:
27 self.destroy()
28 self.data=self.data+newdata
29 try:
30 cmds.parse(self)
5fcf3f9a 31 except cmds.BailOut:
e3aced8e
MM
32 self.destroy()
33
34def add(con):
35 cons.append(con)
36
37def rm(con):
38 cons.remove(con)
39
40def readables():
41 lst=cons[:]
42 lst.append(privlistener)
43 lst.append(publistener)
44 inlst,outlst,errlst = select.select(lst, [], [], 0)
45 return inlst
46
47def createlistener(path):
48 if fileexists(path):
49 os.remove(path)
50
51 s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
52 s.setblocking(False)
53 s.bind(path)
54 if path==ftpio.pubsock:
55 os.chmod(path, 0606)
56 else:
57 os.chmod(path, 0600)
58 s.listen(3)
59 return s
60
61cons=[]
62
63privlistener=createlistener(ftpio.privsock)
64publistener=createlistener(ftpio.pubsock)
65
66
67
This page took 0.099919 seconds and 4 git commands to generate.