A copyright violation detector running on Wikimedia Cloud Services https://tools.wmflabs.org/copyvios/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

67 lines
1.8 KiB

  1. #! /data/project/copyvios/env/bin/python
  2. # -*- coding: utf-8 -*-
  3. from time import asctime
  4. from logging import DEBUG
  5. from logging.handlers import TimedRotatingFileHandler
  6. from flask import Flask, g, request
  7. from flask.ext.mako import MakoTemplates, render_template, TemplateError
  8. from flup.server.fcgi import WSGIServer
  9. from copyvios.cookies import parse_cookies
  10. app = Flask(__name__)
  11. MakoTemplates(app)
  12. app.logger.setLevel(DEBUG)
  13. app.logger.addHandler(TimedRotatingFileHandler(
  14. "logs/app.log", when="D", interval=1, backupCount=7))
  15. app.logger.info(u"Flask server started " + asctime())
  16. def debug_exceptions(func):
  17. def inner(*args, **kwargs):
  18. try:
  19. return func(*args, **kwargs)
  20. except TemplateError as exc:
  21. return "<pre>" + exc.text + "</pre>"
  22. return inner
  23. @app.before_request
  24. def prepare_cookies():
  25. cookie_string = request.environ.get("HTTP_COOKIE")
  26. g.cookies = parse_cookies(request.script_root, cookie_string)
  27. g.new_cookies = []
  28. @app.after_request
  29. def add_new_cookies(response):
  30. if g.new_cookies:
  31. if "Set-Cookie" in response.headers:
  32. g.new_cookies.insert(0, response.headers["Set-Cookie"])
  33. response.headers["Set-Cookie"] = "; ".join(g.new_cookies)
  34. return response
  35. @app.after_request
  36. def write_access_log(response):
  37. msg = u"%s %s -> %s"
  38. app.logger.debug(msg, asctime(), request.path, response.status_code)
  39. return response
  40. @app.route("/")
  41. @debug_exceptions
  42. def index():
  43. return render_template("index.mako")
  44. @app.route("/settings", methods=["GET", "POST"])
  45. @debug_exceptions
  46. def settings():
  47. return render_template("settings.mako")
  48. @app.route("/debug")
  49. @debug_exceptions
  50. def debug():
  51. return render_template("debug.mako")
  52. if __name__ == '__main__':
  53. WSGIServer(app).run()