from flask import Flask, render_template, request, send_from_directory
from helpers import aux
from discord_webhook import DiscordWebhook
import datetime
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
import logging
# Logs to both console and app.log file
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s",
)
formatter = logging.Formatter(
"%(asctime)s %(levelname)s %(name)s %(threadName)s : %(message)s"
)
logger = logging.getLogger("server")
handler = logging.FileHandler("app.log")
handler.setFormatter(formatter)
handler.setLevel(logging.INFO)
logger.addHandler(handler)
def niceDateTime():
time = datetime.datetime.now()
return time.strftime("%H:%M:%S -- %d/%m/%Y")
def niceTime():
time = datetime.datetime.now()
return time.strftime("%H:%M:%S")
def spamDiscord(logs=""):
content = f"@everyone, napaka na strani ob {niceDateTime()}: \n {logs}"
webhook = DiscordWebhook(
url="https://discord.com/api/webhooks/1062432166950219838/tgl04gFFIMkrASeWX2AlETdsgdTHU3CWufzE1NZQMLQ2eZGVeQyGXj4AAt0k4Dj467B"
+ "d",
content=content,
)
webhook.execute()
def discordLog(msg):
DiscordWebhook(
url="https://discord.com/api/webhooks/1062474351196262571/V6M_vfhPy9QEEbM-b1W7qxBr2k5olpyeOY1O2RoKZ178c0Fs9_vYzKqJwES3o3suLSF"
+ "o",
content=msg,
).execute()
app = Flask(__name__, static_folder="static")
limiter = Limiter(
get_remote_address,
app=app,
default_limits=["50 per minute"],
storage_uri="memory://",
)
def setHeaders(request):
headers = request.form["headers"]
with open("headers.txt", "w") as f:
f.write(headers)
discordLog(f"Headers so bili spremenjeni ob {niceDateTime()}")
return "OK"
@app.route("/favicon.ico")
@app.route("/robots.txt")
@app.route("/sitemap.xml")
def static_from_root():
return send_from_directory(app.static_folder, request.path[1:])
@app.route("/", methods=["POST"])
def apcall():
if "headers" in request.form:
setHeaders(request)
return "OK"
registrska = request.form["registrska"]
try:
ar = aux(registrska)
app.logger.info(
f'Registrska "{registrska}" je veljavna do {ar} ob {niceTime()}'
)
# discordLog(f"Registrska \"{registrska}\" je veljavna do {ar} ob {niceTime()}")
return render_template("index.html", valid_until=ar, license_plate=registrska)
except Exception as e:
spamDiscord(str(e))
app.logger.error(f"\nNapaka pri {registrska} ob {niceTime()}")
# discordLog(f"!!!!!!!!!!!!!!!!!!!!!!!!!!!\nNapaka pri {registrska} ob {niceTime()}")
return render_template("failure.html")
@app.route("/global", methods=["POST"])
def apcall_global():
print(request.form)
registrska = request.form["registrska"]
drzava = request.form["drzava"]
try:
ar = aux(registrska, drzava)
app.logger.info(
f'Registrska "{registrska}" je veljavna do {ar} ob {niceTime()}'
)
# discordLog(f"Registrska \"{registrska}\" je veljavna do {ar} ob {niceTime()}")
return render_template(
"index_global.html", valid_until=ar, license_plate=registrska
)
except Exception as e:
spamDiscord(str(e))
app.logger.error(f"\nNapaka pri {registrska} ob {niceTime()}")
# discordLog(f"!!!!!!!!!!!!!!!!!!!!!!!!!!!\nNapaka pri {registrska} ob {niceTime()}")
return render_template("failure.html")
@app.route("/", methods=["GET"])
def index():
user_language = request.accept_languages.best_match(["sl", "en"])
if user_language == "en":
return render_template("index_global.html")
app.logger.info("Zahteva za domačo stran")
# discordLog(f"Zahteva za domačo stran ob {niceTime()}")
return render_template("index.html")
@app.route("/global", methods=["GET"])
def global_index():
app.logger.info("Zahteva za globalno stran")
# discordLog(f"Zahteva za globalno stran ob {niceTime()}")
return render_template("index_global.html")
if __name__ == "__main__":
app.run()