def main() -> None: def shutdown(sig: int, frame_type: FrameType | None) -> None: if conn.websocket is not None and conn.loop is not None: for task in asyncio.all_tasks(conn.loop): task.cancel() coro = conn.websocket.close() asyncio.run_coroutine_threadsafe(coro, conn.loop) env = Env() env.read_env() conn = Connection( url=(("wss" if env("SHOWDOWN_PORT") == "443" else "ws") + "://" + env("SHOWDOWN_HOST") + ":" + env("SHOWDOWN_PORT") + "/showdown/websocket"), username=env("USERNAME"), password=env("PASSWORD"), avatar=env("AVATAR", ""), statustext=env("STATUSTEXT", ""), rooms=env.list("ROOMS", []), main_room=env("MAIN_ROOM"), command_character=env("COMMAND_CHARACTER"), administrators=env.list("ADMINISTRATORS", []), webhooks=env.dict("WEBHOOKS", {}), ) signal.signal(signal.SIGINT, shutdown) conn.open_connection()
def _load_app_options(env: Env): from octokit.utils import get_json_data as octokit_get_json_data global APP_NAME, APP_DESCRIPTION, APP_ORGANIZATION, APP_PUBLIC global APP_DEFAULT_EVENTS, APP_DEFAULT_PERMISSIONS valid_events = octokit_get_json_data("events.json") with env.prefixed("APP_"): APP_NAME = env.str("NAME", "gh-app") APP_DESCRIPTION = env.str("DESCRIPTION", "") APP_ORGANIZATION = env.str("ORGANIZATION", None) APP_PUBLIC = env.bool("PUBLIC", True) with env.prefixed("DEFAULT_"): APP_DEFAULT_EVENTS = env.list("EVENTS", "push", validate=ContainsOnly(valid_events)) APP_DEFAULT_PERMISSIONS = env.dict("PERMISSIONS", "metadata=read")
from environs import Env env = Env() env.read_env() TOKEN = env("TOKEN") URL = env("URL") LOGIN_PAGE = "login/index.php" MOODLE_USERNAME = env("MOODLE_USERNAME") MOODLE_PASSWORD = env("MOODLE_PASSWORD") # List of names of students to not grade STUDENTS_TO_IGNORE = env.dict("STUDENTS_TO_IGNORE", subcast_key=int, default={})
LAUNCH_INTERVAL = {"action": 60, "refresh": 1} # --------------------------------------------------- # TODO (√)Redis Cluster Configuration(SSH-BASE) # 若您不知道如何配置Redis远程连接,请自行搜索或↓ # https://shimo.im/docs/5bqnroJYDbU4rGqy/ # --------------------------------------------------- REDIS_GENERAL_DR = env.bool("REDIS_GENERAL_DR", True) REDIS_GENERAL_DB = env.int("REDIS_GENERAL_DB", 0) # TODO (√)Settings of the Master-Redis responsible for leading the workflow REDIS_MASTER = env.dict( "REDIS_MASTER", { "host": "", "password": "", "port": 6379, "db": 0, }, ) # TODO (*)Setting of the Slave-Redis responsible for data disaster tolerance(DDT) REDIS_SLAVER_DDT = env.dict( "REDIS_SLAVER_DDT", { # If you do not have extra servers, please use stand-alone backup # 'host': REDIS_MASTER['host'], # 'db': REDIS_MASTER['db'] + 1, "host": "", "password": "", "port": 6379, "db": 0,
# --------------------------------------------------- DEPLOY_CRONTAB = 60 # --------------------------------------------------- # TODO (√)Redis Cluster Configuration(SSH-BASE) # 若您不知道如何配置Redis远程连接,请自行搜索或↓ # https://shimo.im/docs/5bqnroJYDbU4rGqy/ # --------------------------------------------------- REDIS_GENERAL_DR = env.bool('REDIS_GENERAL_DR', True) REDIS_GENERAL_DB = env.int('REDIS_GENERAL_DB', 0) # TODO (√)Settings of the Master-Redis responsible for leading the workflow REDIS_MASTER = env.dict("REDIS_MASTER", { 'host': '', 'password': '', 'port': 6379, 'db': 0, }) # TODO (*)Setting of the Slave-Redis responsible for data disaster tolerance(DDT) REDIS_SLAVER_DDT = env.dict( "REDIS_SLAVER_DDT", { # If you do not have extra servers, please use stand-alone backup 'host': REDIS_MASTER['host'], 'db': REDIS_MASTER['db'] + 1, 'password': '', 'port': 6379, # 'host': '', # 'db': 0, })
_OTEL_EXPORTER_OTLP_SPAN_ENDPOINT = _env.str( "OTEL_EXPORTER_OTLP_SPAN_ENDPOINT", _DEFAULT_OTEL_EXPORTER_OTLP_SPAN_ENDPOINT, ) _OTEL_EXPORTER_OTLP_METRIC_ENDPOINT = _env.str( "OTEL_EXPORTER_OTLP_METRIC_ENDPOINT", _DEFAULT_OTEL_EXPORTER_OTLP_METRIC_ENDPOINT, ) _LS_SERVICE_NAME = _env.str("LS_SERVICE_NAME", None) _LS_SERVICE_VERSION = _env.str("LS_SERVICE_VERSION", "unknown") _OTEL_PROPAGATORS = _env.list("OTEL_PROPAGATORS", ["b3"]) _OTEL_RESOURCE_LABELS = _env.dict( "OTEL_RESOURCE_LABELS", { "service.name": _LS_SERVICE_NAME, "service.version": _LS_SERVICE_VERSION, "telemetry.sdk.language": "python", "telemetry.sdk.version": __version__, }, ) _OTEL_LOG_LEVEL = _env.int("OTEL_LOG_LEVEL", DEBUG) _OTEL_EXPORTER_OTLP_SPAN_INSECURE = _env.bool( "OTEL_EXPORTER_OTLP_SPAN_INSECURE", False ) _OTEL_EXPORTER_OTLP_METRIC_INSECURE = _env.bool( "OTEL_EXPORTER_OTLP_METRIC_INSECURE", False ) _logger = getLogger(__name__)
{ "NAME": "authentication_service.password_validation.DiversityValidator", }, ] AUTHENTICATION_BACKENDS = [ "authentication_service.backends.GirlEffectAuthBackend" ] DATABASES = { "default": env.dict( "DB_DEFAULT", "ENGINE=django.db.backends.postgresql," "NAME=authentication_service," "USER=authentication_service," "PASSWORD=password," "HOST=127.0.0.1," "PORT=5432") } INSTALLED_APPS = list(INSTALLED_APPS) ADDITIONAL_APPS = [ "layers", # Open ID prodiver. "oidc_provider", # Two factor auth apps. "django_otp", "django_otp.plugins.otp_static",
BASICAUTH_ENABLED = False # Google Tag Manager (dev/test instance) GTM_ID = 'GTM-NJLR7LT' def show_toolbar(request): return ENVIRONMENT in ['localdev', 'dev', 'minishift'] DEBUG_TOOLBAR_CONFIG = { 'SHOW_TOOLBAR_CALLBACK': show_toolbar, 'SHOW_COLLAPSED': True, } SECURE_BROWSER_XSS_FILTER = True LOGOUT_URL = '/accounts/logout/' # CLAMAV settings # eFiling Hub settings EFILING_HUB_TOKEN_BASE_URL = env('EFILING_HUB_TOKEN_BASE_URL', 'https://efiling.gov.bc.ca') EFILING_HUB_REALM = env('EFILING_HUB_REALM', 'abc') EFILING_HUB_CLIENT_ID = env('EFILING_HUB_CLIENT_ID', 'abc') EFILING_HUB_CLIENT_SECRET = env('EFILING_HUB_CLIENT_SECRET', 'abc') EFILING_HUB_API_BASE_URL = env('EFILING_HUB_API_BASE_URL', 'https://efiling.gov.bc.ca') EFILING_BCEID = env.dict('EFILING_BCEID', '', subcast=str)
GERAPY_PYPPETEER_HEADLESS = True LOG_LEVEL = 'DEBUG' SCHEDULER = "gerapy_rabbitmq.scheduler.Scheduler" DUPEFILTER_CLASS = "gerapy_redis.dupefilter.RFPDupeFilter" SCHEDULER_DUPEFILTER_KEY = '%(spider)s:dupefilter' SCHEDULER_PERSIST = True REDIS_URL = env.str('REDIS_URL', 'redis://@localhost:6379') DUPEFILTER_DEBUG = True DOWNLOAD_TIMEOUT = 10 SCHEDULER_FLUSH_ON_START = True # SCHEDULER_PRE_ENQUEUE_ALL_START_REQUESTS = True RABBITMQ_CONNECTION_PARAMETERS = env.dict('RABBITMQ_CONNECTION_PARAMETERS', 'host=localhost') SCHEDULER_QUEUE_DURABLE = False SCHEDULER_QUEUE_MAX_PRIORITY = 110 SCHEDULER_QUEUE_PRIORITY_OFFSET = 15 SCHEDULER_QUEUE_FORCE_FLUSH = True
# Dict of conversations IDs followed by regex to match agains repository names default_conversations = { CHAT_ID_RAZGRIZONE: '.*', CHAT_ID_IMESEC_CORE: '.*', CHAT_ID_R0ZBOT: '.*' } def __conversation_subcast(s: str): try: return int(s) except: return s CONVERSATIONS = env.dict('CONVERSATIONS', default_conversations, subcast=__conversation_subcast) HEALTHCHECK_SERVICES = { 'lightning-hacks Website': 'https://lh.imesec.ime.usp.br', 'lightning-hacks API': 'https://api.lh.imesec.ime.usp.br/hacks', 'lightning-hacks Timer': 'https://timer.imesec.ime.usp.br', 'IMEsec wiki': 'https://wiki.imesec.ime.usp.br', 'IMEsec Website': 'https://imesec.ime.usp.br' } HEALTHCHECK_SLEEP_AMOUNT = 2 * 60 HEALTHCHECK_ANOMALY_THRESHOLD = 3
# Nginx映射路径 if "linux" in platform: NGINX_SUBSCRIBE = env.str("NGINX_SUBSCRIBE", "/usr/share/nginx/html/subscribe/{}.txt") else: NGINX_SUBSCRIBE = env.str("NGINX_SUBSCRIBE", join(SERVER_DIR_DATABASE_CACHE, "{}.txt")) # --------------------------------------------------- # 路由接口 # --------------------------------------------------- ROUTE_API = env.dict( "ROUTE_API", { "capture_subscribe": "/v2raycs/api/capture_subscribe", "version_manager": "/v2raycs/api/version_manager", "get_subs_num": "/v2raycs/api/get_sbus_num" }, ) # --------------------------------------------------- # 任务队列 # --------------------------------------------------- SEQ_TEST = env.dict( "SEQ_TEST", { "v2ray": True, "ssr": True, "trojan": False, }, ) CRAWLER_SEQUENCE = env.list("CRAWLER_SEQUENCE",
BROWSER_TYPE = env.str('BROWSER_TYPE', 'Chrome') # definition of chrome driver path CHROME_DRIVER_PATH = env.str( 'CHROME_DRIVER_PATH', 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe') # definition of api API_HOST = env.str('API_HOST', '0.0.0.0') API_PORT = env.int('API_PORT', 5000) API_THREADED = env.bool('API_THREADED', True) # definition of generator class, if extends other website, conf in this GENERATOR_MAP = env.dict( 'GENERATOR_MAP', { # 'weibo': 'WeiboCookiesGenerator', 'youyuan': 'YouYuanCookiesGenerator' }) # definition of test class, if extends other website, conf in this TESTER_MAP = env.dict( 'TESTER_MAP', { # 'weibo': 'WeiboValidTester', 'youyuan': 'YouYuanValidTester' }) # definition of test_url map, if extends other website, conf in this TEST_URL_MAP = env.dict( 'TEST_URL_MAP', {