-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
65 lines (48 loc) · 1.78 KB
/
server.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
65
import ssl
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--logs", help="Set log level")
args = parser.parse_args()
from logger import baseLogger
baseLogger(args.logs or "info")
from Configs import baseConfig
config = baseConfig()
api = config["API"]
SSL = config["SSL_API"]
export = config["EXPORT"]
from flask import Flask
from flask import send_from_directory
from flask_cors import CORS
from routes.data_collector.v1 import v1 as data_collector_api_v1
from routes.admin.v1 import v1 as admin_v1
from controllers.sync_database import create_database
from controllers.sync_database import create_tables
from controllers.sync_database import create_super_admin
from controllers.SSL import isSSL
# from schemas.migration import migrate_records
app = Flask(__name__)
CORS(
app,
origins=api["ORIGINS"],
supports_credentials=True,
)
create_database()
create_tables()
# migrate_records()
create_super_admin()
app.register_blueprint(data_collector_api_v1, url_prefix="/v1")
app.register_blueprint(admin_v1, url_prefix="/v1/admin")
@app.route("/downloads/<path:path>")
def downloads(path):
app.logger.debug("Requesting %s download ..." % path)
return send_from_directory(directory="%s/datasets" % export["PATH"], path=path)
checkSSL = isSSL(path_crt_file=SSL["CERTIFICATE"], path_key_file=SSL["KEY"], path_pem_file=SSL["PEM"])
if __name__ == "__main__":
if checkSSL:
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(SSL["CERTIFICATE"], SSL["KEY"])
app.logger.info("Running on secure port: %s" % SSL['PORT'])
app.run(host=api["HOST"], port=SSL["PORT"], ssl_context=context)
else:
app.logger.info("Running on un-secure port: %s" % api['PORT'])
app.run(host=api["HOST"], port=api["PORT"])