Пример #1
0
 def lineReceived(self, line):
     line = line.strip()
     if line == OK:
         sender = FileSender()
         sender.CHUNK_SIZE = 2 ** 16
         deffered = sender.beginFileTransfer(self.fileObj, self.transport, None)
         deffered.addCallback(self.success).addErrback(self.error)     
Пример #2
0
        def getshared_cb(data):
            if len(data) == 0:
                error = { 'status': {'error': "Invalid Request",
                                     'message': "File does not exist."} }
                request.write(json.dumps(error, sort_keys=True, encoding="utf-8"))
                request.finish()
                return

            file_path = str(data[0][0]) + "/" + fileid
            if not os.path.exists(file_path):
                error = { 'status': {'error': "Invalid Request",
                                     'message': "File does not exist."} }
                request.write(json.dumps(error, sort_keys=True, encoding="utf-8"))
                request.finish()

            request.write(str(data[0][1])) # writing key
            iv_plain = self.sid.decryptData(data[0][2]) # writing IV
            print iv_plain
            iv = self.sid.encryptData(iv_plain, pubkey)
            request.write(iv)
            file = open(file_path ,"r")
            sender = FileSender()
            sender.CHUNK_SIZE = 200
            df = sender.beginFileTransfer(file, request)

            df.addErrback(err)
            df.addCallback(finishTrnf_cb, file)
Пример #3
0
 def connectionMade(self):
     self.transport.write('%s\r\n' % (self.insize))
     sender = FileSender()
     sender.CHUNK_SIZE = 2 ** 16
     d = sender.beginFileTransfer(self.infile, self.transport,
                                  self._monitor)
     d.addCallback(self.cbTransferCompleted)
Пример #4
0
 def lineReceived(self, line):
     print 'sender %s' % line
     line = line.strip()
     if line == OK:
         sender = FileSender()
         sender.CHUNK_SIZE = 2 ** 16
         deffered = sender.beginFileTransfer(self.fileObj, self.transport, None)
         deffered.addCallback(self.success).addErrback(self.error)
Пример #5
0
 def connectionMade(self):
     """ """
     instruction = dict(file_size=self.insize,
                        original_file_path=self.path)
     instruction = json.dumps(instruction)
     self.transport.write(instruction+'\r\n')
     sender = FileSender()
     sender.CHUNK_SIZE = 2 ** 16
     d = sender.beginFileTransfer(self.infile, self.transport,
                                  self._monitor)
     d.addCallback(self.cbTransferCompleted)
Пример #6
0
 def _start_transfer(self, _discard):
     if self.fileObj is None:
         self._failure((2, "NO_FILE_LOADED"))
     else:
         logging.info("Started file transfer")
         self.busy = True
         fileProducer = FileSender()
         fileProducer.CHUNK_SIZE = 65536
         def_obj = fileProducer.beginFileTransfer(file=self.fileObj, consumer=self.transport)
         def_obj.addCallback(self._done_transfer, True)
         def_obj.addErrback(self._done_transfer, False)
Пример #7
0
 def connectionMade(self):
     """ """
     fileHeader = session.Message(session.fileMsg)
     fileHeader.fileSize = self.insize
     fileHeader.fileName = self.relPath
     fileHeader.sessionID = self.sessionID
     self.transport.write(fileHeader.serialize() + '\r\n')
     sender = FileSender()
     sender.CHUNK_SIZE = 2 ** 16
     d = sender.beginFileTransfer(self.infile, self.transport,
                                  self._monitor)
     d.addCallback(self.cbTransferCompleted)
Пример #8
0
 def _start_transfer(self, _discard):
     if self.fileObj is None:
         self._failure((2, 'NO_FILE_LOADED'))
     else:
         logging.info('Started file transfer')
         self.busy = True
         fileProducer = FileSender()
         fileProducer.CHUNK_SIZE = 65536
         def_obj = fileProducer.beginFileTransfer(file=self.fileObj,
                                                  consumer=self.transport)
         def_obj.addCallback(self._done_transfer, True)
         def_obj.addErrback(self._done_transfer, False)
Пример #9
0
    def connectionMade(self):
        """ """
        # try:
        instruction = dict(file_size=self.insize, original_file_path=self.path)
        instruction = json.dumps(instruction)
        # except ValueError:
        # "Accepting as delete command instead..."

        self.transport.write(instruction + "\r\n")
        sender = FileSender()
        sender.CHUNK_SIZE = 2 ** 16
        d = sender.beginFileTransfer(self.infile, self.transport, self._monitor)
        d.addCallback(self.cbTransferCompleted)
Пример #10
0
    def connectionMade(self):
        """ """
        self.logger = MessageLogger(open('log\client_logger.txt', "a"))
        self.logger.log("[connected at %s]" %
                        time.asctime(time.localtime(time.time())))

        instruction = dict(file_size=self.insize, original_file_path=self.path)
        instruction = json.dumps(instruction)
        self.transport.write(instruction + '\r\n')
        sender = FileSender()
        sender.CHUNK_SIZE = 2**16
        d = sender.beginFileTransfer(self.infile, self.transport,
                                     self._monitor)
        d.addCallback(self.cbTransferCompleted)
Пример #11
0
    def sendFile(self, filename, callback = lambda x,y: (x,y)):
        d = self._mkHeaders(filename)

        print d['size']

        transport = self.transport
        end_callback = self.end_callback

        class ProgressMeter(object):
            def __init__(self, filename, callback):
                self.transferred = 0
                self.full = d['size']
                self.callback = callback
                self.cancelled = False
            def monitor(self, data):
                if self.cancelled:
                    print 'progressmeter: cancelled!'
                    transport.unregisterProducer()
                    transport.loseConnection()
                    end_callback()

                self.transferred += len(data)
                self.callback(self.transferred, self.full)
                return data

        self.fp = urllib.urlopen(filename)
        self.sentBytes = 0


        self.transport.write(base64.encodestring(json.dumps(d)))
        self.transport.write('\r\n')

        sender = FileSender()
        sender.CHUNK_SIZE = 2 ** 16

        pm = ProgressMeter(filename, callback)

        d = sender.beginFileTransfer(self.fp, self.transport, pm.monitor)

        d.addCallback(self.done)
        return pm
Пример #12
0
        def getshared_cb(data):
            if len(data) == 0:
                error = {
                    'status': {
                        'error': "Invalid Request",
                        'message': "File does not exist."
                    }
                }
                request.write(
                    json.dumps(error, sort_keys=True, encoding="utf-8"))
                request.finish()
                return

            file_path = str(data[0][0]) + "/" + fileid
            if not os.path.exists(file_path):
                error = {
                    'status': {
                        'error': "Invalid Request",
                        'message': "File does not exist."
                    }
                }
                request.write(
                    json.dumps(error, sort_keys=True, encoding="utf-8"))
                request.finish()
                return

            request.write(str(data[0][1]))  # writing key
            iv_plain = self.sid.decryptData(data[0][2])  # writing IV
            #print iv_plain
            iv = self.sid.encryptData(iv_plain, pubkey)
            request.write(iv)
            file = open(file_path, "r")
            sender = FileSender()
            sender.CHUNK_SIZE = 200
            df = sender.beginFileTransfer(file, request)

            df.addErrback(err)
            df.addCallback(finishTrnf_cb, file)
Пример #13
0
            def send_file(result):
                filename = result[0][0].strip()
                filepath = os.path.join(common.file_dir, filename)
                print "send file ", filepath
                try:
                    outfile = open(filepath, 'rb')
                except IOError:
                    print "no such file"
                    return
                else:
                    s = outfile.read()
                    outfile.seek(0)
                    filesize = len(s)
                    crc = crc32(s)
                    line = '2#%s|%s|%s' % (filename, filesize, crc)
                    self.sendLine(line)

                def transfer_completed(lastsent):
                    outfile.close()

                sender = FileSender()
                sender.CHUNK_SIZE = common.chunk_size
                d = sender.beginFileTransfer(outfile, self.transport)
                d.addCallback(transfer_completed)
Пример #14
0
            def send_file(result):
                filename = result[0][0].strip()
                filepath = os.path.join(common.file_dir, filename)
                print "send file ", filepath
                try:
                    outfile = open(filepath, 'rb')
                except IOError:
                    print "no such file"
                    return
                else:
                    s = outfile.read()
                    outfile.seek(0)
                    filesize = len(s)
                    crc = crc32(s)
                    line = '2#%s|%s|%s' % (filename, filesize, crc)
                    self.sendLine(line)

                def transfer_completed(lastsent):
                    outfile.close()

                sender = FileSender()
                sender.CHUNK_SIZE = common.chunk_size
                d = sender.beginFileTransfer(outfile, self.transport)
                d.addCallback(transfer_completed)
Пример #15
0
def upload_file(file, transport):
  sender = FileSender()
  sender.CHUNK_SIZE = 2 ** 16
  return sender.beginFileTransfer(file, transport)
Пример #16
0
    def startCopying(self, msg):
        def _done(ign, src, dst, f):
            log.msg("File copied successfully %(src)s -> %(dst)s" % {
                'src': src,
                'dst': dst
            })
            self.publish('file-transfer-ack',
                         fileTransferReq,
                         id=msg.id.getValue(),
                         state=0,
                         table=msg.table.getValue())

        def _err_done(reason, src, dst, sendreq=None):
            log.msg(
                "File transfer error %(src)s -> %(dst)s. Reason: %(reason)s" %
                {
                    'src': src,
                    'dst': dst,
                    'reason': reason.getErrorMessage()
                },
                logLevel=logging.ERROR)
            if sendreq:
                self.publish('file-transfer-ack',
                             fileTransferReq,
                             id=msg.id.getValue(),
                             state=1,
                             table=msg.table.getValue())
            return defer.fail(reason)

        if self.working > self.QUEUESIZE:
            self.queue.put(msg)

            return

        self.incpendingqueue(None, msg=msg)

        srcfile = msg.src.getValue()
        dstfile = msg.dst.getValue()
        s = FilePath(srcfile)
        d = FilePath(dstfile)
        if s.exists() and d.exists():
            if s.getsize() == d.getsize():
                log.msg("Ignore coping, files have the same size: %s -> %s" %
                        (srcfile, dstfile))
                self.decpendingqueue("SAME_SIZE", msg=msg)
                self.publish('file-transfer-ack',
                             fileTransferReq,
                             id=msg.id.getValue(),
                             state=0,
                             table=msg.table.getValue())
                return
        src = FileSender()

        if self.conf.get('transport', 'CHUNK_SIZE_POWER'):
            src.CHUNK_SIZE = 2**int(
                self.conf.get('transport', 'CHUNK_SIZE_POWER'))

        try:
            f = open(srcfile, 'r')

        except Exception, e:
            log.msg(str(e), logLevel=logging.ERROR)
            #                f=None
            return _err_done(Failure(e), srcfile, dstfile,
                             'err').addBoth(self.decpendingqueue, msg=msg)