#!/usr/bin/env python3
from ftplib import FTP
import logging, time, os
from datetime import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


#variabili
host = 'x.x.x.x'
user = 'user'
passwd = 'password'
filename = 'testnoncancellare.txt'
filenameok = 'testnoncancellare.ok'
dirname = 'testdirnoncancellare'
smtp_server = 'smtp.office365.com'
port = 25
mail=0

user_mail = "user@domain"
password_mail = "pass"
mail_from = "mailfrom"
mail_to = "mailto"
mail_subject = "Problemi Ftp1 invio ordini"
date=datetime.now().strftime("%Y%m%d-%H:%M")
mail_body = "data: " + date + "\nTesto Mail"

# logging
logging.basicConfig(filename='/var/log/checkftp.log', level=logging.DEBUG)
logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
logging.info('%s ____________________________________',logtime)


def send_mail():
    mimemsg = MIMEMultipart()
    mimemsg['From']=mail_from
    mimemsg['To']=mail_to
    mimemsg['Subject']=mail_subject
    mimemsg.attach(MIMEText(mail_body, 'plain'))
    connection = smtplib.SMTP(host='smtp.office365.com', port=587)
    connection.starttls()
    connection.login(user_mail,password_mail)
    connection.send_message(mimemsg)
    connection.quit()

with open('/tmp/' + filenameok, 'w') as file:
    file.write(date)
with open('/tmp/' + filename, 'w') as file:
    file.write(date)

try:
    logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
    conn = FTP(host)
    conn.login(user, passwd)
    logging.info('%s connessione Avvenuta', logtime)
except Exception as e:
    logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
    send_mail()
    logging.error('%s impossibile connettersi', logtime)
    raise os._exit(0)
try:
    conn.rmd(dirname)
except Exception as e:
    pass



try:
    logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
    logging.info('%s scrivo file e directory sul server ftp', logtime)
    conn.storbinary('STOR ' + filename, open('/tmp/' + filename, 'rb'))
    conn.storbinary('STOR ' + filenameok, open('/tmp/' + filenameok, 'rb'))
    conn.mkd(dirname)
    time.sleep(10)
    conn.delete(filename)
    conn.delete(filenameok)
    conn.rmd(dirname)
    logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
    logging.info('%s cancello file e directory', logtime)
except Exception as e:
    logtime = time.strftime('%Y-%m-%d_%H:%M:%S')
    logging.error('%s impossibile scrivere file e directory sul server ftp', logtime)
    send_mail()
    logging.exception(logtime)
    raise os._exit(0)