mirror of
https://gitea.augustin64.fr/piair/MsRewards-Reborn.git
synced 2025-07-06 06:03:58 +02:00
implemented classes to remove global file
This commit is contained in:
@ -1,15 +1,75 @@
|
||||
import json
|
||||
|
||||
from discord import Webhook, RequestsWebhookAdapter
|
||||
|
||||
from modules.Classes.Driver import Driver
|
||||
from modules.Classes.Proxy import Proxy
|
||||
from modules.Classes.UserCredentials import UserCredentials
|
||||
from modules.Classes.DiscordConfig import DiscordConfig, FakeWebHook
|
||||
from modules.Classes.WordList import WordList
|
||||
|
||||
|
||||
class Config:
|
||||
def __init__(self, args):
|
||||
self.args = args
|
||||
self.UserCredentials = UserCredentials()
|
||||
"""
|
||||
open config file
|
||||
"""
|
||||
with open("/app/MsRewards-Reborn/user_data/discord.json", "r") as inFile:
|
||||
discord = json.load(inFile)
|
||||
with open("/app/MsRewards-Reborn/user_data/settings.json", "r") as inFile:
|
||||
settings = json.load(inFile)
|
||||
with open("/app/MsRewards-Reborn/user_data/proxy.json", "r") as inFile:
|
||||
proxy = json.load(inFile)
|
||||
with open("/app/MsRewards-Reborn/user_data/configs.json", "r") as inFile:
|
||||
config = json.load(inFile)
|
||||
|
||||
"""
|
||||
setup standalone stuff
|
||||
"""
|
||||
self.args = args
|
||||
self.start = "json" if args.json else "default"
|
||||
self.json_entry = args.json.replace("'", "\"")
|
||||
self.wordlist = WordList("/usr/share/dict/french")
|
||||
self.vnc = args.vnc
|
||||
self.version = args.update_version
|
||||
self.WebDriver = Driver()
|
||||
self.display = None
|
||||
|
||||
"""
|
||||
setup UserCredential
|
||||
"""
|
||||
self.UserCredentials = UserCredentials()
|
||||
with open("/app/MsRewards-Reborn/user_data/configs.json", "r") as inFile:
|
||||
configs = json.load(inFile)
|
||||
for i in configs[str(args.config)]["accounts"]:
|
||||
d = configs[str(args.config)]["accounts"][i]
|
||||
self.UserCredentials.add(d["mail"], d["pwd"], d["2fa"])
|
||||
|
||||
"""
|
||||
Setup discord
|
||||
"""
|
||||
self.discord = DiscordConfig()
|
||||
self.discord.avatar_url = settings["avatar_url"]
|
||||
self.discord.wh_link = discord[config[args.config]["discord"]]["errorsL"]
|
||||
|
||||
if self.discord.wh_link != "":
|
||||
self.discord.wh = Webhook.from_url(self.discord.wh_link, adapter=RequestsWebhookAdapter())
|
||||
else:
|
||||
self.discord.wh = FakeWebHook()
|
||||
|
||||
"""
|
||||
setup proxy
|
||||
"""
|
||||
proxy_conf = config[args.config]["proxy"]
|
||||
proxy_address = proxy[config[args.config]["proxy"]]["address"]
|
||||
proxy_port = proxy[config[args.config]["proxy"]]["port"]
|
||||
self.proxy = Proxy(proxy_conf, proxy_address, proxy_port)
|
||||
|
||||
def vnc_enabled(self):
|
||||
return self.vnc != "None"
|
||||
|
||||
def set_display(self, display):
|
||||
self.display = display
|
||||
|
||||
def has_been_updated(self):
|
||||
return self.version != "None"
|
||||
|
14
modules/Classes/DiscordConfig.py
Normal file
14
modules/Classes/DiscordConfig.py
Normal file
@ -0,0 +1,14 @@
|
||||
from modules.Tools.logger import debug
|
||||
|
||||
|
||||
class DiscordConfig:
|
||||
def __init__(self):
|
||||
self.avatar_url = ""
|
||||
self.wh_link = None
|
||||
self.wh = None
|
||||
|
||||
|
||||
class FakeWebHook:
|
||||
def send(self, *args):
|
||||
debug(f"Used a webhook call without webhook url with {args}")
|
||||
|
38
modules/Classes/DiscordLogger.py
Normal file
38
modules/Classes/DiscordLogger.py
Normal file
@ -0,0 +1,38 @@
|
||||
from discord import Embed, Colour, File
|
||||
|
||||
from modules.Classes.Config import Config
|
||||
from modules.Classes.UserCredentials import UserCredentials
|
||||
from modules.Tools.logger import info, warning, error, critical
|
||||
from modules.Tools.tools import format_error
|
||||
|
||||
|
||||
class DiscordLogger:
|
||||
def __init__(self, config: Config):
|
||||
self.config = config
|
||||
|
||||
def send(self, message: str):
|
||||
driver = self.config.WebDriver.driver
|
||||
if type(message) is not str:
|
||||
message = format_error(message)
|
||||
error(message)
|
||||
with open("page.html", "w") as f:
|
||||
try:
|
||||
f.write(driver.page_source)
|
||||
except Exception as e:
|
||||
error(e)
|
||||
f.write("the driver has closed or crashed. Can't access page content")
|
||||
img = self.config.display.waitgrab()
|
||||
img.save("screenshot.png")
|
||||
|
||||
embed = Embed(
|
||||
title="An Error has occured",
|
||||
description=str(message),
|
||||
colour=Colour.red(),
|
||||
)
|
||||
file = File("screenshot.png")
|
||||
embed.set_image(url="attachment://screenshot.png")
|
||||
embed.set_footer(text=self.config.UserCredentials.creds.get_mail())
|
||||
|
||||
self.config.discord.wh.send(embed=embed, username="error", file=file, avatar_url=self.config.discord.avatar_url)
|
||||
self.config.discord.wh.send(username="error", file=File("page.html"), avatar_url=self.config.discord.avatar_url)
|
||||
|
22
modules/Classes/Driver.py
Normal file
22
modules/Classes/Driver.py
Normal file
@ -0,0 +1,22 @@
|
||||
class Driver:
|
||||
def __init__(self):
|
||||
self.pc_driver = None
|
||||
self.mobile_driver = None
|
||||
self.driver = None
|
||||
|
||||
def set_pc_driver(self, pc_driver):
|
||||
self.pc_driver = pc_driver
|
||||
|
||||
def set_mobile_driver(self, mobile_driver):
|
||||
self.mobile_driver = mobile_driver
|
||||
|
||||
def switch_to_driver(self, driver: str):
|
||||
match driver:
|
||||
case "pc" | "PC" | "Pc":
|
||||
self.driver = self.pc_driver
|
||||
|
||||
case "mobile" | "Mobile":
|
||||
self.driver = self.mobile_driver
|
||||
|
||||
case _:
|
||||
raise ValueError("The driver must be either pc or mobile")
|
9
modules/Classes/Proxy.py
Normal file
9
modules/Classes/Proxy.py
Normal file
@ -0,0 +1,9 @@
|
||||
class Proxy:
|
||||
def __init__(self, enabled: str, ip: str = None, port: str = None):
|
||||
self.ip = ip
|
||||
self.port = port
|
||||
self.enabled = enabled != "-1"
|
||||
|
||||
def is_enabled(self):
|
||||
return self.enabled
|
||||
|
@ -1,4 +1,7 @@
|
||||
import json
|
||||
|
||||
from pyotp import TOTP
|
||||
|
||||
from modules.Tools.logger import debug, warning
|
||||
|
||||
|
||||
@ -29,7 +32,7 @@ class UserCredentials:
|
||||
def get_tfa(self):
|
||||
if not self.tfa_enable():
|
||||
warning("Warning: TFA is not enabled. Calling get_tfa is an expected behaviour.")
|
||||
return self.data[self.current]["tfa"]
|
||||
return TOTP(self.data[self.current]["tfa"])
|
||||
|
||||
def next_account(self):
|
||||
self.current += 1
|
||||
|
13
modules/Classes/WordList.py
Normal file
13
modules/Classes/WordList.py
Normal file
@ -0,0 +1,13 @@
|
||||
import random
|
||||
|
||||
|
||||
class WordList:
|
||||
def __init__(self, path):
|
||||
with open(path, "r", encoding="utf-8") as h:
|
||||
lines = h.readlines()
|
||||
self.words = [x.replace('\n', "") for x in lines]
|
||||
|
||||
random.shuffle(self.words)
|
||||
|
||||
def get_word(self):
|
||||
return self.words.pop(0)
|
Reference in New Issue
Block a user