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
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