flaskr.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. """
  2. Website for Craftbroec RR stuff
  3. """
  4. import os
  5. import hashlib
  6. import hmac
  7. import subprocess
  8. from flask import jsonify, abort, request, send_from_directory
  9. from app import app
  10. from app.util import job
  11. @app.route('/')
  12. def index():
  13. """Show index page"""
  14. return send_from_directory('static', 'index.html')
  15. @app.route("/tutorial")
  16. @app.route("/tutorial/book")
  17. def tutorial_book():
  18. """Display book"""
  19. return send_from_directory('static', 'tutorial/book.pdf')
  20. @app.route("/tutorial/article")
  21. def tutorial_article():
  22. """Display book"""
  23. return send_from_directory('static', 'tutorial/article.pdf')
  24. @app.route("/tutorial/dist")
  25. def tutorial_dist():
  26. """Display book"""
  27. return send_from_directory('static', 'tutorial/dist.pdf')
  28. @app.route("/tutorial.png")
  29. def tutorial_dist_png():
  30. """Display book"""
  31. return send_from_directory('static', 'tutorial/dist.png')
  32. @app.route('/typeset', methods=['GET', 'POST'])
  33. def typeset():
  34. """Add job to schedeuler"""
  35. job.add()
  36. return jsonify(True)
  37. @app.route('/deploy', methods=['POST'])
  38. def deploy():
  39. """Run deploy script"""
  40. secret = os.environ["WEBHOOK_KEY"].encode('utf-8')
  41. digest = hmac.new(secret, request.data, hashlib.sha256).hexdigest()
  42. signature = request.headers['X-Gogs-Signature']
  43. if len(signature) < 2 or not hmac.compare_digest(signature, digest):
  44. abort(400, 'Invalid signature')
  45. subprocess.call(['git', 'pull'])
  46. subprocess.call(['pipenv', 'sync'])
  47. subprocess.call(['touch', 'flask.wsgi'])
  48. return jsonify(True)