Files
BDE/getlocklist.py

96 lines
3.3 KiB
Python
Executable File

#!/usr/bin/python3
import poplib, email, os
import smtplib
from DB import *
from time import time, strftime
def mail_connection (server = 'pop3.strato.de'):
pop_conn = poplib.POP3_SSL (server)
pop_conn.user ('tragstruktur.sperrdatei@finoba-bavaria.de')
pop_conn.pass_('v!mejuq5334066')
return pop_conn
def sendstatus_mail (status, msgtext):
from email.mime.text import MIMEText
# Create a text/plain message
msg = MIMEText (msgtext)
msg['Subject'] = 'FINOBA-BY gotlocklist %s' % status
msg['From'] = 'tragstruktur.sperrdatei@finoba-bavaria.de'
msg['To'] = 'admin@mir.systems'
print ('Conn')
s = smtplib.SMTP_SSL('smtp.strato.de')
print ('login')
s.login ('tragstruktur.sperrdatei@finoba-bavaria.de', 'v!mejuq5334066')
print ('send')
s.send_message(msg)
s.quit()
def updatelockist (dbconn = None, delete_after = False):
pop_conn = mail_connection ()
messages = [pop_conn.retr (i) for i in range (1, len ( pop_conn.list ()[1]) + 1)]
messages = [email.message_from_bytes (b'\n'.join (mssg [1])) for mssg in messages]
# delete_messages = [pop_conn.dele (i) for i in range(1, len (pop_conn.list ()[1]) + 1)]
mailnr = 1
for mail in messages:
#print (mssg)
#mail = email.message_from_bytes (b'\n'.join (mssg [1]))
#print (mail)
for part in mail.walk():
if part.get_content_type () in ('text/csv', 'text/plain'):
filename = part.get_filename ()
src = 'Sperr'
if filename and not '/' in filename:
if 'NIO' in filename:
src = 'NIO'
filename = strftime ("%Y-%m-%d_%H%M%S_") + filename
#Attack protection
fp = open (os.path.join ('/srv/lockfiles', filename), 'wb')
fp.write (part.get_payload (decode = 1))
fp.close ()
csvdata = (part.get_payload (decode = 0)).split ('\n')
print ('CSV - %d Rows' % len (csvdata))
dbconn.cleanlock (src)
print (dbconn.locksize ())
for line in (csvdata)[1:]:
#40690113240317929764416;9297644;16;24.03.2017 10:35:05;14498
values = line.split (';')
if len (values) in (4, 5):
try:
dmc = int (values [0])
rtn = int (values [1])
idx = int (values [2])
t,m,y = values[3].split (' ')[0].split ('.')
dat = '%s.%s.%s %s' % (y,m,t,values[3].split (' ')[1])
snr = 0
if len (values) == 5:
snr = int (values [4])
data = {'dmc' : str (dmc),
'rohteilnr' : str (rtn),
'aenderungsidx' : str (idx),
'sperrts' : str (dat),
'sperrnr' : str (snr),
'quelle' : src}
dbconn.addlock (data)
print ("Added Lock", data)
except:
print ("Huifma")
print (dbconn.locksize ())
else:
print (part.get_content_type ())
if delete_after == True:
print ("Delete Mail Nr %d" % mailnr)
pop_conn.dele (mailnr)
mailnr += 1
pop_conn.quit ()
if __name__ == "__main__":
#sendstatus_mail ('Test', 'Testmtex')
conn = DB ('/opt/data/bde.sqlite', '/tmp/talog.sql', logtest, errlogtest)
updatelockist (conn, delete_after = True)