1
|
import os
|
2
|
|
3
|
from flask import Flask, redirect
|
4
|
from injector import Injector
|
5
|
|
6
|
from src.config import configuration
|
7
|
from src.config.connection_provider import ConnectionProvider
|
8
|
from src.controllers.certificates_controller import CertController
|
9
|
|
10
|
|
11
|
class X509ManagementApp(Flask):
|
12
|
|
13
|
def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):
|
14
|
with self.app_context():
|
15
|
initialize_app()
|
16
|
super(X509ManagementApp, self).run(host=host, port=port, debug=debug, load_dotenv=load_dotenv, **options)
|
17
|
|
18
|
|
19
|
app = X509ManagementApp(__name__)
|
20
|
certificate_controller: CertController = None
|
21
|
|
22
|
|
23
|
@app.route('/')
|
24
|
def index():
|
25
|
return redirect("/static/index.html")
|
26
|
|
27
|
|
28
|
@app.route('/api/certificates', methods=["POST"])
|
29
|
def create_certificate():
|
30
|
return certificate_controller.create_certificate()
|
31
|
|
32
|
|
33
|
@app.route('/api/certificates', methods=["GET"])
|
34
|
def get_cert_list():
|
35
|
return certificate_controller.get_certificate_list()
|
36
|
|
37
|
|
38
|
@app.route('/api/certificates/<id>', methods=["GET"])
|
39
|
def get_cert(id):
|
40
|
return certificate_controller.get_certificate_by_id(id)
|
41
|
|
42
|
|
43
|
@app.route('/api/certificates/<id>/details', methods=["GET"])
|
44
|
def get_cert_details(id):
|
45
|
return certificate_controller.get_certificate_details_by_id(id)
|
46
|
|
47
|
|
48
|
@app.route('/api/certificates/<id>/root', methods=["GET"])
|
49
|
def get_cert_root(id):
|
50
|
return certificate_controller.get_certificate_root_by_id(id)
|
51
|
|
52
|
|
53
|
@app.route('/api/certificates/<id>/chain', methods=["GET"])
|
54
|
def get_cert_chain(id):
|
55
|
return certificate_controller.get_certificate_trust_chain_by_id(id)
|
56
|
|
57
|
|
58
|
def initialize_app():
|
59
|
global certificate_controller
|
60
|
|
61
|
injector = Injector([configuration.configure_default, ConnectionProvider])
|
62
|
certificate_controller = injector.get(CertController)
|
63
|
|
64
|
|
65
|
if __name__ == '__main__':
|
66
|
app_host = "0.0.0.0"
|
67
|
app_port = 5000
|
68
|
|
69
|
# TODO better load this from config.py
|
70
|
if "FLASK_HOST" in os.environ:
|
71
|
app_host = os.environ["FLASK_HOST"]
|
72
|
|
73
|
if "FLASK_PORT" in os.environ:
|
74
|
app_host = os.environ["FLASK_PORT"]
|
75
|
|
76
|
app.run(host=app_host, port=app_port)
|