def SendDeleteBackup(SupplierID, BackupID): dhnio.Dprint(6, "p2p_service.SendDeleteBackup SupplierID=%s BackupID=%s " % (SupplierID, BackupID)) MyID = misc.getLocalID() PacketID = BackupID RemoteID = SupplierID result = dhnpacket.dhnpacket(commands.DeleteBackup(), MyID, MyID, PacketID, "", RemoteID) transport_control.outboxAck(result)
def SendDeleteListBackups(SupplierID, ListBackupIDs): dhnio.Dprint(6, "p2p_service.SendDeleteListBackups SupplierID=%s BackupIDs number: %d" % (SupplierID, len(ListBackupIDs))) MyID = misc.getLocalID() PacketID = packetid.UniqueID() RemoteID = SupplierID Payload = '\n'.join(ListBackupIDs) result = dhnpacket.dhnpacket(commands.DeleteBackup(), MyID, MyID, PacketID, Payload, RemoteID) transport_control.outboxAck(result)
def SendMessage(RemoteID, messagebody, PacketID=""): dhnio.Dprint(6, "message.SendMessage to: " + str(RemoteID)) # TODO ERROR HERE (return Defer) if not identitycache.scheduleForCaching(RemoteID): dhnio.Dprint(1, "message.SendMessage ERROR. Can't find identity: " + str(RemoteID)) return RemoteIdentity = identitycache.FromCache(RemoteID) if RemoteIdentity == "": dhnio.Dprint(1, "message.SendMessage ERROR. Can't retreive identity: " + str(RemoteID)) return Amessage = MessageClass(RemoteIdentity, messagebody) MyID = misc.getLocalID() if PacketID == "": PacketID = packetid.UniqueID() Payload = misc.ObjectToString(Amessage) dhnio.Dprint(6, "message.SendMessage about to send to " + RemoteID) result = dhnpacket.dhnpacket(commands.Message(), MyID, MyID, PacketID, Payload, RemoteID) transport_control.outboxAck(result)
def doSuppliersRequestDBInfo(self, arg): # dhnio.Dprint(4, 'backup_db_keeper.doSuppliersRequestDBInfo') # packetID_ = settings.BackupInfoFileName() # packetID = settings.BackupInfoEncryptedFileName() packetID = settings.BackupIndexFileName() for supplierId in contacts.getSupplierIDs(): if supplierId: transport_control.RemoveInterest(supplierId, packetID) self.requestedSuppliers.clear() Payload = '' localID = misc.getLocalID() for supplierId in contacts.getSupplierIDs(): if not supplierId: continue newpacket = dhnpacket.dhnpacket(commands.Retrieve(), localID, localID, packetID, Payload, supplierId) transport_control.outboxAck(newpacket) transport_control.RegisterInterest(self.SupplierResponse, supplierId, packetID) self.requestedSuppliers.add(supplierId)
def OneFromList(filename): WholeFile=dhnio.ReadBinaryFile(filename) FileList=WholeFile.split("\n") num=len(FileList) dhnio.Dprint(7, "supplierpatrol.OneFromList number of items is " + str(num)) rnd=random.randint(0,num-1) item=FileList[rnd] command=commands.Data() OwnerID=misc.getLocalID() CreatorID=misc.getLocalID() PacketID=item Payload="" supnum=packetid.SupplierNumber(item) RemoteID=contacts.getSupplierID(supnum) request=dhnpacket.dhnpacket(command, OwnerID, CreatorID, PacketID, Payload, RemoteID) global DataResultsOutstanding DataResultsOutstanding.append(item) transport_control.RegisterInterest(DataResult, RemoteID, PacketID) transport_control.outboxAck(request)
def UpdateListFiles(): if (not os.path.exists(settings.FileListDir())): os.mkdir(settings.FileListDir()) for supnum in range(0, contacts.numSuppliers()): filename= os.path.join(settings.FileListDir(), str(supnum)) dhnio.Dprint(7, "supplierpatrol.UpdateListFiles looking at = " + filename) if (not os.path.exists(filename) or (fileAgeInSeconds(filename) > 3600*24)): dhnio.Dprint(7, "supplierpatrol.UpdateListFiles found one to update " + filename) command=commands.ListFiles() OwnerID=misc.getLocalID() CreatorID=misc.getLocalID() PacketID="ListFiles" + str(supnum) Payload="" RemoteID= contacts.getSupplierID(supnum) request=dhnpacket.dhnpacket(command, OwnerID, CreatorID, PacketID, Payload, RemoteID) transport_control.RegisterInterest(ListResult, RemoteID, PacketID) transport_control.outboxAck(request) global NumRequestsOutstanding NumRequestsOutstanding += 1 dhnio.Dprint(7, "supplierpatrol.UpdateListFiles sent request - now outstanding=" + str(NumRequestsOutstanding))
def doSuppliersSendDBInfo(self, arg): # dhnio.Dprint(4, 'backup_db_keeper.doSuppliersSendDBInfo') # packetID = settings.BackupInfoEncryptedFileName() packetID = settings.BackupIndexFileName() for supplierId in contacts.getSupplierIDs(): if supplierId: transport_control.RemoveInterest(supplierId, packetID) self.sentSuppliers.clear() # src = dhnio.ReadBinaryFile(settings.BackupInfoFileFullPath()) src = dhnio.ReadBinaryFile(settings.BackupIndexFilePath()) localID = misc.getLocalID() block = dhnblock.dhnblock(localID, packetID, 0, dhncrypto.NewSessionKey(), dhncrypto.SessionKeyType(), True, src) Payload = block.Serialize() for supplierId in contacts.getSupplierIDs(): if not supplierId: continue if not contact_status.isOnline(supplierId): continue newpacket = dhnpacket.dhnpacket(commands.Data(), localID, localID, packetID, Payload, supplierId) transport_control.outboxAck(newpacket) transport_control.RegisterInterest(self.SupplierAcked, supplierId, packetID) self.sentSuppliers.add(supplierId)