/
usr
/
lib64
/
python2.7
/
Demo
/
pdist
/
/usr/lib64/python2.7/Demo/pdist
mkdir
upload
Name
Size
Mode
Actions
client.py
4708
0644
edit
dl
rm
client.pyc
6724
0644
edit
dl
rm
client.pyo
6724
0644
edit
dl
rm
cmdfw.py
4641
0644
edit
dl
rm
cmdfw.pyc
5239
0644
edit
dl
rm
cmdfw.pyo
5239
0644
edit
dl
rm
cmptree.py
5778
0644
edit
dl
rm
cmptree.pyc
6123
0644
edit
dl
rm
cmptree.pyo
6123
0644
edit
dl
rm
cvslib.py
10175
0644
edit
dl
rm
cvslib.pyc
13140
0644
edit
dl
rm
cvslib.pyo
13140
0644
edit
dl
rm
cvslock.py
6771
0644
edit
dl
rm
cvslock.pyc
8560
0644
edit
dl
rm
cvslock.pyo
8560
0644
edit
dl
rm
FSProxy.py
7828
0644
edit
dl
rm
FSProxy.pyc
12795
0644
edit
dl
rm
FSProxy.pyo
12795
0644
edit
dl
rm
mac.py
352
0644
edit
dl
rm
mac.pyc
598
0644
edit
dl
rm
mac.pyo
598
0644
edit
dl
rm
makechangelog.py
2988
0755
edit
dl
rm
makechangelog.pyc
3122
0644
edit
dl
rm
makechangelog.pyo
3122
0644
edit
dl
rm
rcsbump
745
0755
edit
dl
rm
rcsclient.py
1803
0644
edit
dl
rm
rcsclient.pyc
2100
0644
edit
dl
rm
rcsclient.pyo
2100
0644
edit
dl
rm
rcslib.py
10318
0644
edit
dl
rm
rcslib.pyc
11548
0644
edit
dl
rm
rcslib.pyo
11548
0644
edit
dl
rm
RCSProxy.py
4723
0755
edit
dl
rm
RCSProxy.pyc
7751
0644
edit
dl
rm
RCSProxy.pyo
7751
0644
edit
dl
rm
rcvs
117
0755
edit
dl
rm
rcvs.py
13644
0755
edit
dl
rm
rcvs.pyc
14417
0644
edit
dl
rm
rcvs.pyo
14417
0644
edit
dl
rm
README
4264
0644
edit
dl
rm
rrcs
117
0755
edit
dl
rm
rrcs.py
3992
0755
edit
dl
rm
rrcs.pyc
5629
0644
edit
dl
rm
rrcs.pyo
5629
0644
edit
dl
rm
security.py
1092
0644
edit
dl
rm
security.pyc
1681
0644
edit
dl
rm
security.pyo
1681
0644
edit
dl
rm
server.py
4581
0644
edit
dl
rm
server.pyc
5971
0644
edit
dl
rm
server.pyo
5971
0644
edit
dl
rm
sumtree.py
518
0644
edit
dl
rm
sumtree.pyc
903
0644
edit
dl
rm
sumtree.pyo
903
0644
edit
dl
rm
Edit:
/usr/lib64/python2.7/Demo/pdist/server.py
(4581B)
"""RPC Server module.""" import sys import socket import pickle from fnmatch import fnmatch from repr import repr # Default verbosity (0 = silent, 1 = print connections, 2 = print requests too) VERBOSE = 1 class Server: """RPC Server class. Derive a class to implement a particular service.""" def __init__(self, address, verbose = VERBOSE): if type(address) == type(0): address = ('', address) self._address = address self._verbose = verbose self._socket = None self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.bind(address) self._socket.listen(1) self._listening = 1 def _setverbose(self, verbose): self._verbose = verbose def __del__(self): self._close() def _close(self): self._listening = 0 if self._socket: self._socket.close() self._socket = None def _serverloop(self): while self._listening: self._serve() def _serve(self): if self._verbose: print "Wait for connection ..." conn, address = self._socket.accept() if self._verbose: print "Accepted connection from %s" % repr(address) if not self._verify(conn, address): print "*** Connection from %s refused" % repr(address) conn.close() return rf = conn.makefile('r') wf = conn.makefile('w') ok = 1 while ok: wf.flush() if self._verbose > 1: print "Wait for next request ..." ok = self._dorequest(rf, wf) _valid = ['192.16.201.*', '192.16.197.*', '132.151.1.*', '129.6.64.*'] def _verify(self, conn, address): host, port = address for pat in self._valid: if fnmatch(host, pat): return 1 return 0 def _dorequest(self, rf, wf): rp = pickle.Unpickler(rf) try: request = rp.load() except EOFError: return 0 if self._verbose > 1: print "Got request: %s" % repr(request) try: methodname, args, id = request if '.' in methodname: reply = (None, self._special(methodname, args), id) elif methodname[0] == '_': raise NameError, "illegal method name %s" % repr(methodname) else: method = getattr(self, methodname) reply = (None, apply(method, args), id) except: reply = (sys.exc_type, sys.exc_value, id) if id < 0 and reply[:2] == (None, None): if self._verbose > 1: print "Suppress reply" return 1 if self._verbose > 1: print "Send reply: %s" % repr(reply) wp = pickle.Pickler(wf) wp.dump(reply) return 1 def _special(self, methodname, args): if methodname == '.methods': if not hasattr(self, '_methods'): self._methods = tuple(self._listmethods()) return self._methods raise NameError, "unrecognized special method name %s" % repr(methodname) def _listmethods(self, cl=None): if not cl: cl = self.__class__ names = cl.__dict__.keys() names = filter(lambda x: x[0] != '_', names) names.sort() for base in cl.__bases__: basenames = self._listmethods(base) basenames = filter(lambda x, names=names: x not in names, basenames) names[len(names):] = basenames return names from security import Security class SecureServer(Server, Security): def __init__(self, *args): apply(Server.__init__, (self,) + args) Security.__init__(self) def _verify(self, conn, address): import string challenge = self._generate_challenge() conn.send("%d\n" % challenge) response = "" while "\n" not in response and len(response) < 100: data = conn.recv(100) if not data: break response = response + data try: response = string.atol(string.strip(response)) except string.atol_error: if self._verbose > 0: print "Invalid response syntax", repr(response) return 0 if not self._compare_challenge_response(challenge, response): if self._verbose > 0: print "Invalid response value", repr(response) return 0 if self._verbose > 1: print "Response matches challenge. Go ahead!" return 1
Save
cmd:
run