mirror of
https://github.com/chillout2k/gulag.git
synced 2025-12-13 16:00:18 +00:00
99 lines
3.2 KiB
Python
Executable File
99 lines
3.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import traceback
|
|
import argparse,sys,logging
|
|
from flask import Flask
|
|
from flask_restful import Api
|
|
from Gulag import Gulag,GulagException
|
|
from Resources import (ResRoot,ResMailboxes,
|
|
ResQuarMails,ResQuarMail,ResQuarMailAttachments,
|
|
ResQuarMailAttachment,ResAttachments,ResAttachment,
|
|
ResRspamd2Mailbox,ResQuarMailURIs,ResQuarMailURI,
|
|
ResMailradar2Mailbox,ResQuarMailRelease,ResQuarMailBounce,
|
|
ResURI
|
|
)
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--config', required=True, help="Path to config file")
|
|
args = parser.parse_args()
|
|
|
|
try:
|
|
try:
|
|
gulag = Gulag(args.config)
|
|
except GulagException as e:
|
|
raise Exception(e.message) from e
|
|
logging.info("Gulag-Server: starting")
|
|
app = Flask(__name__)
|
|
# https://github.com/flask-restful/flask-restful/issues/780#issuecomment-434588559
|
|
app.config['ERROR_404_HELP'] = False
|
|
api = Api(app, catch_all_404s=True)
|
|
api.add_resource(ResRoot,
|
|
'/api/v1/',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResMailboxes,
|
|
'/api/v1/mailboxes',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMails,
|
|
'/api/v1/quarmails',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMail,
|
|
'/api/v1/quarmails/<int:quarmail_id>',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailRelease,
|
|
'/api/v1/quarmails/<int:quarmail_id>/release',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailBounce,
|
|
'/api/v1/quarmails/<int:quarmail_id>/bounce',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailAttachments,
|
|
'/api/v1/quarmails/<int:quarmail_id>/attachments',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailAttachment,
|
|
'/api/v1/quarmails/<int:quarmail_id>/attachments/<int:attachment_id>',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailURIs,
|
|
'/api/v1/quarmails/<int:quarmail_id>/uris',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResQuarMailURI,
|
|
'/api/v1/quarmails/<int:quarmail_id>/uris/<int:uri_id>',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResAttachments,
|
|
'/api/v1/attachments',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResAttachment,
|
|
'/api/v1/attachments/<int:attachment_id>',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResURI,
|
|
'/api/v1/uris/<int:uri_id>',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResRspamd2Mailbox,
|
|
'/api/v1/mailboxes/<string:mailbox_id>/rspamd2mailbox',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
api.add_resource(ResMailradar2Mailbox,
|
|
'/api/v1/mailboxes/<string:mailbox_id>/mailradar2mailbox',
|
|
resource_class_kwargs={'gulag_object': gulag}
|
|
)
|
|
if __name__ == '__main__':
|
|
# following code snippet will be intercepted by uwsgi!
|
|
app.run(debug=False,
|
|
host=gulag.config['daemon']['listen_host'],
|
|
port=gulag.config['daemon']['listen_port']
|
|
)
|
|
gulag.db.close()
|
|
sys.exit(0)
|
|
except:
|
|
logging.error("Gulag-Server-Exception: " + traceback.format_exc())
|