#! /bin/python3 from random import choice from flask import Flask, render_template, request from configparser import ConfigParser from datetime import datetime import logging import pytz app = Flask(__name__, static_url_path='', static_folder='static', template_folder='templates') config = ConfigParser() config.read('config.ini') logging.basicConfig(encoding='utf-8', level=logging.INFO, format='%(message)s') logger = logging.getLogger('waitress') tz = pytz.timezone(config.get('main', 'timezone')) @app.after_request def log_the_request(response): now = datetime.now(tz=tz) if 'X-Forwarded-For' in request.headers: remote_addr = request.headers['X-Forwarded-For'] else: remote_addr = request.remote_addr if not request.remote_user: remote_user = "-" else: remote_user = request.remote_user if not request.referrer: referrer = "-" else: referrer = request.referrer if request.full_path[-1] == '?': full_path = request.full_path[:-1] else: full_path = request.full_path log = { 'remote_addr': remote_addr, 'remote_user': remote_user, 'url': full_path, 'date': now.strftime("%d/%b/%Y:%H:%M:%S %z"), 'referrer': referrer, 'user_agent': request.user_agent.string, 'method': request.method, 'content_length': response.content_length, 'status_code': response.status_code } logfile = "{} - {} [{}] \"{} {}\" {} {} \"{}\" \"{}\"".format(log['remote_addr'], log['remote_user'], log['date'], log['method'], log['url'], log['status_code'], log['content_length'], log['referrer'], log['user_agent']) logger.info(logfile) return response @app.route("/") def hello(): lang = config.get('i18n', 'lang') title = config.get('i18n', 'title') mail = config.get('main', 'mail') more = config.get('i18n', 'more') questions_prefix = config.get('i18n', 'questions_prefix') questions_suffix = config.get('i18n', 'questions_suffix') send_questions = config.get('i18n', 'send_questions') separator = config.get('i18n', 'separator') separator_char = config.get('main', 'separator_char') ablines = [] now = datetime.now(tz=tz) epoch = now.timestamp() lines = getContent() while len(lines) < 2: logger.error('Error reading content') print(lines) lines = getContent() for line in lines: ab = line.split(separator_char) ablines.append( {'A': str(ab[0]), 'B': str(ab[1])} ) with open("ab.txt", "r") as f: num_lines = sum(1 for _ in f) return render_template('index.html', title=title, separator=separator, content=ablines, num_lines=num_lines, epoch=epoch, mailto=mail, more=more, questions_prefix=questions_prefix, questions_suffix=questions_suffix, send_questions=send_questions, lang=lang) def getContent(): lines = [a.strip() for a in open("ab.txt", "r").readlines()] result = [choice(lines) for a in range(5)] return result if __name__ == "__main__": from waitress import serve serve(app, host='0.0.0.0', port=5000, ident='a/b game')