rendered paste bodyfrom twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
from elementtree.ElementTree import *
import ConfigParser
config = ConfigParser.ConfigParser()
config.read("settings.ini")
port = int(config.get("server", "port"))
class ChatServer(LineReceiver):
userlist = []
def connectionMade(self):
self.transport.userid = len(self.userlist)
self.transport.room = "Lobby"
self.transport.username = ""
self.userlist.append(self.transport)
print "New connection! ID = %s" % (self.transport.userid)
def lineReceived(self, line):
element = fromstring(line)
time = element.findtext("time")
user = element.findtext("nick")
msg = element.findtext("msg")
type = element.findtext("type")
if type == "norm":
self.message = "[%s] <%s> %s" % (time, user, msg)
for user in self.userlist:
user.write(message)
if type == "note":
self.message = "[%s] * %s" % (time, msg)
if type == "newuser":
self.message = "[%s] * %s" % (time, msg)
pygame.time.wait(5)
def send(self,message, where):
{'all': all,
'room': room,
'self': self}[where]()
def all():
for user in self.userlist:
user.write(message)
def room():
for user in self.userlist:
if user.room == self.transport.room:
user.write(message)
def self():
self.transport.write(message)
def connectionLost(self, reason):
self.userlist.remove(self.transport)
print "Lost connection, %s" % (reason)
factory = Factory()
factory.protocol = ChatServer
reactor.listenTCP(port, factory)
reactor.run()