script_engine/scripts/load_path.py

66 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""script_engine 模块 RBAC 路径登记load_path.py"""
import os
import sys
MOD = 'script_engine'
PATHS_ANY = ['/%s/menu.ui' % MOD]
PATHS_LOGINED = [
'/%s' % MOD,
'/%s/index.ui' % MOD,
'/%s/script' % MOD,
'/%s/script/index.ui' % MOD,
'/%s/script/get_script.dspy' % MOD,
'/%s/script/add_script.dspy' % MOD,
'/%s/script/update_script.dspy' % MOD,
'/%s/script/delete_script.dspy' % MOD,
'/%s/api/script_create.dspy' % MOD,
'/%s/api/script_update.dspy' % MOD,
'/%s/api/script_delete.dspy' % MOD,
'/%s/api/script_get.dspy' % MOD,
'/%s/api/script_list.dspy' % MOD,
'/%s/api/script_execute.dspy' % MOD,
'/%s/api/script_validate.dspy' % MOD,
]
def find_sage_root():
candidates = [
os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', '..'),
os.path.expanduser('~/repos/sage'),
os.path.expanduser('~/sage'),
]
for cand in candidates:
if os.path.isdir(os.path.join(cand, 'wwwroot')) and os.path.isdir(os.path.join(cand, 'py3', 'bin')):
return os.path.abspath(cand)
return None
def main():
sage_root = find_sage_root()
if not sage_root:
print('[script_engine] 未找到 Sage 根目录,跳过 RBAC 登记(由宿主 load_path.py 兜底)')
return 0
set_role_perm = os.path.join(sage_root, 'set_role_perm.py')
if not os.path.exists(set_role_perm):
print('[script_engine] 未找到 set_role_perm.py跳过')
return 0
sys.path.insert(0, sage_root)
import importlib.util
spec = importlib.util.spec_from_file_location('set_role_perm', set_role_perm)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
for p in PATHS_ANY:
mod.set_role_perm(p, 'any')
for p in PATHS_LOGINED:
mod.set_role_perm(p, 'logined')
print('[script_engine] RBAC 路径登记完成: any=%d, logined=%d' % (len(PATHS_ANY), len(PATHS_LOGINED)))
return 0
if __name__ == '__main__':
sys.exit(main())