mirror of
https://github.com/TakeusV1/flask_ipam.git
synced 2026-10-13 17:15:33 +02:00
114 lines
3.8 KiB
Python
114 lines
3.8 KiB
Python
from flask import Flask
|
|
from flask import abort, request, jsonify, make_response, render_template
|
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
from datetime import datetime
|
|
from os import environ
|
|
|
|
from app._config import *
|
|
from app.models import *
|
|
|
|
from app.extensions import *
|
|
|
|
from app.routes.r_base import base
|
|
from app.routes.r_networks import network
|
|
from app.routes.r_inventory import inventory
|
|
from app.routes.r_auth import auth
|
|
from app.routes.r_adm import admin
|
|
|
|
def create_app():
|
|
|
|
app = Flask(__name__)
|
|
app.config.from_object(Configuration)
|
|
|
|
app.jinja_env.globals['app_version'] = app_version
|
|
|
|
login_manager.init_app(app)
|
|
db.init_app(app)
|
|
|
|
app.wsgi_app = ProxyFix(
|
|
app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1
|
|
)
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
|
|
## BLUEPRINTS
|
|
app.register_blueprint(base, url_prefix='/')
|
|
app.register_blueprint(network, url_prefix='/network')
|
|
app.register_blueprint(inventory, url_prefix='/inventory')
|
|
app.register_blueprint(auth, url_prefix='/auth')
|
|
app.register_blueprint(admin, url_prefix='/admin')
|
|
|
|
## SYSTEM ROUTES
|
|
@app.before_request
|
|
def before_request():
|
|
if app_maintenance:
|
|
return abort(503)
|
|
|
|
@app.route('/app_info')
|
|
def route_app_info():
|
|
response = make_response(jsonify({'app_name': app_name, 'app_version':app_version,'release_date':app_release_date,'app_maintenance':app_maintenance,'app_debug':app_debug}), 200)
|
|
return response
|
|
|
|
@app.route('/app_check')
|
|
def route_app_check():
|
|
response = make_response(jsonify({'check': 1}), 200)
|
|
return response
|
|
|
|
## ERROR ROUTES
|
|
@app.errorhandler(401)
|
|
def not_found(error):
|
|
HTTP_ERROR = [
|
|
"401",
|
|
"Unauthorized",
|
|
"The server could not verify that you are authorized to access the URL requested. You are not authenticated, or your browser doesn't understand how to supply the credentials required...",
|
|
"/static/img/403.png"
|
|
]
|
|
return render_template('srv_error.html',HTTP_ERROR=HTTP_ERROR), 401
|
|
|
|
@app.errorhandler(403)
|
|
def not_found(error):
|
|
HTTP_ERROR = [
|
|
"403",
|
|
"Forbidden",
|
|
"You don't have the permission to access the requested resource. It is either read-protected or not readable by the server...",
|
|
"/static/img/403.png"
|
|
]
|
|
return render_template('srv_error.html',HTTP_ERROR=HTTP_ERROR), 403
|
|
|
|
@app.errorhandler(404)
|
|
def not_found(error):
|
|
HTTP_ERROR = [
|
|
"404",
|
|
"Not Found",
|
|
"The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again...",
|
|
"/static/img/404.png"
|
|
]
|
|
return render_template('srv_error.html',HTTP_ERROR=HTTP_ERROR), 404
|
|
|
|
@app.errorhandler(500)
|
|
def not_found(error):
|
|
HTTP_ERROR = [
|
|
"500",
|
|
"Internal Server Error",
|
|
"The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
|
|
"/static/img/403.png"
|
|
]
|
|
return render_template('srv_error.html',HTTP_ERROR=HTTP_ERROR), 500
|
|
|
|
@app.errorhandler(503)
|
|
def not_found(error):
|
|
HTTP_ERROR = [
|
|
"503",
|
|
"Service Unavailable",
|
|
"The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.",
|
|
"/static/img/403.png"
|
|
]
|
|
return render_template('srv_error.html',HTTP_ERROR=HTTP_ERROR), 503
|
|
|
|
## FLASK LOGIN
|
|
@login_manager.user_loader
|
|
def load_user(user_id):
|
|
return User.query.filter_by(id=int(user_id)).first()
|
|
|
|
return app |