Ejemplo n.º 1
0
    def queue_rmsg(self, rmsg):
        msg = MessageBuf()
        msg.add_uint8(MessageType.MSG_REL)
        msg.add_uint16(self.wseq)
        msg.add_bytes(rmsg.buf)

        msg.seq = self.wseq
        with self.rmsgs_lock:
            self.rmsgs.append(msg)
        self.wseq = (self.wseq + 1) % 65536
Ejemplo n.º 2
0
 def start_session(self, username, cookie):
     msg = MessageBuf()
     msg.add_uint8(MessageType.MSG_SESS)
     msg.add_uint16(2)  # Magic number
     msg.add_string('Hafen')
     msg.add_uint16(9)  # Protocol version
     msg.add_string(username)
     msg.add_uint16(len(cookie))
     msg.add_bytes(cookie)
     self.send_msg(msg)
Ejemplo n.º 3
0
    def login(self, username, password):
        msg = MessageBuf()
        msg.add_string('pw')
        msg.add_string(username)
        msg.add_bytes(password.decode('hex'))
        self.__send_msg(msg)

        rpl = self.__recv_msg()
        status = rpl.get_string()
        if status == 'ok':
            acc = rpl.get_string(
            )  # This is normally the same thing as `username`
            return
        elif status == 'no':
            err = rpl.get_string()
            raise AuthException(err)
        else:
            raise AuthException('Unexpected reply: "' + status + '"')
Ejemplo n.º 4
0
 def __prepend_header(self, msg):
     tmp = MessageBuf()
     tmp.add_uint16(len(msg.buf), be=True)
     tmp.add_bytes(msg.buf)
     return tmp