|
|
@@ -25,6 +25,13 @@ class AppConfig:
|
|
|
# PayPal / 接码
|
|
|
phone_e164: str = "+15822201173"
|
|
|
sms_api_url: str = "http://a.62-us.com/api/get_sms?key=a5d3262e05efaba982aba7cfae20b8bc"
|
|
|
+ # 代理(两个字段独立配置):
|
|
|
+ # proxy_url — 全局代理(ChatGPT 注册 / 长链 / PayPal 都走)。空 = 全程直连。
|
|
|
+ # paypal_only_proxy — 仅 PayPal 阶段用的代理。空 = PayPal 沿用 proxy_url(或直连)。
|
|
|
+ # 典型搭配:proxy_url 留空(注册直连,避免代理屏蔽 chatgpt.com),paypal_only_proxy 填代理。
|
|
|
+ proxy_url: str = ""
|
|
|
+ paypal_only_proxy: str = ""
|
|
|
+ paypal_proxy: str = "" # 旧字段(保留向后兼容;如填了且 paypal_only_proxy/proxy_url 都为空,会迁移到 paypal_only_proxy)
|
|
|
|
|
|
# CPA
|
|
|
cpa_url: str = ""
|
|
|
@@ -33,6 +40,12 @@ class AppConfig:
|
|
|
# 调试
|
|
|
use_promo: bool = True
|
|
|
|
|
|
+ # API / 外网访问
|
|
|
+ api_host: str = "0.0.0.0" # 改成 "0.0.0.0" 即可外网访问
|
|
|
+ api_port: int = 7791
|
|
|
+ api_token: str = "" # 留空 = 不校验;非空时所有 /api/* 请求需 Authorization: Bearer <token>
|
|
|
+ api_cors_origin: str = "*" # CORS Allow-Origin,可填具体域名或 *
|
|
|
+
|
|
|
@classmethod
|
|
|
def load(cls) -> "AppConfig":
|
|
|
if not os.path.exists(CONFIG_PATH):
|
|
|
@@ -66,5 +79,23 @@ class AppConfig:
|
|
|
pass
|
|
|
else:
|
|
|
setattr(self, k, "" if v is None else str(v))
|
|
|
+ # 向后兼容:旧字段 paypal_proxy → 新字段 paypal_only_proxy(之前一段时间它被错误地等价于 proxy_url)
|
|
|
+ if self.paypal_proxy and not self.paypal_only_proxy and not self.proxy_url:
|
|
|
+ self.paypal_only_proxy = self.paypal_proxy
|
|
|
self.save()
|
|
|
return self
|
|
|
+
|
|
|
+ @property
|
|
|
+ def effective_global_proxy(self) -> str:
|
|
|
+ """ChatGPT 注册 / 长链 / 默认浏览器 context 用的代理。空 = 直连。"""
|
|
|
+ return (self.proxy_url or "").strip()
|
|
|
+
|
|
|
+ @property
|
|
|
+ def effective_paypal_proxy(self) -> str:
|
|
|
+ """PayPal 阶段用的代理,独立字段优先;否则继承 proxy_url。空 = 直连。"""
|
|
|
+ return (self.paypal_only_proxy or self.proxy_url or "").strip()
|
|
|
+
|
|
|
+ # 兼容旧调用:先前 chatgpt_flow 用了 effective_proxy
|
|
|
+ @property
|
|
|
+ def effective_proxy(self) -> str:
|
|
|
+ return self.effective_global_proxy
|