Просмотр исходного кода

더 빠른 속도를 위해서

잉여개발기 1 год назад
Родитель
Сommit
ac98c6c0d1
5 измененных файлов с 241 добавлено и 267 удалено
  1. 52 49
      app.py
  2. 4 8
      route/main_setting_main.py
  3. 151 163
      route/tool/func.py
  4. 31 44
      route/tool/func_tool.py
  5. 3 3
      version.json

+ 52 - 49
app.py

@@ -24,9 +24,6 @@ with open('version.json', encoding = 'utf8') as file_data:
 data_db_set = class_check_json()
 do_db_set(data_db_set)
 
-with class_temp_db() as m_conn:
-    m_conn.execute('pragma journal_mode = WAL')
-
 with get_db_connect(init_mode = True) as conn:
     curs = conn.cursor()
 
@@ -238,11 +235,8 @@ with get_db_connect(init_mode = True) as conn:
 
         server_set[i] = server_set_val
         
-with class_temp_db() as m_conn:
-    m_curs = m_conn.cursor()
-        
-    for for_a in server_set:
-        m_curs.execute('insert into temp (name, data) values (?, ?)', ['setup_' + for_a, server_set[for_a]])
+for for_a in server_set:
+    global_some_set_do('setup_' + for_a, server_set[for_a])
 
 ###
 
@@ -259,29 +253,42 @@ else:
     else:
         cmd = [os.path.join(".", "route_go", "bin", "main.arm64.exe")]
         
+cmd += [server_set["golang_port"]]
 if run_mode != '':
     cmd += [run_mode]
 
-def golang_process_check():
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-        
-        m_curs.execute('select data from temp where name = "setup_golang_port"')
-        db_data = m_curs.fetchall()
-        db_data = db_data[0][0] if db_data else "3001"
-        
-        while True:
-            try:
-                response = requests.post('http://localhost:' + db_data + '/', data = "test {}")
-                if response.status_code == 200:
-                    print('Golang turn on')
-                    break
-            except requests.ConnectionError:
-                print('Wait golang...')
-                time.sleep(1)
+async def golang_process_check():
+    while True:
+        try:
+            other_set_temp = {}
+            for k in data_db_set:
+                other_set_temp["db_" + k] = data_db_set[k]
+
+            other_set = {
+                "url" : "test",
+                "data" : json.dumps(other_set_temp),
+                "session" : "{}",
+                "cookie" : "",
+                "ip" : "127.0.0.1"
+            }
+
+            response = requests.post('http://localhost:' + server_set["golang_port"] + '/', data = json.dumps(other_set))
+            if response.status_code == 200:
+                print('Golang turn on')
+                break
+        except requests.ConnectionError:
+            print('Wait golang...')
+            time.sleep(1)
 
 golang_process = subprocess.Popen(cmd)
-golang_process_check()
+
+try:
+    loop = asyncio.get_running_loop()
+    loop.create_task(golang_process_check())
+except RuntimeError:
+    loop = asyncio.new_event_loop()
+    asyncio.set_event_loop(loop)
+    loop.run_until_complete(golang_process_check())
 
 ###
 
@@ -436,29 +443,25 @@ print('Now running... http://localhost:' + server_set['port'])
 
 @app.before_request
 def before_request_func():
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-        
-        m_curs.execute('select data from temp where name = "wiki_access_password"')
-        db_data = m_curs.fetchall()
-        if db_data:
-            access_password = db_data[0][0]
-            input_password = flask.request.cookies.get('opennamu_wiki_access', ' ')
-            if url_pas(access_password) != input_password:
-                with get_db_connect() as conn:
-                    return '''
-                        <script>
-                            "use strict";
-                            function opennamu_do_wiki_access() {
-                                let password = document.getElementById('wiki_access').value;
-                                document.cookie = 'opennamu_wiki_access=' + encodeURIComponent(password) + '; path=/;';
-                                history.go(0);
-                            }
-                        </script>
-                        <h2>''' + get_lang(conn, 'error_password_require_for_wiki_access') + '''</h2>
-                        <input type="password" id="wiki_access">
-                        <input type="submit" onclick="opennamu_do_wiki_access();">
-                    '''
+    db_data = global_some_set_do('wiki_access_password')
+    if db_data:
+        access_password = db_data
+        input_password = flask.request.cookies.get('opennamu_wiki_access', ' ')
+        if url_pas(access_password) != input_password:
+            with get_db_connect() as conn:
+                return '''
+                    <script>
+                        "use strict";
+                        function opennamu_do_wiki_access() {
+                            let password = document.getElementById('wiki_access').value;
+                            document.cookie = 'opennamu_wiki_access=' + encodeURIComponent(password) + '; path=/;';
+                            history.go(0);
+                        }
+                    </script>
+                    <h2>''' + get_lang(conn, 'error_password_require_for_wiki_access') + '''</h2>
+                    <input type="password" id="wiki_access">
+                    <input type="submit" onclick="opennamu_do_wiki_access();">
+                '''
 
 # Init-custom
 if os.path.exists('custom.py'):

+ 4 - 8
route/main_setting_main.py

@@ -106,15 +106,11 @@ async def main_setting_main():
                 else:
                     branch_div += '<option value="' + i + '">' + i + '</option>'
 
+            set_data = global_some_set_do('db_type')
+            
             sqlite_only = ''
-            with class_temp_db() as m_conn:
-                m_curs = m_conn.cursor()
-
-                m_curs.execute('select data from temp where name = "db_type"')
-                db_data = m_curs.fetchall()
-                set_data = db_data[0][0] if db_data else 'sqlite'
-
-                sqlite_only = 'style="display:none;"' if set_data != 'sqlite' else ''
+            if set_data != 'sqlite':
+                sqlite_only = 'style="display:none;"'
 
             ip_load_select_data = ''
             ip_load_option = ['default', 'HTTP_X_REAL_IP', 'HTTP_CF_CONNECTING_IP', 'REMOTE_ADDR']

+ 151 - 163
route/tool/func.py

@@ -105,16 +105,12 @@ def custom_render_template(template_name_or_list, **context):
 flask.render_template = custom_render_template
 
 global_lang_data = {}
+global_some_set = {}
 
 def do_db_set(db_set):
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-
-        m_curs.execute('drop table if exists temp')
-        m_curs.execute('create table if not exists temp(name text, data text)')
-        
-        for for_a in db_set:
-            m_curs.execute('insert into temp (name, data) values (?, ?)', ['db_' + for_a, db_set[for_a]])
+    for for_a in db_set:
+        global_func_some_set_do('db_' + for_a, db_set[for_a])
+        global_some_set_do('db_' + for_a, db_set[for_a])
 
 class flask_data_or_variable:
     def __init__(self, flask_data, var_dict):
@@ -134,42 +130,48 @@ class flask_data_or_variable:
             else:
                 return replace_data
 
-async def python_to_golang(func_name, other_set = {}):
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-    
-        other_set = {
-            "url" : func_name,
-            "data" : json.dumps(other_set)
-        }
+def global_some_set_do(set_name, data = None):
+    global global_some_set
 
-        if flask.has_request_context():
-            other_set["session"] = json.dumps(dict(flask.session))
-    
-            if "Cookie" in flask.request.headers:
-                other_set["cookie"] = flask.request.headers["Cookie"]
-            else:
-                other_set["cookie"] = ""
+    if data != None:
+        global_some_set[set_name] = data
+
+    if set_name in global_some_set:
+        return global_some_set[set_name]
+    else:
+        return None
 
-            other_set["ip"] = ip_check()
+async def python_to_golang(func_name, other_set = {}):    
+    other_set = {
+        "url" : func_name,
+        "data" : json.dumps(other_set)
+    }
+
+    if flask.has_request_context():
+        other_set["session"] = json.dumps(dict(flask.session))
+
+        if "Cookie" in flask.request.headers:
+            other_set["cookie"] = flask.request.headers["Cookie"]
         else:
-            other_set["session"] = "{}"
             other_set["cookie"] = ""
-            other_set["ip"] = "127.0.0.1"
 
-        m_curs.execute('select data from temp where name = "setup_golang_port"')
-        db_data = m_curs.fetchall()
-        db_data = db_data[0][0] if db_data else "3001"
+        other_set["ip"] = ip_check()
+    else:
+        other_set["session"] = "{}"
+        other_set["cookie"] = ""
+        other_set["ip"] = "127.0.0.1"
+
+    port_data = global_some_set_do("setup_golang_port")
     
-        async with aiohttp.ClientSession() as session:
-            while 1:
-                async with session.post('http://localhost:' + db_data + '/', data = json.dumps(other_set)) as res:
-                    data = await res.json()
+    async with aiohttp.ClientSession() as session:
+        while 1:
+            async with session.post('http://localhost:' + port_data + '/', data = json.dumps(other_set)) as res:
+                data = await res.json()
 
-                    if "response" in data and data["response"] == "error":
-                        raise
-                    else:
-                        return data
+                if "response" in data and data["response"] == "error":
+                    raise
+                else:
+                    return data
 
 # Func-init
 def get_init_set_list(need = 'all'):
@@ -211,25 +213,18 @@ def get_init_set_list(need = 'all'):
     
 class get_db_connect:
     def __init__(self, db_type = '', init_mode = False):
-        with class_temp_db() as m_conn:
-            m_curs = m_conn.cursor()
+        self.db_set = {}
+        self.init_mode = init_mode
 
-            self.db_set = {}
-            self.init_mode = init_mode
+        for for_a in ("db_type", "db_name"):
+            self.db_set[for_a] = global_some_set_do(for_a)
 
-            m_curs.execute('select name, data from temp where name in ("db_type", "db_name")')
-            db_data = m_curs.fetchall()
-            for for_a in db_data:
-                self.db_set[for_a[0]] = for_a[1]
+        if db_type != '':
+            self.db_set['db_type'] = db_type
 
-            if db_type != '':
-                self.db_set['db_type'] = db_type
-
-            if self.db_set['db_type'] == 'mysql':
-                m_curs.execute('select name, data from temp where name in ("db_mysql_host", "db_mysql_user", "db_mysql_pw", "db_mysql_port")')
-                db_data = m_curs.fetchall()
-                for for_a in db_data:
-                    self.db_set[for_a[0]] = for_a[1]
+        if self.db_set['db_type'] == 'mysql':
+            for for_a in ("db_mysql_host", "db_mysql_user", "db_mysql_pw", "db_mysql_port"):
+                self.db_set[for_a] = global_some_set_do(for_a)
         
     def __enter__(self):
         if self.db_set['db_type'] == 'sqlite':
@@ -733,75 +728,73 @@ async def update(conn, ver_num, set_data):
     print('Update completed')
 
 def set_init_always(conn, ver_num, run_mode):
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-        curs = conn.cursor()
+    curs = conn.cursor()
 
-        # 버전 기입
-        curs.execute(db_change('delete from other where name = "ver"'))
-        curs.execute(db_change('insert into other (name, data, coverage) values ("ver", ?, "")'), [ver_num])
-        
-        # 기본 권한 그룹 설정
-        curs.execute(db_change('delete from alist where name = "owner"'))
-        curs.execute(db_change('insert into alist (name, acl) values ("owner", "owner")'))
+    # 버전 기입
+    curs.execute(db_change('delete from other where name = "ver"'))
+    curs.execute(db_change('insert into other (name, data, coverage) values ("ver", ?, "")'), [ver_num])
+    
+    # 기본 권한 그룹 설정
+    curs.execute(db_change('delete from alist where name = "owner"'))
+    curs.execute(db_change('insert into alist (name, acl) values ("owner", "owner")'))
 
-        curs.execute(db_change("select name from alist where name = 'user' limit 1"))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into alist (name, acl) values ("user", "user")'))
+    curs.execute(db_change("select name from alist where name = 'user' limit 1"))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into alist (name, acl) values ("user", "user")'))
 
-        curs.execute(db_change("select name from alist where name = 'ip' limit 1"))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
+    curs.execute(db_change("select name from alist where name = 'ip' limit 1"))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
 
-        curs.execute(db_change("select name from alist where name = 'ban' limit 1"))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into alist (name, acl) values ("ban", "view")'))
+    curs.execute(db_change("select name from alist where name = 'ban' limit 1"))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into alist (name, acl) values ("ban", "view")'))
 
-        # 문서 댓글용 게시판 생성
-        bbs_num = '0'
-        bbs_name = 'document_comment'
-        bbs_type = 'comment'
+    # 문서 댓글용 게시판 생성
+    bbs_num = '0'
+    bbs_name = 'document_comment'
+    bbs_type = 'comment'
 
-        curs.execute(db_change("insert into bbs_set (set_name, set_code, set_id, set_data) values ('bbs_name', '', ?, ?)"), [bbs_num, bbs_name])
-        curs.execute(db_change("insert into bbs_set (set_name, set_code, set_id, set_data) values ('bbs_type', '', ?, ?)"), [bbs_num, bbs_type])
+    curs.execute(db_change("insert into bbs_set (set_name, set_code, set_id, set_data) values ('bbs_name', '', ?, ?)"), [bbs_num, bbs_name])
+    curs.execute(db_change("insert into bbs_set (set_name, set_code, set_id, set_data) values ('bbs_type', '', ?, ?)"), [bbs_num, bbs_type])
 
-        # 이미지 폴더 없으면 생성
-        if not os.path.exists(load_image_url(conn)):
-            os.makedirs(load_image_url(conn))
+    # 이미지 폴더 없으면 생성
+    if not os.path.exists(load_image_url(conn)):
+        os.makedirs(load_image_url(conn))
 
-        # 비밀키 없으면 생성
-        curs.execute(db_change('select data from other where name = "key"'))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into other (name, data, coverage) values ("key", ?, "")'), [load_random_key()])
+    # 비밀키 없으면 생성
+    curs.execute(db_change('select data from other where name = "key"'))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into other (name, data, coverage) values ("key", ?, "")'), [load_random_key()])
 
-        # 솔트키 없으면 생성
-        curs.execute(db_change('select data from other where name = "salt_key"'))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into other (name, data, coverage) values ("salt_key", ?, "")'), [load_random_key(4)])
+    # 솔트키 없으면 생성
+    curs.execute(db_change('select data from other where name = "salt_key"'))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into other (name, data, coverage) values ("salt_key", ?, "")'), [load_random_key(4)])
 
-        # 문서 전체 갯수 없으면 생성
-        curs.execute(db_change('select data from other where name = "count_all_title"'))
-        if not curs.fetchall():
-            curs.execute(db_change('insert into other (name, data, coverage) values ("count_all_title", "0", "")'))
-            
-        # 위키 접근 비밀번호 있으면 temp DB로 넘겨줌
-        curs.execute(db_change('select data from other where name = "wiki_access_password_need"'))
+    # 문서 전체 갯수 없으면 생성
+    curs.execute(db_change('select data from other where name = "count_all_title"'))
+    if not curs.fetchall():
+        curs.execute(db_change('insert into other (name, data, coverage) values ("count_all_title", "0", "")'))
+        
+    # 위키 접근 비밀번호 있으면 temp DB로 넘겨줌
+    curs.execute(db_change('select data from other where name = "wiki_access_password_need"'))
+    db_data = curs.fetchall()
+    if db_data and db_data[0][0] != '':
+        curs.execute(db_change('select data from other where name = "wiki_access_password"'))
         db_data = curs.fetchall()
-        if db_data and db_data[0][0] != '':
-            curs.execute(db_change('select data from other where name = "wiki_access_password"'))
-            db_data = curs.fetchall()
-            if db_data:
-                m_curs.execute('insert into temp (name, data) values ("wiki_access_password", ?)', [db_data[0][0]])
+        if db_data:
+            global_some_set_do("wiki_access_password", db_data[0][0])
 
-        curs.execute(db_change('select data from other where name = "load_ip_select"'))
-        db_data = curs.fetchall()
-        if db_data and db_data[0][0] != '':
-            m_curs.execute('insert into temp (name, data) values ("load_ip_select", ?)', [db_data[0][0]])
+    curs.execute(db_change('select data from other where name = "load_ip_select"'))
+    db_data = curs.fetchall()
+    if db_data and db_data[0][0] != '':
+        global_func_some_set_do("load_ip_select", db_data[0][0])
 
-        # OS마다 실행 파일 설정
-        exe_type = linux_exe_chmod()
-        if platform.system() == 'Linux' or platform.system() == 'Darwin':
-            os.system('chmod +x ./route_go/bin/' + exe_type)
+    # OS마다 실행 파일 설정
+    exe_type = linux_exe_chmod()
+    if platform.system() == 'Linux' or platform.system() == 'Darwin':
+        os.system('chmod +x ./route_go/bin/' + exe_type)
 
 def linux_exe_chmod():
     exe_type = ''
@@ -1230,71 +1223,66 @@ def cache_v():
     return '.cache_v285'
 
 def wiki_css(data):
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-
-        # without_DB
-        data += ['' for _ in range(0, 4 - len(data))]
-        
-        data_css = ''
-        data_css_dark = ''
+    # without_DB
+    data += ['' for _ in range(0, 4 - len(data))]
+    
+    data_css = ''
+    data_css_dark = ''
 
-        data_css_ver = cache_v()
+    data_css_ver = cache_v()
 
-        m_curs.execute('select data from temp where name = "main_css"')
-        db_data = m_curs.fetchall()
-        if db_data:
-            data_css = db_data[0][0]
-        else:
-            data_css += '<meta http-equiv="Cache-Control" content="max-age=31536000">'
+    db_data = global_some_set_do("main_css")
+    if db_data:
+        data_css = db_data
+    else:
+        data_css += '<meta http-equiv="Cache-Control" content="max-age=31536000">'
 
-            # External JS
-            data_css += '<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>'
-            data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" integrity="sha512-rdhY3cbXURo13l/WU9VlaRyaIYeJ/KBakckXIvJNAQde8DgpOmE+eZf7ha4vdqVjTtwQt69bD2wH2LXob/LB7Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
-            data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/x86asm.min.js" integrity="sha512-HeAchnWb+wLjUb2njWKqEXNTDlcd1QcyOVxb+Mc9X0bWY0U5yNHiY5hTRUt/0twG8NEZn60P3jttqBvla/i2gA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
-            data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.48.0/min/vs/loader.min.js" integrity="sha512-ZG31AN9z/CQD1YDDAK4RUAvogwbJHv6bHrumrnMLzdCrVu4HeAqrUX7Jsal/cbUwXGfaMUNmQU04tQ8XXl5Znw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
-            data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>'
+        # External JS
+        data_css += '<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>'
+        data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" integrity="sha512-rdhY3cbXURo13l/WU9VlaRyaIYeJ/KBakckXIvJNAQde8DgpOmE+eZf7ha4vdqVjTtwQt69bD2wH2LXob/LB7Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
+        data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/x86asm.min.js" integrity="sha512-HeAchnWb+wLjUb2njWKqEXNTDlcd1QcyOVxb+Mc9X0bWY0U5yNHiY5hTRUt/0twG8NEZn60P3jttqBvla/i2gA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
+        data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.48.0/min/vs/loader.min.js" integrity="sha512-ZG31AN9z/CQD1YDDAK4RUAvogwbJHv6bHrumrnMLzdCrVu4HeAqrUX7Jsal/cbUwXGfaMUNmQU04tQ8XXl5Znw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
+        data_css += '<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>'
 
-            # Func JS
-            data_css += '<script defer src="/views/main_css/js/func/func.js' + data_css_ver + '"></script>'
-            
-            data_css += '<script defer src="/views/main_css/js/func/insert_version.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/insert_user_info.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/insert_version_skin.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/insert_http_warning_text.js' + data_css_ver + '"></script>'
-            
-            data_css += '<script defer src="/views/main_css/js/func/ie_end_of_life.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/shortcut.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/editor.js' + data_css_ver + '"></script>'
-            data_css += '<script defer src="/views/main_css/js/func/render.js' + data_css_ver + '"></script>'
-            
-            # Main CSS
-            data_css += '<link rel="stylesheet" href="/views/main_css/css/main.css' + data_css_ver + '">'
+        # Func JS
+        data_css += '<script defer src="/views/main_css/js/func/func.js' + data_css_ver + '"></script>'
+        
+        data_css += '<script defer src="/views/main_css/js/func/insert_version.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/insert_user_info.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/insert_version_skin.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/insert_http_warning_text.js' + data_css_ver + '"></script>'
+        
+        data_css += '<script defer src="/views/main_css/js/func/ie_end_of_life.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/shortcut.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/editor.js' + data_css_ver + '"></script>'
+        data_css += '<script defer src="/views/main_css/js/func/render.js' + data_css_ver + '"></script>'
+        
+        # Main CSS
+        data_css += '<link rel="stylesheet" href="/views/main_css/css/main.css' + data_css_ver + '">'
 
-            # External CSS
-            data_css += '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">'
-            data_css += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css" integrity="sha512-hasIneQUHlh06VNBe7f6ZcHmeRTLIaQWFd43YriJ0UND19bvYRauxthDg8E4eVNPm9bRUhr5JGeqH7FRFXQu5g==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
-            data_css += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.41.0/min/vs/editor/editor.main.min.css" integrity="sha512-MFDhxgOYIqLdcYTXw7en/n5BshKoduTitYmX8TkQ+iJOGjrWusRi8+KmfZOrgaDrCjZSotH2d1U1e/Z1KT6nWw==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
+        # External CSS
+        data_css += '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">'
+        data_css += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css" integrity="sha512-hasIneQUHlh06VNBe7f6ZcHmeRTLIaQWFd43YriJ0UND19bvYRauxthDg8E4eVNPm9bRUhr5JGeqH7FRFXQu5g==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
+        data_css += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.41.0/min/vs/editor/editor.main.min.css" integrity="sha512-MFDhxgOYIqLdcYTXw7en/n5BshKoduTitYmX8TkQ+iJOGjrWusRi8+KmfZOrgaDrCjZSotH2d1U1e/Z1KT6nWw==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
 
-            m_curs.execute('insert into temp (name, data) values ("main_css", ?)', [data_css])
+        global_some_set_do("main_css", data_css)
 
-        # Darkmode
-        m_curs.execute('select data from temp where name = "dark_main_css"')
-        db_data = m_curs.fetchall()
-        if db_data:
-            data_css_dark = db_data[0][0]
-        else:
-            # Main CSS
-            data_css_dark += '<link rel="stylesheet" href="/views/main_css/css/sub/dark.css' + data_css_ver + '">'
+    # Darkmode
+    db_data = global_some_set_do("dark_main_css")
+    if db_data:
+        data_css_dark = db_data
+    else:
+        # Main CSS
+        data_css_dark += '<link rel="stylesheet" href="/views/main_css/css/sub/dark.css' + data_css_ver + '">'
 
-            # External CSS
-            data_css_dark += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/dark.min.css" integrity="sha512-bfLTSZK4qMP/TWeS1XJAR/VDX0Uhe84nN5YmpKk5x8lMkV0D+LwbuxaJMYTPIV13FzEv4CUOhHoc+xZBDgG9QA==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
+        # External CSS
+        data_css_dark += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/dark.min.css" integrity="sha512-bfLTSZK4qMP/TWeS1XJAR/VDX0Uhe84nN5YmpKk5x8lMkV0D+LwbuxaJMYTPIV13FzEv4CUOhHoc+xZBDgG9QA==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
 
-            m_curs.execute('insert into temp (name, data) values ("dark_main_css", ?)', [data_css_dark])
+        global_some_set_do("dark_main_css", data_css_dark)
 
-        data = data[0:2] + ['', data_css] + data[2:3] + [data_css_dark] + data[3:]
+    data = data[0:2] + ['', data_css] + data[2:3] + [data_css_dark] + data[3:]
 
-        return data
+    return data
 
 def cut_100(data):
     return ''

+ 31 - 44
route/tool/func_tool.py

@@ -18,64 +18,51 @@ try:
 except:
   import json as orjson
 
-def get_time():
-    return str(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
+global_func_some_set = {}
 
-class class_temp_db:
-    def __enter__(self):
-        self.conn = sqlite3.connect(
-            os.path.join('.', 'data', 'temp.db'),
-            check_same_thread = False,
-            isolation_level = None
-        )
+def global_func_some_set_do(set_name, data = None):
+    global global_func_some_set
+    
+    if data != None:
+        global_func_some_set[set_name] = data
 
-        return self.conn
+    if set_name in global_func_some_set:
+        return global_func_some_set[set_name]
+    else:
+        return None
 
-    def __exit__(self, exc_type, exc_value, traceback):
-        self.conn.commit()
-        self.conn.close()
+def get_time():
+    return str(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
 
 def db_change(data):
-    with class_temp_db() as m_conn:
-        m_curs = m_conn.cursor()
-        
-        m_curs.execute('select data from temp where name = "db_type"')
-        db_data = m_curs.fetchall()
-        set_data = db_data[0][0] if db_data else 'sqlite'
-
-        if set_data == 'mysql':
-            data = data.replace('random()', 'rand()')
-            data = data.replace('%', '%%')
-            data = data.replace('?', '%s')
-            data = data.replace('collate nocase', 'collate utf8mb4_general_ci')
+    set_data = global_func_some_set_do("db_type")
+    if set_data == 'mysql':
+        data = data.replace('random()', 'rand()')
+        data = data.replace('%', '%%')
+        data = data.replace('?', '%s')
+        data = data.replace('collate nocase', 'collate utf8mb4_general_ci')
 
-        return data
+    return data
 
 def ip_check(d_type = 0):
     ip = '::1'
     if d_type == 0 and (flask.session and 'id' in flask.session):
         ip = flask.session['id']
     else:
-        with class_temp_db() as m_conn:
-            m_curs = m_conn.cursor()
-
-            m_curs.execute('select data from temp where name = "load_ip_select"')
-            db_data = m_curs.fetchall()
-            set_data = db_data[0][0] if db_data else 'default'
-        
-            if set_data == "default":
-                ip = flask.request.environ.get('HTTP_X_REAL_IP',
-                    flask.request.environ.get('HTTP_CF_CONNECTING_IP',
-                        flask.request.environ.get('REMOTE_ADDR',
-                            '::1'
-                        )
+        set_data = global_func_some_set_do("load_ip_select")
+        if set_data == "default":
+            ip = flask.request.environ.get('HTTP_X_REAL_IP',
+                flask.request.environ.get('HTTP_CF_CONNECTING_IP',
+                    flask.request.environ.get('REMOTE_ADDR',
+                        '::1'
                     )
                 )
-            else:
-                ip = flask.request.environ.get(set_data, '::1')
-            
-            if ip_or_user(ip) == 0:
-                ip = '::1'
+            )
+        else:
+            ip = flask.request.environ.get(set_data, '::1')
+        
+        if ip_or_user(ip) == 0:
+            ip = '::1'
 
     return ip
 

+ 3 - 3
version.json

@@ -1,6 +1,6 @@
 {
-    "r_ver" : "v3.6.0-v4",
-    "c_ver" : "20250321",
+    "r_ver" : "v3.6.0-v5",
+    "c_ver" : "20250322",
     "s_ver" : "20240426",
-    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-03-17-v2/"
+    "bin_link" : "https://github.com/openNAMU/GopenNAMU/releases/download/v2025-03-21-v1/"
 }