订阅组新增 RemoteEntry/RemoteModule(0053 迁移);新增 Provider/Page/Save(提供者用 ApiKey+密钥换取令牌后声明定制页)与 MySubscriptions(按当前用户查已订阅产品,含定制页入口)接口;清单新增「我的订阅」菜单与 subscriber 虚拟职务;新增提供者子服务器 GVSDServiceServer(仿 ATestCServer:MSYNC 桥接 + 托管 Venom 定制页远端组件 + 用订阅凭据声明定制页)。
47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
"""模块:GVSDServiceServer 子服务器 AppConfig
|
|
|
|
Django 启动时启动 MSYNC Socket.IO 桥接(连接 → 注册 → 认证 → 心跳)。
|
|
未配置 MSYNC_SERVICE_SECRET 时跳过桥接(此时仍可使用订阅 API Key/密钥 接口)。
|
|
"""
|
|
|
|
import logging
|
|
import threading
|
|
|
|
from django.apps import AppConfig
|
|
from django.conf import settings
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class SubServerConfig(AppConfig):
|
|
default_auto_field = 'django.db.models.BigAutoField'
|
|
name = 'apps.sub_server'
|
|
verbose_name = 'GVSD 提供者子服务器'
|
|
verbose_name_plural = 'GVSD 提供者子服务器'
|
|
|
|
def ready(self):
|
|
self._connect_msync()
|
|
|
|
def _connect_msync(self):
|
|
if not getattr(settings, 'MSYNC_SERVICE_SECRET', ''):
|
|
logger.warning('未配置 MSYNC_SERVICE_SECRET,跳过 MSYNC 桥接(订阅 API Key 接口仍可用)')
|
|
return
|
|
try:
|
|
from msync_client.sio_client import MSyncSocketClient
|
|
|
|
client = MSyncSocketClient(
|
|
master_url=settings.MSYNC_MASTER_URL,
|
|
service_name=settings.MSYNC_SERVICE_NAME,
|
|
service_domain=settings.MSYNC_SERVICE_DOMAIN,
|
|
service_secret=settings.MSYNC_SERVICE_SECRET,
|
|
scope=settings.MSYNC_SERVICE_SCOPE,
|
|
heartbeat_interval=settings.MSYNC_HEARTBEAT_INTERVAL,
|
|
metadata={'Role': 'subscription-provider'},
|
|
)
|
|
setattr(settings, 'MSYNC_CLIENT', client)
|
|
threading.Thread(target=client.Connect, daemon=True).start()
|
|
logger.info('MSYNC Socket.IO 桥接线程已启动: %s → %s',
|
|
settings.MSYNC_SERVICE_NAME, settings.MSYNC_MASTER_URL)
|
|
except Exception as e:
|
|
logger.error('MSYNC 桥接启动失败: %s', e)
|