def test_login_packet(self): import packet #comes with predefined values id = packet.ID() testcase = { "__type":"LoginRequest:#Messages.RequestMessages", "Identity":packet.id_packet(id), "ProcessLabel":"test", "ProcessType" :3 } self.assertEqual(testcase,packet.login_request(id,plabel="test"))
def login(fname, lname, anumber, alias, endpoint, label=None): if label==None: label=alias id = packet.ID() id.fname = fname id.lname = lname id.alias = alias id.anumber = anumber session = Session() #only ipv4 for now. Splits port from IP (address, port) = endpoint.split(":") port = eval(port) session.registry = (address,port) session.id = id while session.socket == None: session.socket = network.create_socket() log.info("Logging in") #While we're still waiting on a login reply, keep listening status = 0 while(session.login == False): network.send( session, packet.login_request(session.id, label) ) time.sleep(1) data = network.receive(session) if data==None: continue if(data["__type"] == "LoginReply:#Messages.ReplyMessages"): if(data["Success"]): log.info("Login succeeded") session.procinfo = data["ProcessInfo"] session.login = True else: log.error("Login failed") log.error("Error message was: "+ data["Note"]) return session else: log.warning("Unexpected packet received: " + str(data) ) return session