summaryrefslogblamecommitdiffstats
path: root/server.py
blob: aebf98ce372c142e3249ceccbcfc033feb398f08 (plain) (tree)

















































































                                                                                                                                                                               
from flask import Flask, jsonify, render_template, request, send_from_directory
import os
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('/', methods=['GET'])
def index():
    app.logger.info("Zahteva za domačo stran")
    # discordLog(f"Zahteva za domačo stran ob {niceTime()}")
    return render_template('index.html')

if __name__ == '__main__':
    app.run()