From 55f0731b4f0db7efa20e02f601c094fc84e83d5e Mon Sep 17 00:00:00 2001 From: Alessandro Battilani Date: Mon, 13 Apr 2020 19:24:12 +0200 Subject: [PATCH] mod 2 pasqua --- FtpCsvReceiver.py | 37 ++++++++++++++++++++++++-------- battilo/__init__.py | 1 - battilo/parsers/G801_parser.py | 0 battilo/parsers/__init__.py | 1 - battilo/timefmt/__init__.py | 1 - battilo/timefmt/timestamp_fmt.py | 9 -------- 6 files changed, 28 insertions(+), 21 deletions(-) delete mode 100644 battilo/__init__.py delete mode 100644 battilo/parsers/G801_parser.py delete mode 100644 battilo/parsers/__init__.py delete mode 100644 battilo/timefmt/__init__.py delete mode 100644 battilo/timefmt/timestamp_fmt.py diff --git a/FtpCsvReceiver.py b/FtpCsvReceiver.py index 817023f..cba9bc5 100755 --- a/FtpCsvReceiver.py +++ b/FtpCsvReceiver.py @@ -4,7 +4,10 @@ import sys import os import pika import logging -from battilo.timefmt import timestamp_fmt as ts +import argparse +from asebat.timefmt import timestamp_fmt as ts + +from pprint import pprint from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer @@ -12,7 +15,7 @@ from pyftpdlib.authorizers import UnixAuthorizer from pyftpdlib.filesystems import UnixFilesystem -class MyHandler(FTPHandler): +class ASEHandler(FTPHandler): def on_file_received(self, file): with open(file, "r") as file_csv: for i, line in enumerate(file_csv.readlines(4096), 1): @@ -23,29 +26,45 @@ class MyHandler(FTPHandler): file_csv.close path, filename_ext = os.path.split(file) filename, file_extension = os.path.splitext(filename_ext) + new_path = '/home/' + self.username + '/received/' + unit_name.upper() + '/' + new_filename = new_path + filename + '_' + str(ts.timestamp("tms") + file_extension) try: - os.mkdir(path + '/' + unit_name.upper()) - logging.info("PID {:>5} >> path {} created.".format(os.getpid(), unit_name.upper())) + os.makedirs(new_path) + logging.info("PID {:>5} >> path {} created.".format(os.getpid(), new_path)) except FileExistsError: - logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), unit_name.upper())) - os.rename(file, path + '/' + unit_name.upper() + '/' + filename + '_' + str(ts.timestamp("tms") + file_extension)) + logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), new_path)) + try: + os.rename(file, new_filename) + logging.info("PID {:>5} >> {} moved into {}.".format(os.getpid(), filename_ext, new_filename)) + except OSError: + logging.error("PID {:>5} >> Error to move {} into {}.".format(os.getpid(), filename_ext, new_filename)) def on_incomplete_file_received(self, file): # remove partially uploaded files os.remove(file) def main(): + + parser = argparse.ArgumentParser() + parser.add_argument("-l", "--logfilename", help="log file", required=True) + parser.add_argument("-p", "--port", help="passive port range start", type=int, required=True) + parser.add_argument("-x", "--proxy", help="proxy address", required=True) + args = parser.parse_args() + try: authorizer = UnixAuthorizer( rejected_users=["root"], require_valid_shell=True) - handler = MyHandler + handler = ASEHandler handler.authorizer = authorizer handler.abstracted_fs = UnixFilesystem + handler.masquerade_address = args.proxy + _range = list(range(args.port, args.port + 20)) + handler.passive_ports = _range logging.basicConfig(format='%(asctime)s %(message)s', - filename='/var/log/ftpCsvRecv.log', level=logging.INFO) + filename="/var/log/" + args.logfilename, level=logging.INFO) - server = FTPServer(('', 21), handler) + server = FTPServer(('0.0.0.0', 21), handler) server.serve_forever() except KeyboardInterrupt: diff --git a/battilo/__init__.py b/battilo/__init__.py deleted file mode 100644 index c24b50b..0000000 --- a/battilo/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Utilità""" \ No newline at end of file diff --git a/battilo/parsers/G801_parser.py b/battilo/parsers/G801_parser.py deleted file mode 100644 index e69de29..0000000 diff --git a/battilo/parsers/__init__.py b/battilo/parsers/__init__.py deleted file mode 100644 index 6d34771..0000000 --- a/battilo/parsers/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Parser delle centraline""" \ No newline at end of file diff --git a/battilo/timefmt/__init__.py b/battilo/timefmt/__init__.py deleted file mode 100644 index 582e8ed..0000000 --- a/battilo/timefmt/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Utilità per i formati timestamp""" \ No newline at end of file diff --git a/battilo/timefmt/timestamp_fmt.py b/battilo/timefmt/timestamp_fmt.py deleted file mode 100644 index 6bf9dbf..0000000 --- a/battilo/timefmt/timestamp_fmt.py +++ /dev/null @@ -1,9 +0,0 @@ -"""Funzioni per timestamp - -""" - -import datetime - -def timestamp(t): - fmt = {'log': '%Y-%m-%d %H:%M:%S', 'tms': '%Y%m%d%H%M%S'} - return datetime.datetime.now().strftime(fmt[t]) \ No newline at end of file