mirror of
https://gitea.augustin64.fr/piair/MsRewards-Reborn.git
synced 2025-08-12 15:46:36 +02:00
bruh ?
This commit is contained in:
321
Flask/app.py
Normal file
321
Flask/app.py
Normal file
@ -0,0 +1,321 @@
|
||||
from time import sleep
|
||||
import subprocess
|
||||
from flask import Flask, Response, redirect, url_for, request, session, abort, render_template
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user
|
||||
import json
|
||||
password = "RandomPassword"
|
||||
secret = "fe18d16cff64b8124792b8d512cecf90b79c4947707815ecf5c70446fdbc5101"
|
||||
|
||||
|
||||
"""
|
||||
Automatic start of MsRewards
|
||||
"""
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.start()
|
||||
|
||||
trigger = CronTrigger(
|
||||
year="*", month="*", day="*", hour="2", minute="25", second="25"
|
||||
)
|
||||
|
||||
def start_ms():
|
||||
subprocess.Popen(["python3", "./V6.py", "-v", "2345"])
|
||||
|
||||
scheduler.add_job(
|
||||
start_ms,
|
||||
trigger=trigger,
|
||||
#args=["hello world"],
|
||||
name="Daily start",
|
||||
)
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Flask app
|
||||
"""
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
"""
|
||||
Login stuff
|
||||
"""
|
||||
# TODO : changer le secret
|
||||
# config
|
||||
app.config.update(
|
||||
SECRET_KEY = secret
|
||||
)
|
||||
|
||||
login_manager = LoginManager()
|
||||
login_manager.init_app(app)
|
||||
login_manager.login_view = "login"
|
||||
|
||||
# silly user model
|
||||
class User(UserMixin):
|
||||
def __init__(self, id):
|
||||
self.id = id
|
||||
self.name = "user" + str(id)
|
||||
self.password = password
|
||||
|
||||
def __repr__(self):
|
||||
return "%d/%s/%s" % (self.id, self.name, self.password)
|
||||
|
||||
users = [User(1)]
|
||||
@app.route("/login/", methods=["GET", "POST"])
|
||||
def login():
|
||||
if request.method == 'POST':
|
||||
if request.form['password'] == password:
|
||||
user = User(id)
|
||||
login_user(user)
|
||||
return(render_template("override.html"))
|
||||
else:
|
||||
return abort(401)
|
||||
else:
|
||||
return(render_template("login.html"))
|
||||
|
||||
|
||||
# handle login failed
|
||||
@app.errorhandler(401)
|
||||
def page_not_found(e):
|
||||
return(render_template("login.html"))
|
||||
|
||||
|
||||
# callback to reload the user object
|
||||
@login_manager.user_loader
|
||||
def load_user(userid):
|
||||
return User(userid)
|
||||
|
||||
"""
|
||||
end of login stuff
|
||||
"""
|
||||
|
||||
@app.route("/", methods=["post"])
|
||||
def dev():
|
||||
action = request.form
|
||||
print(action)
|
||||
if action == "dev":
|
||||
print("dev action test")
|
||||
return(f"<h1> TO IMPLEMENT - {action}</h1>")
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def main():
|
||||
return(render_template("override.html"))
|
||||
|
||||
|
||||
@app.route("/discord/")
|
||||
def discord_get():
|
||||
with open("./user_data/discord.json", "r") as inFile:
|
||||
data = json.load(inFile)
|
||||
return(render_template("discord.html", data=data, len=len(data)))
|
||||
|
||||
|
||||
@app.route("/discord/", methods=["post"])
|
||||
def discord_post():
|
||||
with open("./user_data/discord.json", "r") as inFile:
|
||||
data = json.load(inFile)
|
||||
action = request.form
|
||||
|
||||
config = action["select"]
|
||||
successL = action["successL"]
|
||||
try :
|
||||
a = action["successT"]
|
||||
successT = "True"
|
||||
except:
|
||||
successT = "False"
|
||||
try :
|
||||
a = action["errorsT"]
|
||||
errorsT = "True"
|
||||
except:
|
||||
errorsT = "False"
|
||||
errorsL = action["errorsL"]
|
||||
name = action["name"] if action["name"] else f"unnamed{action['select']}"
|
||||
data[config] = {"errorsL" : errorsL, "errorsT": errorsT, "successT": successT, "successL": successL, "name": name}
|
||||
|
||||
with open("./user_data/discord.json", "w") as outFile:
|
||||
json.dump(data, outFile)
|
||||
return(render_template("discord.html", data=data, len=len(data)))
|
||||
|
||||
|
||||
@app.route("/dev/")
|
||||
def dev2():
|
||||
with open("./user_data/proxy.json", "r") as inFile:
|
||||
j = json.load(inFile)
|
||||
new_proxy = {"address": "ADDRESS", "port": "PORT", "name":"NAME"}
|
||||
max_index = 0
|
||||
for i in range(1, 50):
|
||||
try :
|
||||
print(j[str(i)])
|
||||
except :
|
||||
print(f"found {i - 1} proxys")
|
||||
max_index = i
|
||||
break
|
||||
j[f"{max_index}"] = new_proxy
|
||||
print(j)
|
||||
with open("./user_data/proxy.json", "w") as outfile:
|
||||
json.dump(j, outfile)
|
||||
return(render_template("dev.html"))
|
||||
|
||||
|
||||
@app.route("/settings/")
|
||||
def settings_get():
|
||||
with open("./user_data/settings.json", "r") as inFile:
|
||||
settings = json.load(inFile)
|
||||
return(render_template("settings.html", data=settings))
|
||||
|
||||
@app.route("/settings/", methods=["post"])
|
||||
def settings_post():
|
||||
settings = {}
|
||||
action = request.form
|
||||
settings['avatarlink'] = action["avatarlink"]
|
||||
with open("./user_data/settings.json", "w") as inFile:
|
||||
json.dump(settings, inFile)
|
||||
return(render_template("settings.html", data=settings))
|
||||
|
||||
|
||||
@app.route("/proxy/")
|
||||
def proxy_get():
|
||||
with open("./user_data/proxy.json", "r") as inFile:
|
||||
j = json.load(inFile)
|
||||
return(render_template("proxy.html", data=j, len=len(j)))
|
||||
|
||||
|
||||
@app.route("/proxy/", methods=["post"])
|
||||
def proxy_post():
|
||||
with open("./user_data/proxy.json", "r") as inFile:
|
||||
data = json.load(inFile)
|
||||
action = request.form
|
||||
try :
|
||||
config = action["select"]
|
||||
address = action["address"]
|
||||
port = action["port"]
|
||||
name = action["name"] if action["name"] else f"@unnamed{action['select']}"
|
||||
data[config] = {"address" : address, "port": port, "name": name}
|
||||
except :
|
||||
print("error : probably bad config")
|
||||
|
||||
with open("./user_data/proxy.json", "w") as outFile:
|
||||
json.dump(data, outFile)
|
||||
return(render_template("proxy.html", data=data, len=len(data)))
|
||||
|
||||
|
||||
@app.route("/override/")
|
||||
def override_get():
|
||||
return(render_template("override.html"))
|
||||
|
||||
|
||||
@app.route("/override/", methods=["post"])
|
||||
def override():
|
||||
subprocess.run(["python3", "./V6.py", "-v", "2345"])
|
||||
return(render_template("override.html"))
|
||||
|
||||
|
||||
@app.route("/database/")
|
||||
def database_get():
|
||||
with open("./user_data/database.json", "r") as inFile:
|
||||
database = json.load(inFile)
|
||||
return(render_template("database.html", data = database))
|
||||
|
||||
|
||||
@app.route("/database/", methods=["post"])
|
||||
def database_post():
|
||||
action = request.form
|
||||
data = {
|
||||
"host": action['address'],
|
||||
"table": action['table'],
|
||||
"usr": action['user'],
|
||||
"pwd": action['password'],
|
||||
"checked": ""
|
||||
}
|
||||
|
||||
try :
|
||||
if action["switch"] :
|
||||
data['checked'] = "checked"
|
||||
except:
|
||||
pass
|
||||
|
||||
with open("./user_data/database.json", "w") as inFile:
|
||||
json.dump(data, inFile)
|
||||
|
||||
return(render_template("database.html", data = data))
|
||||
|
||||
|
||||
@app.route("/accounts/")
|
||||
def accounts_get():
|
||||
with open("./user_data/proxy.json", "r") as inFile:
|
||||
proxys = json.load(inFile)
|
||||
with open("./user_data/discord.json", "r") as inFile:
|
||||
discords = json.load(inFile)
|
||||
with open("./user_data/configs.json", "r") as inFile:
|
||||
configs = json.load(inFile)
|
||||
return(render_template("accounts.html", data=configs, discords=discords, proxys=proxys, configs=configs, len=len(configs)))
|
||||
|
||||
|
||||
@app.route("/accounts/", methods=["POST"])
|
||||
def accounts_post():
|
||||
action = request.form
|
||||
with open("./user_data/proxy.json", "r") as inFile:
|
||||
proxys = json.load(inFile)
|
||||
with open("./user_data/discord.json", "r") as inFile:
|
||||
discords = json.load(inFile)
|
||||
with open("./user_data/configs.json", "r") as inFile:
|
||||
configs = json.load(inFile)
|
||||
|
||||
comptes = {
|
||||
"1":{"mail": action["mail1"], "pwd": action["pwd1"], "2fa": action["2fa1"]},
|
||||
"2":{"mail": action["mail2"], "pwd": action["pwd2"], "2fa": action["2fa2"]},
|
||||
"3":{"mail": action["mail3"], "pwd": action["pwd3"], "2fa": action["2fa3"]},
|
||||
"4":{"mail": action["mail4"], "pwd": action["pwd4"], "2fa": action["2fa4"]},
|
||||
"5":{"mail": action["mail5"], "pwd": action["pwd5"], "2fa": action["2fa5"]}
|
||||
}
|
||||
|
||||
configs[action["config"]] = {
|
||||
"name" : action["name"] if action["name"] != "" else f"unnamed{action['config']}",
|
||||
"proxy": action["proxy"],
|
||||
"discord": action["discord"],
|
||||
"accounts": comptes
|
||||
}
|
||||
with open("./user_data/configs.json", "w") as outFile:
|
||||
json.dump(configs, outFile)
|
||||
return(render_template("accounts.html", data=configs, discords=discords, proxys=proxys, configs=configs, len=len(configs)))
|
||||
|
||||
|
||||
def read_config_txt(ligne):
|
||||
f = open("./user_data/config.cfg", "r")
|
||||
txt = f.readlines()
|
||||
f.close()
|
||||
if txt.count(txt) >1:
|
||||
raise NameError("Fail")
|
||||
|
||||
for i in range(len(txt)) :
|
||||
name = txt[i].split(" = ")[0]
|
||||
if name == ligne:
|
||||
ret = txt[i].split(" = ")[1]
|
||||
|
||||
f = open("./user_data/config.cfg", "w")
|
||||
for i in txt :
|
||||
f.write(i)
|
||||
f.close()
|
||||
return(ret.replace("\n", ""))
|
||||
|
||||
|
||||
def edit_config_txt(ligne, contenu):
|
||||
f = open("./user_data/config.cfg", "r")
|
||||
txt = f.readlines()
|
||||
f.close()
|
||||
if txt.count(txt) >1:
|
||||
raise NameError("Fail")
|
||||
|
||||
for i in range(len(txt)) :
|
||||
name = txt[i].split(" = ")[0]
|
||||
if name == ligne:
|
||||
txt[i] = name + " = " + str(contenu) + "\n"
|
||||
|
||||
f = open("./user_data/config.cfg", "w")
|
||||
for i in txt :
|
||||
f.write(i)
|
||||
f.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=3456, debug=True)
|
Reference in New Issue
Block a user