예제 #1
0
    def connectionMade(self):
        transport_control.log('ssh', 'new income connection')
        dhnio.Dprint(14, 'transport_ssh.MyReceiveFilesSubsistem.connectionMade')
#        self.fout, self.filename = tempfile.mkstemp(".dhn-ssh-in")
        self.fout, self.filename = tmpfile.make("ssh-in")
        self.total_size = 0
        self.stop_defer = self.transport.session.avatar.stop_defer
예제 #2
0
    def success(src, idurl, host, port, conn):
        global _LastPingTimeDict
        global _ConnectionsDict

        if len(src) == 0:
            increase_receiving_delay(idurl)

        else:
            parts = src.splitlines()
            dhnio.Dprint(14, 'transport_http.receive.success %d bytes in %d parts from %s (%s:%s)' % (len(src), len(parts), idurl, host, port))
            for part64 in parts:
                try:
                    part = base64.b64decode(part64.strip())
                except:
                    dhnio.Dprint(14, 'transport_http.receive.success ERROR in base64.b64decode()')
#                    dhnio.Dprint(1, 'len(part64)=%d' % len(part64))
#                    dhnio.Dprint(1, 'len(part64.strip())=%d' % len(part64.strip()))
#                    dhnio.Dprint(1, 'part64=[%s]' % part64)
                    decrease_receiving_delay(idurl)
                    continue
#                fd, filename = tempfile.mkstemp(".dhn-http-in")
                fd, filename = tmpfile.make("http-in")
                os.write(fd, part)
                os.close(fd)
                decrease_receiving_delay(idurl)
                transport_control.receiveStatusReport(
                    filename,
                    'finished',
                    'http',
                    host+':'+port,)
            transport_control.log('http', 'finish connection with %s:%s ' % (host, port))

        conn.disconnect()
        _ConnectionsDict.pop(idurl, None)
예제 #3
0
    def success(src, idurl, host, port, conn):
        global _LastPingTimeDict
        global _ConnectionsDict

        if len(src) == 0:
            increase_receiving_delay(idurl)

        else:
            parts = src.splitlines()
            lg.out(14, 'http_node.receive.success %d bytes in %d parts from %s (%s:%s)' % (len(src), len(parts), idurl, host, port))
            for part64 in parts:
                try:
                    part = base64.b64decode(part64.strip())
                except:
                    lg.out(14, 'http_node.receive.success ERROR in base64.b64decode()')
#                    lg.out(1, 'len(part64)=%d' % len(part64))
#                    lg.out(1, 'len(part64.strip())=%d' % len(part64.strip()))
#                    lg.out(1, 'part64=[%s]' % part64)
                    decrease_receiving_delay(idurl)
                    continue
#                fd, filename = tempfile.mkstemp(".dhn-http-in")
                fd, filename = tmpfile.make("http-in", extension='.http')
                os.write(fd, part)
                os.close(fd)
                decrease_receiving_delay(idurl)
                transport_control.receiveStatusReport(
                    filename,
                    'finished',
                    'http',
                    host+':'+port,)
            transport_control.log('http', 'finish connection with %s:%s ' % (host, port))

        conn.disconnect()
        _ConnectionsDict.pop(idurl, None)
예제 #4
0
    def process_msg(self, msg):
        dhnio.Dprint(12, 'transport_email.process_msg')
        take = False
        if msg['Subject'] == 'datahaven_transport':
            take = True
#            fout, self.current_filename = tempfile.mkstemp(".dhn-email-in")
            fout, self.current_filename = tmpfile.make("email-in")
            dhnio.Dprint(8, 'transport_email.message from: ' + str(msg['From']))
            transport_control.log('email', 'receiving file from ' + str(msg['From']))
            for part in msg.walk():
                if part.get_content_maintype() == 'multipart':
                    continue
                src = part.get_payload(decode=True)
                src = src[:-3]
                if src != None:
                    os.write(fout,src)
            os.close(fout)
##            transport_control.log('email', 'download... ')
            poll().receive()


        if take:
            self.delete(self.cur_message).addCallbacks(
                self.delete_msg, self.err_delete_msg)
        else:
            self.cur_message += 1
            if self.cur_message < self.num_messages:
                self.retrieve(self.cur_message).addCallbacks(
                    self.do_retrieve_msg, self.err_retrieve_msg)
            else:
                self.no_messages()
예제 #5
0
 def __init__(self, protocol, length):
     global _RegisterTransferFunc
     global _ByTransferID
     self.protocol = protocol
     self.receivedBytes = 0
     self.length = length
     self.fd, self.filename = tmpfile.make("tcp-in")
     self.peer = self.protocol.remoteaddress # self.protocol.transport.getPeer()
     self.transfer_id = _RegisterTransferFunc(
         'receive', self.peer, self.getReceivedBytes, self.filename, -1)
     _ByTransferID[self.transfer_id] = self.protocol
예제 #6
0
 def __init__(self, peer, file_id, num_blocks):
     global _RegisterTransferFunc
     self.fd, self.filename = tmpfile.make("udp-in")
     self.peer = peer
     self.file_id = file_id
     self.num_blocks = num_blocks
     self.blocks = {}
     self.bytes_received = 0
     self.bytes_extra = 0
     self.transfer_id = None
     self.started = time.time()
     if _RegisterTransferFunc:
         self.transfer_id = _RegisterTransferFunc('receive', self.peer.remote_address, self.get_bytes_received, self.filename, -1, '')
예제 #7
0
 def _send_servers():
     import tmpfile, misc, nameurl, settings, transport_tcp
     sendfile, sendfilename = tmpfile.make("propagate")
     os.close(sendfile)
     LocalIdentity = misc.getLocalIdentity()
     dhnio.WriteFile(sendfilename, LocalIdentity.serialize())
     dlist = []
     for idurl in LocalIdentity.sources:
         # sources for out identity are servers we need to send to
         protocol, host, port, filename = nameurl.UrlParse(idurl)
         port = settings.IdentityServerPort()
         d = Deferred()
         transport_tcp.sendsingle(sendfilename, host, port, do_status_report=False, result_defer=d, description='Identity')
         dlist.append(d) 
     dl = DeferredList(dlist, consumeErrors=True)
     print '+++++ IDENTITY SENT TO %s:%s' % (host, port)
     return dl