Selaa lähdekoodia

일부 수정 Beta

잉여개발기 6 kuukautta sitten
vanhempi
sitoutus
5f84c79a9a
9 muutettua tiedostoa jossa 74 lisäystä ja 57 poistoa
  1. 26 30
      app.py
  2. 1 0
      lang/en-US.json
  3. 2 1
      lang/ko-KR.json
  4. 1 1
      requirements.txt
  5. 1 1
      route/__init__.py
  6. 4 1
      route/go_api_func_auth.py
  7. 20 16
      route/list_history.py
  8. 16 4
      route/tool/func.py
  9. 3 3
      version.json

+ 26 - 30
app.py

@@ -7,8 +7,7 @@ import logging
 from route.tool.func import *
 from route import *
 
-from hypercorn.asyncio import serve
-from hypercorn.config import Config
+from waitress import serve
 
 from werkzeug.middleware.proxy_fix import ProxyFix
 
@@ -176,7 +175,8 @@ with get_db_connect(init_mode = True) as conn:
             super(RegexConverter, self).__init__(url_map)
             self.regex = items[0]
 
-    app = flask.Flask(__name__, template_folder = './')
+    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+    app = flask.Flask(__name__, template_folder = os.path.join(BASE_DIR, "views"))
 
     app.config['JSON_AS_ASCII'] = False
     app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False
@@ -186,7 +186,7 @@ with get_db_connect(init_mode = True) as conn:
         app.config['DEBUG'] = True
         app.config['ENV'] = 'development'
 
-    log = logging.getLogger('hypercorn')
+    log = logging.getLogger('waitress')
     log.setLevel(logging.ERROR)
 
     app.jinja_env.filters['md5_replace'] = md5_replace
@@ -244,23 +244,6 @@ for for_a in server_set:
 
 ###
 
-if platform.system() == 'Linux':
-    if platform.machine() in ["AMD64", "x86_64"]:
-        cmd = [os.path.join(".", "bin", "main.amd64.bin")]
-    else:
-        cmd = [os.path.join(".", "bin", "main.arm64.bin")]
-elif platform.system() == 'Darwin':
-    cmd = [os.path.join(".", "bin", "main.mac.arm64.bin")]
-else:
-    if platform.machine() in ["AMD64", "x86_64"]:
-        cmd = [os.path.join(".", "bin", "main.amd64.exe")]
-    else:
-        cmd = [os.path.join(".", "bin", "main.arm64.exe")]
-        
-cmd += [server_set["golang_port"]]
-if run_mode != '':
-    cmd += [run_mode]
-
 async def golang_process_check():
     while True:
         try:
@@ -276,7 +259,7 @@ async def golang_process_check():
                 "ip" : "127.0.0.1"
             }
 
-            response = requests.post('http://localhost:' + server_set["golang_port"] + '/', data = json_dumps(other_set))
+            response = requests.post('http://localhost:' + server_set["golang_port"] + '/compatible_api/test', data = json_dumps(other_set))
             if response.status_code == 200:
                 print('Golang turn on')
                 break
@@ -284,7 +267,14 @@ async def golang_process_check():
             print('Wait golang...')
             time.sleep(1)
 
-golang_process = subprocess.Popen(cmd)
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+BIN_DIR = os.path.join(BASE_DIR, "bin")
+
+exe_name = linux_exe_chmod()
+exe_path = os.path.join(BIN_DIR, exe_name)
+
+cmd = [exe_path, server_set["golang_port"], run_mode, 'api']
+golang_process = subprocess.Popen(cmd, cwd = BIN_DIR)
 
 try:
     loop = asyncio.get_running_loop()
@@ -891,8 +881,8 @@ app.route('/api/v2/page_view/<everything:name>')(api_w_page_view)
 
 app.route('/api/v2/setting/<name>', methods = ['GET', 'PUT'])(api_setting_exter)
 
-app.route('/api/v2/auth')(api_func_auth)
-app.route('/api/v2/auth/<user_name>')(api_func_auth)
+app.route('/api/v2/auth')(api_func_auth_exter)
+app.route('/api/v2/auth/<user_name>')(api_func_auth_exter)
 app.route('/api/v2/auth/give', methods = ['PATCH'])(api_give_auth)
 
 app.route('/api/v2/user/rankup', methods = ['GET', 'PATCH'])(api_user_rankup)
@@ -977,9 +967,15 @@ app.wsgi_app = ProxyFix(app.wsgi_app, x_for = 1, x_proto = 1)
 
 if __name__ == "__main__":
     if run_mode in ['dev']:
-        app.run(host = server_set['host'], port = int(server_set['port']), use_reloader = False)
+        app.run(
+            host = server_set['host'],
+            port = int(server_set['port']),
+            use_reloader = False
+        )
     else:
-        config = Config()
-        config.bind = [server_set['host'] + ":" + server_set['port']]
-
-        asyncio.run(serve(app, config))
+        serve(
+            app,
+            host = server_set['host'],
+            port = int(server_set['port']),
+            threads = 1,
+        )

+ 1 - 0
lang/en-US.json

@@ -63,6 +63,7 @@
     "revert_bottom_text" : "Revert textarea bottom notice",
     "warning_restart" : "Restarting... Press Refresh (F5)",
     "random_list" : "Random document(s) list",
+    "r1" : "r1",
 
     "_comment_": "Common",
     "data": "Data",

+ 2 - 1
lang/ko-KR.json

@@ -710,5 +710,6 @@
     "delete_bottom_text" : "삭제 하단 문구",
     "revert_bottom_text" : "되돌리기 하단 문구",
     "warning_restart" : "재시작 중... 새로고침(F5)를 눌러주세요",
-    "random_list" : "랜덤 문서 목록"
+    "random_list" : "랜덤 문서 목록",
+    "r1" : "r1"
 }

+ 1 - 1
requirements.txt

@@ -3,7 +3,7 @@ pip
 h11
 flask
 flask[async]
-hypercorn==0.17.3
+waitress
 
 aiohttp
 asyncio

+ 1 - 1
route/__init__.py

@@ -176,7 +176,7 @@ from route.go_api_func_language import api_func_language, api_func_language_exte
 from route.go_api_func_sha224 import api_func_sha224
 from route.go_api_func_ip import api_func_ip
 from route.go_api_func_ip_menu import api_func_ip_menu
-from route.go_api_func_auth import api_func_auth
+from route.go_api_func_auth import api_func_auth, api_func_auth_exter
 from route.go_api_func_email import api_func_email, api_func_email_exter
 from route.go_api_func_search import api_func_search, api_func_search_exter
 

+ 4 - 1
route/go_api_func_auth.py

@@ -4,4 +4,7 @@ async def api_func_auth(user_name = ''):
     other_set = {}
     other_set["ip"] = ip_check() if user_name == '' else user_name
 
-    return flask.jsonify(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)
+
+async def api_func_auth_exter(user_name = ''):
+    return flask.jsonify(await api_func_auth(user_name))

+ 20 - 16
route/list_history.py

@@ -2,6 +2,7 @@ from .tool.func import *
 
 from .go_api_list_history import api_list_history
 from .go_api_list_recent_change import api_list_recent_change
+from .go_api_func_auth import api_func_auth
 
 from .recent_change import recent_change_send_render
 
@@ -9,7 +10,7 @@ async def option_lang(lang_in, lang):
     if lang_in == 'user':
         lang_in = lang.get('user_document')
     elif lang_in in lang:
-        lang_in = lang[lang_in]
+        lang_in = get_lang(lang_in)
     
     return lang_in
 
@@ -34,8 +35,9 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                 sub = '(' + await get_lang(set_type) + ')'
                 menu = [['other', await get_lang('return')], ['recent_edit_request', await get_lang('edit_request')]]
 
-            lang = data["language"]
-            auth = data["auth"]
+            auth = await api_func_auth()
+            print(auth)
+
             data = data["data"]
             
             data_html = ''
@@ -43,12 +45,12 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
             if tool == "history":
                 option_list = ['normal', 'edit', 'move', 'delete', 'revert', 'r1', 'setting']
                 for option in option_list:
-                    label = await option_lang(option, lang)
+                    label = await get_lang(option)
                     data_html += f'<a href="/history_page/1/{option}/{doc_name}">({label})</a> '
             else:
                 option_list = ['normal', 'edit', 'move', 'delete', 'revert', 'r1', 'edit_request', 'user', 'file', 'category']
                 for option in option_list:
-                    label = await option_lang(option, lang)
+                    label = await get_lang(option)
                     data_html += f'<a href="/recent_change/1/{option}">({label})</a> '
 
             date_heading = ''
@@ -98,7 +100,7 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                 right += f'{data[for_a][7]} | '
 
                 edit_type = data[for_a][8] if data[for_a][8] != '' else 'edit'
-                right += f'{await option_lang(edit_type, lang)} | '
+                right += f'{await get_lang(edit_type)} | '
 
                 time_split = data[for_a][2].split(' ')
                 if date_heading != time_split[0]:
@@ -110,23 +112,23 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
 
                 right += f'<span style="display: none;" id="opennamu_history_tool_{for_a}">'
 
-                right += f'<a href="/render/{data[for_a][0]}/{doc_name}">{lang["view"]}</a>'
-                right += f' | <a href="/raw_rev/{data[for_a][0]}/{doc_name}">{lang["raw"]}</a>'
-                right += f' | <a href="/revert/{data[for_a][0]}/{doc_name}">{lang["revert"]} (r{data[for_a][0]})</a>'
+                right += f'<a href="/render/{data[for_a][0]}/{doc_name}">{get_lang("view")}</a>'
+                right += f' | <a href="/raw_rev/{data[for_a][0]}/{doc_name}">{get_lang("raw")}</a>'
+                right += f' | <a href="/revert/{data[for_a][0]}/{doc_name}">{get_lang("revert")} (r{data[for_a][0]})</a>'
 
                 if int(data[for_a][0]) > 1:
                     before_rev = str(int(data[for_a][0]) - 1)
-                    right += f' | <a href="/revert/{before_rev}/{doc_name}">{lang["revert"]} (r{before_rev})</a>'
-                    right += f' | <a href="/diff/{before_rev}/{data[for_a][0]}/{doc_name}">{lang["compare"]}</a>'
+                    right += f' | <a href="/revert/{before_rev}/{doc_name}">{get_lang("revert")} (r{before_rev})</a>'
+                    right += f' | <a href="/diff/{before_rev}/{data[for_a][0]}/{doc_name}">{get_lang("compare")}</a>'
 
-                right += f' | <a href="/history/{doc_name}">{lang["history"]}</a>'
+                right += f' | <a href="/history/{doc_name}">{get_lang("history")}</a>'
 
                 if auth.get("owner") or auth.get("hidel"):
-                    right += f' | <a href="/history_hidden/{data[for_a][0]}/{doc_name}">{lang["hide"]}</a>'
+                    right += f' | <a href="/history_hidden/{data[for_a][0]}/{doc_name}">{get_lang("hide")}</a>'
 
                 if auth.get("owner"):
-                    right += f' | <a href="/history_delete/{data[for_a][0]}/{doc_name}">{lang["history_delete"]}</a>'
-                    right += f' | <a href="/history_send/{data[for_a][0]}/{doc_name}">{lang["send_edit"]}</a>'
+                    right += f' | <a href="/history_delete/{data[for_a][0]}/{doc_name}">{get_lang("history_delete")}</a>'
+                    right += f' | <a href="/history_send/{data[for_a][0]}/{doc_name}">{get_lang("send_edit")}</a>'
 
                 right += '</span>'
 
@@ -153,13 +155,15 @@ async def list_history(tool = 'history', num = 1, set_type = 'normal', doc_name
                     '<form method="post">'
                     f'<select name="a">{select}</select> '
                     f'<select name="b">{select}</select> '
-                    f'<button type="submit">{lang["compare"]}</button>'
+                    f'<button type="submit">{get_lang("compare")}</button>'
                     '</form>'
                     '<hr class="main_hr"></hr>' + data_html
                 )
             else:
                 data_html += await get_next_page_bottom(f'/recent_change/{{}}/{set_type}', num, data)
 
+            print(await wiki_custom())
+
             return easy_minify(flask.render_template(await skin_check(),
                 imp = [title, await wiki_set(), await wiki_custom(), wiki_css([sub, 0])],
                 data = data_html,

+ 16 - 4
route/tool/func.py

@@ -160,14 +160,14 @@ async def python_to_golang(func_name, other_set = {}):
 
     if func_name in func_to_normal_url:
         async with aiohttp.ClientSession() as session:
-            async with session.post('http://localhost:' + port_data + '/' + func_name, data = json_dumps(other_set), headers = headers) as res:
-                data = await res.texts()
+            async with session.post('http://localhost:' + port_data + '/compatible_api/' + func_name, data = json_dumps(other_set), headers = headers) as res:
+                data = await res.text()
 
                 return data
     else:
         async with aiohttp.ClientSession() as session:
             while 1:
-                async with session.post('http://localhost:' + port_data + '/' + func_name, data = json_dumps(other_set), headers = headers) as res:
+                async with session.post('http://localhost:' + port_data + '/compatible_api/' + func_name, data = json_dumps(other_set), headers = headers) as res:
                     data = await res.json()
 
                     if "response" in data and data["response"] == "error":
@@ -1230,7 +1230,19 @@ async def skin_check(set_n = 0):
     other_set["set_n"] = str(set_n)
 
     res = await python_to_golang('api_func_skin_name', other_set)
-    return res["data"]
+    raw = res["data"]
+
+    norm = os.path.normpath(raw)
+    parts = norm.split(os.sep)
+    if "views" in parts:
+        idx = parts.index("views")
+        rel_parts = parts[idx + 1:]
+    else:
+        rel_parts = parts
+
+    data = "/".join(rel_parts)
+
+    return data
     
 def cache_v():
     return '.cache_v288'

+ 3 - 3
version.json

@@ -1,6 +1,6 @@
 {
-    "r_ver" : "v3.6.0-v21",
-    "c_ver" : "20250501",
+    "r_ver" : "v3.6.0-v23",
+    "c_ver" : "20250502",
     "s_ver" : "20240426",
-    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-05-09-v1/"
+    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-12-07-Beta-v1/"
 }