update
This commit is contained in:
@@ -204,7 +204,7 @@ class Framework:
|
||||
|
||||
from .init_web import jinja_initialize
|
||||
jinja_initialize(self.app)
|
||||
|
||||
|
||||
from .init_plugin import PluginManager
|
||||
self.PluginManager = PluginManager
|
||||
PluginManager.plugin_update()
|
||||
|
||||
@@ -21,19 +21,8 @@ class PluginManager:
|
||||
|
||||
@classmethod
|
||||
def get_plugin_name_list(cls):
|
||||
#if not app.config['config']['auth_status']:
|
||||
# return
|
||||
"""
|
||||
plugin_path = os.path.join(frame.config['path_app'], 'plugins')
|
||||
sys.path.insert(0, plugin_path)
|
||||
from system import SystemModelSetting
|
||||
plugins = os.listdir(plugin_path)
|
||||
"""
|
||||
plugins = []
|
||||
|
||||
|
||||
#2019-07-17
|
||||
|
||||
try:
|
||||
plugin_path = os.path.join(F.config['path_data'], 'plugins')
|
||||
if os.path.exists(plugin_path) == True and os.path.isdir(plugin_path) == True:
|
||||
@@ -115,51 +104,18 @@ class PluginManager:
|
||||
|
||||
F.logger.debug(plugins)
|
||||
for plugin_name in plugins:
|
||||
|
||||
#logger.debug(len(system.LogicPlugin.current_loading_plugin_list))
|
||||
#if plugin_name.startswith('_'):
|
||||
# continue
|
||||
#if plugin_name == 'terminal' and platform.system() == 'Windows':
|
||||
# continue
|
||||
#if plugin_name in except_plugin_list:
|
||||
# F.logger.debug('Except plugin : %s' % frame.plugin_menu)
|
||||
# continue
|
||||
F.logger.debug(f'[+] PLUGIN LOADING Start.. [{plugin_name}]')
|
||||
entity = cls.all_package_list[plugin_name]
|
||||
entity['version'] = '3'
|
||||
try:
|
||||
mod = __import__('%s' % (plugin_name), fromlist=[])
|
||||
mod_plugin_info = None
|
||||
# 2021-12-31
|
||||
#import system
|
||||
#if plugin_name not in system.LogicPlugin.current_loading_plugin_list:
|
||||
# system.LogicPlugin.current_loading_plugin_list[plugin_name] = {'status':'loading'}
|
||||
|
||||
try:
|
||||
mod_plugin_info = getattr(mod, 'plugin_info')
|
||||
entity['module'] = mod
|
||||
"""
|
||||
if 'category' not in mod_plugin_info and 'category_name' in mod_plugin_info:
|
||||
mod_plugin_info['category'] = mod_plugin_info['category_name']
|
||||
if 'policy_point' in mod_plugin_info:
|
||||
if mod_plugin_info['policy_point'] > app.config['config']['point']:
|
||||
system.LogicPlugin.current_loading_plugin_list[plugin_name]['status'] = 'violation_policy_point'
|
||||
continue
|
||||
if 'policy_level' in mod_plugin_info:
|
||||
if mod_plugin_info['policy_level'] > app.config['config']['level']:
|
||||
system.LogicPlugin.current_loading_plugin_list[plugin_name]['status'] = 'violation_policy_level'
|
||||
continue
|
||||
if 'category' in mod_plugin_info and mod_plugin_info['category'] == 'beta':
|
||||
if SystemModelSetting.get_bool('use_beta') == False:
|
||||
system.LogicPlugin.current_loading_plugin_list[plugin_name]['status'] = 'violation_beta'
|
||||
continue
|
||||
"""
|
||||
except Exception as exception:
|
||||
#logger.error('Exception:%s', exception)
|
||||
#logger.error(traceback.format_exc())
|
||||
|
||||
#mod_plugin_info = getattr(mod, 'setup')
|
||||
F.logger.info(f'[!] PLUGIN_INFO not exist : [{plugin_name}] - is FF')
|
||||
|
||||
if mod_plugin_info == None:
|
||||
try:
|
||||
mod = __import__(f'{plugin_name}.setup', fromlist=['setup'])
|
||||
@@ -168,13 +124,10 @@ class PluginManager:
|
||||
F.logger.error(f'Exception:{str(e)}')
|
||||
F.logger.error(traceback.format_exc())
|
||||
F.logger.warning(f'[!] NOT normal plugin : [{plugin_name}]')
|
||||
#entity['version'] = 'not_plugin'
|
||||
|
||||
|
||||
try:
|
||||
if entity['version'] != '4':
|
||||
mod_blue_print = getattr(mod, 'blueprint')
|
||||
|
||||
else:
|
||||
entity['setup_mod'] = mod
|
||||
entity['P'] = getattr(mod, 'P')
|
||||
@@ -196,24 +149,7 @@ class PluginManager:
|
||||
cls.all_package_list[plugin_name]['status'] = 'import fail'
|
||||
cls.all_package_list[plugin_name]['log'] = traceback.format_exc()
|
||||
|
||||
#from tool_base import d
|
||||
#logger.error(d(system.LogicPlugin.current_loading_plugin_list))
|
||||
# 2021-07-01 모듈에 있는 DB 테이블 생성이 안되는 문제
|
||||
# 기존 구조 : db.create_all() => 모듈 plugin_load => celery task 등록 후 리턴
|
||||
# 변경 구조 : 모듈 plugin_load => db.create_all() => celery인 경우 리턴
|
||||
|
||||
# plugin_load 를 해야 하위 로직에 있는 DB가 로딩된다.
|
||||
# plugin_load 에 db는 사용하는 코드가 있으면 안된다. (테이블도 없을 때 에러발생)
|
||||
try:
|
||||
#logger.warning('module plugin_load in celery ')
|
||||
cls.plugin_list['mod']['module'].plugin_load()
|
||||
except Exception as exception:
|
||||
F.logger.debug(f'mod plugin_load error!!')
|
||||
#logger.error('Exception:%s', exception)
|
||||
#logger.error(traceback.format_exc())
|
||||
|
||||
# import가 끝나면 DB를 만든다.
|
||||
# 플러그인 로드시 DB 초기화를 할 수 있다.
|
||||
|
||||
|
||||
if not F.config['run_celery']:
|
||||
try:
|
||||
@@ -225,17 +161,6 @@ class PluginManager:
|
||||
F.logger.debug('db.create_all error')
|
||||
|
||||
if not F.config['run_flask']:
|
||||
# 2021-06-03
|
||||
# 모듈의 로직에 있는 celery 함수는 등록해주어야한다.
|
||||
#try:
|
||||
# logger.warning('module plugin_load in celery ')
|
||||
# plugin_instance_list['mod'].plugin_load()
|
||||
#except Exception as exception:
|
||||
# logger.error('module plugin_load error')
|
||||
# logger.error('Exception:%s', exception)
|
||||
# logger.error(traceback.format_exc())
|
||||
# 2021-07-01
|
||||
# db때문에 위에서 로딩함.
|
||||
return
|
||||
|
||||
for key, entity in cls.plugin_list.items():
|
||||
@@ -259,6 +184,13 @@ class PluginManager:
|
||||
cls.all_package_list[key]['loading'] = False
|
||||
cls.all_package_list[key]['status'] = 'plugin_load error'
|
||||
cls.all_package_list[key]['log'] = traceback.format_exc()
|
||||
|
||||
if key in cls.plugin_menus:
|
||||
del cls.plugin_menus[key]
|
||||
from framework.init_menu import MenuManager
|
||||
MenuManager.init_menu()
|
||||
|
||||
|
||||
# mod는 위에서 로딩
|
||||
if key != 'mod':
|
||||
t = threading.Thread(target=func, args=(mod_plugin_load, key))
|
||||
|
||||
Reference in New Issue
Block a user