62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""元景 scense 应用唯一入口(一个应用 = 一个入口 = 一个端口 9380)。
|
||
|
||
挂载 6 个业务模块:world / scene / entity / script_engine / world_snapshot / world_sync。
|
||
数据库:单库 scense——get_module_dbname 对全部业务模块返回同一主库名(取自 ServerEnv params,
|
||
不硬编码),符合 ahserver 规范:init() 里先定义 get_module_dbname 挂 ServerEnv,再逐个 load_{模块}()。
|
||
"""
|
||
from ahserver.webapp import webapp
|
||
from ahserver.serverenv import ServerEnv
|
||
|
||
import bricks_for_python # 注册 bui processor
|
||
from bricks_for_python.init import load_pybricks # 注册 UiWindow 等
|
||
from appbase.init import load_appbase
|
||
from rbac.init import load_rbac
|
||
|
||
|
||
def get_module_dbname(m):
|
||
"""模块 → 库名映射。单库应用:全部模块返回同一主库 scense。
|
||
|
||
库名来源:ServerEnv params 表(appbase 初始化时写入 'dbname' 参数),禁止硬编码。
|
||
"""
|
||
env = ServerEnv()
|
||
try:
|
||
return env.params.get('dbname', 'scense')
|
||
except Exception:
|
||
return 'scense'
|
||
|
||
|
||
def password_encode(s):
|
||
if s is None:
|
||
return ''
|
||
from ahserver.globalEnv import password_encode as _orig
|
||
return _orig(s)
|
||
|
||
|
||
def init():
|
||
env = ServerEnv() # MUST be before load_rbac
|
||
env.get_module_dbname = get_module_dbname
|
||
env.password_encode = password_encode
|
||
load_appbase()
|
||
load_rbac()
|
||
load_pybricks()
|
||
|
||
# ── 业务模块挂载(关键:一个应用一个入口一个端口,所有模块挂在这里)──
|
||
from world.init import load_world
|
||
from scene.init import load_scene
|
||
from entity.init import load_entity
|
||
from script_engine.init import load_script_engine
|
||
from world_snapshot.init import load_world_snapshot
|
||
from world_sync.init import load_world_sync
|
||
|
||
load_world()
|
||
load_scene()
|
||
load_entity()
|
||
load_script_engine()
|
||
load_world_snapshot()
|
||
load_world_sync()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
webapp(init)
|