-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
64 lines (46 loc) · 2.03 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import argparse
import base64
import traceback
import zlib
import flask
from flask import request, jsonify
from mailer import Mailer, Message
def parse_arguments():
parser = argparse.ArgumentParser()
parser.add_argument("--port", default=5000, type=int, help="Port to bind the http api to")
parser.add_argument("--host", default="smtp.gmail.com", help="Host of the smtp server")
parser.add_argument("--user", required=True, help="Username to use to login into the smtp server")
parser.add_argument("--password", required=True, help="Password for the smtp server")
parser.add_argument("--receiver", required=True, help="Address of the receiver of feedback mails")
return parser.parse_args()
def make_app(args):
app = flask.Flask(__name__)
@app.route("/post", methods=["POST"])
def post():
version = request.form["version"]
username = request.form.get("name", "")
feedback = request.form.get("feedback", "")
if "logcat64" in request.form:
logcat = base64.b64decode(request.form.get("logcat64"))
logcat = zlib.decompress(logcat, 32+15).decode("utf8")
else:
logcat = request.form.get("logcat", "")
send_feedback_mail(version, username, feedback, logcat)
return jsonify(success=True)
def send_feedback_mail(version, username, feedback, logcat):
# noinspection PyBroadException
try:
msg = Message(From=args.user, To=args.receiver, charset="utf8")
msg.Subject = u"Feedback {} ({})".format(version, username)
msg.Body = u"User: {0} http://pr0gramm.com/user/{0}\nFeedback: {1}\n\nLogcat: {2}\n".format(username, feedback, logcat)
mailer = Mailer(args.host, port=587, use_tls=True, usr=args.user, pwd=args.password)
mailer.send(msg)
except:
traceback.print_exc()
return app
def main():
args = parse_arguments()
app = make_app(args)
app.run(host="0.0.0.0", port=args.port, debug=False)
if __name__ == '__main__':
main()