Explorar el Código

Merge pull request #2322 from openNAMU/dev

버그 수정 및 최적화
잉여개발기 hace 1 año
padre
commit
0c6710f173
Se han modificado 70 ficheros con 371 adiciones y 152 borrados
  1. 7 1
      app.py
  2. 21 0
      lang/en-US.json
  3. 2 2
      lang/help_tool.py
  4. 20 1
      lang/ko-KR.json
  5. 1 0
      requirements.txt
  6. 3 3
      route/api_skin_info.py
  7. 1 1
      route/bbs_w_delete.py
  8. 4 4
      route/bbs_w_edit.py
  9. 1 1
      route/bbs_w_pinned.py
  10. 3 3
      route/bbs_w_post.py
  11. 46 42
      route/give_admin_groups.py
  12. 1 1
      route/go_api_w_render.py
  13. 1 1
      route/login_find_email_check.py
  14. 1 1
      route/login_register_submit.py
  15. 1 1
      route/main_search_deep.py
  16. 2 2
      route/recent_app_submit.py
  17. 1 1
      route/recent_edit_request.py
  18. 33 25
      route/tool/func.py
  19. 1 1
      route/tool/func_render_namumark.py
  20. 1 1
      route/tool/func_tool.py
  21. 1 1
      route/view_random.py
  22. 3 3
      route/view_raw.py
  23. BIN
      route_go/bin/main.amd64.bin
  24. BIN
      route_go/bin/main.amd64.exe
  25. BIN
      route_go/bin/main.arm64.bin
  26. BIN
      route_go/bin/main.arm64.exe
  27. 3 0
      route_go/go.mod
  28. 8 0
      route_go/go.sum
  29. 4 1
      route_go/route/api_bbs.go
  30. 4 1
      route_go/route/api_bbs_list.go
  31. 4 1
      route_go/route/api_bbs_w.go
  32. 4 1
      route_go/route/api_bbs_w_comment.go
  33. 4 1
      route_go/route/api_edit_move_all.go
  34. 4 1
      route_go/route/api_func_acl.go
  35. 4 1
      route_go/route/api_func_acl_list.go
  36. 4 1
      route_go/route/api_func_auth.go
  37. 4 1
      route_go/route/api_func_auth_post.go
  38. 4 1
      route_go/route/api_func_ban.go
  39. 4 2
      route_go/route/api_func_ip.go
  40. 4 2
      route_go/route/api_func_ip_menu.go
  41. 4 1
      route_go/route/api_func_ip_post.go
  42. 4 1
      route_go/route/api_func_language.go
  43. 3 1
      route_go/route/api_func_llm.go
  44. 4 2
      route_go/route/api_func_sha224.go
  45. 4 1
      route_go/route/api_list_old_page.go
  46. 4 1
      route_go/route/api_list_recent_block.go
  47. 4 1
      route_go/route/api_list_recent_change.go
  48. 4 1
      route_go/route/api_list_recent_discuss.go
  49. 4 1
      route_go/route/api_list_recent_edit_request.go
  50. 4 1
      route_go/route/api_list_title_index.go
  51. 4 1
      route_go/route/api_search.go
  52. 4 1
      route_go/route/api_setting.go
  53. 4 1
      route_go/route/api_setting_delete.go
  54. 4 1
      route_go/route/api_setting_put.go
  55. 4 1
      route_go/route/api_topic.go
  56. 4 1
      route_go/route/api_topic_list.go
  57. 4 1
      route_go/route/api_user_rankup.go
  58. 4 1
      route_go/route/api_user_rankup_patch.go
  59. 4 1
      route_go/route/api_user_setting_editor.go
  60. 4 1
      route_go/route/api_user_setting_editor_delele.go
  61. 4 1
      route_go/route/api_user_setting_editor_insert.go
  62. 4 1
      route_go/route/api_user_watch_list.go
  63. 4 1
      route_go/route/api_w_random.go
  64. 4 1
      route_go/route/api_w_raw.go
  65. 4 1
      route_go/route/api_w_render.go
  66. 4 1
      route_go/route/api_w_set_reset.go
  67. 4 1
      route_go/route/api_w_watch_list.go
  68. 4 1
      route_go/route/api_w_xref.go
  69. 45 12
      route_go/route/tool/language.go
  70. 1 1
      version.json

+ 7 - 1
app.py

@@ -1,6 +1,7 @@
 # Init
 # Init
 import os
 import os
 import re
 import re
+import signal
 import logging
 import logging
 import waitress
 import waitress
 
 
@@ -17,7 +18,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 = json.loads(file_data.read())
+    version_list = orjson.loads(file_data.read())
 
 
 # Init-DB
 # Init-DB
 data_db_set = class_check_json()
 data_db_set = class_check_json()
@@ -843,6 +844,11 @@ app.route('/update', methods = ['POST', 'GET'])(main_sys_update)
 
 
 app.errorhandler(404)(main_func_error_404)
 app.errorhandler(404)(main_func_error_404)
 
 
+def signal_handler(signal, frame):
+    os._exit(0)
+
+signal.signal(signal.SIGINT, signal_handler)
+
 if __name__ == "__main__":
 if __name__ == "__main__":
     waitress.serve(
     waitress.serve(
         app,
         app,

+ 21 - 0
lang/en-US.json

@@ -1,6 +1,27 @@
 {
 {
     "language_tag": "en-US",
     "language_tag": "en-US",
 
 
+    "_comment_" : "No category",
+    "recent_edit_request" : "Recent edit request",
+    "all_function_authority" : "All function authority",
+    "bbs_authority" : "BBS authority",
+    "treat_as_admin_authority" : "Treat as admin authority",
+    "backup_count" : "Maximum number of backup files",
+    "template_var_1" : "Template variable 1",
+    "template_var_2" : "Template variable 2",
+    "template_var_3" : "Template variable 3",
+    "sidebar" : "Sidebar",
+    "document_make_acl" : "Document create ACL",
+    "document_edit_request_acl" : "Document edit request ACL",
+    "up_to_level_3" : "Level 3 or higher",
+    "up_to_level_10" : "Level 10 or higher",
+    "document_top" : "Top of document phrases",
+    "document_editor_top" : "Top of document editor phrases",
+    "cidr" : "CIDR",
+    "option" : "Option",
+    "edit_request_able" : "Edit request available",
+    "date" : "Date",
+
     "_comment_" : "Common",
     "_comment_" : "Common",
     "data" : "Data",
     "data" : "Data",
     "volume" : "Volume",
     "volume" : "Volume",

+ 2 - 2
lang/help_tool.py

@@ -1,11 +1,11 @@
 import re
 import re
 import json
 import json
 
 
-o_json = json.loads(open('en-US.json', encoding='utf8').read())
+o_json = json.loads(open('en-US.json', encoding = 'utf8').read())
 
 
 print('n_name : ', end = '')
 print('n_name : ', end = '')
 n_name = input()
 n_name = input()
-n_json = json.loads(open(n_name + '.json', encoding='utf8').read())
+n_json = json.loads(open(n_name + '.json', encoding = 'utf8').read())
 
 
 print()
 print()
 for i in list(n_json):
 for i in list(n_json):

+ 20 - 1
lang/ko-KR.json

@@ -648,5 +648,24 @@
     "404_page": "아래의 입력을 404 페이지로 사용",
     "404_page": "아래의 입력을 404 페이지로 사용",
     "404_file": "루트 폴더 안의 404.html 사용",
     "404_file": "루트 폴더 안의 404.html 사용",
     "completely_ban": "완전 차단",
     "completely_ban": "완전 차단",
-    "dont_come_this_site": "사이트 접근 차단"
+    "dont_come_this_site": "사이트 접근 차단",
+    "recent_edit_request": "최근 편집 요청",
+    "all_function_authority": "모든 기능 권한",
+    "bbs_authority": "BBS 권한",
+    "treat_as_admin_authority": "관리자로 취급 권한",
+    "backup_count": "최대 백업 파일 갯수",
+    "template_var_1": "템플릿 변수 1",
+    "template_var_2": "템플릿 변수 2",
+    "template_var_3": "템플릿 변수 3",
+    "sidebar": "사이드바",
+    "document_make_acl": "문서 생성 ACL",
+    "document_edit_request_acl": "문서 편집 요청 ACL",
+    "up_to_level_3": "레벨 3 이상",
+    "up_to_level_10": "레벨 10 이상",
+    "document_top": "문서 상단 문구",
+    "document_editor_top": "문서 편집기 상단 문구",
+    "cidr": "CIDR",
+    "option": "옵션",
+    "edit_request_able": "편집 요청 가능",
+    "date": "날짜"
 }
 }

+ 1 - 0
requirements.txt

@@ -5,6 +5,7 @@ flask[async]
 waitress
 waitress
 
 
 requests
 requests
+orjson
 typing_extensions
 typing_extensions
 diff-match-patch
 diff-match-patch
 
 

+ 3 - 3
route/api_skin_info.py

@@ -9,7 +9,7 @@ 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 = json.loads(open(json_address, encoding='utf8').read())
+                json_data = orjson.loads(open(json_address, encoding='utf8').read())
             except:
             except:
                 json_data = None
                 json_data = None
 
 
@@ -28,7 +28,7 @@ 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 = json.loads(open(json_address, encoding='utf8').read())
+                    json_data = orjson.loads(open(json_address, encoding='utf8').read())
                 except:
                 except:
                     json_data = None
                     json_data = None
 
 
@@ -51,7 +51,7 @@ 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 = json.loads(get_data.read().decode())
+                                get_data = orjson.loads(get_data.read().decode())
                             except:
                             except:
                                 get_data = {}
                                 get_data = {}
 
 

+ 1 - 1
route/bbs_w_delete.py

@@ -19,7 +19,7 @@ def bbs_w_delete(bbs_num = '', post_num = '', comment_num = ''):
         if acl_check('', 'owner_auth', '') == 1:
         if acl_check('', 'owner_auth', '') == 1:
             return redirect(conn, '/bbs/in/' + bbs_num_str)
             return redirect(conn, '/bbs/in/' + bbs_num_str)
         
         
-        temp_dict = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+        temp_dict = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
         if not 'user_id' in temp_dict:
         if not 'user_id' in temp_dict:
             return redirect(conn, '/bbs/main')
             return redirect(conn, '/bbs/main')
         
         

+ 4 - 4
route/bbs_w_edit.py

@@ -19,14 +19,14 @@ def bbs_w_edit(bbs_num = '', post_num = '', comment_num = ''):
             return redirect(conn, '/bbs/main')
             return redirect(conn, '/bbs/main')
         
         
         if comment_num != '':
         if comment_num != '':
-            temp_dict = json.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
+            temp_dict = orjson.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
             if 'comment_user_id' in temp_dict:
             if 'comment_user_id' in temp_dict:
                 if not temp_dict['comment_user_id'] == ip and acl_check('', 'owner_auth', '', '') == 1:
                 if not temp_dict['comment_user_id'] == ip and acl_check('', 'owner_auth', '', '') == 1:
                     return re_error(conn, '/ban')
                     return re_error(conn, '/ban')
             else:
             else:
                 return redirect(conn, '/bbs/main')
                 return redirect(conn, '/bbs/main')
         elif post_num != '':
         elif post_num != '':
-            temp_dict = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+            temp_dict = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
             if 'user_id' in temp_dict:
             if 'user_id' in temp_dict:
                 if not temp_dict['user_id'] == ip and acl_check('', 'owner_auth', '', '') == 1:
                 if not temp_dict['user_id'] == ip and acl_check('', 'owner_auth', '', '') == 1:
                     return re_error(conn, '/ban')
                     return re_error(conn, '/ban')
@@ -92,7 +92,7 @@ def bbs_w_edit(bbs_num = '', post_num = '', comment_num = ''):
             option_display = ''
             option_display = ''
 
 
             if comment_num != '':
             if comment_num != '':
-                temp_dict = json.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
+                temp_dict = orjson.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
 
 
                 title = ''
                 title = ''
                 data = temp_dict['comment']
                 data = temp_dict['comment']
@@ -101,7 +101,7 @@ def bbs_w_edit(bbs_num = '', post_num = '', comment_num = ''):
                 title = ''
                 title = ''
                 data = ''
                 data = ''
             else:
             else:
-                temp_dict = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+                temp_dict = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
 
 
                 title = temp_dict['title']
                 title = temp_dict['title']
                 data = temp_dict['data']
                 data = temp_dict['data']

+ 1 - 1
route/bbs_w_pinned.py

@@ -19,7 +19,7 @@ def bbs_w_pinned(bbs_num = '', post_num = ''):
         if acl_check('', 'bbs_auth', '', '') == 1:
         if acl_check('', 'bbs_auth', '', '') == 1:
             return redirect(conn, '/bbs/in/' + bbs_num_str)
             return redirect(conn, '/bbs/in/' + bbs_num_str)
         
         
-        temp_dict = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+        temp_dict = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
         if not 'user_id' in temp_dict:
         if not 'user_id' in temp_dict:
             return redirect(conn, '/bbs/main')
             return redirect(conn, '/bbs/main')
         
         

+ 3 - 3
route/bbs_w_post.py

@@ -14,7 +14,7 @@ def bbs_w_post_comment(conn, user_id, sub_code, comment_num, bbs_num_str, post_n
     comment_count = 0
     comment_count = 0
     comment_add_count = 0
     comment_add_count = 0
 
 
-    thread_data = json.loads(api_bbs_w_comment(sub_code).data)
+    thread_data = orjson.loads(api_bbs_w_comment(sub_code).data)
     
     
     comment_count += len(thread_data)
     comment_count += len(thread_data)
     comment_add_count += comment_count
     comment_add_count += comment_count
@@ -73,7 +73,7 @@ def bbs_w_post(bbs_num = '', post_num = ''):
         bbs_comment_acl = acl_check(bbs_num_str, 'bbs_comment')
         bbs_comment_acl = acl_check(bbs_num_str, 'bbs_comment')
         ip = ip_check()
         ip = ip_check()
 
 
-        temp_dict = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+        temp_dict = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
         if temp_dict == {}:
         if temp_dict == {}:
             return redirect(conn, '/bbs/main')
             return redirect(conn, '/bbs/main')
         
         
@@ -134,7 +134,7 @@ def bbs_w_post(bbs_num = '', post_num = ''):
                 user_id = temp_dict['user_id']
                 user_id = temp_dict['user_id']
                 count = 0
                 count = 0
 
 
-                thread_data = json.loads(api_bbs_w_comment(bbs_num_str + '-' + post_num_str).data)
+                thread_data = orjson.loads(api_bbs_w_comment(bbs_num_str + '-' + post_num_str).data)
                 for temp_dict in thread_data:
                 for temp_dict in thread_data:
                     count += 1
                     count += 1
                     if user_id == temp_dict['comment_user_id']:
                     if user_id == temp_dict['comment_user_id']:

+ 46 - 42
route/give_admin_groups.py

@@ -6,45 +6,50 @@ def give_admin_groups(name = 'test'):
 
 
         acl_name_list = [
         acl_name_list = [
             [1, 'owner', get_lang(conn, 'owner_authority')],
             [1, 'owner', get_lang(conn, 'owner_authority')],
-            [2, '', get_lang(conn, 'all_function_authority'), True],
-            [2, 'admin', get_lang(conn, 'admin_authority')],
-            [3, 'ban', get_lang(conn, 'ban_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'toron', get_lang(conn, 'discussion_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'check', get_lang(conn, 'user_check_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'acl', get_lang(conn, 'document_acl_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'hidel', get_lang(conn, 'history_hide_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'give', get_lang(conn, 'authorization_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'bbs', get_lang(conn, 'bbs_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'vote', get_lang(conn, 'vote_authority')],
-            [4, '', get_lang(conn, 'admin_default_feature_authority'), True],
-            [3, 'admin_default_feature', get_lang(conn, 'admin_default_feature_authority')],
-            [4, 'treat_as_admin', get_lang(conn, 'treat_as_admin_authority')],
-            [4, 'user_name_bold', get_lang(conn, 'user_name_bold_authority')],
-            [4, 'multiple_upload', get_lang(conn, 'multiple_upload_authority')],
-            [4, 'slow_edit_pass', get_lang(conn, 'slow_edit_pass_authority')],
-            [4, 'edit_bottom_compulsion_pass', get_lang(conn, 'edit_bottom_compulsion_pass_authority')],
-            [4, '', get_lang(conn, 'user_authority'), True],
+                [2, '', get_lang(conn, 'all_function_authority')],
+                [2, 'admin', get_lang(conn, 'admin_authority')],
+                    [3, 'ban', get_lang(conn, 'ban_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'toron', get_lang(conn, 'discussion_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'check', get_lang(conn, 'user_check_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'acl', get_lang(conn, 'document_acl_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'hidel', get_lang(conn, 'history_hide_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'give', get_lang(conn, 'authorization_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'bbs', get_lang(conn, 'bbs_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'vote', get_lang(conn, 'vote_authority')],
+                        [4, '', get_lang(conn, 'admin_default_feature_authority')],
+                    [3, 'admin_default_feature', get_lang(conn, 'admin_default_feature_authority')],
+                        [4, 'treat_as_admin', get_lang(conn, 'treat_as_admin_authority')],
+                        [4, 'user_name_bold', get_lang(conn, 'user_name_bold_authority')],
+                        [4, 'multiple_upload', get_lang(conn, 'multiple_upload_authority')],
+                        [4, 'slow_edit_pass', get_lang(conn, 'slow_edit_pass_authority')],
+                        [4, 'edit_bottom_compulsion_pass', get_lang(conn, 'edit_bottom_compulsion_pass_authority')],
+                        [4, '', get_lang(conn, 'user_authority')],
             [1, 'user', get_lang(conn, 'user_authority')],
             [1, 'user', get_lang(conn, 'user_authority')],
-            [2, 'captcha_pass', get_lang(conn, 'captcha_pass_authority')],
-            [2, 'ip', get_lang(conn, 'ip_authority')],
-            [3, 'view', get_lang(conn, 'view_authority')],
-            [4, 'document', get_lang(conn, 'document_authority')],
-            [5, 'edit', get_lang(conn, 'edit_authority')],
-            [5, 'move', get_lang(conn, 'move_authority')],
-            [5, 'new_make', get_lang(conn, 'new_make_authority')],
-            [5, 'delete', get_lang(conn, 'delete_authority')],
-            [4, 'edit_request', get_lang(conn, 'edit_request_authority')],
-            [4, 'discuss', get_lang(conn, 'discuss_authority')],
-            [4, 'upload', get_lang(conn, 'upload_authority')],
-            [4, 'vote', get_lang(conn, 'vote_authority')],
-            [4, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')]
+                [2, 'captcha_pass', get_lang(conn, 'captcha_pass_authority')],
+                [2, 'ip', get_lang(conn, 'ip_authority')],
+                    [3, 'document', get_lang(conn, 'document_authority')],
+                        [4, 'edit', get_lang(conn, 'edit_authority')],
+                            [5, '', get_lang(conn, 'view_authority')],
+                        [4, 'edit_request', get_lang(conn, 'edit_request_authority')],
+                            [5, '', get_lang(conn, 'view_authority')],
+                        [4, 'move', get_lang(conn, 'move_authority')],
+                            [5, '', get_lang(conn, 'view_authority')],
+                        [4, 'new_make', get_lang(conn, 'new_make_authority')],
+                            [5, '', get_lang(conn, 'view_authority')],
+                        [4, 'delete', get_lang(conn, 'delete_authority')],
+                            [5, '', get_lang(conn, 'view_authority')],
+                        [4, 'view', get_lang(conn, 'view_authority')],
+                    [3, 'discuss', get_lang(conn, 'discuss_authority')],
+                    [3, 'upload', get_lang(conn, 'upload_authority')],
+                    [3, 'vote', get_lang(conn, 'vote_authority')],
+                    [3, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')]
         ]
         ]
 
 
         if flask.request.method == 'POST':
         if flask.request.method == 'POST':
@@ -70,12 +75,11 @@ def give_admin_groups(name = 'test'):
                 acl_list = [for_a[0] for for_a in acl_list]
                 acl_list = [for_a[0] for for_a in acl_list]
                 
                 
                 checked = ''
                 checked = ''
-                if for_a[1] in acl_list:
-                    checked = 'checked'
-
                 choice = '<input type="checkbox" ' + state + ' name="' + for_a[1] + '" ' + checked + '> ' + for_a[2]
                 choice = '<input type="checkbox" ' + state + ' name="' + for_a[1] + '" ' + checked + '> ' + for_a[2]
-                if len(for_a) == 4:
+                if for_a[1] == '':
                     choice = for_a[2]
                     choice = for_a[2]
+                elif for_a[1] in acl_list:
+                    checked = 'checked'
 
 
                 data += '' + \
                 data += '' + \
                     '<li class="opennamu_list_1" style="margin-left: ' + str(int(for_a[0]) * 20) + 'px;">' + \
                     '<li class="opennamu_list_1" style="margin-left: ' + str(int(for_a[0]) * 20) + 'px;">' + \

+ 1 - 1
route/go_api_w_render.py

@@ -60,7 +60,7 @@ async def api_w_render(name = '', tool = ''):
                 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 = json.loads(data_option)
+                data_option = orjson.loads(data_option)
 
 
                 data_option_func = api_w_render_include(data_option)
                 data_option_func = api_w_render_include(data_option)
 
 

+ 1 - 1
route/login_find_email_check.py

@@ -79,7 +79,7 @@ def login_find_email_check(tool):
                         user_app_data['ua'] = user_agent
                         user_app_data['ua'] = user_agent
                         user_app_data['email'] = flask.session['c_email']
                         user_app_data['email'] = flask.session['c_email']
                         
                         
-                        curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [flask.session['c_id'], 'application', json.dumps(user_app_data)])
+                        curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [flask.session['c_id'], 'application', orjson.dumps(user_app_data).decode('utf-8')])
         
         
                         for i in re_set_list:
                         for i in re_set_list:
                             flask.session.pop(i, None)
                             flask.session.pop(i, None)

+ 1 - 1
route/login_register_submit.py

@@ -48,7 +48,7 @@ def login_register_submit_2():
             for for_a in session_reset_list:
             for for_a in session_reset_list:
                 flask.session.pop(for_a, None)
                 flask.session.pop(for_a, None)
 
 
-            curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [user_app_data['id'], 'application', json.dumps(user_app_data)])
+            curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [user_app_data['id'], 'application', orjson.dumps(user_app_data).decode('utf-8')])
 
 
             return re_error(conn, '/error/43')
             return re_error(conn, '/error/43')
         else:
         else:

+ 1 - 1
route/main_search_deep.py

@@ -51,7 +51,7 @@ async def main_search_deep(name = 'Test', search_type = 'title', num = 1):
                 <ul>
                 <ul>
             '''
             '''
 
 
-            all_list = json.loads((await api_search(name, search_type, num)).get_data(as_text = True))
+            all_list = orjson.loads((await api_search(name, search_type, num)).get_data(as_text = True))
             for data in all_list:
             for data in all_list:
                 div += '<li><a href="/w/' + url_pas(data) + '">' + data + '</a></li>'
                 div += '<li><a href="/w/' + url_pas(data) + '">' + data + '</a></li>'
 
 

+ 2 - 2
route/recent_app_submit.py

@@ -33,7 +33,7 @@ def recent_app_submit_2():
                 '''
                 '''
 
 
                 for application in db_data:
                 for application in db_data:
-                    application = json.loads(application[0])
+                    application = orjson.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 @@ def recent_app_submit_2():
                 if not application:
                 if not application:
                     return re_error(conn, '/error/26')
                     return re_error(conn, '/error/26')
                 else:
                 else:
-                    application = json.loads(application[0][0])
+                    application = orjson.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'])
 
 

+ 1 - 1
route/recent_edit_request.py

@@ -17,7 +17,7 @@ async def recent_edit_request():
                     </tr>
                     </tr>
         '''
         '''
 
 
-        all_list = json.loads((await api_list_recent_edit_request()).get_data(as_text = True))
+        all_list = orjson.loads((await api_list_recent_edit_request()).get_data(as_text = True))
         for data in all_list:
         for data in all_list:
             if re.search(r"\+", data[5]):
             if re.search(r"\+", data[5]):
                 leng = '<span style="color:green;">(' + data[5] + ')</span>'
                 leng = '<span style="color:green;">(' + data[5] + ')</span>'

+ 33 - 25
route/tool/func.py

@@ -2,7 +2,7 @@
 import os
 import os
 import sys
 import sys
 import platform
 import platform
-import json
+import orjson
 import smtplib
 import smtplib
 import random
 import random
 import shutil
 import shutil
@@ -16,7 +16,7 @@ import email.header
 
 
 # Init-Version
 # Init-Version
 with open('version.json', encoding = 'utf8') as file_data:
 with open('version.json', encoding = 'utf8') as file_data:
-    version_list = json.loads(file_data.read())
+    version_list = orjson.loads(file_data.read())
 
 
 print('Version : ' + version_list['beta']['r_ver'])
 print('Version : ' + version_list['beta']['r_ver'])
 print('DB set version : ' + version_list['beta']['c_ver'])
 print('DB set version : ' + version_list['beta']['c_ver'])
@@ -117,7 +117,7 @@ def python_to_golang_sync(func_name, other_set = {}):
     if other_set == {}:
     if other_set == {}:
         other_set = '{}'
         other_set = '{}'
     else:
     else:
-        other_set = json.dumps(other_set)
+        other_set = orjson.dumps(other_set)
 
 
     if platform.system() == 'Linux':
     if platform.system() == 'Linux':
         if platform.machine() in ["AMD64", "x86_64"]:
         if platform.machine() in ["AMD64", "x86_64"]:
@@ -156,7 +156,7 @@ async def python_to_golang(func_name, other_set = {}):
     if other_set == {}:
     if other_set == {}:
         other_set = '{}'
         other_set = '{}'
     else:
     else:
-        other_set = json.dumps(other_set)
+        other_set = orjson.dumps(other_set)
 
 
     if platform.system() == 'Linux':
     if platform.system() == 'Linux':
         if platform.machine() in ["AMD64", "x86_64"]:
         if platform.machine() in ["AMD64", "x86_64"]:
@@ -294,7 +294,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 = json.loads(file_data.read())
+                    set_data = orjson.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:
@@ -329,7 +329,7 @@ class class_check_json:
                     set_data['db'] = data_get
                     set_data['db'] = data_get
 
 
                 with open(os.path.join('data', 'set.json'), 'w', encoding = 'utf8') as f:
                 with open(os.path.join('data', 'set.json'), 'w', encoding = 'utf8') as f:
-                    f.write(json.dumps(set_data))
+                    f.write(orjson.dumps(set_data).decode('utf-8'))
 
 
         print('DB name : ' + set_data['db'])
         print('DB name : ' + set_data['db'])
         print('DB type : ' + set_data['db_type'])
         print('DB type : ' + set_data['db_type'])
@@ -344,7 +344,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 = json.loads(file_data.read())
+                set_data = orjson.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:
@@ -378,7 +378,7 @@ class class_check_json:
                 'w', 
                 'w', 
                 encoding = 'utf8'
                 encoding = 'utf8'
             ) as f:
             ) as f:
-                f.write(json.dumps(set_data_mysql))
+                f.write(orjson.dumps(set_data_mysql).decode('utf-8'))
 
 
         data_db_set['mysql_user'] = set_data_mysql['user']
         data_db_set['mysql_user'] = set_data_mysql['user']
         data_db_set['mysql_pw'] = set_data_mysql['password']
         data_db_set['mysql_pw'] = set_data_mysql['password']
@@ -485,7 +485,7 @@ 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 = json.loads(open('data/mysql.json', encoding = 'utf8').read())
+        get_data_mysql = orjson.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" }')
@@ -572,7 +572,7 @@ def update(conn, ver_num, set_data):
             sql_data['ua'] = i[7]
             sql_data['ua'] = i[7]
             sql_data['email'] = i[8]
             sql_data['email'] = i[8]
             
             
-            curs.execute(db_change("insert into user_set (name, id, data) values (?, ?, ?)"), ['application', i[0], json.dumps(sql_data)])
+            curs.execute(db_change("insert into user_set (name, id, data) values (?, ?, ?)"), ['application', i[0], orjson.dumps(sql_data).decode('utf-8')])
     
     
     if ver_num < 3500105:
     if ver_num < 3500105:
         curs.execute(db_change('delete from acl where title like "file:%" and data = "admin" and type like "decu%"'))
         curs.execute(db_change('delete from acl where title like "file:%" and data = "admin" and type like "decu%"'))
@@ -762,6 +762,9 @@ def set_init_always(conn, ver_num, run_mode):
         curs.execute(db_change('delete from alist where name = "ip"'))
         curs.execute(db_change('delete from alist where name = "ip"'))
         curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
         curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
 
 
+        curs.execute(db_change('delete from alist where name = "ban"'))
+        curs.execute(db_change('insert into alist (name, acl) values ("ban", "view")'))
+
         # 이미지 폴더 없으면 생성
         # 이미지 폴더 없으면 생성
         if not os.path.exists(load_image_url(conn)):
         if not os.path.exists(load_image_url(conn)):
             os.makedirs(load_image_url(conn))
             os.makedirs(load_image_url(conn))
@@ -939,7 +942,7 @@ def get_acl_list(type_data = 'normal'):
     other_set['type'] = type_data
     other_set['type'] = type_data
 
 
     data_str = python_to_golang_sync('api_func_acl_list', other_set)
     data_str = python_to_golang_sync('api_func_acl_list', other_set)
-    data = json.loads(data_str)
+    data = orjson.loads(data_str)
 
 
     return data["data"]
     return data["data"]
 
 
@@ -1153,24 +1156,29 @@ def get_lang(conn, data, safe = 0):
         else:
         else:
             lang_name = 'en-US'
             lang_name = 'en-US'
             
             
-        m_curs.execute('select data from temp where name = ?', ['lang_' + lang_name])
+        m_curs.execute('select data from temp where name = ?', ['lang_' + lang_name + '_' + data])
         db_data = m_curs.fetchall()
         db_data = m_curs.fetchall()
         if db_data:
         if db_data:
-            lang = json.loads(db_data[0][0])
+            if safe == 1:
+                return db_data[0][0]
+            else:
+                return html.escape(db_data[0][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 = json.loads(open(os.path.join('lang', lang_name + '.json'), encoding = 'utf8').read())
-                
-                m_curs.execute('insert into temp (name, data) values (?, ?)', ['lang_' + lang_name, json.dumps(lang)])
+                lang = orjson.loads(open(os.path.join('lang', lang_name + '.json'), encoding = 'utf8').read())
             else:
             else:
                 lang = {}
                 lang = {}
 
 
-        if data in lang:
-            if safe == 1:
-                return lang[data] 
-            else:
-                return html.escape(lang[data])
+            if data in lang:
+                m_curs.execute('insert into temp (name, data) values (?, ?)', ['lang_' + lang_name + '_' + data, lang[data]])
+
+                if safe == 1:
+                    return lang[data] 
+                else:
+                    return html.escape(lang[data])
+
+        print(data + ' (' + lang_name + ')')
 
 
         return html.escape(data + ' (' + lang_name + ')')
         return html.escape(data + ' (' + lang_name + ')')
 
 
@@ -1821,7 +1829,7 @@ def captcha_post(conn, re_data):
                 )
                 )
                 
                 
             if data.status_code == 200:
             if data.status_code == 200:
-                json_data = json.loads(data.text)
+                json_data = orjson.loads(data.text)
                 if json_data['success'] != True:
                 if json_data['success'] != True:
                     return 1
                     return 1
 
 
@@ -1909,7 +1917,7 @@ def acl_check(name = '', tool = '', topic_num = '', ip = '', memo = ''):
     other_set['tool'] = tool
     other_set['tool'] = tool
 
 
     data_str = python_to_golang_sync('api_func_acl', other_set)
     data_str = python_to_golang_sync('api_func_acl', other_set)
-    data = json.loads(data_str)
+    data = orjson.loads(data_str)
 
 
     result = 0 if data["data"] else 1
     result = 0 if data["data"] else 1
 
 
@@ -1931,7 +1939,7 @@ def ban_check(ip = None, tool = ''):
     other_set['type'] = tool
     other_set['type'] = tool
 
 
     data_str = python_to_golang_sync('api_func_ban', other_set)
     data_str = python_to_golang_sync('api_func_ban', other_set)
-    data = json.loads(data_str)
+    data = orjson.loads(data_str)
     data["ban"] = 1 if data["ban"] == "true" else 0
     data["ban"] = 1 if data["ban"] == "true" else 0
 
 
     return [data["ban"], data["ban_type"]]
     return [data["ban"], data["ban_type"]]
@@ -1951,7 +1959,7 @@ def ip_pas(raw_ip):
         other_set["data_" + str(for_a)] = get_ip[for_a - 1]
         other_set["data_" + str(for_a)] = get_ip[for_a - 1]
 
 
     data_str = python_to_golang_sync('api_func_ip_post', other_set)
     data_str = python_to_golang_sync('api_func_ip_post', other_set)
-    data = json.loads(data_str)
+    data = orjson.loads(data_str)
 
 
     return data["data"][raw_ip] if return_data == 1 else data["data"]
     return data["data"][raw_ip] if return_data == 1 else data["data"]
         
         

+ 1 - 1
route/tool/func_render_namumark.py

@@ -1380,7 +1380,7 @@ class class_do_render_namumark:
                         '''
                         '''
                         data_name = self.get_tool_data_storage('' + \
                         data_name = self.get_tool_data_storage('' + \
                             include_link + \
                             include_link + \
-                            '<div id="' + include_sub_name + '" style="display: none;">' + urllib.parse.quote(json.dumps(include_change_list)) + '</div>' + \
+                            '<div id="' + include_sub_name + '" style="display: none;">' + urllib.parse.quote(orjson.dumps(include_change_list).decode('utf-8')) + '</div>' + \
                         '', '', match_org)
                         '', '', match_org)
                     else:
                     else:
                         self.data_backlink[include_name]['no'] = ''
                         self.data_backlink[include_name]['no'] = ''

+ 1 - 1
route/tool/func_tool.py

@@ -9,7 +9,7 @@ import os
 import html
 import html
 import sqlite3
 import sqlite3
 import time
 import time
-import json
+import orjson
 import threading
 import threading
 
 
 def get_time():
 def get_time():

+ 1 - 1
route/view_random.py

@@ -4,6 +4,6 @@ from .go_api_w_random import api_w_random
 
 
 async def view_random():
 async def view_random():
     with get_db_connect() as conn:
     with get_db_connect() as conn:
-        data = json.loads((await api_w_random()).get_data(as_text = True))["data"]
+        data = orjson.loads((await api_w_random()).get_data(as_text = True))["data"]
         
         
         return redirect(conn, '/w/' + url_pas(data))
         return redirect(conn, '/w/' + url_pas(data))

+ 3 - 3
route/view_raw.py

@@ -67,10 +67,10 @@ def view_raw(name = '', topic_num = '', num = '', doc_acl = 0, bbs_num = '', pos
 
 
         if bbs_num != '' and post_num != '':
         if bbs_num != '' and post_num != '':
             if comment_num != '':
             if comment_num != '':
-                data = json.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
-                sub_data = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+                data = orjson.loads(api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num).data)
+                sub_data = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
             else:
             else:
-                data = json.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
+                data = orjson.loads(api_bbs_w_post(bbs_num_str + '-' + post_num_str).data)
                 
                 
             if 'comment' in data:
             if 'comment' in data:
                 v_name = sub_data["title"]
                 v_name = sub_data["title"]

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 3 - 0
route_go/go.mod

@@ -33,7 +33,10 @@ require (
 	github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
 	github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
 	github.com/googleapis/gax-go/v2 v2.12.3 // indirect
 	github.com/googleapis/gax-go/v2 v2.12.3 // indirect
 	github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
 	github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
+	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/ncruces/go-strftime v0.1.9 // indirect
 	github.com/ncruces/go-strftime v0.1.9 // indirect
 	github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
 	github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
 	go.opencensus.io v0.24.0 // indirect
 	go.opencensus.io v0.24.0 // indirect

+ 8 - 0
route_go/go.sum

@@ -65,6 +65,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
 github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
 github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
 github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
 github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
 github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
@@ -78,10 +79,16 @@ github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/
 github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
 github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
 github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
 github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
 github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
 github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
 github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
 github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
 github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
 github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
 github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -92,6 +99,7 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qq
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=

+ 4 - 1
route_go/route/api_bbs.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_bbs(call_arg []string) string {
 func Api_bbs(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_bbs_list.go

@@ -2,9 +2,10 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func bbs_list(db *sql.DB) map[string]string {
 func bbs_list(db *sql.DB) map[string]string {
@@ -32,6 +33,8 @@ func bbs_list(db *sql.DB) map[string]string {
 }
 }
 
 
 func Api_bbs_list(call_arg []string) string {
 func Api_bbs_list(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	db := tool.DB_connect()
 	db := tool.DB_connect()
 	defer db.Close()
 	defer db.Close()
 
 

+ 4 - 1
route_go/route/api_bbs_w.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_bbs_w(call_arg []string) string {
 func Api_bbs_w(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+	
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_bbs_w_comment.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_bbs_w_comment(call_arg []string) string {
 func Api_bbs_w_comment(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_edit_move_all.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_edit_move_all(call_arg []string) string {
 func Api_edit_move_all(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_acl.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_acl(call_arg []string) string {
 func Api_func_acl(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_acl_list.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_acl_list(call_arg []string) string {
 func Api_func_acl_list(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_auth.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_auth(call_arg []string) string {
 func Api_func_auth(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_auth_post.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_auth_post(call_arg []string) string {
 func Api_func_auth_post(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_ban.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_ban(call_arg []string) string {
 func Api_func_ban(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 2
route_go/route/api_func_ip.go

@@ -1,12 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
-
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_ip(call_arg []string) string {
 func Api_func_ip(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 2
route_go/route/api_func_ip_menu.go

@@ -1,12 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
-
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_ip_menu(call_arg []string) string {
 func Api_func_ip_menu(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_ip_post.go

@@ -1,13 +1,16 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"strconv"
 	"strconv"
 
 
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_ip_post(call_arg []string) string {
 func Api_func_ip_post(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_func_language.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_language(call_arg []string) string {
 func Api_func_language(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := make(map[string]interface{})
 	other_set := make(map[string]interface{})
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 3 - 1
route_go/route/api_func_llm.go

@@ -3,15 +3,17 @@ package route
 import (
 import (
 	"context"
 	"context"
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 
 
 	"github.com/google/generative-ai-go/genai"
 	"github.com/google/generative-ai-go/genai"
+	jsoniter "github.com/json-iterator/go"
 	"google.golang.org/api/option"
 	"google.golang.org/api/option"
 )
 )
 
 
 func Api_func_llm(call_arg []string) string {
 func Api_func_llm(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 2
route_go/route/api_func_sha224.go

@@ -1,12 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
-
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_func_sha224(call_arg []string) string {
 func Api_func_sha224(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_old_page.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_old_page(call_arg []string) string {
 func Api_list_old_page(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_recent_block.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_recent_block(call_arg []string) string {
 func Api_list_recent_block(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_recent_change.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_recent_change(call_arg []string) string {
 func Api_list_recent_change(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_recent_discuss.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_recent_discuss(call_arg []string) string {
 func Api_list_recent_discuss(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_recent_edit_request.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_recent_edit_request(call_arg []string) string {
 func Api_list_recent_edit_request(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_list_title_index.go

@@ -1,13 +1,16 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_list_title_index(call_arg []string) string {
 func Api_list_title_index(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_search.go

@@ -2,14 +2,17 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"strconv"
 	"strconv"
 
 
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_search(call_arg []string) string {
 func Api_search(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_setting.go

@@ -1,9 +1,10 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Setting_list() map[string]string {
 func Setting_list() map[string]string {
@@ -23,6 +24,8 @@ func Setting_list() map[string]string {
 }
 }
 
 
 func Api_setting(call_arg []string) string {
 func Api_setting(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_setting_delete.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_setting_delete(call_arg []string) string {
 func Api_setting_delete(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_setting_put.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_setting_put(call_arg []string) string {
 func Api_setting_put(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_topic.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 
 
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_topic(call_arg []string) string {
 func Api_topic(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_topic_list.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_topic_list(call_arg []string) string {
 func Api_topic_list(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_rankup.go

@@ -1,10 +1,11 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func User_rankup_condition(data string) string {
 func User_rankup_condition(data string) string {
@@ -21,6 +22,8 @@ func User_rankup_condition(data string) string {
 }
 }
 
 
 func Api_user_rankup(call_arg []string) string {
 func Api_user_rankup(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_rankup_patch.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_user_rankup_patch(call_arg []string) string {
 func Api_user_rankup_patch(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_setting_editor.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_user_setting_editor(call_arg []string) string {
 func Api_user_setting_editor(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_setting_editor_delele.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_user_setting_editor_delete(call_arg []string) string {
 func Api_user_setting_editor_delete(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+	
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_setting_editor_insert.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_user_setting_editor_post(call_arg []string) string {
 func Api_user_setting_editor_post(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_user_watch_list.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_user_watch_list(call_arg []string) string {
 func Api_user_watch_list(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_w_random.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 
 
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_random(call_arg []string) string {
 func Api_w_random(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	db := tool.DB_connect()
 	db := tool.DB_connect()
 	defer db.Close()
 	defer db.Close()
 
 

+ 4 - 1
route_go/route/api_w_raw.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 
 
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_raw(call_arg []string) string {
 func Api_w_raw(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_w_render.go

@@ -1,11 +1,14 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_render(call_arg []string) string {
 func Api_w_render(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_w_set_reset.go

@@ -1,12 +1,15 @@
 package route
 package route
 
 
 import (
 import (
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_set_reset(call_arg []string) string {
 func Api_w_set_reset(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_w_watch_list.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_watch_list(call_arg []string) string {
 func Api_w_watch_list(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 4 - 1
route_go/route/api_w_xref.go

@@ -2,13 +2,16 @@ package route
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"opennamu/route/tool"
 	"opennamu/route/tool"
 	"strconv"
 	"strconv"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Api_w_xref(call_arg []string) string {
 func Api_w_xref(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
 	other_set := map[string]string{}
 	other_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 	json.Unmarshal([]byte(call_arg[0]), &other_set)
 
 

+ 45 - 12
route_go/route/tool/language.go

@@ -2,12 +2,18 @@ package tool
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
-	"encoding/json"
 	"log"
 	"log"
 	"os"
 	"os"
+
+	jsoniter "github.com/json-iterator/go"
 )
 )
 
 
 func Get_language(db *sql.DB, data string, safe bool) string {
 func Get_language(db *sql.DB, data string, safe bool) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	m_db := Temp_DB_connect()
+	defer m_db.Close()
+
 	var language string
 	var language string
 
 
 	err := db.QueryRow(DB_change("select data from other where name = 'language'")).Scan(&language)
 	err := db.QueryRow(DB_change("select data from other where name = 'language'")).Scan(&language)
@@ -19,26 +25,53 @@ func Get_language(db *sql.DB, data string, safe bool) string {
 		}
 		}
 	}
 	}
 
 
-	file, err := os.Open("./lang/" + language + ".json")
+	var language_data string
+
+	stmt, err := m_db.Prepare("select data from temp where name = ?")
 	if err != nil {
 	if err != nil {
 		log.Fatal(err)
 		log.Fatal(err)
 	}
 	}
-	defer file.Close()
-
-	lang_data := map[string]string{}
+	defer stmt.Close()
 
 
-	decoder := json.NewDecoder(file)
-	if err := decoder.Decode(&lang_data); err != nil {
-		log.Fatal(err)
+	err = stmt.QueryRow("lang_" + language + "_" + data).Scan(&language_data)
+	if err != nil {
+		if err == sql.ErrNoRows {
+			language_data = ""
+		} else {
+			log.Fatal(err)
+		}
 	}
 	}
 
 
-	if _, ok := lang_data[data]; ok {
+	if language_data != "" {
 		if safe {
 		if safe {
-			return lang_data[data]
+			return language_data
 		} else {
 		} else {
-			return HTML_escape(lang_data[data])
+			return HTML_escape(language_data)
 		}
 		}
 	} else {
 	} else {
-		return data + " (" + language + ")"
+		file, err := os.Open("./lang/" + language + ".json")
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer file.Close()
+
+		lang_data := map[string]string{}
+
+		decoder := json.NewDecoder(file)
+		if err := decoder.Decode(&lang_data); err != nil {
+			log.Fatal(err)
+		}
+
+		if _, ok := lang_data[data]; ok {
+			if safe {
+				return lang_data[data]
+			} else {
+				return HTML_escape(lang_data[data])
+			}
+		} else {
+			log.Default().Println(data + " (" + language + ")")
+
+			return data + " (" + language + ")"
+		}
 	}
 	}
 }
 }

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
 {
     "beta" : {
     "beta" : {
-        "r_ver" : "v3.5.0-v160",
+        "r_ver" : "v3.5.0-v161",
         "c_ver" : "20240513",
         "c_ver" : "20240513",
         "s_ver" : "20240426"
         "s_ver" : "20240426"
     }
     }