added server.
authorMalte Bublitz <me@malte-bublitz.de>
Mon, 21 Jan 2013 16:30:01 +0000 (17:30 +0100)
committerMalte Bublitz <me@malte-bublitz.de>
Mon, 21 Jan 2013 16:30:01 +0000 (17:30 +0100)
server.py [new file with mode: 0644]

diff --git a/server.py b/server.py
new file mode 100644 (file)
index 0000000..a4e143e
--- /dev/null
+++ b/server.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2013 Malte Bublitz.
+#
+
+from twisted.internet.protocol import Factory
+from twisted.protocols.basic import LineReceiver
+from twisted.internet import reactor
+
+class ChatProtocol(LineReceiver):
+       def connectionMade(self):
+               self.delimiter = '\n'
+               self.userName = None
+
+       def lineReceived(self, line):
+               print line
+               if line.startswith("ENTER"):
+                       print self.userName+" entered"
+                       self.broadcastLine("%s entered the room." % self.userName)
+               elif line.split(" ")[0]=="NAME":
+                       self.userName = " ".join(line.split(" ")[1:]).strip()
+                       print "known as "+self.userName
+                       self.factory.users[self.userName] = self
+               elif line.split(" ")[0]=="ALL":
+                       self.broadcastLine("<%s> %s" % (self.userName, " ".join(line.split(" ")[1:])))
+               elif line.startswith("EXIT"):
+                       self.broadcastLine("%s leaved the room." % self.userName)
+               elif line.split(" ")[0] == "ONE":
+                       self.factory.users[line.split(" ")[1]].sendLine("P<"+self.userName+"> "+" ".join(line.split(" ")[2:]))
+               else:
+                       self.sendLine("UNKNOWN COMMAND")
+
+       def ConnectionLost(self, reason):
+               if self.userName is not None and self.userName in self.factory.users:
+                       del self.factory.users[self.userName]
+                       
+       def broadcastLine(self, line):
+               for client in self.factory.users.itervalues():
+                       client.sendLine(line)
+
+factory = Factory()
+factory.protocol = ChatProtocol
+factory.users = {}
+reactor.listenTCP(7070, factory)
+reactor.run()