From 94c28a75f0510c3f1e7e43da1e9e120004b3643c Mon Sep 17 00:00:00 2001 From: KyuDev Date: Thu, 13 Apr 2023 15:54:27 +0200 Subject: [PATCH] Webserver init --- webserver/http_referer.py | 19 ++ webserver/main.py | 65 ++++++ webserver/static/main_free.png | Bin 0 -> 8532 bytes .../login/invalid_credentials_noti.html | 217 +++++++++++++++++ webserver/templates/login/main_login.html | 219 ++++++++++++++++++ 5 files changed, 520 insertions(+) create mode 100644 webserver/http_referer.py create mode 100644 webserver/main.py create mode 100644 webserver/static/main_free.png create mode 100644 webserver/templates/login/invalid_credentials_noti.html create mode 100644 webserver/templates/login/main_login.html diff --git a/webserver/http_referer.py b/webserver/http_referer.py new file mode 100644 index 0000000..03e9a1c --- /dev/null +++ b/webserver/http_referer.py @@ -0,0 +1,19 @@ +from flask import Flask, request, redirect + +app = Flask(__name__) + +app.config.update( + DEBUG = False, + SECRET_KEY = 'secret_this_wont_be_important' +) + +@app.errorhandler(401) +def custom_401(error): + return redirect("401 please just stop, thanks") + +@app.errorhandler(404) +def custom_404(error): + return("page not found") + +if __name__ == '__main__': + app.run(host='185.78.255.231', port=80) diff --git a/webserver/main.py b/webserver/main.py new file mode 100644 index 0000000..07c42d8 --- /dev/null +++ b/webserver/main.py @@ -0,0 +1,65 @@ +import os, datetime, requests, random, json, time, string +from werkzeug.security import generate_password_hash +from werkzeug.utils import secure_filename +from flask import Flask, request, render_template, redirect, send_file, url_for, jsonify, session, flash, after_this_request +from flask_login import current_user, login_user, LoginManager, UserMixin, login_required, login_user, logout_user +from flask_mobility import Mobility +from flask_caching import Cache +from flask_ipban import IpBan +from device_detector import DeviceDetector +from flask_sslify import SSLify +from requests_oauthlib import OAuth2Session +from shutil import copyfile +from werkzeug.middleware.shared_data import SharedDataMiddleware +from oauthlib.oauth2 import WebApplicationClient +from discord_webhook import DiscordWebhook, DiscordEmbed + +contact_support_dc_webhook = "" + +app = Flask(__name__) + +app.config.update( + DEBUG=False, + SECRET_KEY='secret_password_' + ''.join(str(random.choice(string.ascii_lowercase)) for i in range(20)) +) + +login_manager = LoginManager() +login_manager.init_app(app) + + +class User(UserMixin): + def __init__(self, id): + self.id = id + self.name = "user" + str(id) + self.password = self.name + "_secret" + + def __repr__(self): + return "%d/%s/%s" % (self.id, self.name, self.password) + +@login_manager.user_loader +def load_user(userid): + return User(userid) + + +def get_username(self): + return self.username + + +@app.route('/') +def homepage(): + return redirect("/login") + + +# Error handling +@app.errorhandler(401) +def custom_401(error): + return redirect("/") + + +@app.errorhandler(404) +def custom_404(error): + return redirect("/") + +if __name__ == '__main__': + app.run(host='185.78.255.231', threaded=True,use_reloader=True, port=443, + ssl_context=('/etc/letsencrypt/live/cipherwatch.asdatindustries.com/fullchain.pem', '/etc/letsencrypt/live/cipherwatch.asdatindustries.com/privkey.pem')) \ No newline at end of file diff --git a/webserver/static/main_free.png b/webserver/static/main_free.png new file mode 100644 index 0000000000000000000000000000000000000000..10a329622e6deb44de3079392985462b2440cfc9 GIT binary patch literal 8532 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 literal 0 HcmV?d00001 diff --git a/webserver/templates/login/invalid_credentials_noti.html b/webserver/templates/login/invalid_credentials_noti.html new file mode 100644 index 0000000..9b9c788 --- /dev/null +++ b/webserver/templates/login/invalid_credentials_noti.html @@ -0,0 +1,217 @@ + + + + + Invalid! + + + + + + + + + \ No newline at end of file diff --git a/webserver/templates/login/main_login.html b/webserver/templates/login/main_login.html new file mode 100644 index 0000000..ec35a1e --- /dev/null +++ b/webserver/templates/login/main_login.html @@ -0,0 +1,219 @@ + + + + + Login + + + + + + + + + + + \ No newline at end of file