2du 5 vuotta sitten
vanhempi
sitoutus
da2d66a0f1
8 muutettua tiedostoa jossa 318 lisäystä ja 90 poistoa
  1. 11 18
      app.py
  2. 135 0
      route/__init__.py
  3. 39 65
      route/edit.py
  4. 2 1
      route/recent_changes.py
  5. 4 6
      route/tool/func.py
  6. 102 0
      test.txt
  7. 4 0
      views/main_css/js/load_editor.js
  8. 21 0
      views/main_css/js/load_something.js

+ 11 - 18
app.py

@@ -1,13 +1,5 @@
 # Load
-import os
-import re
-
-for i_data in os.listdir("route"):
-    f_src = re.search(r"(.+)\.py$", i_data)
-    if f_src:
-        f_src = f_src.group(1)
-
-        exec("from route." + f_src + " import *")
+from route import *
 
 # Version
 version_list = json.loads(open('version.json', encoding = 'utf8').read())
@@ -748,14 +740,15 @@ def main_error_404(e):
 
 # End
 app.secret_key = rep_key
-app.wsgi_app = werkzeug.debug.DebuggedApplication(app.wsgi_app, True)
-app.debug = True
 
-if __name__ == "__main__":
-    if sys.platform == 'win32' and sys.version_info[0:2] >= (3, 8):
-        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
-
-    http_server = tornado.httpserver.HTTPServer(tornado.wsgi.WSGIContainer(app))
-    http_server.listen(int(server_set['port']), address = server_set['host'])
+class NoLoggingWSGIRequestHandler(wsgiref.simple_server.WSGIRequestHandler):
+    def log_message(self, format, *args):
+        pass
 
-    tornado.ioloop.IOLoop.instance().start()
+if __name__ == "__main__":    
+    wsgiref.simple_server.make_server(
+        server_set['host'], 
+        int(server_set['port']), 
+        app,
+        handler_class = NoLoggingWSGIRequestHandler
+    ).serve_forever()

+ 135 - 0
route/__init__.py

@@ -0,0 +1,135 @@
+# Import
+# Import-votete
+from .vote import *
+from .vote_end import *
+from .vote_close import *
+from .vote_add import *
+from .vote_select import *
+
+# Import-search
+from .search import *
+from .search_goto import *
+from .search_deep import *
+
+# Import-application
+from .application_submitted import *
+from .applications import *
+
+# Import-give
+from .give_user_ban import *
+from .give_user_check_delete import *
+from .give_history_hidden import *
+from .give_acl import *
+from .give_admin_groups import *
+from .give_history_add import *
+from .give_user_check import *
+from .give_delete_admin_group import *
+from .give_admin import *
+
+# Import-list
+from .list_give import *
+from .list_image_file import *
+from .list_user_topic import *
+from .list_acl import *
+from .list_title_index import *
+from .list_not_close_topic import *
+from .list_admin import *
+from .list_old_page import *
+from .list_please import *
+from .list_user import *
+from .list_admin_use import *
+from .list_long_page import *
+
+# Import-main
+from .main_file import *
+from .main_other import *
+from .main_views import *
+from .main_upload import *
+from .main_skin_set import *
+from .main_setting import *
+from .main_error_404 import *
+from .main_title_random import *
+from .main_image_view import *
+from .main_manager import *
+
+# Import-api
+from .api_topic_sub import *
+from .api_search import *
+from .api_skin_info import *
+from .api_recent_change import *
+from .api_w import *
+from .api_title_index import *
+from .api_sitemap import *
+from .api_raw import *
+from .api_sha224 import *
+from .api_user_info import *
+from .api_markup import *
+from .api_image_view import *
+from .api_version import *
+
+# Import-user
+from .user_info import *
+from .user_setting import *
+from .user_tool import *
+from .user_count_edit import *
+from .user_custom_head_view import *
+
+# Import-inter_wiki
+from .inter_wiki_plus import *
+from .inter_wiki_del import *
+from .inter_wiki import *
+
+# Import-watch_list
+from .watch_list import *
+from .watch_list_name import *
+
+# Import-login
+from .login import *
+from .login_pw_change import *
+from .login_2fa import *
+from .login_check_key import *
+from .login_logout import *
+from .login_register import *
+from .login_need_email import *
+
+# Import-topic
+from .topic_admin import *
+from .topic_stop import *
+from .topic import *
+from .topic_change import *
+from .topic_block import *
+from .topic_close_list import *
+from .topic_delete import *
+from .topic_tool import *
+from .topic_top import *
+from .topic_acl import *
+
+# Import-recent
+from .recent_changes import *
+from .recent_history_tool import *
+from .recent_block import *
+from .recent_history_delete import *
+from .recent_discuss import *
+
+# Import-topic
+from .edit import *
+from .edit_delete import *
+from .edit_backlink_reset import *
+from .edit_revert import *
+from .edit_move import *
+from .edit_many_delete import *
+
+# Import-server
+from .server_restart import *
+from .server_now_update import *
+
+# Import-view
+from .view_xref import *
+from .view_raw import *
+from .view_diff_data import *
+from .view_read import *
+from .view_down import *
+
+# Import-alarm
+from .alarm import *
+from .alarm_del import *

+ 39 - 65
route/edit.py

@@ -1,45 +1,24 @@
 from .tool.func import *
 
-class run_count_section:
-    def __init__(self, key, change):
-        self.counter = key
-        self.change = change
-
-    def __call__(self, match):
-        self.counter -= 1
-
-        if self.counter == 0:
-            return '\n' + self.change + '\n'
-        else:
-            return '\n' + match[1]
-
 def edit_2(conn, name):
     curs = conn.cursor()
 
     ip = ip_check()
-    section = flask.request.args.get('section', None)
-    if section:
-        curs.execute(db_change("select data from other where name = 'markup'"))
-        markup = curs.fetchall()
-        if markup[0][0] == 'namumark':
-            section = int(number_check(section))
-        else:
-            return redirect('/edit/' + url_pas(name))
-
     if acl_check(name) == 1:
         return re_error('/ban')
     
     curs.execute(db_change("select id from history where title = ? order by id + 0 desc"), [name])
     doc_ver = curs.fetchall()
     doc_ver = doc_ver[0][0] if doc_ver else '0'
-
-    edit_repeat = 0
+    
+    section = flask.request.args.get('section', '')
+    post_ver = flask.request.form.get('ver', '')
     if flask.request.method == 'POST':
-        edit_repeat = 1
-        if flask.request.form.get('ver', '') != doc_ver:
-            edit_repeat = 2
+        edit_repeat = 'error' if post_ver != doc_ver else 'post'
+    else:
+        edit_repeat = 'get'
     
-    if edit_repeat == 1:
+    if edit_repeat == 'post':
         if captcha_post(flask.request.form.get('g-recaptcha-response', flask.request.form.get('g-recaptcha', ''))) == 1:
             return re_error('/error/13')
         else:
@@ -64,17 +43,6 @@ def edit_2(conn, name):
         if old:  
             o_data = old[0][0].replace('\r\n', '\n')
 
-            if section:
-                run_count = run_count_section(section, content)
-
-                c_data = html.escape('\n' + o_data)
-                c_data = re.sub(r'\n(?P<in>={1,6})', '<br>\g<in>', c_data)
-                c_data = re.sub(r'<br>((?:(?:(?!<br>).)*\n*)*)', run_count, c_data)
-                c_data = re.sub(r'^\n', '', c_data)
-                c_data = html.unescape(c_data)
-
-                content = c_data
-
             leng = leng_check(len(o_data), len(content))
             
             curs.execute(db_change("update data set data = ? where title = ?"), [content, name])
@@ -110,31 +78,22 @@ def edit_2(conn, name):
         
         conn.commit()
         
-        return redirect('/w/' + url_pas(name) + (('#edit_load_' + str(section)) if section else ''))
+        section = (('#edit_load_' + str(section)) if section != '' else '')
+        
+        return redirect('/w/' + url_pas(name) + section)
     else:
         editor_top_text = ''
-        if edit_repeat != 2:
-            load_title = flask.request.args.get('plus', None)
-            if load_title:
-                curs.execute(db_change("select data from data where title = ?"), [load_title])
-                get_data = curs.fetchall()
-                data = get_data[0][0] if get_data else ''
-            else:
-                curs.execute(db_change("select data, id from history where title = ? order by id + 0 desc"), [name])
-                old = curs.fetchall()
-                old = old if old else [['']]
-                if section:
-                    data = html.escape('\n' + old[0][0].replace('\r\n', '\n'))
-                    data = re.sub(r'\n(?P<in>={1,6})', '<br>\g<in>', data)
-
-                    section_data = re.findall(r'<br>((?:(?:(?!<br>).)*\n*)*)', data)
-                    if len(section_data) >= section:
-                        data = html.unescape(section_data[section - 1])
-                    else:
-                        return redirect('/edit/' + url_pas(name))
-                else:
-                    data = old[0][0].replace('\r\n', '\n')
-                    editor_top_text += '<a href="/manager/15?plus=' + url_pas(name) + '">(' + load_lang('load') + ')</a> '
+        if edit_repeat == 'get':
+            load_title = flask.request.args.get('plus', '')
+            if load_title == '':
+                load_title = name
+                editor_top_text += '<a href="/manager/15?plus=' + url_pas(name) + '">(' + load_lang('load') + ')</a> '
+                
+            curs.execute(db_change("select data from data where title = ?"), [load_title])
+            sql_d = curs.fetchall()
+            data = sql_d[0][0] if sql_d else ''
+            data = data.replace('\r\n', '\n')
+                    
         else:
             data = flask.request.form.get('content', '')
             warring_edit = load_lang('exp_edit_conflict') + ' '
@@ -143,7 +102,9 @@ def edit_2(conn, name):
                 warring_edit += '<a href="/raw/' + url_pas(name) + '">(r' + doc_ver + ')</a>'
             else:
                 warring_edit += '' + \
-                    '<a href="/diff/' + url_pas(name) + '?first=' + flask.request.form.get('ver', '1') + '&second=' + doc_ver + '">(r' + doc_ver + ')</a>' + \
+                    '<a href="/diff/' + url_pas(name) + '?first=' + flask.request.form.get('ver', '1') + '&second=' + doc_ver + '">' + \
+                        '(r' + doc_ver + ')' + \
+                    '</a>' + \
                 ''
 
             warring_edit += '<hr class="main_hr">'
@@ -205,10 +166,20 @@ def edit_2(conn, name):
             monaco_display = 'style="display: none;"'
             add_get_file = ''
             add_script = ''
+            
+        curs.execute(db_change("select data from other where name = 'markup'"))
+        markup = curs.fetchall()[0][0]
+        
+        server_set = {
+            'section' : section,
+            'markup' : markup
+         }
 
         return easy_minify(flask.render_template(skin_check(), 
             imp = [name, wiki_set(), custom(), other2(['(' + load_lang('edit') + ')', 0])],
             data =  editor_top_text + add_get_file + '''
+                <span   id="server_set"
+                        style="display: none;">''' + json.dumps(server_set) + '''</span>
                 <form method="post">
                     <script>
                         do_paste_image();
@@ -225,14 +196,17 @@ def edit_2(conn, name):
                                 placeholder="''' + p_text + '''" 
                                 name="content">''' + html.escape(data) + '''</textarea>
                     <hr class="main_hr">
-                    <input placeholder="''' + load_lang('why') + '''" name="send" type="text">
+                    <input placeholder="''' + load_lang('why') + '''" name="send">
                     <textarea style="display: none;" id="origin">''' + html.escape(data) + '''</textarea>
                     <input style="display: none;" name="ver" value="''' + doc_ver + '''">
                     <hr class="main_hr">
                     ''' + captcha_get() + ip_warring() + cccb_text + '''
                     <button id="save"
                             type="submit" 
-                            onclick="monaco_to_content(); save_stop_exit();">''' + load_lang('save') + '''</button>
+                            onclick="
+                                monaco_to_content(); 
+                                save_stop_exit();
+                            ">''' + load_lang('save') + '''</button>
                     <button id="preview" 
                             type="button" 
                             onclick="monaco_to_content(); load_preview(\'''' + url_pas(name) + '\');">' + load_lang('preview') + '''</button>

+ 2 - 1
route/recent_changes.py

@@ -142,13 +142,14 @@ def recent_changes_2(conn, name, tool):
                     <td>''' + date + '''</td>
                 </tr>
                 <tr ''' + style[1] + '''>
-                    <td colspan="3">''' + html.escape(send) + '''</td>
+                    <td class="send_content" colspan="3">''' + html.escape(send) + '''</td>
                 </tr>
             '''
 
         div += '''
                 </tbody>
             </table>
+            <script>send_render();</script>
         '''
 
         if name:

+ 4 - 6
route/tool/func.py

@@ -8,6 +8,8 @@ import shutil
 import logging
 import random
 
+from .func_mark import *
+
 for i in range(0, 2):
     try:
         from diff_match_patch import diff_match_patch
@@ -17,9 +19,7 @@ for i in range(0, 2):
         import flask
         import flask_reggie
         
-        import tornado.ioloop
-        import tornado.httpserver
-        import tornado.wsgi
+        import wsgiref.simple_server
         
         import urllib.request
         
@@ -61,12 +61,10 @@ for i in range(0, 2):
         print('----')
         print(e)
         raise
-
-from .func_mark import *
         
 global_lang = {}
 
-data_css_ver = '84'
+data_css_ver = '85'
 data_css = ''
 
 conn = ''

+ 102 - 0
test.txt

@@ -0,0 +1,102 @@
+from route.application_submitted import *
+from route.give_admin import *
+from route.vote_end import *
+from route.search import *
+from route.list_give import *
+from route.user_info import *
+from route.inter_wiki_plus import *
+from route.list_image_file import *
+from route.api_topic_sub import *
+from route.api_search import *
+from route.api_skin_info import *
+from route.watch_list import *
+from route.give_delete_admin_group import *
+from route.list_user_topic import *
+from route.list_acl import *
+from route.vote_add import *
+from route.vote import *
+from route.login_pw_change import *
+from route.give_user_check import *
+from route.api_recent_change import *
+from route.main_other import *
+from route.topic_stop import *
+from route.login_2fa import *
+from route.topic_admin import *
+from route.recent_changes import *
+from route.inter_wiki import *
+from route.list_title_index import *
+from route.edit import *
+from route.list_not_close_topic import *
+from route.list_admin import *
+from route.give_history_add import *
+from route.login_check_key import *
+from route.give_admin_groups import *
+from route.main_file import *
+from route.vote_select import *
+from route.give_acl import *
+from route.topic import *
+from route.edit_delete import *
+from route.api_raw import *
+from route.search_deep import *
+from route.topic_change import *
+from route.login_logout import *
+from route.recent_history_tool import *
+from route.edit_backlink_reset import *
+from route.api_sha224 import *
+from route.give_history_hidden import *
+from route.main_views import *
+from route.main_upload import *
+from route.server_restart import *
+from route.list_admin_use import *
+from route.view_xref import *
+from route.login import *
+from route.server_now_update import *
+from route.topic_block import *
+from route.give_user_ban import *
+from route.view_raw import *
+from route.api_user_info import *
+from route.alarm import *
+from route.list_user import *
+from route.watch_list_name import *
+from route.main_skin_set import *
+from route.view_diff_data import *
+from route.api_version import *
+from route.user_count_edit import *
+from route.api_markup import *
+from route.user_custom_head_view import *
+from route.vote_close import *
+from route.recent_block import *
+from route.give_user_check_delete import *
+from route.api_image_view import *
+from route.view_read import *
+from route.recent_history_delete import *
+from route.user_tool import *
+from route.main_setting import *
+from route.list_please import *
+from route.main_error_404 import *
+from route.applications import *
+from route.edit_many_delete import *
+from route.topic_top import *
+from route.main_title_random import *
+from route.login_register import *
+from route.user_setting import *
+from route.topic_acl import *
+from route.main_image_view import *
+from route.search_goto import *
+from route.__init__ import *
+from route.api_sitemap import *
+from route.edit_revert import *
+from route.edit_move import *
+from route.main_manager import *
+from route.login_need_email import *
+from route.topic_close_list import *
+from route.topic_delete import *
+from route.inter_wiki_del import *
+from route.view_down import *
+from route.topic_tool import *
+from route.list_old_page import *
+from route.api_title_index import *
+from route.list_long_page import *
+from route.recent_discuss import *
+from route.api_w import *
+from route.alarm_del import *

+ 4 - 0
views/main_css/js/load_editor.js

@@ -137,4 +137,8 @@ function load_preview(name) {
 
 function load_raw_preview(name_1, name_2) {
     document.getElementById(name_2).innerHTML = document.getElementById(name_1).value;
+}
+
+function section_edit_make() {
+    
 }

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

@@ -58,6 +58,27 @@ function do_twofa_check(init = 0) {
     document.getElementById('fa_plus_content').style.display = data_check === true ? "block" : "none";
 }
 
+function send_render(i = 0) {
+    var get_class = document.getElementsByClassName('send_content')[i];
+    if(get_class) {
+        send_render(i + 1);
+        
+        var data = get_class.innerHTML;
+        
+        if(data === '&lt;br&gt;') {
+            document.getElementsByClassName('send_content')[i].innerHTML = '<br>';
+        } else {
+            data = data.replace(/javascript:/i, '');
+            
+            data = data.replace(/&lt;a&gt;((?:(?!&lt;\/a&gt;).)+)&lt;\/a&gt;/g, function(x, x_1) {
+                return '<a href="/w/' + encodeURIComponent(x_1) + '">' + x_1 + '</a>';
+            });
+            
+            document.getElementsByClassName('send_content')[i].innerHTML = data;
+        }
+    }
+}
+
 function ie_end_support() {
     if(document.currentScript === undefined) {
         window.location = 'microsoft-edge:' + window.location;