Răsfoiți Sursa

fix bug and mod 2fa

2du 5 ani în urmă
părinte
comite
a84071c516

+ 1 - 1
route/login_register.py

@@ -122,7 +122,7 @@ def login_register_2(conn):
                     ''' + approval_question + '''
                     ''' + captcha_get() + '''
                     <button type="submit">''' + load_lang('save') + '''</button>
-                    ''' + http_warrin() + '''
+                    ''' + http_warring() + '''
                 </form>
             ''',
             menu = [['user', load_lang('return')]]

+ 6 - 3
route/user_setting.py

@@ -87,12 +87,15 @@ def user_setting_2(conn, server_init):
                         <hr class="main_hr">
                         <select name="lang">''' + div3 + '''</select>
                         <h2>''' + load_lang('2fa') + '''</h2>
-                        <input type="checkbox" name="2fa" value="on" ''' + fa_data + '''> ''' + load_lang('on') + '''
-                        <hr class="main_hr">
-                        <input type="password" name="2fa_pw" placeholder="''' + fa_data_pw + '''">
+                        <input type="checkbox" id="twofa_check_input" onclick="do_twofa_check(0);" name="2fa" value="on" ''' + fa_data + '''> ''' + load_lang('on') + '''
+                        <div id="fa_plus_content">
+                            <hr class="main_hr">
+                            <input type="password" name="2fa_pw" placeholder="''' + fa_data_pw + '''">
+                        </div>
                         <hr class="main_hr">
                         <button type="submit">''' + load_lang('save') + '''</button>
                         ''' + http_warring() + '''
+                        <script>do_twofa_check(1);</script>
                     </form>
                 ''',
                 menu = [['user', load_lang('return')]]

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.2.0-stable-13 (beta-52) (dev-2021-02-26-01)",
+        "r_ver" : "v3.2.0-stable-13 (beta-53) (dev-2021-03-01-01)",
         "c_ver" : "3203400",
         "s_ver" : "11"
     }

+ 1 - 0
views/main_css/js/load_namumark.js

@@ -132,6 +132,7 @@ function load_include(title, name, p_data) {
         if(this.readyState === 4 && this.status === 200) {
             if(this.responseText === "{}\n") {
                 document.getElementById(name).innerHTML = "";
+                document.getElementsByClassName(name)[0].href = "/w/" + do_url_change(title); 
                 document.getElementsByClassName(name)[0].id = "not_thing";
             } else {
                 var o_p_data = JSON.parse(this.responseText);

+ 125 - 45
views/main_css/js/load_onmark_render.js

@@ -3,8 +3,45 @@ function do_url_change(data) {
     return encodeURIComponent(data);
 }
 
+function do_link_change(data, data_nowiki, no_change = 0) {
+    data = data.replace(/^:/, '');
+    
+    if(no_change === 0) {
+        data = data.replace(/^사용자:/, 'user:');
+        data = data.replace(/^분류:/, 'category:');
+        data = data.replace(/^파일:/, 'file:');
+    }
+    
+    var data_var = data.split('#');
+    var link_main = data.replace(/#(.*)$/, '');
+    var link_sub = data_var.length !== 1 ? ('#' + data_var[data_var.length - 1]) : '';
+    
+    return [link_main, link_sub];
+}
+
 function do_js_safe_change(data) {
-    return data.replace(/"/g, '\\"');
+    data = data.replace(/\\/g, '\\\\');
+    data = data.replace(/"/g, '\\"');
+    
+    return data;
+}
+
+function do_math_try_insert(name_ob, data) {
+    return '' + 
+        'try {\n' + 
+            'katex.render("' + data + '", document.getElementById(\"' + name_ob + '\"));\n' + 
+        '} catch {\n' + 
+            'document.getElementById(\"' + name_ob + '\").innerHTML = "<span style=\'color: red;\'>' + data + '</span>";\n' + 
+        '}\n' + 
+    ''
+}
+
+function do_data_try_insert(name_ob, data) {
+    return '' +
+        'if(document.getElementById("' + name_ob + '")) {\n' + 
+            'document.getElementById("' + name_ob + '").innerHTML = "' + data + '";\n' + 
+        '}\n' +
+    ''
 }
 
 function do_return_date() {
@@ -20,6 +57,14 @@ function do_return_date() {
     '';
 }
 
+function do_xss_change(data) {
+    data = data.replace(/&lt;/g, '<');
+    data = data.replace(/&gt;/g, '>');
+    data = data.replace(/&amp;/g, '&');
+    
+    return data;
+}
+
 // Sub
 function do_onmark_text_render(data) {    
     data = data.replace(/'''((?:(?!''').)+)'''/g, '<b>$1</b>');
@@ -34,9 +79,9 @@ function do_onmark_text_render(data) {
 }
 
 function do_onmark_heading_render(data) {
-    var heading_re = /<br>(={1,6}) ?([^=]+) ?={1,6}<br>/;
+    var heading_re = /\n(={1,6}) ?([^=]+) ?={1,6}\n/;
     var heading_level_all = [0, 0, 0, 0, 0, 0];
-    var toc_data = '<div id="toc"><div id="toc_title">TOC</div><br>';
+    var toc_data = '<div id="toc"><div id="toc_title">TOC</div>\n';
     while(1) {        
         var heading_data = data.match(heading_re);
         if(!heading_data) {
@@ -72,13 +117,13 @@ function do_onmark_heading_render(data) {
                     heading_level_string + ' ' +
                 '</a>' + heading_data[2] +
             '</span>' +
-            '<br>' +
+            '\n' +
         ''
         data = data.replace(heading_re, 
             '<h' + heading_level + ' id="s-' + heading_level_string_no_end + '">' + 
                 '<a href="#toc">' + heading_level_string + '</a> ' + heading_data[2] + 
             '</h' + heading_level + '>' +
-            '<br>'
+            '\n'
        );
     }
     
@@ -87,8 +132,8 @@ function do_onmark_heading_render(data) {
     return data;
 }
 
-function do_onmark_link_render(data, data_js, name_doc, name_include) {
-    var link_num = 0;
+function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowiki) {
+    var num_link = 0;
     var category_data = '';
     var category_re = /^(분류|category):/i;
     var file_re = /^(파일|file):/i;
@@ -98,8 +143,8 @@ function do_onmark_link_render(data, data_js, name_doc, name_include) {
         var link_out = link_split[1] ? link_split[1] : link_split[0];
         var link_out_2 = link_split[1] ? link_split[1] : '';
         
-        link_num += 1;
-        var link_num_str = String(link_num - 1);
+        num_link += 1;
+        var num_link_str = String(num_link - 1);
         if(link_real.match(file_re)) {
             var file_name = link_real.replace(file_re, '');
             console.log(file_name);
@@ -127,7 +172,7 @@ function do_onmark_link_render(data, data_js, name_doc, name_include) {
                 }
                 
                 data_js += '' +
-                    'document.getElementsByName("' + name_include + 'set_link_' + link_num_str + '")[0].' + var_link_type + ' = ' + 
+                    'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].' + var_link_type + ' = ' + 
                         '"' + do_js_safe_change(link_real) + '";' +
                     '\n' +
                 '';
@@ -136,22 +181,26 @@ function do_onmark_link_render(data, data_js, name_doc, name_include) {
             }
             
             return  '<a id="out_link" ' +
-                        'name="' + name_include + 'set_link_' + link_num_str + '" ' + 
+                        'name="' + name_include + 'set_link_' + num_link_str + '" ' + 
                         'title=""' +
                         'href="">' + link_out + '</a>';
         } else {
             var i = 0;
             while(i < 2) {
                 if(i === 0) {
+                    var link_data_var = do_link_change(link_real, data_nowiki);
+                    var link_main = link_data_var[0];
+                    var link_sub = link_data_var[1];
+                    
                     var var_link_type = 'href';
-                    var var_link_data = '/w/' + do_url_change(link_real);
+                    var var_link_data = '/w/' + do_url_change(link_main) + link_sub;
                 } else {
                     var var_link_type = 'title';
                     var var_link_data = do_js_safe_change(link_real);
                 }
                 
                 data_js += '' +
-                    'document.getElementsByName("' + name_include + 'set_link_' + link_num_str + '")[0].' + var_link_type + ' = ' + 
+                    'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].' + var_link_type + ' = ' + 
                         '"' + var_link_data + '";' +
                     '\n' +
                 '';
@@ -160,13 +209,13 @@ function do_onmark_link_render(data, data_js, name_doc, name_include) {
             }
             
             return  '<a class="' + name_include + 'link_finder" ' +
-                        'name="' + name_include + 'set_link_' + link_num_str + '" ' +
+                        'name="' + name_include + 'set_link_' + num_link_str + '" ' +
                         'title="" ' +
                         'href="">' + link_out + '</a>';
         }
     });
     
-    data += (category_data === '' ? '' : (category_data.replace(/\| $/, '') + '</div></div>'))
+    data += (category_data === '' ? '' : (category_data.replace(/\| $/, '') + '</div></div>'));
     
     return [data, data_js];
 }
@@ -174,7 +223,7 @@ function do_onmark_link_render(data, data_js, name_doc, name_include) {
 function do_onmark_footnote_render(data, name_include) {
     var footnote_end_data = '';
     var footnote_all_data = {};
-    var footnote_re = /(?:\[\*([^ \]]*)(?: ((?:(?!<br>|\]).)+))?\]|\[(footnote|각주)\])/;
+    var footnote_re = /(?:\[\*([^ \]]*)(?: ((?:(?!\]).)+))?\]|\[(footnote|각주)\])/;
     var i = 1;
     while(1) {
         var footnote_data = data.match(footnote_re);
@@ -331,7 +380,7 @@ function do_onmark_middle_render(data, data_js, name_include) {
                 data = data.replace(middle_re, '<span style="font-size: ' + font_size + ';">');
                 middle_stack.push('</span>');
             } else if(middle_data[1] === '#!wiki') {
-                var wiki_re = /{{{#!wiki(?: style=["']([^"']*)["']<br>)?/;
+                var wiki_re = /{{{#!wiki(?: style=["']([^"']*)["']\n)?/;
                 
                 var wiki = data.match(wiki_re);
                 var wiki_style = wiki[1] ? wiki[1] : '';
@@ -356,7 +405,7 @@ function do_onmark_middle_render(data, data_js, name_include) {
         middle_stack.pop();
     }
     
-    data = data.replace(/<br><div_wiki_end>/g, '<div_wiki_end>');
+    data = data.replace(/\n<div_wiki_end>/g, '<div_wiki_end>');
     
     data = data.replace(/<middle_start>/g, '{{{');
     data = data.replace(/<middle_end>/g, '}}}');
@@ -370,14 +419,15 @@ function do_onmark_last_render(data) {
     data = data.replace(/<div_wiki_end>/g, '</div>');
     
     // heading_render 마지막 처리
-    data = data.replace(/(<\/h[0-9]>)<br>/g, '$1');
+    data = data.replace(/(<\/h[0-9]>)\n/g, '$1');
     
     // list_render 마지막 처리
-    data = data.replace(/(<\/ul>)<br>/g, '$1');
+    data = data.replace(/(<\/ul>)\n/g, '$1');
     
     // br 마지막 처리
-    data = data.replace(/^(<br>| )+/, '');
-    data = data.replace(/(<br>| )+$/, '');
+    data = data.replace(/^(\n| )+/, '');
+    data = data.replace(/(\n| )+$/, '');
+    data = data.replace(/\n/g, '<br>');
     
     return data;
 }
@@ -394,7 +444,7 @@ function do_onmark_include_render(data, data_js, name_include) {
         }
         
         data = data.replace(include_re,
-            '<a id="' + name_include + 'include_link" class="include_' + String(i) + '" href="/w/' + do_url_change(include_data[1]) + '">(' + include_data[1] + ')</a>' +
+            '<a id="' + name_include + 'include_link" class="include_' + String(i) + '" href="">(' + include_data[1] + ')</a>' +
             '<div id="' + name_include + 'include_' + String(i) + '"></div>'
         );
         
@@ -404,8 +454,15 @@ function do_onmark_include_render(data, data_js, name_include) {
     return [data, data_js];
 }
 
-function do_onmark_nowiki_before_render(data, data_js) {
-    return [data, data_js];
+function do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki, num_nowiki = 0) {
+    data = data.replace(/\\(.)/g, function(x, x_1) {
+        num_nowiki += 1;
+        data_nowiki[name_include + 'nowiki_' + String(num_nowiki)] = x_1;
+        data_js += do_data_try_insert(name_include + 'nowiki_' + String(num_nowiki), do_js_safe_change(x_1));
+        return '<span id="' + name_include + 'nowiki_' + String(num_nowiki) + '"></span>';
+    });
+    
+    return [data, data_js, data_nowiki, num_nowiki];
 }
 
 function do_onmark_table_render(data) {
@@ -413,8 +470,8 @@ function do_onmark_table_render(data) {
 }
 
 function do_onmark_list_render(data) {
-    var list_re = /<br>((?:(?:(?: )+)\* (?:(?:(?!<br>).)+)<br>)+)/;
-    var list_short_re = /((?: )+)\* ((?:(?!<br>).)+)<br>/g;
+    var list_re = /\n((?:(?:(?: )+)\* (?:(?:(?!\n).)+)\n)+)/;
+    var list_short_re = /((?: )+)\* ((?:(?!\n).)+)\n/g;
     while(1) {
         var list_data = data.match(list_re);
         if(!list_data) {
@@ -425,44 +482,67 @@ function do_onmark_list_render(data) {
             return '<li style="margin-left: ' + String(x_1.length * 20) + 'px;">' + x_2 + '</li>';
         }) + '</ul>';
 
-        data = data.replace(list_re, '<br>' + list_end_data + '</br>');
+        data = data.replace(list_re, '\n' + list_end_data + '\n');
     }
     
     return data;
 }
 
+function do_onmark_math_render(data, data_js, name_include) {
+    data = data.replace(/<math>((?:(?!<\/math>).)+)<\/math>/g, '[math($1)]');
+    
+    var i = 0;
+    data = data.replace(/\[math\((((?!\)]).)+)\)]/g, function(x, x_1) {
+        i += 1;
+        
+        data_js += do_math_try_insert(name_include + 'math_' + String(i), do_js_safe_change(do_xss_change(x_1)));
+        return '<span id="' + name_include + 'math_' + String(i) + '"></span>';
+    });
+    
+    return [data, data_js];
+}
+
 // Main
-function do_onmark_render(test_mode = 1, name_id = '', name_include = '', name_doc = '') {
+function do_onmark_render(test_mode = 1, name_id = '', name_include = '', name_doc = '') {    
 	if(test_mode === 0) {
-        var data = '<br>' + document.getElementById(name_id).innerHTML.replace(/\n/g, '<br>') + '<br>';
+        var data = '\n' + document.getElementById(name_id).innerHTML.replace(/\r/g, '') + '\n';
     } else {
-    	var data = '<br>' + (
+    	var data = '\n' + (
             '== namu ==\n' +
             'test'
-        ).replace(/\n/g, '<br>') + '<br>';
+        ) + '\n';
     }
     var data_js = '';
     var data_backlink = [];
+    var data_nowiki = {};
+    console.log(data);
+    
+    var data_var = do_onmark_math_render(data, data_js, name_include);
+    data = data_var[0];
+    data_js = data_var[1];
     
-    var var_data = do_onmark_nowiki_before_render(data, data_js, name_include);
-    data = var_data[0];
-    data_js = var_data[1];
+    data_var = do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki);
+    data = data_var[0];
+    data_js = data_var[1];
+    data_nowiki = data_var[2];
+    var num_nowiki = data_var[3];
+    console.log(data_js);
     
-    var_data = do_onmark_include_render(data, data_js, name_include);
-    data = var_data[0];
-    data_js = var_data[1];
+    data_var = do_onmark_include_render(data, data_js, name_include);
+    data = data_var[0];
+    data_js = data_var[1];
     
-    var_data = do_onmark_middle_render(data, data_js, name_include);
-    data = var_data[0];
-    data_js = var_data[1];
+    data_var = do_onmark_middle_render(data, data_js, name_include);
+    data = data_var[0];
+    data_js = data_var[1];
     
     data = do_onmark_text_render(data);
     data = do_onmark_heading_render(data);
     data = do_onmark_table_render(data);
     
-    var_data = do_onmark_link_render(data, data_js, name_doc, name_include);
-    data = var_data[0];
-    data_js = var_data[1];
+    data_var = do_onmark_link_render(data, data_js, name_doc, name_include, data_nowiki);
+    data = data_var[0];
+    data_js = data_var[1];
     
     data = do_onmark_macro_render(data);
     data = do_onmark_list_render(data);
@@ -483,4 +563,4 @@ function do_onmark_render(test_mode = 1, name_id = '', name_include = '', name_d
     }
 }
 
-do_onmark_render();
+// do_onmark_render();

+ 5 - 0
views/main_css/js/load_something.js

@@ -23,4 +23,9 @@ function load_ver() {
             document.getElementById('ver_send').style.display = "list-item";
         }
     }
+}
+
+function do_twofa_check(init = 0) {
+    var data_check = document.getElementById('twofa_check_input').checked;
+    document.getElementById('fa_plus_content').style.display = data_check === true ? "block" : "none";
 }