47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
|
#!/usr/bin/env python
|
||
|
import flask
|
||
|
from flask import Flask, jsonify
|
||
|
from flask_httpauth import HTTPBasicAuth
|
||
|
from werkzeug.security import generate_password_hash, check_password_hash
|
||
|
from lib.logger import logging
|
||
|
from lib.configuration import configuration
|
||
|
from lib.server_checker import ServerChecker
|
||
|
|
||
|
log = logging.getLogger(name='server')
|
||
|
log.info('starting smss server')
|
||
|
|
||
|
config = configuration(prefix='config/server')
|
||
|
server = Flask(__name__)
|
||
|
auth = HTTPBasicAuth()
|
||
|
users = config.get('frontend_users')
|
||
|
serverchecker = ServerChecker(configuration=config)
|
||
|
|
||
|
|
||
|
@auth.verify_password
|
||
|
def verify_password(username, password):
|
||
|
if username in users and check_password_hash(generate_password_hash(users.get(username)), password):
|
||
|
return username
|
||
|
|
||
|
|
||
|
@server.route('/')
|
||
|
@auth.login_required
|
||
|
def index():
|
||
|
output = flask.render_template(
|
||
|
template_name_or_list='main.html.j2',
|
||
|
servers=serverchecker.get_data()
|
||
|
)
|
||
|
return output
|
||
|
|
||
|
|
||
|
@server.route('/json')
|
||
|
@auth.login_required()
|
||
|
def show_json():
|
||
|
server_data = {
|
||
|
"servers": serverchecker.get_data()
|
||
|
}
|
||
|
return jsonify(server_data)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
server.run(host="0.0.0.0")
|