def inputText(factory): '''inputText''' protocolDebug(u":::: " + factory.user + "\r\n") protocolDebug(u":::: " + factory.password + "\r\n") if 1 : text = stdin.readline() factory.buildProtocol().transport.write(text)
def dataReceived(self, data): '''数据接收''' protocolDebug("client_twisted.dataReceived 1 received: %s" %(data)) #如果连接标志为0,进行登陆校验 if self.inused == 0 : self.loginCheck(data) return if self.getFriendsFlag == 0: self.getFriends(data) return if self.inused == 1 : if self.messageCheck(data) != 0: try: #显示在ui上的最终值 receiveData = self.sourceAddress + " said: " + self.messageContents protocolDebug(u"client_twisted.dataReceived 2 receiveData") self.factory.runControlFunction(self.factory.handleReceMessage, None, self.sourceAddress, self.destinationAddress, receiveData) #pylint: disable=W0702 except: pass
def handleAddUsers(connectuser, self): '''handleAddUsers''' protocolDebug("client_twisted handleAddUsers") try: frame.addUsers(connectuser[0], self) #pylint: disable=W0702 except: pass
def handleConnectionFailed(connector, reason): protocolDebug(u'client_twisted Connection handleConnectionFailed:', str(connector), reason.getErrorMessage()) try: #pylint: disable=E1101 reactor.stop() #pylint: disable=W0702 except: pass
def connectionMade(self): '''连接时调用,发送用户和密码到服务器''' self.inused = 0 #连接服务器标志,用户和密码校验通过 self.getFriendsFlag = 0 #获取用户列表标志 # msg=userLoginReauest(self.factory.user, self.factory.user, self.factory.user, self.factory.password) msg=userLoginReauest(self.factory.user, "admin", self.factory.user, self.factory.password) self.transport.write(msg) protocolDebug("connectionMade %s"%(msg))
def handleRemoveUser(connectuser, noUse): '''handleRemoveUser''' protocolDebug("client_twisted handleRemoveUser") noUse = noUse try: frame.removeUser(connectuser[0]) #pylint: disable=W0702 except: pass
def handleRefreshSendMessage(data, noUse): '''handleRefreshSendMessage''' protocolDebug("client_twisted handleRefreshSendMessage") noUse = noUse try: frame.refreshSendMessage(data[0]) #pylint: disable=W0702 except: pass
def handleRefreshReceMessage(data, noUse): '''handleRefreshReceMessage''' protocolDebug("client_twisted handleRefreshReceMessage") noUse = noUse # print data # print noUse try: frame.refreshReceMessage(data[0], data[1], data[2]) #pylint: disable=W0702 except: pass
def sendFriends(self): #发送用户好友列表到客户端 senddata = None if self.factory.userflag == None: protocolDebug(u"server_twisted.xdServerProtocol.sendFriends 1 ***user friends: " + "cvs") senddata = "cvs" else: protocolDebug(u"server_twisted.xdServerProtocol.sendFriends 2 ***user friends: " + self.factory.user.getUserFriends(self.connectuser)) senddata = self.factory.user.getUserFriends(self.connectuser).split(",") result = friendListresponsion(self.connectuser, self.connectuser, *senddata) self.transport.write(result) self.sendFriendsFlag = 1
def handleConnectionLost(connector, reason): protocolDebug(u'client_twisted client_twisted handleConnectionLost:', str(connector), reason.getErrorMessage()) try: if frame.taskBar: frame.taskBar.Destroy() frame.taskBar = None #pylint: disable=W0702 except: pass #pylint: disable=E1101 reactor.disconnectAll()
def dataSend(self, data=""): '''数据发送''' #如果消息源地址和目的地址有效,进行消息发送 result = self.messageCheck(data) if result == 1: if self.factory.clientConnect.has_key(self.destinationAddress): if self.factory.clientConnect[self.destinationAddress] != 0: protocolDebug(u"server_twisted.xdServerProtocol.dataSend 2 data: \r\n") self.factory.clientConnect[self.destinationAddress].transport.write(data) try: self.factory.runControlFunction(self.factory.handleSendMessage, None, data) protocolDebug(u"server_twisted.xdServerProtocol.dataSend 3 data: \r\n") #pylint: disable=W0702 except: pass
def __init__(self, user=None): '''使用user实例代替工厂本省的user字典''' # self.deferred=defer.Deferred() # print user if user != None: self.user = user self.userflag = 1 self.clientConnect = {} protocolDebug(u"server_twisted.xdServerFactory.__init__ init") self.handleSuccess = None self.handleFailure = None self.handleLoginUser = None self.handleLogoutUser = None self.handleReceMessage = None self.handleSendMessage = None
def handleFriendlist(friendlist , noUse): '''接收到的消息处理''' protocolDebug("client_twisted handleFriendlist start") protocolDebug("noUse: "+str(noUse)) protocolDebug("friendlist: "+str(friendlist)) frame.setUserFriends(friendlist[0]) protocolDebug("client_twisted handleFriendlist end")
def killUser(self, user): '''将用户踢出连接''' protocolDebug(u"server_twisted.xdServerFactory.killUser 1") if self.clientConnect.has_key(user): protocolDebug(u"server_twisted.xdServerFactory.killUser 2 kill user: "******"server_twisted.xdServerFactory.killUser 3")
def runServer(port, user): '''runServer''' protocolDebug(u"server_twisted.runServer 1 ****Server is running at port:%d ****\r\n" % (port)) Server = xdServerFactory(user) protocolDebug(user) #pylint: disable=E1101 reactor.listenTCP(port, Server) protocolDebug(u"server_twisted.runServer 2 ") return Server
def getFriends(self, message): '''获取friedns用户列表''' friendlist=parseCommMessage(message) try: protocolDebug(u"client_twisted.getFriends 3 user friends list " + repr(friendlist)) protocolDebug(friendlist) self.factory.runControlFunction(self.factory.handleFriendlist,None,friendlist) #pylint: disable=W0702 except: protocolDebug(u"client_twisted.getFriends 4 get user frends list err") self.getFriendsFlag = 1 self.factory.runControlFunction(self.factory.handleSuccess,None,8002)
def loginCheck(self, message): '''登陆检查''' result=parseCommMessage(message) protocolDebug(u"client_twisted.loginCheck result "+str(result)) if result==True: #用户密码检测成功后,发送用户friendlist请求 msg=friendListRequest(self.factory.user, self.factory.user) self.transport.write(msg) self.inused = 1 protocolDebug(u"client_twisted.loginCheck 1 ok") if result==False: self.inused = 0 protocolDebug(u"client_twisted.loginCheck 2 err")
def userCheck(self, usermessage): '''The first message form the client is user message ,it include user name and use password''' #检查用户登录请求信息 result = parseCommMessage(usermessage) self.connectuser = result[2] self.connectpassword = result[3] if self.factory.userflag == None: if self.factory.user.has_key(self.connectuser) == True: pass else: result = userLoginFailed(self.connectuser, self.connectuser, self.connectuser, self.connectpassword) protocolDebug("userCheck 1 user and password is wrong") self.transport.write(result) self.transport.loseConnection() return if self.factory.user[self.connectuser] == self.connectpassword: pass else: result = userLoginFailed(self.connectuser, self.connectuser, self.connectuser, self.connectpassword) protocolDebug("userCheck 2 user and password is wrong") self.transport.write(result) self.transport.loseConnection() return else: if self.factory.user.checkUser(self.connectuser, self.connectpassword) != userControlErrValue["OK"]: result = userLoginFailed(self.connectuser, self.connectuser, self.connectuser, self.connectpassword) protocolDebug("userCheck 3 user and password is wrong") self.transport.write(result) self.transport.loseConnection() return if self.factory.userflag == None: self.factory.clients.append(self) #在factory的连接队列中添加连接实例 self.factory.clientConnect[self.connectuser] = self #保留用户和连接实例的字典 else: if self.factory.user.getUserLogin(self.connectuser) != 1: self.factory.runControlFunction(self.factory.handleLoginUser, self, self.connectuser) self.factory.user.login(self.connectuser) self.factory.clients.append(self) #在factory的连接队列中添加连接实例 self.factory.clientConnect[self.connectuser] = self #保留用户和连接实例的字典 else: self.transport.loseConnection() return self.inused = 1 #client已经登陆 result = userLoginSucess(self.connectuser, self.connectuser, self.connectuser, self.connectpassword) self.transport.write(result) self.factory.runControlFunction(self.factory.handleSuccess, None, self.connectuser)
def messageCheck(self, message): '''消息检查,这里没有加密,使用明文传输''' result = parseCommMessage(message) self.destinationAddress = result[1] #目的连接地址 self.sourceAddress = result[0] #来源地址 self.messageContents = result[2] #发送消息 protocolDebug(u"server_twisted.xdServerProtocol.messageCheck 1 message: " + "src: " + self.destinationAddress + ", dst: " + self.sourceAddress) protocolDebug(u"server_twisted.xdServerProtocol.messageCheck 1 message: " + "messageContents: " + self.messageContents ) #察看消息发送的目的地址和来源地址是否有效 if self.factory.userflag == None: if self.factory.user.has_key(self.sourceAddress) == True: if self.factory.user.has_key(self.destinationAddress) == True: return 1 return 0 else: if self.factory.user.findUser(self.sourceAddress) == userControlErrValue["HaveUser"]: protocolDebug("HaveUser") if self.factory.user.findUserFriend(self.sourceAddress, self.destinationAddress) == userControlErrValue["OK"]: protocolDebug("HaveFriend") return 1 return 0
def handelFailure(failure, port): '''注册给客户端协议,在连接失败时调用''' protocolDebug( "client_twisted handelFailure"+str(port)) protocolDebug(failure.getErrorMessage())
def handleSuccess(result, port): '''注册给客户端协议,在连接成功时调用''' protocolDebug( "client_twisted handleSuccess"+str(port)) frame.updatePanel() protocolDebug(result)
def warp(*args): protocolDebug("*****************"+func.__name__+': start') func(*args) protocolDebug("*****************"+func.__name__+': end')
def clientConnectionLost(self, connector, reason): '''断开连接处理函数''' protocolDebug(u'client_twisted xdClientFactory.client_twisted Lost connection. Reason:', reason.getErrorMessage()) self.runControlFunction(self.handleConnectionLost, reason, connector)
def handleFailure(failure, port): '''handleFailure''' protocolDebug(u"client_twisted handleFailure 1 : connectin from port %i: %s\r\n" % ( port, failure.getErrorMessage()))
def stopFactory(self): protocolDebug(u"stop Factory")
def startedConnecting(self, connector): '''开始连接''' protocolDebug(u'client_twisted Started to connect.')
def clientConnectionFailed(self, connector, reason): '''连接失败处理函数''' protocolDebug(u'client_twisted xdClientFactory.Connection failed. Reason:', reason.getErrorMessage()) self.runControlFunction(self.handleConnectionFailed, reason, connector)
def messageSend(self, friend,data): '''新数据发送,将数据编码合作一个函数里''' if data: protocolDebug(u"client_twisted send: %s" % (data)) msg=commMessage(self.factory.user, friend, data) self.transport.write(msg)
def handleSuccess(data, port): '''handleSuccess''' data = data port = port protocolDebug(u"server_twisted.handelSuccess 1 start") protocolDebug(u"server_twisted.handelSuccess 2 end")
def buildProtocol(self, addr): '''创建Protocol实例''' protocolDebug(u'client_twisted Connected.') self.protocolInstance = self.protocol() self.protocolInstance.factory = self return self.protocolInstance