PagerMaid-Pyro/pagermaid/config.py

143 lines
5.6 KiB
Python
Raw Normal View History

2022-05-23 12:40:30 +00:00
import os
2022-05-25 04:19:25 +00:00
import sys
2023-01-16 06:31:04 +00:00
from json import load as load_json
2022-05-23 12:40:30 +00:00
from shutil import copyfile
2023-01-16 06:31:04 +00:00
from typing import Dict
from yaml import load, FullLoader, safe_load
2022-05-25 04:19:25 +00:00
2022-08-01 16:04:45 +00:00
def strtobool(val, default=False):
2022-05-25 04:19:25 +00:00
"""Convert a string representation of truth to true (1) or false (0).
True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if
'val' is anything else.
"""
val = val.lower()
2023-03-12 03:56:01 +00:00
if val in ("y", "yes", "t", "true", "on", "1"):
2022-05-25 04:19:25 +00:00
return 1
2023-03-12 03:56:01 +00:00
elif val in ("n", "no", "f", "false", "off", "0"):
2022-05-25 04:19:25 +00:00
return 0
else:
2022-08-01 16:04:45 +00:00
print("[Degrade] invalid truth value %r" % (val,))
return default
2022-05-23 12:40:30 +00:00
try:
2023-01-16 06:31:04 +00:00
config: Dict = load(open(r"config.yml", encoding="utf-8"), Loader=FullLoader)
2022-05-23 12:40:30 +00:00
except FileNotFoundError:
2023-03-12 03:56:01 +00:00
print(
"The configuration file does not exist, and a new configuration file is being generated."
)
2022-05-23 12:40:30 +00:00
copyfile(f"{os.getcwd()}{os.sep}config.gen.yml", "config.yml")
2022-05-25 04:19:25 +00:00
sys.exit(1)
2022-05-23 12:40:30 +00:00
2022-05-25 04:19:25 +00:00
class Config:
2022-05-23 12:40:30 +00:00
try:
2022-10-21 16:51:56 +00:00
DEFAULT_API_ID = 21724
DEFAULT_API_HASH = "3e0cb5efcd52300aec5994fdfc5bdc16"
try:
API_ID = int(os.environ.get("API_ID", config["api_id"]))
API_HASH = os.environ.get("API_HASH", config["api_hash"])
except (ValueError, KeyError):
# TGX
API_ID = DEFAULT_API_ID
API_HASH = DEFAULT_API_HASH
2023-03-12 03:56:01 +00:00
QRCODE_LOGIN = strtobool(
os.environ.get("QRCODE_LOGIN", config.get("qrcode_login", "false"))
)
WEB_LOGIN = strtobool(
os.environ.get("WEB_LOGIN", config.get("web_login", "false"))
)
2022-05-25 04:19:25 +00:00
STRING_SESSION = os.environ.get("STRING_SESSION")
2022-06-08 03:18:21 +00:00
DEBUG = strtobool(os.environ.get("PGM_DEBUG", config["debug"]))
2023-03-12 03:56:01 +00:00
ERROR_REPORT = strtobool(
os.environ.get("PGM_ERROR_REPORT", config["error_report"]), True
)
2022-06-08 03:18:21 +00:00
LANGUAGE = os.environ.get("PGM_LANGUAGE", config["application_language"])
REGION = os.environ.get("PGM_REGION", config["application_region"])
2023-03-12 03:56:01 +00:00
TIME_ZONE = os.environ.get(
"PGM_TIME_ZONE", config.get("timezone", "Asia/Shanghai")
)
2022-06-08 03:18:21 +00:00
TTS = os.environ.get("PGM_TTS", config["application_tts"])
LOG = strtobool(os.environ.get("PGM_LOG", config["log"]))
LOG_ID = int(os.environ.get("PGM_LOG_ID", config["log_chatid"]))
IPV6 = strtobool(os.environ.get("PGM_IPV6", config["ipv6"]))
2023-03-12 03:56:01 +00:00
ALLOW_ANALYTIC = strtobool(
os.environ.get("PGM_ALLOW_ANALYTIC", config["allow_analytic"]), True
)
SENTRY_API = (
"https://2e13a517aeb542e7a307cba8996b6d1a@o1342815.ingest.sentry.io/6617119"
)
2022-08-01 16:04:45 +00:00
MIXPANEL_API = "c79162511383b0fa1e9c062a2a86c855"
2022-06-08 03:18:21 +00:00
TIME_FORM = os.environ.get("PGM_TIME_FORM", config["time_form"])
DATE_FORM = os.environ.get("PGM_DATE_FORM", config["date_form"])
START_FORM = os.environ.get("PGM_START_FORM", config["start_form"])
2022-08-01 16:04:45 +00:00
SILENT = strtobool(os.environ.get("PGM_PGM_SILENT", config["silent"]), True)
2022-06-08 03:18:21 +00:00
PROXY_ADDRESS = os.environ.get("PGM_PROXY_ADDRESS", config["proxy_addr"])
PROXY_PORT = os.environ.get("PGM_PROXY_PORT", config["proxy_port"])
2023-03-12 03:56:01 +00:00
PROXY_HTTP_ADDRESS = os.environ.get(
"PGM_PROXY_HTTP_ADDRESS", config["http_addr"]
)
2022-11-26 03:01:51 +00:00
PROXY_HTTP_PORT = os.environ.get("PGM_PROXY_HTTP_PORT", config["http_port"])
2022-05-23 12:40:30 +00:00
PROXY = None
if PROXY_ADDRESS and PROXY_PORT:
2023-03-12 03:56:01 +00:00
PROXY = dict(scheme="socks5", hostname=PROXY_ADDRESS, port=int(PROXY_PORT))
2022-11-26 03:01:51 +00:00
elif PROXY_HTTP_ADDRESS and PROXY_HTTP_PORT:
PROXY = dict(
2023-03-12 03:56:01 +00:00
scheme="http", hostname=PROXY_HTTP_ADDRESS, port=int(PROXY_HTTP_PORT)
2022-11-26 03:01:51 +00:00
)
2022-06-08 03:18:21 +00:00
GIT_SOURCE = os.environ.get("PGM_GIT_SOURCE", config["git_source"])
2023-03-12 03:56:01 +00:00
GIT_SOURCE = GIT_SOURCE.replace(
"TeamPGM/PagerMaid_Plugins/", "TeamPGM/PagerMaid_Plugins_Pyro/"
)
2022-05-23 12:40:30 +00:00
try:
2023-06-18 03:13:16 +00:00
with open(
f"languages{os.sep}built-in{os.sep}en.yml",
"r",
encoding="utf-8",
2023-06-18 03:13:16 +00:00
) as f:
lang_default_dict = safe_load(f)
2023-03-12 03:56:01 +00:00
with open(
f"languages{os.sep}built-in{os.sep}{LANGUAGE}.yml",
"r",
encoding="utf-8",
) as f:
2022-05-23 12:40:30 +00:00
lang_dict = safe_load(f)
except Exception as e:
2023-03-12 03:56:01 +00:00
print(
"[Degrade] Reading language YAML file failed, try to use the english language file."
)
2022-05-23 12:40:30 +00:00
print(e)
2022-06-08 03:18:21 +00:00
try:
2023-03-12 03:56:01 +00:00
with open(
2023-06-18 03:13:16 +00:00
f"languages{os.sep}built-in{os.sep}en.yml",
2023-03-12 03:56:01 +00:00
"r",
encoding="utf-8",
) as f:
2022-06-08 03:18:21 +00:00
lang_dict = safe_load(f)
except Exception as e:
print("[Error] Reading English language YAML file failed.")
print(e)
sys.exit(1)
2022-05-23 12:40:30 +00:00
try:
with open(f"data{os.sep}alias.json", encoding="utf-8") as f:
alias_dict = load_json(f)
except Exception as e:
alias_dict = {}
2023-01-31 16:24:56 +00:00
web_interface = config.get("web_interface", {})
2023-03-12 03:56:01 +00:00
WEB_ENABLE = strtobool(
os.environ.get("WEB_ENABLE", web_interface.get("enable", "False"))
)
WEB_SECRET_KEY = os.environ.get(
"WEB_SECRET_KEY", web_interface.get("secret_key", "secret_key")
)
2023-01-31 16:24:56 +00:00
WEB_HOST = os.environ.get("WEB_HOST", web_interface.get("host", "127.0.0.1"))
WEB_PORT = int(os.environ.get("WEB_PORT", web_interface.get("port", 3333)))
WEB_ORIGINS = web_interface.get("origins", ["*"])
2022-05-23 12:40:30 +00:00
except ValueError as e:
print(e)
2022-05-25 04:19:25 +00:00
sys.exit(1)