Răsfoiți Sursa

Merge pull request #1341 from openNAMU/dev

Dev
잉여개발기 (SPDV) 4 ani în urmă
părinte
comite
c199729935

+ 51 - 31
app.py

@@ -2,13 +2,33 @@
 import os
 import re
 
+from route.tool.func import *
+# from route import *
+
 for i_data in os.listdir("route"):
     f_src = re.search(r"(.+)\.py$", i_data)
-    if f_src:
-        exec("from route." + f_src.group(1) + " import *")
+    f_src = f_src.group(1) if f_src else ""
+    
+    if not f_src in ('', '__init__'):
+        try:
+            exec(
+                "from route." + f_src + " " + 
+                "import " + f_src
+            )
+        except:
+            try:
+                exec(
+                    "from route." + f_src + " " + 
+                    "import " + f_src + "_2"
+                )
+            except:
+                pass
 
 # Init-Version
-version_list = json.loads(open('version.json', encoding = 'utf8').read())
+version_list = json.loads(open(
+    'version.json', 
+    encoding = 'utf8'
+).read())
 
 # Init-DB
 if os.path.exists(os.path.join('data', 'set.json')):
@@ -347,44 +367,44 @@ if os.path.exists('custom.py'):
     
 # Func
 # Func-inter_wiki
-app.route('/inter_wiki', defaults = { 'tool' : 'inter_wiki' })(inter_wiki)
-app.route('/inter_wiki/del/<name>', defaults = { 'tool' : 'del_inter_wiki' })(inter_wiki_del)
-app.route('/inter_wiki/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_inter_wiki' })(inter_wiki_add)
-app.route('/inter_wiki/add/<name>', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_inter_wiki' })(inter_wiki_add)
+app.route('/inter_wiki', defaults = { 'tool' : 'inter_wiki' })(filter_inter_wiki)
+app.route('/inter_wiki/del/<name>', defaults = { 'tool' : 'del_inter_wiki' })(filter_inter_wiki_delete)
+app.route('/inter_wiki/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_inter_wiki' })(filter_inter_wiki_add)
+app.route('/inter_wiki/add/<name>', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_inter_wiki' })(filter_inter_wiki_add)
 
 app.route('/filter/document/list')(filter_document)
 app.route('/filter/document/add/<name>', methods = ['POST', 'GET'])(filter_document_add)
 app.route('/filter/document/add', methods = ['POST', 'GET'])(filter_document_add)
-app.route('/filter/document/del/<name>')(filter_document_del)
+app.route('/filter/document/del/<name>')(filter_document_delete)
 
-app.route('/edit_top', defaults = { 'tool' : 'edit_top' })(inter_wiki)
-app.route('/edit_top/del/<name>', defaults = { 'tool' : 'del_edit_top' })(inter_wiki_del)
-app.route('/edit_top/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_top' })(inter_wiki_add)
+app.route('/edit_top', defaults = { 'tool' : 'edit_top' })(filter_inter_wiki)
+app.route('/edit_top/del/<name>', defaults = { 'tool' : 'del_edit_top' })(filter_inter_wiki_delete)
+app.route('/edit_top/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_top' })(filter_inter_wiki_add)
 
-app.route('/image_license', defaults = { 'tool' : 'image_license' })(inter_wiki)
-app.route('/image_license/del/<name>', defaults = { 'tool' : 'del_image_license' })(inter_wiki_del)
-app.route('/image_license/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_image_license' })(inter_wiki_add)
+app.route('/image_license', defaults = { 'tool' : 'image_license' })(filter_inter_wiki)
+app.route('/image_license/del/<name>', defaults = { 'tool' : 'del_image_license' })(filter_inter_wiki_delete)
+app.route('/image_license/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_image_license' })(filter_inter_wiki_add)
 
-app.route('/edit_filter', defaults = { 'tool' : 'edit_filter' })(inter_wiki)
-app.route('/edit_filter/del/<name>', defaults = { 'tool' : 'del_edit_filter' })(inter_wiki_del)
-app.route('/edit_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_filter' })(inter_wiki_add)
-app.route('/edit_filter/add/<name>', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_filter' })(inter_wiki_add)
+app.route('/edit_filter', defaults = { 'tool' : 'edit_filter' })(filter_inter_wiki)
+app.route('/edit_filter/del/<name>', defaults = { 'tool' : 'del_edit_filter' })(filter_inter_wiki_delete)
+app.route('/edit_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_filter' })(filter_inter_wiki_add)
+app.route('/edit_filter/add/<name>', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_edit_filter' })(filter_inter_wiki_add)
 
-app.route('/email_filter', defaults = { 'tool' : 'email_filter' })(inter_wiki)
-app.route('/email_filter/del/<name>', defaults = { 'tool' : 'del_email_filter' })(inter_wiki_del)
-app.route('/email_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_email_filter' })(inter_wiki_add)
+app.route('/email_filter', defaults = { 'tool' : 'email_filter' })(filter_inter_wiki)
+app.route('/email_filter/del/<name>', defaults = { 'tool' : 'del_email_filter' })(filter_inter_wiki_delete)
+app.route('/email_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_email_filter' })(filter_inter_wiki_add)
 
-app.route('/file_filter', defaults = { 'tool' : 'file_filter' })(inter_wiki)
-app.route('/file_filter/del/<name>', defaults = { 'tool' : 'del_file_filter' })(inter_wiki_del)
-app.route('/file_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_file_filter' })(inter_wiki_add)
+app.route('/file_filter', defaults = { 'tool' : 'file_filter' })(filter_inter_wiki)
+app.route('/file_filter/del/<name>', defaults = { 'tool' : 'del_file_filter' })(filter_inter_wiki_delete)
+app.route('/file_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_file_filter' })(filter_inter_wiki_add)
 
-app.route('/name_filter', defaults = { 'tool' : 'name_filter' })(inter_wiki)
-app.route('/name_filter/del/<name>', defaults = { 'tool' : 'del_name_filter' })(inter_wiki_del)
-app.route('/name_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_name_filter' })(inter_wiki_add)
+app.route('/name_filter', defaults = { 'tool' : 'name_filter' })(filter_inter_wiki)
+app.route('/name_filter/del/<name>', defaults = { 'tool' : 'del_name_filter' })(filter_inter_wiki_delete)
+app.route('/name_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_name_filter' })(filter_inter_wiki_add)
 
-app.route('/extension_filter', defaults = { 'tool' : 'extension_filter' })(inter_wiki)
-app.route('/extension_filter/del/<name>', defaults = { 'tool' : 'del_extension_filter' })(inter_wiki_del)
-app.route('/extension_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_extension_filter' })(inter_wiki_add)
+app.route('/extension_filter', defaults = { 'tool' : 'extension_filter' })(filter_inter_wiki)
+app.route('/extension_filter/del/<name>', defaults = { 'tool' : 'del_extension_filter' })(filter_inter_wiki_delete)
+app.route('/extension_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_extension_filter' })(filter_inter_wiki_add)
 
 # Func-list
 # /list/document/old
@@ -844,7 +864,7 @@ app.route('/restart', methods = ['POST', 'GET'])(main_sys_restart)
 app.route('/update', methods = ['POST', 'GET'])(main_sys_update)
 
 app.errorhandler(404)(main_error_404)
-    
+
 if __name__ == "__main__":
     waitress.serve(
         app,

+ 1 - 1
route/filter_document_delete.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def filter_document_del(name = ''):
+def filter_document_delete(name = ''):
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/filter_inter_wiki.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def inter_wiki(tool):
+def filter_inter_wiki(tool):
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/filter_inter_wiki_add.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def inter_wiki_add(tool, name = None):
+def filter_inter_wiki_add(tool, name = None):
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/filter_inter_wiki_delete.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def inter_wiki_del(tool, name = 'Test'):
+def filter_inter_wiki_delete(tool, name = 'Test'):
     with get_db_connect() as conn:
         curs = conn.cursor()
         

+ 6 - 3
route/login_login.py

@@ -26,9 +26,12 @@ def login_login_2(conn):
         sql_data = curs.fetchall()
         if not sql_data:
             return re_error('/error/2')
-        else:
-            for i in sql_data:
-                user_data[i[0]] = i[1]
+
+        for i in sql_data:
+            user_data[i[0]] = i[1]
+                
+        if len(user_data) < 2:
+            return re_error('/error/2')
 
         if pw_check(
             flask.request.form.get('pw', ''),

+ 11 - 3
route/tool/func.py

@@ -85,7 +85,7 @@ global_wiki_set = {}
 
 global_db_set = ''
 
-data_css_ver = '120'
+data_css_ver = '122'
 data_css = ''
 
 conn = ''
@@ -110,7 +110,11 @@ class get_db_connect_old:
         
     def db_load(self):
         if self.db_set['type'] == 'sqlite':
-            self.conn = sqlite3.connect(self.db_set['name'] + '.db', check_same_thread = False)
+            self.conn = sqlite3.connect(
+                self.db_set['name'] + '.db',
+                check_same_thread = False
+            )
+            self.conn.execute('pragma journal_mode = wal')
         else:
             self.conn = pymysql.connect(
                 host = self.db_set['mysql_host'],
@@ -158,7 +162,11 @@ class get_db_connect:
         
     def __enter__(self):
         if self.db_set['type'] == 'sqlite':
-            self.conn = sqlite3.connect(self.db_set['name'] + '.db')
+            self.conn = sqlite3.connect(
+                self.db_set['name'] + '.db',
+                check_same_thread = False
+            )
+            self.conn.execute('pragma journal_mode = wal')
         else:
             self.conn = pymysql.connect(
                 host = self.db_set['mysql_host'],

+ 4 - 3
route/tool/func_tool.py

@@ -39,9 +39,10 @@ def ip_check(d_type = 0):
             flask.request.environ.get('REMOTE_ADDR', '::1')
         ]
         for ip in ip_list:
-            if not (ip == '::1' or ip == '127.0.0.1'):
-                ip = ip[0] if type(ip) == type([]) else ip.split(',')[0]
-                
+            if type(ip) == type([]):
+                ip = ip[len(ip) - 1]
+
+            if not ip in ('::1', '127.0.0.1'):
                 break
 
     return ip

+ 0 - 0
route/user_custom_head_view.py → route/user_setting_head.py


+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.3 (stable1) (beta14) (dev28)",
+        "r_ver" : "v3.4.3 (stable1) (beta17) (dev32)",
         "c_ver" : "3500101",
         "s_ver" : "3500110"
     }

+ 1 - 1
views/main_css/js/load_something.js

@@ -78,7 +78,7 @@ function send_render(i = 0) {
             document.getElementsByClassName('send_content')[i].innerHTML = '<br>';
         } else {
             data = data.replace(/javascript:/i, '');
-            data = data.replace(/&lt;a(?:(?:(?!&gt;).)+)&gt;((?:(?!&lt;\/a&gt;).)+)&lt;\/a&gt;/g, function(x, x_1) {
+            data = data.replace(/&lt;a(?:(?:(?!&gt;).)*)&gt;((?:(?!&lt;\/a&gt;).)+)&lt;\/a&gt;/g, function(x, x_1) {
                 x_1_org = x_1.replace('&lt;', '<').replace('&gt;', '>');
                 return '<a href="/w/' + encodeURIComponent(x_1_org) + '">' + x_1 + '</a>';
             });

+ 13 - 8
views/main_css/js/render_onmark.js

@@ -146,7 +146,7 @@ function do_onmark_heading_render(
     name_doc, 
     name_include
 ) {
-    var heading_re = /\n(={1,6})(#)? ?([^\n]+) ?#?(?:={6}|={5}|={4}|={3}|={2}|={6})\n/;
+    var heading_re = /\n(={1,6})(#)? ?([^\n]+) ?#?={1,6}\n/;
     var heading_level_all = [0, 0, 0, 0, 0, 0];
     var toc_data = '';
     var toc_n = 0;
@@ -184,8 +184,10 @@ function do_onmark_heading_render(
         }
         
         var heading_level_string_no_end = heading_level_string.replace(/\.$/, '');
-        var heading_data_text = heading_data[3].replace(/ #$/, '');
-        heading_data_text = heading_data_text.replace(/ $/, '');
+        
+        var heading_data_text = heading_data[3].replace(/=+$/, '');
+        heading_data_text = heading_data_text.replace(/#$/, '');
+        ading_data_text = heading_data_text.replace(/ $/, '');
         
         toc_data += '' +
             '<span style="margin-left: ' + String((heading_level_string.match(/\./g).length - 1) * 10) + 'px;">' +
@@ -433,16 +435,19 @@ function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowik
                     link_real = link_real.replace(/^\.\.\//, '');
                     link_real = name_doc.replace(/\/[^/]+$/, '') + (link_real !== '' ? '/' + link_real : '');
                 }
+                
+                var link_data_var = do_link_change(link_real, data_nowiki, 0);
+                var link_main = link_data_var[0];
+                var link_sub = link_data_var[1];
+                
+                let link_id = "real_normal_link"
 
                 var i = 0;
                 while(i < 2) {
                     if(i === 0) {
-                        var link_data_var = do_link_change(link_real, data_nowiki, 0);
-                        var link_main = link_data_var[0];
-                        var link_sub = link_data_var[1];
-
                         var var_link_type = 'href';
                         if(link_main === '') {
+                            link_id = "in_doc_link"
                             var var_link_data = link_sub;
                         } else {
                             var var_link_data = '/w/' + do_url_change(link_main) + link_sub;
@@ -462,7 +467,7 @@ function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowik
                 }
 
                 return  '<a class="' + name_include + 'link_finder" ' +
-                            'id="real_normal_link"' +
+                            'id="' + link_id + '"' +
                             'name="' + name_include + 'set_link_' + num_link_str + '" ' +
                             'title="" ' +
                             'href="">' + link_out + '</a>';

+ 3 - 2
views/main_css/js/render_wiki.js

@@ -8,10 +8,11 @@ function get_link_state(data) {
     var link_list_2 = {}
     for(var i = 0; document.getElementsByClassName(data + 'link_finder')[i]; i++) {
         var data_class = document.getElementsByClassName(data + 'link_finder')[i];
+        console.log(data_class.href)
         if(
             data_class.id !== 'out_link' && 
             data_class.id !== 'inside' && 
-            !data_class.href.match(/^#/)
+            data_class.id !== 'in_doc_link'
         ) {            
             link_list.push(data_class.title);
             
@@ -55,7 +56,7 @@ function get_link_state(data) {
 function get_heading_name() {
     let heading_name = document.getElementsByClassName('render_heading_text');
     for(let i = 0; i < heading_name.length; i++) {
-        heading_name[i].id = heading_name[i].innerText.replace(/^([0-9]+\.)+ /, '').replace(/✎ ⊖$/, '');
+        heading_name[i].id = heading_name[i].innerText.replace(/^([0-9]+\.)+ /, '').replace(/ ✎ ⊖$/, '');
     }
 }