summaryrefslogtreecommitdiffstats
path: root/Demo/pdist/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/pdist/server.py')
-rwxr-xr-xDemo/pdist/server.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/Demo/pdist/server.py b/Demo/pdist/server.py
index c8acf19..4efb180 100755
--- a/Demo/pdist/server.py
+++ b/Demo/pdist/server.py
@@ -109,3 +109,36 @@ class Server:
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):
+ 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", `response`
+ return 0
+ if not self._compare_challenge_response(challenge, response):
+ if self._verbose > 0:
+ print "Invalid response value", `response`
+ return 0
+ if self._verbose > 1:
+ print "Response matches challenge. Go ahead!"
+ return 1