commit a178ba90261c92d1082455a1ee7a67481842e960 Author: Alessandro Battilani Date: Sun Mar 22 17:58:59 2020 +0100 initial diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee5ee56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.pyc +*.spec +*.toc +*.pkg +*.zip +*.html +*.txt +*.pyz +*.pyo \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cfdb08c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/usr/bin/python3.6" +} \ No newline at end of file diff --git a/FtpCsvReceiver.py b/FtpCsvReceiver.py new file mode 100755 index 0000000..817023f --- /dev/null +++ b/FtpCsvReceiver.py @@ -0,0 +1,57 @@ +#!/usr/bin/python3 + +import sys +import os +import pika +import logging +from battilo.timefmt import timestamp_fmt as ts + +from pyftpdlib.handlers import FTPHandler +from pyftpdlib.servers import FTPServer +from pyftpdlib.authorizers import UnixAuthorizer +from pyftpdlib.filesystems import UnixFilesystem + + +class MyHandler(FTPHandler): + def on_file_received(self, file): + with open(file, "r") as file_csv: + for i, line in enumerate(file_csv.readlines(4096), 1): + if i == 2: + unit_type, unit_name = line.strip('\n').replace(";","").replace(",","").split(" ") + logging.info("PID {:>5} >> {} {}".format(os.getpid(), unit_type.upper(), unit_name.upper())) + break + file_csv.close + path, filename_ext = os.path.split(file) + filename, file_extension = os.path.splitext(filename_ext) + try: + os.mkdir(path + '/' + unit_name.upper()) + logging.info("PID {:>5} >> path {} created.".format(os.getpid(), unit_name.upper())) + 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)) + + def on_incomplete_file_received(self, file): + # remove partially uploaded files + os.remove(file) + +def main(): + try: + authorizer = UnixAuthorizer( + rejected_users=["root"], require_valid_shell=True) + handler = MyHandler + handler.authorizer = authorizer + handler.abstracted_fs = UnixFilesystem + + logging.basicConfig(format='%(asctime)s %(message)s', + filename='/var/log/ftpCsvRecv.log', level=logging.INFO) + + server = FTPServer(('', 21), handler) + + server.serve_forever() + except KeyboardInterrupt: + logging.info("PID {:>5} >> Error: {}.".format(os.getpid(), "Shutdown requested...exiting")) + except Exception: + print("{} - PID {:>5} >> Error: {}.".format(ts.timestamp("log"), os.getpid(), sys.exc_info()[1])) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/battilo/__init__.py b/battilo/__init__.py new file mode 100644 index 0000000..c24b50b --- /dev/null +++ b/battilo/__init__.py @@ -0,0 +1 @@ +"""Utilità""" \ No newline at end of file diff --git a/battilo/parsers/G801_parser.py b/battilo/parsers/G801_parser.py new file mode 100644 index 0000000..e69de29 diff --git a/battilo/parsers/__init__.py b/battilo/parsers/__init__.py new file mode 100644 index 0000000..6d34771 --- /dev/null +++ b/battilo/parsers/__init__.py @@ -0,0 +1 @@ +"""Parser delle centraline""" \ No newline at end of file diff --git a/battilo/timefmt/__init__.py b/battilo/timefmt/__init__.py new file mode 100644 index 0000000..582e8ed --- /dev/null +++ b/battilo/timefmt/__init__.py @@ -0,0 +1 @@ +"""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 new file mode 100644 index 0000000..6bf9dbf --- /dev/null +++ b/battilo/timefmt/timestamp_fmt.py @@ -0,0 +1,9 @@ +"""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 diff --git a/build/FtpCsvReceiver/FtpCsvReceiver b/build/FtpCsvReceiver/FtpCsvReceiver new file mode 100755 index 0000000..421b0f4 Binary files /dev/null and b/build/FtpCsvReceiver/FtpCsvReceiver differ diff --git a/dist/FtpCsvReceiver b/dist/FtpCsvReceiver new file mode 100755 index 0000000..050fc78 Binary files /dev/null and b/dist/FtpCsvReceiver differ diff --git a/receiveSMS.py b/receiveSMS.py new file mode 100755 index 0000000..0d414c8 --- /dev/null +++ b/receiveSMS.py @@ -0,0 +1,25 @@ +#!/usr/bin/python3 + +import os +import logging + +class + +def main(): + authorizer = UnixAuthorizer( + rejected_users=["root"], require_valid_shell=True) + + #handler = FTPHandler + handler = MyHandler + handler.authorizer = authorizer + handler.abstracted_fs = UnixFilesystem + + logging.basicConfig(format='%(asctime)s %(message)s', + filename='/var/log/ftpCsvRecv.log', level=logging.INFO) + + server = FTPServer(('', 21), handler) + server.serve_forever() + + +if __name__ == "__main__": + main()