2du 4 tahun lalu
induk
melakukan
a6e5d9763c

+ 4 - 1
app.py

@@ -352,7 +352,10 @@ app.route('/inter_wiki/del/<name>', defaults = { 'tool' : 'del_inter_wiki' })(in
 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/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'plus_inter_wiki' })(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('/edit_top', defaults = { 'tool' : 'edit_top' })(inter_wiki)
 app.route('/edit_top/del/<name>', defaults = { 'tool' : 'del_edit_top' })(inter_wiki_del)

+ 2 - 0
lang/en-US.json

@@ -225,6 +225,7 @@
                 "edit_tool_list" : "Edit tool(s) list",
                 "image_license_list" : "Image license(s) list",
                 "extension_filter_list" : "Extension filter(s) list",
+                "document_filter_list" : "Document filter(s) list",
             "_comment_2.1.2_" : "Add",
                 "interwiki_add" : "Add Interwiki",
                 "edit_filter_add" : "Add contents filter",
@@ -234,6 +235,7 @@
                 "edit_tool_add" : "Add edit tool",
                 "image_license_add" : "Add image license",
                 "extension_filter_add" : "Add extension filter",
+                "document_filter_add" : "Add document filter",
         "_comment_2.2_" : "Setting",
             "setting" : "Setting",
             "restart_required" : "Restart required",

+ 5 - 3
lang/ko-KR.json

@@ -406,6 +406,8 @@
     "record_reset": "사용자 편집 기록 초기화",
     "email_setting": "이메일 설정",
     "oauth_client_id": "OAuth 클라이언트 ID",
-    "today_doc" : "오늘의 문서",
-    "send_edit" : "편집 사유 수정"
-}
+    "today_doc": "오늘의 문서",
+    "send_edit": "편집 사유 수정",
+    "document_filter_list": "문서명 필터 목록",
+    "document_filter_add": "문서명 필터 추가"
+}

+ 41 - 0
route/filter_document.py

@@ -0,0 +1,41 @@
+from .tool.func import *
+
+def filter_document():
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        div = '<table id="main_table_set">'
+        div += '<tr id="main_table_top_tr">'
+        div += '<td id="main_table_width">A</td>'
+        div += '<td id="main_table_width">B</td>'
+        div += '<td id="main_table_width">C</td>'
+        div += '</tr>'
+
+        admin = admin_check()
+        title = load_lang('document_filter_list')
+        
+        curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'document'"))
+        db_data = curs.fetchall()
+        for data in db_data:
+            div += '<tr>'
+            div += '<td>' + html.escape(data[0])
+            if admin == 1:
+                div += ' <a href="/filter/document/add/' + url_pas(data[0]) + '">(' + load_lang('edit') + ')</a>'
+                div += ' <a href="/filter/document/del/' + url_pas(data[0]) + '">(' + load_lang('delete') + ')</a>'
+
+            div += '</td>'
+            div += '<td>' + html.escape(data[1]) + '</td>'
+            div += '<td>' + html.escape(data[2]) + '</td>'
+            div += '</tr>'
+
+        div += '</table>'
+
+        if admin == 1:
+            div += '<hr class="main_hr">'
+            div += '<a href="/filter/document/add">(' + load_lang('add') + ')</a>'
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = [title, wiki_set(), wiki_custom(), wiki_css([0, 0])],
+            data = div,
+            menu = [['manager/1', load_lang('return')]]
+        ))

+ 62 - 0
route/filter_document_add.py

@@ -0,0 +1,62 @@
+from .tool.func import *
+
+def filter_document_add(name = ''):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        if flask.request.method == 'POST':
+            if admin_check(None, 'plus_document_filter') != 1:
+                return re_error('/error/3')
+
+            post_name = flask.request.form.get('name', '')
+            if post_name == '':
+                return redirect('/filter/document/list')
+            
+            post_acl = flask.request.form.get('acl', '')
+            post_regex = flask.request.form.get('regex', '')
+            try:
+                re.compile(post_regex)
+            except:
+                return re_error('/error/23')
+
+            curs.execute(db_change('insert into html_filter (html, kind, plus, plus_t) values (?, ?, ?, ?)'), [
+                post_name,
+                'document',
+                post_regex,
+                post_acl
+            ])
+
+            conn.commit()
+
+            return redirect('/filter/document/list')
+        else:
+            stat = 'disabled' if admin_check() != 1 else ''
+            acl_list = get_acl_list()
+            
+            curs.execute(db_change("select plus, plus_t from html_filter where html = ? and kind = 'document'"), [name])
+            db_data = curs.fetchall()
+            acl_list = [['selected' if db_data and db_data[0][1] == i else '', i] for i in acl_list]
+
+            return easy_minify(flask.render_template(skin_check(),
+                imp = [load_lang('document_filter_add'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+                data =  '''
+                        <form method="post">
+                            ''' + load_lang('name') + '''
+                            <hr class="main_hr">
+                            <input value="''' + html.escape(name) + '''" type="text" name="name">
+                            <hr class="main_hr">
+                            ''' + load_lang('regex') + '''
+                            <hr class="main_hr">
+                            <input value="''' + (html.escape(db_data[0][0]) if db_data else '') + '''" type="text" name="regex">
+                            <hr class="main_hr">
+                            <a href="/acl/Test#exp">''' + load_lang('acl') + '''</a>
+                            <hr class="main_hr">
+                            <select name="acl">
+                                ''' + ''.join(['<option ' + i[0] + ' value=' + i[1] + '>' + ('normal' if i[1] == '' else i[1]) + '</option>' for i in acl_list]) + '''
+                            </select>
+                            <hr class="main_hr">
+                            <button ''' + stat + ''' type="submit">''' + load_lang('add') + '''</button>
+                        </form>
+                        ''',
+                menu = [['filter/document/list', load_lang('return')]]
+            ))

+ 13 - 0
route/filter_document_del.py

@@ -0,0 +1,13 @@
+from .tool.func import *
+
+def filter_document_del(name = ''):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        if admin_check() != 1:
+            return re_error('/error/3')
+
+        curs.execute(db_change("delete from html_filter where html = ? and kind = 'document'"), [name])
+        conn.commit()
+
+        return redirect('/filter/document/list')

+ 2 - 2
route/filter_inter_wiki.py

@@ -57,7 +57,7 @@ def inter_wiki(tool):
             div += '<tr>'
             div += '<td>'
 
-            div += data[0]
+            div += html.escape(data[0])
             if admin == 1:
                 div += ' <a href="/' + tool + '/add/' + url_pas(data[0]) + '">(' + load_lang('edit') + ')</a>'
                 div += ' <a href="/' + tool + '/del/' + url_pas(data[0]) + '">(' + load_lang('delete') + ')</a>'
@@ -65,7 +65,7 @@ def inter_wiki(tool):
             div += '</td>'
 
             if tool == 'inter_wiki':
-                div += '<td><a id="out_link" href="' + data[1] + '">' + html.escape(data[1]) + '</a></td>'
+                div += '<td><a id="out_link" href="' + html.escape(data[1]) + '">' + html.escape(data[1]) + '</a></td>'
             else:
                 div += '<td>' + html.escape(data[1]) + '</td>'
 

+ 11 - 11
route/filter_inter_wiki_add.py

@@ -4,11 +4,13 @@ def inter_wiki_add(tool, name = None):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        if not name:
-            if tool == 'plus_edit_filter':
-                return redirect('/manager/9')
+        if not name and tool == 'plus_edit_filter':
+            return redirect('/manager/9')
 
         if flask.request.method == 'POST':
+            if admin_check() != 1:
+                return re_error('/error/3')
+
             if tool == 'plus_inter_wiki':
                 if name:
                     curs.execute(db_change("delete from html_filter where html = ? and kind = 'inter_wiki'"), [name])
@@ -88,10 +90,11 @@ def inter_wiki_add(tool, name = None):
                         type_d
                     ])
 
-                curs.execute(db_change('insert into html_filter (html, kind, plus) values (?, ?, ?)'), [
+                curs.execute(db_change('insert into html_filter (html, kind, plus, plus_t) values (?, ?, ?, ?)'), [
                     flask.request.form.get('title', 'test'),
                     type_d,
-                    plus_d
+                    plus_d,
+                    ''
                 ])
 
             conn.commit()
@@ -99,10 +102,7 @@ def inter_wiki_add(tool, name = None):
             return redirect('/' + re.sub(r'^plus_', '', tool))
         else:
             get_sub = 0
-            if admin_check() != 1:
-                stat = 'disabled'
-            else:
-                stat = ''
+            stat = 'disabled' if admin_check() != 1 else ''
 
             if tool == 'plus_inter_wiki':
                 if name:
@@ -163,9 +163,9 @@ def inter_wiki_add(tool, name = None):
                 form_data = '''
                     <script>function insert_v(name, data) { document.getElementById(name).value = data; }</script>''' + insert_data + '''
                     <hr class="main_hr">
-                    <input ''' + stat + ''' placeholder="''' + load_lang('second') + '''" id="second" name="second" type="text" value="''' + html.escape(time_data) + '''">
+                    <input placeholder="''' + load_lang('second') + '''" id="second" name="second" type="text" value="''' + html.escape(time_data) + '''">
                     <hr class="main_hr">
-                    <input ''' + stat + ''' placeholder="''' + load_lang('regex') + '''" name="content" value="''' + html.escape(textarea) + '''" type="text">
+                    <input placeholder="''' + load_lang('regex') + '''" name="content" value="''' + html.escape(textarea) + '''" type="text">
                 '''
             elif tool == 'plus_name_filter':
                 title = load_lang('id_filter_add')

+ 21 - 21
route/filter_inter_wiki_del.py

@@ -3,27 +3,27 @@ from .tool.func import *
 def inter_wiki_del(tool, name = 'Test'):
     with get_db_connect() as conn:
         curs = conn.cursor()
+        
+        if admin_check() != 1:
+            return re_error('/error/3')
 
-        if admin_check(None, tool) == 1:
-            if tool == 'del_inter_wiki':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'inter_wiki'"), [name])
-            elif tool == 'del_edit_filter':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'regex_filter'"), [name])
-            elif tool == 'del_name_filter':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'name'"), [name])
-            elif tool == 'del_file_filter':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'file'"), [name])
-            elif tool == 'del_email_filter':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'email'"), [name])
-            elif tool == 'del_image_license':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'image_license'"), [name])
-            elif tool == 'del_extension_filter':
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'extension'"), [name])
-            else:
-                curs.execute(db_change("delete from html_filter where html = ? and kind = 'edit_top'"), [name])
+        if tool == 'del_inter_wiki':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'inter_wiki'"), [name])
+        elif tool == 'del_edit_filter':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'regex_filter'"), [name])
+        elif tool == 'del_name_filter':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'name'"), [name])
+        elif tool == 'del_file_filter':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'file'"), [name])
+        elif tool == 'del_email_filter':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'email'"), [name])
+        elif tool == 'del_image_license':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'image_license'"), [name])
+        elif tool == 'del_extension_filter':
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'extension'"), [name])
+        else:
+            curs.execute(db_change("delete from html_filter where html = ? and kind = 'edit_top'"), [name])
 
-            conn.commit()
+        conn.commit()
 
-            return redirect('/' + re.sub(r'^del_', '', tool))
-        else:
-            return re_error('/error/3')
+        return redirect('/' + re.sub(r'^del_', '', tool))

+ 1 - 1
route/main_tool_admin.py

@@ -52,7 +52,7 @@ def main_tool_admin(num = 1, add_2 = ''):
                         <li><a href="/name_filter">''' + load_lang('id_filter_list') + '''</a></li>
                         <li><a href="/file_filter">''' + load_lang('file_filter_list') + '''</a></li>
                         <li><a href="/extension_filter">''' + load_lang('extension_filter_list') + '''</a></li>
-                        <li><a href="/doc_filter">''' + load_lang('doc_filter_list') + '''</a></li>
+                        <li><a href="/filter/document/list">''' + load_lang('doc_filter_list') + '''</a></li>
                     </ul>
                     <h3>2.2. ''' + load_lang('server') + '''</h2>
                     <ul class="inside_ul">

+ 7 - 0
route/tool/func.py

@@ -1148,11 +1148,18 @@ def admin_check(num = None, what = None, name = ''):
 
     return 0
 
+def get_check_acl_user():
+    curs = conn.cursor()
+
+    
+
+# 이 파트 싹다 재설계 필요
 def acl_check(name = 'test', tool = '', topic_num = '1'):
     curs = conn.cursor()
 
     ip = ip_check()
     get_ban = ban_check()
+
     acl_c = re.search(r"^user:((?:(?!\/).)*)", name) if name else None
     if tool == '' and acl_c:
         acl_n = acl_c.groups()

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-stable (stable1) (beta12) (dev23)",
+        "r_ver" : "v3.5.0 (stable1) (beta12) (dev24)",
         "c_ver" : "3500101",
         "s_ver" : "3500110"
     }