Burathar
4 years ago
11 changed files with 96 additions and 47 deletions
@ -1,23 +1,48 @@ |
|||||||
from os import environ |
from os import path, mkdir |
||||||
|
import logging |
||||||
|
from logging.handlers import RotatingFileHandler |
||||||
from pathlib import Path |
from pathlib import Path |
||||||
import confuse |
import confuse |
||||||
|
|
||||||
from flask import Flask |
from flask import Flask |
||||||
from flask_bootstrap import Bootstrap |
from flask_bootstrap import Bootstrap |
||||||
|
|
||||||
app = Flask(__name__) |
|
||||||
Bootstrap(app) |
|
||||||
|
|
||||||
def read_config(): |
def read_config(): |
||||||
conf = confuse.Configuration('biscd', __name__) |
conf = confuse.Configuration('biscd', __name__) |
||||||
try: |
try: |
||||||
conf['config'].get() |
conf['logging'].get() |
||||||
except confuse.NotFoundError: |
except confuse.NotFoundError as not_found: |
||||||
raise ValueError("Failed to open any configfile containing a 'config' object. " \ |
raise ValueError("Failed to open any configfile containing a 'logging' object. " \ |
||||||
"Please make sure the module directory contains a config_default.yaml, " \ |
"Please make sure the module directory contains a config_default.yaml, " \ |
||||||
f"or /etc/{__name__}/config.yaml exists") |
f"or /etc/{__name__}/config.yaml exists") from not_found |
||||||
|
return conf |
||||||
|
|
||||||
return conf['config'] |
def setup_logging(): |
||||||
|
# pylint: disable=no-member |
||||||
|
if config['logging']['log_to_sdout'].get(bool): |
||||||
|
stream_handler = logging.StreamHandler() |
||||||
|
stream_handler.setLevel(logging.INFO) |
||||||
|
app.logger.addHandler(stream_handler) |
||||||
|
else: |
||||||
|
logfile = Path(config['logging']['logfile'].as_filename()) |
||||||
|
if not logfile.parent.exists(): |
||||||
|
logfile.parent.mkdir(mode=0o770, parents=True) |
||||||
|
file_handler = RotatingFileHandler(str(logfile), maxBytes=10240, backupCount=10) |
||||||
|
file_handler.setFormatter(logging.Formatter( |
||||||
|
'%(asctime)s %(levelname)s: %(message)s ' |
||||||
|
'[in %(pathname)s:%(lineno)d]')) |
||||||
|
file_handler.setLevel(logging.INFO) |
||||||
|
app.logger.addHandler(file_handler) |
||||||
|
|
||||||
|
app.logger.setLevel(logging.INFO) |
||||||
|
app.logger.info('Biscd startup') |
||||||
|
|
||||||
|
app = Flask(__name__) |
||||||
config = read_config() |
config = read_config() |
||||||
|
bootstrap = Bootstrap(app) |
||||||
|
|
||||||
|
setup_logging() |
||||||
|
|
||||||
from biscd import routes, errors |
from biscd import routes, errors, models |
||||||
|
@ -1,13 +1,12 @@ |
|||||||
confiag: |
flask_development_server: |
||||||
flask_development_server: |
|
||||||
# Options: production, development |
# Options: production, development |
||||||
flask_env: development |
flask_env: development |
||||||
# Options: 127.0.0.1 , 0.0.0.0 |
# Options: 127.0.0.1 , 0.0.0.0 |
||||||
server_host: 0.0.0.0 |
server_host: 0.0.0.0 |
||||||
port: 5000 |
port: 5000 |
||||||
|
|
||||||
logging: |
logging: |
||||||
infofile: info.log |
log_to_sdout: true |
||||||
errorfile: error.log |
logfile: info.log |
||||||
|
|
||||||
message: Hoi |
message: Hoi |
@ -1,8 +1,9 @@ |
|||||||
from flask import render_template, abort |
from flask import render_template |
||||||
from biscd import app, config, utils |
from biscd import app |
||||||
|
from biscd.models.project import Project |
||||||
|
|
||||||
@app.route('/', methods=['GET']) |
@app.route('/', methods=['GET']) |
||||||
@app.route('/index', methods=['GET']) |
@app.route('/index', methods=['GET']) |
||||||
def index(): |
def index(): |
||||||
return render_template('index.html', message=config['message'].get()) |
project_names = Project.list() |
||||||
|
return render_template('index.html', projects=project_names) |
||||||
|
@ -0,0 +1,11 @@ |
|||||||
|
from datetime import datetime |
||||||
|
|
||||||
|
from flask import request |
||||||
|
|
||||||
|
def get_timestamp(): |
||||||
|
return datetime.now().astimezone().isoformat(timespec='milliseconds') |
||||||
|
|
||||||
|
def get_remote_addr(): |
||||||
|
#print(f"HTTP_X_REAL_IP: {request.environ.get('HTTP_X_REAL_IP')}") |
||||||
|
#print(f"HTTP_X_FORWARDED_FOR: {request.environ.get('HTTP_X_FORWARDED_FOR')}") |
||||||
|
return request.environ.get('HTTP_X_FORWARDED_FOR', request.remote_addr) |
@ -0,0 +1,12 @@ |
|||||||
|
flask_development_server: |
||||||
|
# Options: production, development |
||||||
|
flask_env: production |
||||||
|
# Options: 127.0.0.1 , 0.0.0.0 |
||||||
|
server_host: 127.0.0.1 |
||||||
|
port: 5000 |
||||||
|
|
||||||
|
logging: |
||||||
|
log_to_sdout: true |
||||||
|
logfile: info.log |
||||||
|
|
||||||
|
message: Hoi |
@ -1,13 +0,0 @@ |
|||||||
config: |
|
||||||
flask_development_server: |
|
||||||
# Options: production, development |
|
||||||
flask_env: production |
|
||||||
# Options: 127.0.0.1 , 0.0.0.0 |
|
||||||
server_host: 127.0.0.1 |
|
||||||
port: 5000 |
|
||||||
|
|
||||||
logging: |
|
||||||
infofile: info.log |
|
||||||
errorfile: error.log |
|
||||||
|
|
||||||
message: Hoi |
|
Loading…
Reference in new issue