96 lines
3.3 KiB
Python
Executable File
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)
|