From 8de40a080d7137e927b14b73ee029318504b0ef2 Mon Sep 17 00:00:00 2001 From: Dominik Chilla Date: Sat, 24 Nov 2018 19:50:18 +0100 Subject: [PATCH] cosmetics ;-) --- app/Gulag.py | 51 +++++++++------ app/GulagDB.py | 66 ++++++++++++++------ app/GulagMailbox.py | 21 ++++--- app/Resources.py | 12 +++- app/__pycache__/Gulag.cpython-35.pyc | Bin 3559 -> 0 bytes app/__pycache__/GulagDB.cpython-35.pyc | Bin 4751 -> 0 bytes app/__pycache__/GulagMailbox.cpython-35.pyc | Bin 3134 -> 0 bytes app/__pycache__/Resources.cpython-35.pyc | Bin 1890 -> 0 bytes app/gulag_server.py | 12 +++- config/gulag-config.json | 10 +-- config/vassals/gulag_server.ini | 3 +- 11 files changed, 115 insertions(+), 60 deletions(-) delete mode 100644 app/__pycache__/Gulag.cpython-35.pyc delete mode 100644 app/__pycache__/GulagDB.cpython-35.pyc delete mode 100644 app/__pycache__/GulagMailbox.cpython-35.pyc delete mode 100644 app/__pycache__/Resources.cpython-35.pyc diff --git a/app/Gulag.py b/app/Gulag.py index 112bd24..1c5c975 100644 --- a/app/Gulag.py +++ b/app/Gulag.py @@ -25,28 +25,17 @@ class Gulag: raise GulagException("CONFIG-FILE-Exception: " + str(sys.exc_info())) try: - self.db = GulagDB( - self.config['db']['server'], - self.config['db']['user'], - self.config['db']['password'], - self.config['db']['name'], - self.config['uri_prefixes'] - ) + self.db = GulagDB(self.config['db'],self.config['uri_prefixes']) except GulagDBException as e: raise GulagException(e.message) from e # Iterate through all mailboxes, extract metadata - # from all unseen mails and import them into database + # from all unseen mails and pump them into database def import_quarmails(self): for mailbox in self.db.get_mailboxes(): imap_mb = None try: - imap_mb = IMAPmailbox( - mailbox['imap_server'], - mailbox['imap_user'], - mailbox['imap_pass'], - mailbox['imap_mailbox'] - ) + imap_mb = IMAPmailbox(mailbox) except IMAPmailboxException as e: print(e.message) continue @@ -57,6 +46,9 @@ class Gulag: msg = unseen['msg'] msg_size = len(str(msg)) r5321_from = email.header.decode_header(msg['Return-Path'])[0][0] + if(r5321_from is not '<>'): + r5321_from = r5321_from.replace("<","") + r5321_from = r5321_from.replace(">","") r5321_rcpts = None try: r5321_rcpts = email.header.decode_header(msg['X-Envelope-To-Blocked'])[0][0] @@ -149,6 +141,30 @@ class Gulag: except GulagDBException as e: raise GulagException("GulagDBException: " + e.message) from e + def get_quarmail(self,args): + qm_db = None + try: + qm_db = self.db.get_quarmail({ + "id": args['id'] + }) + except GulagDBException as e: + raise GulagException("GulagDBException: " + e.message) from e + if 'rfc822_message' not in args: + return qm_db + mailbox = None + try: + mailbox = self.db.get_mailbox(qm_db['mailbox_id']) + except GulagDBException as e: + raise GulagException(e.message) from e + imap_mb = None + try: + imap_mb = IMAPmailbox(mailbox) + qm_db['rfc822_message'] = imap_mb.get_message(qm_db['imap_uid']) + return qm_db + except IMAPmailboxException as e: + print(e.message) + raise GulagException(e.message) from e + def rspamd_http2imap(self,mailbox_id): mailbox = None try: @@ -180,12 +196,7 @@ class Gulag: # Use IMAP“s APPEND command to store the message into mailbox imap_mb = None try: - imap_mb = IMAPmailbox( - mailbox['imap_server'], - mailbox['imap_user'], - mailbox['imap_pass'], - mailbox['imap_mailbox'] - ) + imap_mb = IMAPmailbox(mailbox) imap_mb.append_message(msg) except IMAPmailboxException as e: raise GulagException(e.message) from e diff --git a/app/GulagDB.py b/app/GulagDB.py index 6cd59eb..c453ced 100644 --- a/app/GulagDB.py +++ b/app/GulagDB.py @@ -10,15 +10,25 @@ class GulagDB: conn = None uri_prefixes = None - def __init__(self, server, user, password, name, uri_prefixes): +# def __init__(self, server, user, password, name, uri_prefixes): + def __init__(self, args, uri_prefixes): try: - self.conn = mariadb.connect( - host=server, - user=user, - password=password, - database=name, - autocommit=True - ) + if 'unix_socket' in args: + self.conn = mariadb.connect( + unix_socket=args['unix_socket'], + user=args['user'], + password=args['password'], + database=args['name'], + autocommit=True + ) + else: + self.conn = mariadb.connect( + host=args['server'], + user=args['user'], + password=args['password'], + database=args['name'], + autocommit=True + ) self.uri_prefixes = uri_prefixes except mariadb.Error as e: raise GulagDBException(e) from e @@ -32,8 +42,8 @@ class GulagDB: cursor.execute("select * from Mailboxes;") results = [] data = cursor.fetchall() - if data == None: - return results + if not data: + raise GulagDBException("No mailboxes found in DB!") desc = cursor.description for tuple in data: dict = {} @@ -56,7 +66,7 @@ class GulagDB: "select * from Mailboxes where email_address='" + mailbox_id + "' limit 1;" ) data = cursor.fetchall() - if data == None: + if not data: raise GulagDBException("Mailbox '" + mailbox_id + "' does not exist!") desc = cursor.description tuple = data[0] @@ -101,19 +111,14 @@ class GulagDB: except mariadb.Error as e: raise GulagDBException(e) from e -# def get_quarmails(self,mailbox_id): def get_quarmails(self): try: cursor = self.conn.cursor() -# cursor.execute( -# "select * from QuarMails where mailbox_id='%s';", -# (mailbox_id) -# ) cursor.execute("select * from QuarMails;") results = [] data = cursor.fetchall() - if data == None: - return results + if not data: + raise GulagDBException("No Quarmails found in DB!") desc = cursor.description cursor.close() for tuple in data: @@ -129,6 +134,29 @@ class GulagDB: except mariadb.Error as e: raise GulagDBException(e) from e + def get_quarmail(self,args): + try: + cursor = self.conn.cursor() + # TODO: build SQL query by args + query = "select * from QuarMails where id='" + args['id'] + "';" + cursor.execute(query) + data = cursor.fetchall() + if not data: + raise GulagDBException("Quarmail with id '"+ args['id'] + "' does not exist!") + desc = cursor.description + cursor.close() + tuple = data[0] + dict = {} + for (name, value) in zip(desc, tuple): + if(name[0] == 'ctime'): + dict[name[0]] = value.strftime('%Y-%m-%d %H:%M:%S') + else: + dict[name[0]] = value + dict['href'] = self.uri_prefixes['quarmails'] + str(dict['id']) + return QuarMail(dict).__dict__ + except mariadb.Error as e: + raise GulagDBException(e) from e + def get_deprecated_mails(self,retention_period): try: cursor = self.conn.cursor() @@ -136,7 +164,7 @@ class GulagDB: cursor.execute(query) results = [] data = cursor.fetchall() - if data == None: + if not data: return results desc = cursor.description for tuple in data: diff --git a/app/GulagMailbox.py b/app/GulagMailbox.py index f8f29d6..45dfbd1 100644 --- a/app/GulagMailbox.py +++ b/app/GulagMailbox.py @@ -15,11 +15,11 @@ class IMAPmailbox: imap_mailbox = None mailbox = None - def __init__(self, imap_server, imap_user, imap_pass, imap_mailbox): - self.imap_server = imap_server - self.imap_user = imap_user - self.imap_pass = imap_pass - self.imap_mailbox = imap_mailbox + def __init__(self, mb_ref): + self.imap_server = mb_ref['imap_server'] + self.imap_user = mb_ref['imap_user'] + self.imap_pass = mb_ref['imap_pass'] + self.imap_mailbox = mb_ref['imap_mailbox'] try: self.mailbox = imaplib.IMAP4(self.imap_server) rv, data = self.mailbox.login(self.imap_user, self.imap_pass) @@ -59,14 +59,14 @@ class IMAPmailbox: return results def get_message(self,imap_uid): - rv, data = self.mailbox.uid('FETCH', imap_uid, '(RFC822)') + rv, data = self.mailbox.uid('FETCH', str(imap_uid), '(RFC822)') if rv != 'OK': raise IMAPmailboxException("ERROR getting message: %s", str(imap_uid)) - return email.message_from_bytes(data[0][1]) + return data[0][1].decode("utf-8") def get_attachments(self,imap_uid): results = [] - rv, data = self.mailbox.uid('FETCH', imap_uid, '(RFC822)') + rv, data = self.mailbox.uid('FETCH', str(imap_uid), '(RFC822)') if rv != 'OK': raise IMAPmailboxException("ERROR getting message: %s", str(imap_uid)) msg = email.message_from_bytes(data[0][1]) @@ -96,5 +96,8 @@ class IMAPmailbox: str(message).encode('utf-8') ) if rv != 'OK': - raise IMAPmailboxException("ERROR appending message!") + raise IMAPmailboxException("ERROR appending message: " + rv) + + def expunge_message(self,imap_uid): + return True diff --git a/app/Resources.py b/app/Resources.py index fff525e..882265e 100644 --- a/app/Resources.py +++ b/app/Resources.py @@ -1,4 +1,4 @@ -#from flask import request +from flask import request from flask_restful import Resource, abort, reqparse from Gulag import GulagException @@ -47,11 +47,17 @@ class ResQuarMails(GulagResource): try: return self.gulag.get_quarmails() except GulagException as e: - abort(500, message=e.message) + abort(400, message=e.message) class ResQuarMail(GulagResource): def get(self,id): - return {"resource": "QuarMail by ID"} + args = {"id": id} + try: + if(request.args.get('rfc822_message')): + args['rfc822_message'] = True + return self.gulag.get_quarmail(args) + except GulagException as e: + abort(400, message=e.message) class ResAttachments(GulagResource): def get(self): diff --git a/app/__pycache__/Gulag.cpython-35.pyc b/app/__pycache__/Gulag.cpython-35.pyc deleted file mode 100644 index df7ccbdfa90ba3bd07fff794391a2021c106268f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3559 zcmZu!TW{RP6+T09?-#G`Qk*!lkQUjZE1_X*naQNK)fnZy&{BELX?z+i!7g|09|m7e%T@=Ln6L|0g##u^;9%ilm9I%peN>B%5) zPxn8~TGPs-p(o?C8-*CGJ$?4cXMMLDyoiR`>W#*n$>VuuKLeEqD9H|p#5VQTcvIM> zNj@qj>w>*#Ev&4m7oE>`;PDjv<1d$oC`kikEND#RXu}=0#X(zSrM^rO_f$erE0Mv8 zDuM4Gq$>El{&4Rs>dQSp>UYEL`Cg*Dz0+>GcgnlnbK`hVue=*yW@X0#OX@gfUP~(= zMjMNY?ap}G1?CUkzI2?d>Nx$#9|T;lJI>328{{Ke6IH`}TA3T9%6&x;E{O$F7e%3a z-fqeVV0nuvVNe)xZqNeF-EYI=Gp7R{xx2H1-p{ptdFA&|w0-}B%H>Ze)mDZ8fby3u zni!M{>KQaP=qk6qNk=}>Z$3XpSI?p=B5@RcKthNV8i2n@X^DDe9)ZXP%2$HE2n8Kq z{*uxPyRZi!n6w3bw{Elw3$5Zpt3+E@miB&?j=~?4mDcFIO6qG86O-U8!s=s_dUdU* zNnaUs^aT{f3x+REI%W;f0`Lzqp+*}Ie|_-y>66amr@wmCnWOKg+nM3Nu#1UQucXSX z0V-KJc9Y~HQhsK!Z`+N`ieedNRxgP_gUI!>q8EiH-P5e#1rcP}wV9cu3gj}$%5vxd zVJDGdY^fzCCKHBh+focWdnI<$GbfFld@ARp8^}zYWJ10P9!AwIl;m9y5~f%dTcU~Y zUBd)z>gTqxEJpd^nnTwUEP&qz%10>L_phMJFf!Q{c;S1Z{pY_oC;I3D0+(${0Rc1x zoPv*$f8auH!He(>_>RK+aEz%PGoCtTjZ*jxjw!HX#6|0EZaIaMEMi)q;U5h~Rx#J& z!k83k3@ig2laj6h7?Uz%EG^R*FoV8=CKZNOuS&fdcOu?xq1P`1WGIvB;%H@Yw6-`} zT^y}1j@A}O8yaCvy4+c0t1q%OVH`wgA@o6DP~Q5MNMljt)`G~w?wX67Ep3V#+kx?q z$zg;V^`P4=@>_hC(KGx~cQ(miV$S{NeVQ!k(+H=7Z<+iR@>gkGC4Y^^OXRQ9xJCX3 zjqBuZ(iqci(HQdY&=~x;_4_XQ@3D8r2s3wRT%oQ$fsu)q!q45g!z<`4g8`nFWbwY3geO7ZnzE4}~U&gEjul68+J(e?v&3PaD9nv|d z!MCkP?&>wyc+IYkX%p-#JX(bdbCj+ZnwU-?wZ1A?`If zkWSaP%hxp-zH&}@$}-oK7pHdd%vX+gVwd@=$7)C4o$ ztJ4i)nb9gPQssteHFE|Fv=rd97~R>>1&#WU&pxCt7* z^det6(`F%vF3?+2G7el%W`!gUx~W}veV;P{mCGX2kRk4l3pY5=>b%}u?_xe*)?^7c zOjV0oeLut=HoH(!OjAodgJS5{;nQR2mw! z8;WFB?5b3KmzS&LDlxVi*V>`^#-*3Fy8Sp(>D;i%U5F1PQyUqf(T zQLKn6o@H@o`Y_)PNxjP4KZ5J z6UR3d@@BUyfB9yAh?3j~L0W~o6R8y6qX-eW4|O(!TahnQA2%sS2>o)##0mak+d3F6 zKLh-d?KIk!!*~#$N+c*HFOY7C2+>lKL61D$iKXgBe!HkX#A+J4s?9adH0)JIlP_Z> zJsdb+pNT|mVyG=Nc-}Pil3rmDU)wqYbHYgtX{%0i&ANF|KV&S_W%F@ diff --git a/app/__pycache__/GulagDB.cpython-35.pyc b/app/__pycache__/GulagDB.cpython-35.pyc deleted file mode 100644 index 3a80b36ba2eabceca8efb91d02d252da76c6f181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4751 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 diff --git a/app/__pycache__/Resources.cpython-35.pyc b/app/__pycache__/Resources.cpython-35.pyc deleted file mode 100644 index ce7be94d70ff4575a958c479277ff84328bb6535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1890 zcmbVMUvJ|?5TEs**h!shbO-5GR9p&AmhPH6{=A$Jx{5oMsv>tZJx&-Q%eA+u6FW|K zZK;h~UXBj{;zJ<5l3#g3d;^}CS;tXZMF?=RWAE(j%x``(yBqCx>(@Jfes^vF{0`S1 zoWnC5@&^!CKx8Sc1>90v8?`n>O{Hzt+9pIg4Bgfrhyh$yT7sVyT;{G`+J{_bg$Q}6@6O`V z430CA4?;4m9}PdA;gC;Ja3JIe+|wu*M2#7scf^L+qZ%h>utbLmpyklD%l2N81fx3Q zASBQ9(3{2=IAj~eC4)-X@O+OlskCUZ`TYA&;Yx$^hd0%i8ZC9{m~2Mxr5 z@^E$lZ_XaWn;f}CwiUx~8KdSIx{ZOio{K`}Jo0BEJCC_Mihn_{rIm6igAt!^y`C;C zdSMdtY2Mp^^(crUf$Q6@DJb!BP4G0!xlejQe3Xqao1VlYVdBI!gpDt+xv+|7rAg5) zyw3ID7k)fbg{VY}+}sOKc{uTJm^rv0J1BrP*KYmxUnMR18&! zZ}0=zt!hz`pJQ99&P2wDu4;`+fVHan3kx+?bZ*j?L!d3#t4J~)rkY`UFt>JJ?LRtr z@ooGQ5-SM(d}E>No$?^!qL;=}#?#TZX9u&`pYRJA|BS}-^})-d-tOz8FJB(+doP|Z z`L?QkQqijj7kALFt5rl>3op0XY*mZ|MSi-0=8`A|w$3`N&AM!Ue-(XX>{`_A(;(%( zU$%Td&7vZqZ^!q~iXf?0DjaL*Qc!ioT@rM#t_g}L8YrkQBz1+u8q6`BHKkpBacrU4 zt&0O|LstfJO*fNKT6i=Mvn*fMmk!+WPN1k*I@}b~O`;D<8{1diTXRd`w%$`$fpnQ7 z@D|`wAMyMF`lwI&+9KKx>Ic}}_i#c1wviH<&~ong{6cUz@-k_2*6T_0`r y?PE>ylOhp1S_nFvs=Z5NEVHR<4@H=Au!`Q&{;X=u&#CyTxjSr&Ia+tKYy1sLm36TI diff --git a/app/gulag_server.py b/app/gulag_server.py index 934df8e..fc74a53 100755 --- a/app/gulag_server.py +++ b/app/gulag_server.py @@ -4,8 +4,10 @@ import argparse,sys from flask import Flask from flask_restful import Api from Gulag import Gulag,GulagException -from Resources import ResRoot,ResMailboxes,ResQuarMails,ResAttachments,ResRSPAMDImporter - +from Resources import (ResRoot,ResMailboxes, + ResQuarMails,ResQuarMail,ResAttachments, + ResRSPAMDImporter +) parser = argparse.ArgumentParser() parser.add_argument('--config', required=True, help="Path to config file") args = parser.parse_args() @@ -29,6 +31,10 @@ try: '/api/v1/quarmails/', resource_class_kwargs={'gulag_object': gulag} ) + api.add_resource(ResQuarMail, + '/api/v1/quarmails/', + resource_class_kwargs={'gulag_object': gulag} + ) api.add_resource(ResAttachments, '/api/v1/attachments/', resource_class_kwargs={'gulag_object': gulag} @@ -38,8 +44,8 @@ try: resource_class_kwargs={'gulag_object': gulag} ) if __name__ == '__main__': + # following code snippet will be intercepted by uwsgi! app.run(debug=False, - # will be overriden by uwsgi.ini host=gulag.config['daemon']['listen_host'], port=gulag.config['daemon']['listen_port'] ) diff --git a/config/gulag-config.json b/config/gulag-config.json index db16f69..b07b300 100644 --- a/config/gulag-config.json +++ b/config/gulag-config.json @@ -17,13 +17,13 @@ } }, "uri_prefixes": { - "root": "https:///api/v1/", - "mailboxes": "https:///api/v1/mailboxes/", - "quarmails": "https:///api/v1/quarmails/", - "attachments": "https:///api/v1/attachments/" + "root": "https://gulag.example.org/api/v1/", + "mailboxes": "https://gulag.example.org/api/v1/mailboxes/", + "quarmails": "https://gulag.example.org/api/v1/quarmails/", + "attachments": "https://gulag.example.org/api/v1/attachments/" }, "db":{ - "server": "127.0.0.1", + "unix_socket": "/mysqld/mysqld.sock", "user": "root", "password": "", "name": "Gulag" diff --git a/config/vassals/gulag_server.ini b/config/vassals/gulag_server.ini index efa0ddc..a3fea90 100644 --- a/config/vassals/gulag_server.ini +++ b/config/vassals/gulag_server.ini @@ -7,4 +7,5 @@ plugin = python3 python-path = /app wsgi-file = /app/uwsgi.py pyargv = --config /config/gulag-config.json -socket = /socket/uwsgi-gulag_server.sock +socket = /socket/gulag_uwsgi.sock +http-socket = :9090