/
usr
/
lib64
/
python2.6
/
Demo
/
pdist
/
/usr/lib64/python2.6/Demo/pdist
mkdir
upload
Name
Size
Mode
Actions
client.py
4708
0644
edit
dl
rm
client.pyc
6769
0644
edit
dl
rm
client.pyo
6769
0644
edit
dl
rm
cmdfw.py
4641
0644
edit
dl
rm
cmdfw.pyc
5276
0644
edit
dl
rm
cmdfw.pyo
5276
0644
edit
dl
rm
cmptree.py
5778
0644
edit
dl
rm
cmptree.pyc
6189
0644
edit
dl
rm
cmptree.pyo
6189
0644
edit
dl
rm
cvslib.py
10175
0644
edit
dl
rm
cvslib.pyc
13240
0644
edit
dl
rm
cvslib.pyo
13240
0644
edit
dl
rm
cvslock.py
6771
0644
edit
dl
rm
cvslock.pyc
8597
0644
edit
dl
rm
cvslock.pyo
8597
0644
edit
dl
rm
FSProxy.py
8469
0644
edit
dl
rm
FSProxy.pyc
13360
0644
edit
dl
rm
FSProxy.pyo
13360
0644
edit
dl
rm
mac.py
352
0644
edit
dl
rm
mac.pyc
603
0644
edit
dl
rm
mac.pyo
603
0644
edit
dl
rm
makechangelog.py
2992
0755
edit
dl
rm
makechangelog.pyc
3156
0644
edit
dl
rm
makechangelog.pyo
3156
0644
edit
dl
rm
rcsbump
742
0755
edit
dl
rm
rcsclient.py
1803
0644
edit
dl
rm
rcsclient.pyc
2128
0644
edit
dl
rm
rcsclient.pyo
2128
0644
edit
dl
rm
rcslib.py
10318
0644
edit
dl
rm
rcslib.pyc
11613
0644
edit
dl
rm
rcslib.pyo
11613
0644
edit
dl
rm
RCSProxy.py
4727
0755
edit
dl
rm
RCSProxy.pyc
7786
0644
edit
dl
rm
RCSProxy.pyo
7786
0644
edit
dl
rm
rcvs
114
0755
edit
dl
rm
rcvs.py
13648
0755
edit
dl
rm
rcvs.pyc
14581
0644
edit
dl
rm
rcvs.pyo
14581
0644
edit
dl
rm
README
4264
0644
edit
dl
rm
rrcs
114
0755
edit
dl
rm
rrcs.py
3996
0755
edit
dl
rm
rrcs.pyc
5670
0644
edit
dl
rm
rrcs.pyo
5670
0644
edit
dl
rm
security.py
1092
0644
edit
dl
rm
security.pyc
1693
0644
edit
dl
rm
security.pyo
1693
0644
edit
dl
rm
server.py
4581
0644
edit
dl
rm
server.pyc
6033
0644
edit
dl
rm
server.pyo
6033
0644
edit
dl
rm
sumtree.py
518
0644
edit
dl
rm
sumtree.pyc
905
0644
edit
dl
rm
sumtree.pyo
905
0644
edit
dl
rm
Edit:
/usr/lib64/python2.6/Demo/pdist/client.py
(4708B)
"""RPC Client module.""" import sys import socket import pickle import __builtin__ import os # Default verbosity (0 = silent, 1 = print connections, 2 = print requests too) VERBOSE = 1 class Client: """RPC Client class. No need to derive a class -- it's fully generic.""" def __init__(self, address, verbose = VERBOSE): self._pre_init(address, verbose) self._post_init() def _pre_init(self, address, verbose = VERBOSE): if type(address) == type(0): address = ('', address) self._address = address self._verbose = verbose if self._verbose: print "Connecting to %s ..." % repr(address) self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.connect(address) if self._verbose: print "Connected." self._lastid = 0 # Last id for which a reply has been received self._nextid = 1 # Id of next request self._replies = {} # Unprocessed replies self._rf = self._socket.makefile('r') self._wf = self._socket.makefile('w') def _post_init(self): self._methods = self._call('.methods') def __del__(self): self._close() def _close(self): if self._rf: self._rf.close() self._rf = None if self._wf: self._wf.close() self._wf = None if self._socket: self._socket.close() self._socket = None def __getattr__(self, name): if name in self._methods: method = _stub(self, name) setattr(self, name, method) # XXX circular reference return method raise AttributeError, name def _setverbose(self, verbose): self._verbose = verbose def _call(self, name, *args): return self._vcall(name, args) def _vcall(self, name, args): return self._recv(self._vsend(name, args)) def _send(self, name, *args): return self._vsend(name, args) def _send_noreply(self, name, *args): return self._vsend(name, args, 0) def _vsend_noreply(self, name, args): return self._vsend(name, args, 0) def _vsend(self, name, args, wantreply = 1): id = self._nextid self._nextid = id+1 if not wantreply: id = -id request = (name, args, id) if self._verbose > 1: print "sending request: %s" % repr(request) wp = pickle.Pickler(self._wf) wp.dump(request) return id def _recv(self, id): exception, value, rid = self._vrecv(id) if rid != id: raise RuntimeError, "request/reply id mismatch: %d/%d" % (id, rid) if exception is None: return value x = exception if hasattr(__builtin__, exception): x = getattr(__builtin__, exception) elif exception in ('posix.error', 'mac.error'): x = os.error if x == exception: exception = x raise exception, value def _vrecv(self, id): self._flush() if self._replies.has_key(id): if self._verbose > 1: print "retrieving previous reply, id = %d" % id reply = self._replies[id] del self._replies[id] return reply aid = abs(id) while 1: if self._verbose > 1: print "waiting for reply, id = %d" % id rp = pickle.Unpickler(self._rf) reply = rp.load() del rp if self._verbose > 1: print "got reply: %s" % repr(reply) rid = reply[2] arid = abs(rid) if arid == aid: if self._verbose > 1: print "got it" return reply self._replies[rid] = reply if arid > aid: if self._verbose > 1: print "got higher id, assume all ok" return (None, None, id) def _flush(self): self._wf.flush() from security import Security class SecureClient(Client, Security): def __init__(self, *args): import string apply(self._pre_init, args) Security.__init__(self) self._wf.flush() line = self._rf.readline() challenge = string.atoi(string.strip(line)) response = self._encode_challenge(challenge) line = repr(long(response)) if line[-1] in 'Ll': line = line[:-1] self._wf.write(line + '\n') self._wf.flush() self._post_init() class _stub: """Helper class for Client -- each instance serves as a method of the client.""" def __init__(self, client, name): self._client = client self._name = name def __call__(self, *args): return self._client._vcall(self._name, args)
Save
cmd:
run