Example #1
0
    def setupTransfer(self, f):
        self.setFile(f)
        if not self.checkFileExists(self.config.get("data_stream.directory") + "/" + f):
            rc = ResponseCode(False)
            grv = Response(rc, "Not attempting file transfer")
            return grv
        file_name = (TransferUtils.getPlainFileName(self.config.get(
            "data_stream.directory"), f, self.config.get(
            "outgoing.dir_size_limit")))
        if not file_name:
            (TransferUtils.quarantine(f, self.config.get("data_stream.directory"),
                 self.config.get("outgoing.quarantine_dir")))
            grv = Response.failure("Did not attempt transfer of %s" % f)
            self.info("Did not attempt transfer of %s" % f)
            return grv
        else:
            self.setFile(os.path.basename(file_name))

        fn = os.path.join(self.config.get("data_stream.directory"), file_name)
        filesize = os.path.getsize(fn)

        try:
            self.checkVars()
        except Exception, ex:
            rc = ResponseCode(False)
            r = Response(rc, "not all variables in FtpTransfer ", str(ex))
            self.info("not all variables in FtpTransfer %s " % str(ex))
            return r
Example #2
0
 def setupPushCmd(self):
     '''
     called by TransferBase in order to create a push command
     '''
     if self.ctl_file_path != None:
         try:
             os.remove(self.ctl_file_path)
         except:
             pass
     if self.rcpt_file_path != None:
         try:
             os.remove(self.rcpt_file_path)
         except:
             pass
     # set up a control file
     item_name = self.getFile()
     if not self.checkFileExists(self.config.get("data_stream.directory") + "/" + item_name):
         return None
     item_path = (os.path.join(self.config.get("data_stream.directory"),
         os.path.basename(item_name)))
     ctl_file_name = (".%s.%s" % (item_name, self.config.get(
         "outgoing.control_file_extension")))
     ctl_file_path = (os.path.join(self.config.get("data_stream.directory"),
         os.path.basename(ctl_file_name)))
     self.ctl_file_path = ctl_file_path
     item_size = os.path.getsize(item_path)
     item_cksum = TransferUtils.calcChecksum(item_path)                                               
     ts = "%.2f" % time.time()
     rcpt_file_name = (".%s.%s.%s" % (item_name, ts, self.config.get(
         "outgoing.receipt_file_extension")))
     ctl_file = ControlFile(ctl_file_path, can_overwrite=True)
     ctl_file.create(item_name, item_size, item_cksum, rcpt_file_name)
     self.rcpt_file_name = rcpt_file_name
     self.rcpt_file_path = (TransferUtils.getPathInDir(rcpt_file_name,
         self.config.get("data_stream.directory")))
     # set up ftp transfer + control file
     tf, name = tempfile.mkstemp()
     (os.write(tf, "user " + self.config.get("ftp.username") + " " +
         self.config.get("ftp.password") + "\n"))
     os.write(tf, "cd " + self.config.get("outgoing.target_dir") + "\n")
     os.write(tf, "lcd " + self.config.get("data_stream.directory") + "\n")
     os.write(tf, "put " + self.getFile() + "\n")
     if self.config.get("outgoing.target_uses_arrival_monitor"):
         os.write(tf, "put " + ctl_file_name + "\n")
     os.write(tf, "exit\n")
     os.fsync(tf)
     os.close(tf)
     pushcmd = ("/usr/bin/ftp -n " + self.config.get("outgoing.target_host")
         + " < " + name)
     self.info("setupPushCmd %s" % pushcmd)
     self.pushtf = tf
     self.pushname = name
     return pushcmd