Browse Source

Merge pull request #2531 from openNAMU/dev

버그 수정
잉여개발기 1 year ago
parent
commit
b292bef32a

+ 5 - 1
app.py

@@ -22,7 +22,7 @@ if len(args) > 1:
 
 
 # Init-Version
 # Init-Version
 with open('version.json', encoding = 'utf8') as file_data:
 with open('version.json', encoding = 'utf8') as file_data:
-    version_list = orjson.loads(file_data.read())
+    version_list = json.loads(file_data.read())
 
 
 # Init-DB
 # Init-DB
 data_db_set = class_check_json()
 data_db_set = class_check_json()
@@ -956,6 +956,10 @@ def terminate_golang():
             golang_process.wait(timeout = 5)
             golang_process.wait(timeout = 5)
         except subprocess.TimeoutExpired:
         except subprocess.TimeoutExpired:
             golang_process.kill()
             golang_process.kill()
+            try:
+                golang_process.wait(timeout = 5)
+            except subprocess.TimeoutExpired:
+                print('Golang process not terminated properly.')
 
 
 def signal_handler(signal, frame):
 def signal_handler(signal, frame):
     terminate_golang()
     terminate_golang()

+ 1 - 1
requirements-optional.txt

@@ -1,3 +1,3 @@
 mysqlclient
 mysqlclient
 regex
 regex
-orjson
+ujson

+ 3 - 3
route/api_skin_info.py

@@ -9,7 +9,7 @@ async def api_skin_info(name = ''):
         if not flask.request.args.get('all', None):
         if not flask.request.args.get('all', None):
             json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", name)
             json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", name)
             try:
             try:
-                json_data = orjson.loads(open(json_address, encoding='utf8').read())
+                json_data = json.loads(open(json_address, encoding='utf8').read())
             except:
             except:
                 json_data = None
                 json_data = None
 
 
@@ -28,7 +28,7 @@ async def api_skin_info(name = ''):
             for i in load_skin(conn, skin_check(conn, 1), 1):
             for i in load_skin(conn, skin_check(conn, 1), 1):
                 json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", './views/' + i + '/index.html')
                 json_address = re.sub(r"(((?!\.|\/).)+)\.html$", "info.json", './views/' + i + '/index.html')
                 try:
                 try:
-                    json_data = orjson.loads(open(json_address, encoding='utf8').read())
+                    json_data = json.loads(open(json_address, encoding='utf8').read())
                 except:
                 except:
                     json_data = None
                     json_data = None
 
 
@@ -51,7 +51,7 @@ async def api_skin_info(name = ''):
 
 
                         if get_data and get_data.getcode() == 200:
                         if get_data and get_data.getcode() == 200:
                             try:
                             try:
-                                get_data = orjson.loads(get_data.read().decode())
+                                get_data = json.loads(get_data.read().decode())
                             except:
                             except:
                                 get_data = {}
                                 get_data = {}
 
 

+ 0 - 1
route/go_api_bbs.py

@@ -4,6 +4,5 @@ async def api_bbs(bbs_num = "", page = 1):
     other_set = {}
     other_set = {}
     other_set["bbs_num"] = str(bbs_num)
     other_set["bbs_num"] = str(bbs_num)
     other_set["page"] = str(page)
     other_set["page"] = str(page)
-    other_set["ip"] = ip_check()
 
 
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))

+ 0 - 1
route/go_api_bbs_w.py

@@ -2,7 +2,6 @@ from .tool.func import *
 
 
 async def api_bbs_w(sub_code = '', legacy = 'on'):
 async def api_bbs_w(sub_code = '', legacy = 'on'):
     other_set = {}
     other_set = {}
-    other_set['ip'] = ip_check()
     other_set["legacy"] = legacy
     other_set["legacy"] = legacy
     other_set['sub_code'] = sub_code
     other_set['sub_code'] = sub_code
 
 

+ 0 - 1
route/go_api_bbs_w_comment.py

@@ -5,7 +5,6 @@ async def api_bbs_w_comment(sub_code = '', tool = "", legacy = 'on'):
     other_set["sub_code"] = sub_code
     other_set["sub_code"] = sub_code
     other_set["tool"] = tool
     other_set["tool"] = tool
     other_set["legacy"] = legacy
     other_set["legacy"] = legacy
-    other_set["ip"] = ip_check()
 
 
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 0 - 1
route/go_api_bbs_w_comment_one.py

@@ -5,7 +5,6 @@ async def api_bbs_w_comment_one(sub_code = '', legacy = 'on', tool = ''):
     other_set["sub_code"] = sub_code
     other_set["sub_code"] = sub_code
     other_set["legacy"] = legacy
     other_set["legacy"] = legacy
     other_set["tool"] = tool
     other_set["tool"] = tool
-    other_set["ip"] = ip_check()
 
 
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 0 - 1
route/go_api_bbs_w_set.py

@@ -4,7 +4,6 @@ async def api_bbs_w_set(name = 'Test', bbs_num = 1):
     other_set = {}
     other_set = {}
     other_set["set_name"] = name
     other_set["set_name"] = name
     other_set["set_id"] = str(bbs_num)
     other_set["set_id"] = str(bbs_num)
-    other_set["ip"] = ip_check()
 
 
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'PUT':
     if flask.request.method == 'PUT':

+ 0 - 1
route/go_api_bbs_w_tabom.py

@@ -3,7 +3,6 @@ from .tool.func import *
 async def api_bbs_w_tabom(sub_code = ''):
 async def api_bbs_w_tabom(sub_code = ''):
     other_set = {}
     other_set = {}
     other_set["sub_code"] = sub_code
     other_set["sub_code"] = sub_code
-    other_set["ip"] = ip_check()
 
 
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'POST':
     if flask.request.method == 'POST':

+ 0 - 1
route/go_api_func_email.py

@@ -6,7 +6,6 @@ async def api_func_email():
         func_name += '_post'
         func_name += '_post'
 
 
         other_set = {}
         other_set = {}
-        other_set["ip"] = ip_check()
         other_set["who"] = flask.request.form.get('email', '')
         other_set["who"] = flask.request.form.get('email', '')
         other_set["title"] = flask.request.form.get('title', '')
         other_set["title"] = flask.request.form.get('title', '')
         other_set["data"] = flask.request.form.get('data', '')
         other_set["data"] = flask.request.form.get('data', '')

+ 0 - 1
route/go_api_func_ip.py

@@ -2,7 +2,6 @@ from .tool.func import *
 
 
 async def api_func_ip(data = 'Test'):
 async def api_func_ip(data = 'Test'):
     other_set = {}
     other_set = {}
-    other_set["ip"] = ip_check()
 
 
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'POST':
     if flask.request.method == 'POST':

+ 0 - 1
route/go_api_func_ip_menu.py

@@ -3,7 +3,6 @@ from .tool.func import *
 async def api_func_ip_menu(ip = "Test", option = ""):
 async def api_func_ip_menu(ip = "Test", option = ""):
     other_set = {}
     other_set = {}
     other_set["ip"] = ip
     other_set["ip"] = ip
-    other_set["my_ip"] = ip_check()
     other_set["option"] = option
     other_set["option"] = option
 
 
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))

+ 0 - 1
route/go_api_func_llm.py

@@ -4,7 +4,6 @@ async def api_func_llm():
     if flask.request.method == 'POST':
     if flask.request.method == 'POST':
         other_set = {}
         other_set = {}
         other_set["prompt"] = flask.request.form.get('prompt', '')
         other_set["prompt"] = flask.request.form.get('prompt', '')
-        other_set["ip"] = ip_check()
 
 
         return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
         return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     else:
     else:

+ 0 - 1
route/go_api_give_auth.py

@@ -6,7 +6,6 @@ async def api_give_auth():
         func_name += '_patch'
         func_name += '_patch'
 
 
         other_set = {}
         other_set = {}
-        other_set["ip"] = ip_check()
         other_set["user_name"] = flask.request.form.get('user_name', '')
         other_set["user_name"] = flask.request.form.get('user_name', '')
         other_set['auth'] = flask.request.form.get('auth', '')
         other_set['auth'] = flask.request.form.get('auth', '')
         other_set['change_auth'] = flask.request.form.get('change_auth', '')
         other_set['change_auth'] = flask.request.form.get('change_auth', '')

+ 0 - 1
route/go_api_list_history.py

@@ -5,7 +5,6 @@ async def api_list_history(num = 1, set_type = 'normal', doc_name = 'Test'):
     other_set["num"] = str(num)
     other_set["num"] = str(num)
     other_set["doc_name"] = doc_name
     other_set["doc_name"] = doc_name
     other_set["set_type"] = set_type
     other_set["set_type"] = set_type
-    other_set["ip"] = ip_check()
     
     
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 0 - 1
route/go_api_list_recent_block.py

@@ -6,6 +6,5 @@ async def api_list_recent_block(num = 1, set_type = 'all', user_name = 'Test', w
     other_set["set_type"] = set_type
     other_set["set_type"] = set_type
     other_set["user_name"] = user_name
     other_set["user_name"] = user_name
     other_set["why"] = why
     other_set["why"] = why
-    other_set["ip"] = ip_check()
 
 
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))

+ 0 - 1
route/go_api_list_recent_change.py

@@ -6,7 +6,6 @@ async def api_list_recent_change(num = 1, set_type = 'normal', limit = 10, legac
     other_set["limit"] = str(limit)
     other_set["limit"] = str(limit)
     other_set["set_type"] = set_type
     other_set["set_type"] = set_type
     other_set["legacy"] = legacy
     other_set["legacy"] = legacy
-    other_set["ip"] = ip_check()
 
 
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 0 - 1
route/go_api_list_recent_discuss.py

@@ -6,7 +6,6 @@ async def api_list_recent_discuss(num = 1, set_type = 'normal', limit = 10, lega
     other_set["limit"] = str(limit)
     other_set["limit"] = str(limit)
     other_set["set_type"] = set_type
     other_set["set_type"] = set_type
     other_set["legacy"] = legacy
     other_set["legacy"] = legacy
-    other_set["ip"] = ip_check()
 
 
     response = flask.make_response(flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set)))
     response = flask.make_response(flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set)))
     
     

+ 0 - 1
route/go_api_list_recent_edit_request.py

@@ -5,7 +5,6 @@ async def api_list_recent_edit_request(num = 1, set_type = 'normal', limit = 50)
     other_set["num"] = str(num)
     other_set["num"] = str(num)
     other_set["limit"] = str(limit)
     other_set["limit"] = str(limit)
     other_set["set_type"] = set_type
     other_set["set_type"] = set_type
-    other_set["ip"] = ip_check()
 
 
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 0 - 1
route/go_api_setting.py

@@ -3,7 +3,6 @@ from .tool.func import *
 async def api_setting(name = 'Test'):
 async def api_setting(name = 'Test'):
     other_set = {}
     other_set = {}
     other_set["set_name"] = name
     other_set["set_name"] = name
-    other_set["ip"] = ip_check()
 
 
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'PUT':
     if flask.request.method == 'PUT':

+ 0 - 1
route/go_api_topic.py

@@ -130,7 +130,6 @@ async def api_topic(topic_num = 1, tool = 'normal', s_num = '', e_num = ''):
             other_set["tool"] = tool
             other_set["tool"] = tool
             other_set["s_num"] = str(s_num)
             other_set["s_num"] = str(s_num)
             other_set["e_num"] = str(e_num)
             other_set["e_num"] = str(e_num)
-            other_set["ip"] = ip_check()
 
 
             return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
             return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
         else:
         else:

+ 0 - 1
route/go_api_user_rankup.py

@@ -2,7 +2,6 @@ from .tool.func import *
 
 
 async def api_user_rankup():
 async def api_user_rankup():
     other_set = {}
     other_set = {}
-    other_set["ip"] = ip_check()
     
     
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'PATCH':
     if flask.request.method == 'PATCH':

+ 0 - 1
route/go_api_user_setting_editor.py

@@ -2,7 +2,6 @@ from .tool.func import *
 
 
 async def api_user_setting_editor():
 async def api_user_setting_editor():
     other_set = {}
     other_set = {}
-    other_set["ip"] = ip_check()
     
     
     func_name = sys._getframe().f_code.co_name
     func_name = sys._getframe().f_code.co_name
     if flask.request.method == 'POST':
     if flask.request.method == 'POST':

+ 0 - 1
route/go_api_w_raw.py

@@ -5,7 +5,6 @@ async def api_w_raw(name = 'Test', rev = '', exist_check = ''):
     other_set["name"] = name
     other_set["name"] = name
     other_set["rev"] = str(rev)
     other_set["rev"] = str(rev)
     other_set["exist_check"] = exist_check
     other_set["exist_check"] = exist_check
-    other_set["ip"] = ip_check()
 
 
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
     return await python_to_golang(sys._getframe().f_code.co_name, other_set)
 
 

+ 1 - 1
route/go_api_w_render.py

@@ -39,7 +39,7 @@ async def api_w_render(name = '', tool = '', request_method = '', request_data =
                 data_type = 'api_thread'
                 data_type = 'api_thread'
 
 
             if markup in ('', 'namumark', 'namumark_beta') and data_option != '':
             if markup in ('', 'namumark', 'namumark_beta') and data_option != '':
-                data_option = orjson.loads(data_option)
+                data_option = json.loads(data_option)
 
 
                 # remove end br
                 # remove end br
                 data_org = re.sub('^\n+', '', data_org)
                 data_org = re.sub('^\n+', '', data_org)

+ 0 - 1
route/go_api_w_set_reset.py

@@ -3,6 +3,5 @@ from .tool.func import *
 async def api_w_set_reset(name = 'Test'):
 async def api_w_set_reset(name = 'Test'):
     other_set = {}
     other_set = {}
     other_set["name"] = name
     other_set["name"] = name
-    other_set["ip"] = ip_check()
 
 
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))

+ 0 - 1
route/go_api_w_watch_list.py

@@ -4,7 +4,6 @@ async def api_w_watch_list(name = 'Test', do_type = 'watch_list', num = 1):
     other_set = {}
     other_set = {}
     other_set["name"] = name
     other_set["name"] = name
     other_set["do_type"] = do_type
     other_set["do_type"] = do_type
-    other_set["ip"] = ip_check()
     other_set["num"] = str(num)
     other_set["num"] = str(num)
 
 
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))
     return flask.jsonify(await python_to_golang(sys._getframe().f_code.co_name, other_set))

+ 4 - 0
route/main_sys_restart.py

@@ -39,6 +39,10 @@ async def main_sys_restart(golang_process):
                     golang_process.wait(timeout = 5)
                     golang_process.wait(timeout = 5)
                 except subprocess.TimeoutExpired:
                 except subprocess.TimeoutExpired:
                     golang_process.kill()
                     golang_process.kill()
+                    try:
+                        golang_process.wait(timeout = 5)
+                    except subprocess.TimeoutExpired:
+                        print('Golang process not terminated properly.')
 
 
             threading.Thread(target = main_sys_restart_do).start()
             threading.Thread(target = main_sys_restart_do).start()
             return flask.Response(get_lang(conn, "warning_restart"), status = 200)
             return flask.Response(get_lang(conn, "warning_restart"), status = 200)

+ 5 - 1
route/main_sys_update.py

@@ -20,13 +20,17 @@ async def main_sys_update(golang_process):
             up_data = up_data[0][0] if up_data and up_data[0][0] in ['stable', 'beta', 'dev', 'dont_use'] else 'stable'
             up_data = up_data[0][0] if up_data and up_data[0][0] in ['stable', 'beta', 'dev', 'dont_use'] else 'stable'
 
 
             print('Update')
             print('Update')
-
+            
             if golang_process.poll() is None:
             if golang_process.poll() is None:
                 golang_process.terminate()
                 golang_process.terminate()
                 try:
                 try:
                     golang_process.wait(timeout = 5)
                     golang_process.wait(timeout = 5)
                 except subprocess.TimeoutExpired:
                 except subprocess.TimeoutExpired:
                     golang_process.kill()
                     golang_process.kill()
+                    try:
+                        golang_process.wait(timeout = 5)
+                    except subprocess.TimeoutExpired:
+                        print('Golang process not terminated properly.')
             
             
             if platform.system() == 'Linux' or platform.system() == 'Darwin':
             if platform.system() == 'Linux' or platform.system() == 'Darwin':
                 ok = []
                 ok = []

+ 2 - 2
route/recent_app_submit.py

@@ -33,7 +33,7 @@ async def recent_app_submit():
                 '''
                 '''
 
 
                 for application in db_data:
                 for application in db_data:
-                    application = orjson.loads(application[0])
+                    application = json.loads(application[0])
 
 
                     if 'question' in application:
                     if 'question' in application:
                         question = html.escape(application['question'])
                         question = html.escape(application['question'])
@@ -101,7 +101,7 @@ async def recent_app_submit():
                 if not application:
                 if not application:
                     return await re_error(conn, 26)
                     return await re_error(conn, 26)
                 else:
                 else:
-                    application = orjson.loads(application[0][0])
+                    application = json.loads(application[0][0])
 
 
                 add_user(conn, application['id'], application['pw'], application['email'], application['encode'])
                 add_user(conn, application['id'], application['pw'], application['email'], application['encode'])
 
 

+ 5 - 6
route/tool/func.py

@@ -160,7 +160,7 @@ async def python_to_golang(func_name, other_set = {}):
         other_set["ip"] = "127.0.0.1"
         other_set["ip"] = "127.0.0.1"
 
 
     port_data = global_some_set_do("setup_golang_port")
     port_data = global_some_set_do("setup_golang_port")
-    
+
     async with aiohttp.ClientSession() as session:
     async with aiohttp.ClientSession() as session:
         while 1:
         while 1:
             async with session.post('http://localhost:' + port_data + '/', data = json.dumps(other_set)) as res:
             async with session.post('http://localhost:' + port_data + '/', data = json.dumps(other_set)) as res:
@@ -291,7 +291,7 @@ class class_check_json:
             if os.path.exists(os.path.join('data', 'set.json')):
             if os.path.exists(os.path.join('data', 'set.json')):
                 db_set_list = ['db', 'db_type']
                 db_set_list = ['db', 'db_type']
                 with open(os.path.join('data', 'set.json'), encoding = 'utf8') as file_data:
                 with open(os.path.join('data', 'set.json'), encoding = 'utf8') as file_data:
-                    set_data = orjson.loads(file_data.read())
+                    set_data = json.loads(file_data.read())
 
 
                 for i in db_set_list:
                 for i in db_set_list:
                     if not i in set_data:
                     if not i in set_data:
@@ -340,7 +340,7 @@ class class_check_json:
         if os.path.exists(os.path.join('data', 'mysql.json')):
         if os.path.exists(os.path.join('data', 'mysql.json')):
             db_set_list = ['user', 'password', 'host', 'port']
             db_set_list = ['user', 'password', 'host', 'port']
             with open(os.path.join('data', 'mysql.json'), encoding = 'utf8') as file_data:
             with open(os.path.join('data', 'mysql.json'), encoding = 'utf8') as file_data:
-                set_data = orjson.loads(file_data.read())
+                set_data = json.loads(file_data.read())
 
 
             for i in db_set_list:
             for i in db_set_list:
                 if not i in set_data:
                 if not i in set_data:
@@ -477,7 +477,7 @@ async def update(conn, ver_num, set_data):
                 curs.execute(db_change("update other set data = '' where name = 'sec_re'"))
                 curs.execute(db_change("update other set data = '' where name = 'sec_re'"))
     
     
     if ver_num < 3172800 and set_data['type'] == 'mysql':
     if ver_num < 3172800 and set_data['type'] == 'mysql':
-        get_data_mysql = orjson.loads(open('data/mysql.json', encoding = 'utf8').read())
+        get_data_mysql = json.loads(open('data/mysql.json', encoding = 'utf8').read())
         
         
         with open('data/mysql.json', 'w') as f:
         with open('data/mysql.json', 'w') as f:
             f.write('{ "user" : "' + get_data_mysql['user'] + '", "password" : "' + get_data_mysql['password'] + '", "host" : "localhost" }')
             f.write('{ "user" : "' + get_data_mysql['user'] + '", "password" : "' + get_data_mysql['password'] + '", "host" : "localhost" }')
@@ -1183,7 +1183,7 @@ def get_lang(conn, data, safe = 0):
     else:
     else:
         lang_list = os.listdir('lang')
         lang_list = os.listdir('lang')
         if (lang_name + '.json') in lang_list:
         if (lang_name + '.json') in lang_list:
-            lang = orjson.loads(open(os.path.join('lang', lang_name + '.json'), encoding = 'utf8').read())
+            lang = json.loads(open(os.path.join('lang', lang_name + '.json'), encoding = 'utf8').read())
             
             
             for title in lang:
             for title in lang:
                 global_lang_data[lang_name + '_' + title] = lang[title] 
                 global_lang_data[lang_name + '_' + title] = lang[title] 
@@ -1955,7 +1955,6 @@ async def ban_check(ip = None, tool = ''):
 
 
 async def ip_pas(raw_ip):
 async def ip_pas(raw_ip):
     other_set = {}
     other_set = {}
-    other_set["ip"] = ip_check()
     
     
     return_data = 0
     return_data = 0
     if type(raw_ip) != type([]):
     if type(raw_ip) != type([]):

+ 2 - 2
route/tool/func_tool.py

@@ -13,9 +13,9 @@ import time
 import threading
 import threading
 
 
 try:
 try:
-  import orjson
+    import ujson as json
 except:
 except:
-  import json as orjson
+    import json
   
   
 try:
 try:
     import regex as re
     import regex as re

+ 1 - 1
route/view_w.py

@@ -96,7 +96,7 @@ async def view_w(name = 'Test', do_type = ''):
                 user_name = html.escape(match.group(1))
                 user_name = html.escape(match.group(1))
             
             
             user_doc = ''
             user_doc = ''
-            
+
             # S admin or owner 특수 틀 추가
             # S admin or owner 특수 틀 추가
             if await acl_check(tool = 'all_admin_auth', ip = user_name) != 1:
             if await acl_check(tool = 'all_admin_auth', ip = user_name) != 1:
                 if await acl_check(tool = 'owner_auth', ip = user_name) != 1:
                 if await acl_check(tool = 'owner_auth', ip = user_name) != 1:

+ 3 - 3
version.json

@@ -1,6 +1,6 @@
 {
 {
-    "r_ver" : "v3.6.0-v15",
-    "c_ver" : "20250325",
+    "r_ver" : "v3.6.0-v17",
+    "c_ver" : "20250326",
     "s_ver" : "20240426",
     "s_ver" : "20240426",
-    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-04-18-b1/"
+    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-04-24-v1/"
 }
 }