4 ###############################################
6 ###############################################
13 #---------------------------------------------#
14 #- states ------------------------------------#
15 #---------------------------------------------#
18 #---------------------------------------------#
20 ###############################################
22 ###############################################
30 def handleMsg(self
, msg
):
33 str = msg
.split(":", 1)
36 if self
.state
== sNotReg
:
41 if str[1] == user
.username
: flag
= 0; break
43 self
.username
= str[1]
47 if (user
.username
<> self
.username
) and user
.username
:
48 self
.sock
.send("%reg%:" + user
.username
)
50 BroadCast(self
.username
, "%reg%:" + self
.username
)
54 self
.disconnect("exit")
56 elif str[0] == "%msg%":
57 BroadCast(self
.username
, "%msg%:" + self
.username
+ ":" + str[1])
59 def disconnect(self
, reason
):
62 print self
.addr
+ " has disconnected (" + reason
+ ")"
63 BroadCast(self
.username
, "%exit%:" + self
.username
)
65 ###############################################
67 ###############################################
68 def BroadCast(username
, msg
):
70 if (user
.state
== sReg
) and (user
.username
<> username
):
72 size
= user
.sock
.send(msg
)
74 user
.disconnect("timeout")
76 ###############################################
78 ###############################################
79 def GetNewConnection():
81 sock
, addr
= srv
.accept()
93 ###############################################
94 ###############################################
95 # Start #######################################
96 ###############################################
97 ###############################################
98 print "###############################################"
99 print "# l1v3 server v0.0.2 #"
100 print "# (c) Time Studios 2008 #"
101 print "###############################################"
103 srv
= socket(AF_INET
, SOCK_STREAM
)
104 srv
.setsockopt(SOL_SOCKET
, SO_REUSEADDR
, 1)
106 #---------------------------------------------#
107 #- binding -----------------------------------#
108 #---------------------------------------------#
109 print "%i binding..." %(port)
111 srv
.bind((host
, port
))
114 print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
117 #---------------------------------------------#
122 print "Waiting for connections..."
123 print "###############################################"
125 ###############################################
127 ###############################################
131 #---------------------------------------------#
132 #- new connections ---------------------------#
133 #---------------------------------------------#
134 user
= GetNewConnection()
136 userlist
.append(user
)
137 print user
.addr
+ " has connected"
138 #---------------------------------------------#
140 for user
in userlist
:
142 data
= user
.sock
.recv(1024)
143 data
= filter(lambda x
: x
>= " " and x
<= "z", data
)
146 if data
== "shutdown":
153 ###############################################
155 ###############################################
156 print "###############################################"
157 print "Closing all connections..."
159 for user
in userlist
:
166 print "###############################################"