From d8720ba9f9523be8d0f3632e7b9983ab273b1445 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Mon, 12 Nov 2007 17:50:53 +0100 Subject: [PATCH] changes --- server/CmdReceiver.py | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/server/CmdReceiver.py b/server/CmdReceiver.py index 47e884e..bdddb39 100644 --- a/server/CmdReceiver.py +++ b/server/CmdReceiver.py @@ -3,6 +3,12 @@ import threading import cmd import sys +import Entry + + +class LocalMyCmdException(Exception): + def __init__(self, msg): + self.msg = msg class MyCmd(cmd.Cmd): @classmethod @@ -19,6 +25,71 @@ class MyCmd(cmd.Cmd): def do_hello(self, l): self.stdout.write("DO: %s\n" % l) + def do_list(self, l): + try: + parts = l.split(' ') + if len(parts) != 1: + raise LocalMyCmdException("illegal number of arguments") + x = parts[0] + if x == 'all': + for entry in MyCmd.entries.values(): + self.stdout.write(str(entry) + "\n") + elif MyCmd.entries.has_key(x): + self.stdout.write(str(MyCmd.entries[x]) + "\n") + else: + raise LocalMyCmdException("unknown dynid") + except LocalMyCmdException, e: + self.stdout.write("Failure: %s\n" % str(e.msg)) + + def do_add(self, l): + try: + parts = l.split(' ') + if len(parts) != 3: + raise LocalMyCmdException("illegal number of arguments") + (dynid, name, sharedSecret) = parts + if MyCmd.entries.has_key(dynid): + raise LocalMyCmdException("duplicate dynid") + for entry in MyCmd.entries.values(): + if entry.name == name: + raise LocalMyCmdException("duplicate name") + newEntry = Entry.Entry(dynid, sharedSecret, name) + MyCmd.entries[dynid] = newEntry + self.stdout.write("Done\n") + except LocalMyCmdException, e: + self.stdout.write("Failure: %s\n" % str(e.msg)) + + def do_edit(self, l): + try: + parts = l.split(' ') + if len(parts) != 3: + raise LocalMyCmdException("illegal number of arguments") + (dynid, attr, value) = parts + if not MyCmd.entries.has_key(dynid): + raise LocalMyCmdException("unknown dynid") + if attr == 'sharedSecret': + MyCmd.entries[dynid].sharedSecret = value + elif attr == 'name': + MyCmd.entries[dynid].name = value + else: + raise LocalMyCmdException("unknown attribute to change") + self.stdout.write("Done\n") + except LocalMyCmdException, e: + self.stdout.write("Failure: %s\n" % str(e.msg)) + + def do_delete(self, l): + try: + parts = l.split(' ') + if len(parts) != 1: + raise LocalMyCmdException("illegal number of arguments") + x = parts[0] + if not MyCmd.entries.has_key(x): + raise LocalMyCmdException("unknown dynid") + del MyCmd.entries[x] + self.stdout.write("Done\n") + except LocalMyCmdException, e: + self.stdout.write("Failure: %s\n" % str(e.msg)) + + def do_quit(self, l): self.stdout.write("Bye\n") return True