From 07c42c6b893baa9cf78a87e63fc5503f2d883694 Mon Sep 17 00:00:00 2001 From: Malte Bublitz Date: Mon, 21 Jan 2013 17:30:01 +0100 Subject: [PATCH] added server. --- server.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 server.py diff --git a/server.py b/server.py new file mode 100644 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() -- 2.30.2