2022-10-03 03:15:05 +09:00
|
|
|
import random
|
|
|
|
|
import string
|
2022-10-02 20:18:05 +09:00
|
|
|
|
|
|
|
|
from .setup import *
|
|
|
|
|
|
|
|
|
|
name = 'setting'
|
|
|
|
|
|
|
|
|
|
class ModuleSetting(PluginModuleBase):
|
|
|
|
|
db_default = {
|
|
|
|
|
'db_version' : '1',
|
|
|
|
|
'port' : '9999',
|
|
|
|
|
'ddns' : 'http://localhost:9999',
|
|
|
|
|
'use_login' : 'False',
|
|
|
|
|
'web_id': 'admin',
|
|
|
|
|
'web_pw': 'Vm51JgZqhpwXc/UPc9CAN1lhj4s65+4ikv7GzNmvN6c=',
|
|
|
|
|
'web_title': 'Home',
|
|
|
|
|
'use_apikey': 'False',
|
|
|
|
|
'apikey': ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)),
|
|
|
|
|
|
|
|
|
|
f'restart_interval': f'{random.randint(0,59)} {random.randint(1,23)} * * *',
|
|
|
|
|
|
|
|
|
|
'theme' : 'Cerulean',
|
|
|
|
|
'log_level' : '20',
|
|
|
|
|
'plugin_dev_path': os.path.join(F.config['path_data'], 'dev'),
|
|
|
|
|
|
|
|
|
|
'system_start_time': '',
|
2022-10-03 03:15:05 +09:00
|
|
|
}
|
2022-10-02 20:18:05 +09:00
|
|
|
|
|
|
|
|
def __init__(self, P):
|
|
|
|
|
super(ModuleSetting, self).__init__(P, name=name, first_menu='basic')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def process_menu(self, page, req):
|
|
|
|
|
arg = P.ModelSetting.to_dict()
|
|
|
|
|
try:
|
|
|
|
|
return render_template(f'{__package__}_{name}_{page}.html', arg=arg)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
P.logger.error(f'Exception:{str(e)}')
|
|
|
|
|
P.logger.error(traceback.format_exc())
|
|
|
|
|
return render_template('sample.html', title=f"{__package__}/{name}/{page}")
|
|
|
|
|
|
|
|
|
|
def process_command(self, command, arg1, arg2, arg3, req):
|
|
|
|
|
if command == 'apikey_generate':
|
|
|
|
|
return jsonify(''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def plugin_load(self):
|
|
|
|
|
try:
|
|
|
|
|
if F.config['arg_repeat'] == 0 or SystemModelSetting.get('system_start_time') == '':
|
|
|
|
|
SystemModelSetting.set('system_start_time', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
|
|
|
|
|
SystemModelSetting.set('repeat', str(F.config['arg_repeat']))
|
|
|
|
|
username = SystemModelSetting.get('web_id')
|
|
|
|
|
passwd = SystemModelSetting.get('web_pw')
|
|
|
|
|
F.users[username] = User(username, passwd_hash=passwd)
|
|
|
|
|
|
|
|
|
|
self.__set_restart_scheduler()
|
|
|
|
|
self.__set_scheduler_check_scheduler()
|
|
|
|
|
F.get_recent_version()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
P.logger.error(f'Exception:{str(e)}')
|
|
|
|
|
P.logger.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
|
def setting_save_after(self, change_list):
|
|
|
|
|
if 'theme' in change_list:
|
|
|
|
|
F.socketio.emit("refresh", {}, namespace='/framework', broadcast=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __set_restart_scheduler(self):
|
|
|
|
|
name = f'{__package__}_restart'
|
|
|
|
|
if F.scheduler.is_include(name):
|
|
|
|
|
F.scheduler.remove_job(name)
|
|
|
|
|
interval = SystemModelSetting.get('restart_interval')
|
|
|
|
|
if interval != '0':
|
|
|
|
|
if len(interval.split(' ')) == 1:
|
|
|
|
|
interval = '%s' % (int(interval) * 60)
|
|
|
|
|
job_instance = Job(__package__, name, interval, F.restart, "자동 재시작")
|
|
|
|
|
F.scheduler.add_job_instance(job_instance, run=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __set_scheduler_check_scheduler(self):
|
|
|
|
|
name = 'scheduler_check'
|
|
|
|
|
if F.scheduler.is_include(name):
|
|
|
|
|
F.scheduler.remove_job(name)
|
|
|
|
|
|
|
|
|
|
job_instance = Job(__package__, name, 2, F.scheduler.first_run_check_thread_function, "Scheduler Check")
|
|
|
|
|
scheduler.add_job_instance(job_instance, run=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|