class PendingMessage: def __init__(self, reader, name, msg): self.reader = reader self.name = name self.msg = msg destAddress = self.reader.book[self.name]['tracker'] dest, outport, v6 = decodeAddress(destAddress) recipient = self.reader.book[self.name]['pubkey'] self.endkey = decode(recipient) self.reader.trackback.setPutPeerForEndpointCallback( recipient, self.foundPeer) self.tracker = TrackerClient(self.reader.router, addr=(dest, outport)) self.tracker.getPeerForEndpoint(recipient) def foundPeer(self, endkey, peer): destkey = decode(peer[0]) addr = peer[1] if self.reader.keys.isKnown( addr) or self.reader.keys.outgoingInvites.getInviteForHost( False, decodeAddress(addr)): self.sendMessage(decodeAddress(addr)) else: self.reader.trackback.setPutInviteForPeerCallback( addr, self.foundInvite) self.tracker.getInviteForPeer(addr) def foundInvite(self, addr, invite): self.sendMessage(decodeAddress(addr)) def sendMessage(self, addr): data = self.msg.encode('ascii') onion = OnionPacket() onion.createOnionPacket(self.reader.keys.getEndpoint(), self.endkey, data, self.reader.keys.entropy) dustmail = DustmailClient(self.reader.router, addr) dustmail.sendMessage(encode(onion.packet)) self.reader.commandDone.set()
class PendingMessage: def __init__(self, reader, name, msg): self.reader=reader self.name=name self.msg=msg destAddress=self.reader.book[self.name]['tracker'] dest, outport, v6=decodeAddress(destAddress) recipient=self.reader.book[self.name]['pubkey'] self.endkey=decode(recipient) self.reader.trackback.setPutPeerForEndpointCallback(recipient, self.foundPeer) self.tracker=TrackerClient(self.reader.router, addr=(dest, outport)) self.tracker.getPeerForEndpoint(recipient) def foundPeer(self, endkey, peer): destkey=decode(peer[0]) addr=peer[1] if self.reader.keys.isKnown(addr) or self.reader.keys.outgoingInvites.getInviteForHost(False, decodeAddress(addr)): self.sendMessage(decodeAddress(addr)) else: self.reader.trackback.setPutInviteForPeerCallback(addr, self.foundInvite) self.tracker.getInviteForPeer(addr) def foundInvite(self, addr, invite): self.sendMessage(decodeAddress(addr)) def sendMessage(self, addr): data=self.msg.encode('ascii') onion=OnionPacket() onion.createOnionPacket(self.reader.keys.getEndpoint(), self.endkey, data, self.reader.keys.entropy) dustmail=DustmailClient(self.reader.router, addr) dustmail.sendMessage(encode(onion.packet)) self.reader.commandDone.set()