Sfoglia il codice sorgente

Merge pull request #1287 from openNAMU/dev

Dev
잉여개발기 (SPDV) 4 anni fa
parent
commit
5e307e62b6

+ 153 - 142
app.py

@@ -131,7 +131,7 @@ if data_db_set['type'] == 'mysql':
 db_data_get(data_db_set['type'])
 db_data_get(data_db_set['type'])
 load_db = get_db_connect(data_db_set)
 load_db = get_db_connect(data_db_set)
 
 
-conn = load_db()
+conn = load_db.db_load()
 curs = conn.cursor()
 curs = conn.cursor()
 
 
 setup_tool = ''
 setup_tool = ''
@@ -342,179 +342,190 @@ conn.commit()
 # Init-custom
 # Init-custom
 if os.path.exists('custom.py'):
 if os.path.exists('custom.py'):
     from custom import custom_run
     from custom import custom_run
-    custom_run(conn, app)
+    custom_run(load_db.db_get(), app)
     
     
 # Func
 # Func
 # Func-inter_wiki
 # Func-inter_wiki
-@app.route('/inter_wiki')
-def inter_wiki():
-    return inter_wiki_2(conn, 'inter_wiki')
+app.add_url_rule(
+    rule = '/inter_wiki',
+    defaults = { 
+        'conn' : load_db.db_get(), 
+        'tool' : 'inter_wiki' 
+    }, 
+    view_func = inter_wiki
+)
 
 
-@app.route('/inter_wiki/del/<name>')
-def inter_wiki_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_inter_wiki', name)
+app.add_url_rule(
+    rule = '/inter_wiki/del/<name>',
+    defaults = { 
+        'conn' : load_db.db_get(), 
+        'tool' : 'del_inter_wiki',
+        'name' : 'Test'
+    }, 
+    view_func = inter_wiki_del
+)
 
 
 @app.route('/edit_top')
 @app.route('/edit_top')
 def inter_wiki_edit_top():
 def inter_wiki_edit_top():
-    return inter_wiki_2(conn, 'edit_top')
+    return inter_wiki(load_db.db_get(), 'edit_top')
 
 
 @app.route('/edit_top/del/<name>')
 @app.route('/edit_top/del/<name>')
 def inter_wiki_edit_top_del(name = 'Test'):
 def inter_wiki_edit_top_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_edit_top', name)
+    return inter_wiki_del(load_db.db_get(), 'del_edit_top', name)
 
 
 @app.route('/image_license')
 @app.route('/image_license')
 def inter_wiki_image_license():
 def inter_wiki_image_license():
-    return inter_wiki_2(conn, 'image_license')
+    return inter_wiki(load_db.db_get(), 'image_license')
 
 
 @app.route('/image_license/del/<name>')
 @app.route('/image_license/del/<name>')
 def inter_wiki_image_license_del(name = 'Test'):
 def inter_wiki_image_license_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_image_license', name)
+    return inter_wiki_del(load_db.db_get(), 'del_image_license', name)
 
 
 @app.route('/edit_filter')
 @app.route('/edit_filter')
 def inter_wiki_edit_filter():
 def inter_wiki_edit_filter():
-    return inter_wiki_2(conn, 'edit_filter')
+    return inter_wiki(load_db.db_get(), 'edit_filter')
 
 
 @app.route('/edit_filter/del/<name>')
 @app.route('/edit_filter/del/<name>')
 def inter_wiki_edit_filter_del(name = 'Test'):
 def inter_wiki_edit_filter_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_edit_filter', name)
+    return inter_wiki_del(load_db.db_get(), 'del_edit_filter', name)
 
 
 @app.route('/email_filter')
 @app.route('/email_filter')
 def inter_wiki_email_filter():
 def inter_wiki_email_filter():
-    return inter_wiki_2(conn, 'email_filter')
+    return inter_wiki(load_db.db_get(), 'email_filter')
 
 
 @app.route('/email_filter/del/<name>')
 @app.route('/email_filter/del/<name>')
 def inter_wiki_email_filter_del(name = 'Test'):
 def inter_wiki_email_filter_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_email_filter', name)
+    return inter_wiki_del(load_db.db_get(), 'del_email_filter', name)
 
 
 @app.route('/file_filter')
 @app.route('/file_filter')
 def inter_wiki_file_filter():
 def inter_wiki_file_filter():
-    return inter_wiki_2(conn, 'file_filter')
+    return inter_wiki(load_db.db_get(), 'file_filter')
 
 
 @app.route('/file_filter/del/<name>')
 @app.route('/file_filter/del/<name>')
 def inter_wiki_file_filter_del(name = 'Test'):
 def inter_wiki_file_filter_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_file_filter', name)
+    return inter_wiki_del(load_db.db_get(), 'del_file_filter', name)
 
 
 @app.route('/name_filter')
 @app.route('/name_filter')
 def inter_wiki_name_filter():
 def inter_wiki_name_filter():
-    return inter_wiki_2(conn, 'name_filter')
+    return inter_wiki(load_db.db_get(), 'name_filter')
 
 
 @app.route('/name_filter/del/<name>')
 @app.route('/name_filter/del/<name>')
 def inter_wiki_name_filter_del(name = 'Test'):
 def inter_wiki_name_filter_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_name_filter', name)
+    return inter_wiki_del(load_db.db_get(), 'del_name_filter', name)
 
 
 @app.route('/extension_filter')
 @app.route('/extension_filter')
 def inter_wiki_extension_filter():
 def inter_wiki_extension_filter():
-    return inter_wiki_2(conn, 'extension_filter')
+    return inter_wiki(load_db.db_get(), 'extension_filter')
 
 
 @app.route('/extension_filter/del/<name>')
 @app.route('/extension_filter/del/<name>')
 def inter_wiki_extension_filter_del(name = 'Test'):
 def inter_wiki_extension_filter_del(name = 'Test'):
-    return inter_wiki_del_2(conn, 'del_extension_filter', name)
+    return inter_wiki_del(load_db.db_get(), 'del_extension_filter', name)
 
 
 @app.route('/<regex("(?:inter_wiki|edit_top|image_license|(?:edit|email|file|name|extension)_filter)"):tools>/add', methods = ['POST', 'GET'])
 @app.route('/<regex("(?:inter_wiki|edit_top|image_license|(?:edit|email|file|name|extension)_filter)"):tools>/add', methods = ['POST', 'GET'])
 @app.route('/<regex("(?:inter_wiki|edit_top|image_license|(?:edit|email|file|name|extension)_filter)"):tools>/add/<name>', methods = ['POST', 'GET'])
 @app.route('/<regex("(?:inter_wiki|edit_top|image_license|(?:edit|email|file|name|extension)_filter)"):tools>/add/<name>', methods = ['POST', 'GET'])
 def inter_wiki_plus(tools = None, name = None):
 def inter_wiki_plus(tools = None, name = None):
-    return inter_wiki_plus_2(conn, 'plus_' + tools, name)
+    return inter_wiki_plus_2(load_db.db_get(), 'plus_' + tools, name)
 
 
 # Func-list
 # Func-list
 # /list/topic/open
 # /list/topic/open
 @app.route('/not_close_topic')
 @app.route('/not_close_topic')
 def list_not_close_topic():
 def list_not_close_topic():
-    return list_not_close_topic_2(conn)
+    return list_not_close_topic_2(load_db.db_get())
 
 
 # /list/document/old
 # /list/document/old
 @app.route('/old_page')
 @app.route('/old_page')
 def list_old_page():
 def list_old_page():
-    return list_old_page_2(conn)
+    return list_old_page_2(load_db.db_get())
 
 
 # /list/document/acl
 # /list/document/acl
 @app.route('/acl_list')
 @app.route('/acl_list')
 def list_acl():
 def list_acl():
-    return list_acl_2(conn)
+    return list_acl_2(load_db.db_get())
 
 
 # /list/document/acl/add
 # /list/document/acl/add
 @app.route('/acl/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/acl/<everything:name>', methods = ['POST', 'GET'])
 def give_acl(name = None):
 def give_acl(name = None):
-    return give_acl_2(conn, name)
+    return give_acl_2(load_db.db_get(), name)
 
 
 # /list/document/need
 # /list/document/need
 @app.route('/please')
 @app.route('/please')
 def list_please():
 def list_please():
-    return list_please_2(conn)
+    return list_please_2(load_db.db_get())
 
 
 # /list/document/all
 # /list/document/all
 @app.route('/title_index')
 @app.route('/title_index')
 def list_title_index():
 def list_title_index():
-    return list_title_index_2(conn)
+    return list_title_index_2(load_db.db_get())
 
 
 # /list/document/long
 # /list/document/long
 @app.route('/long_page')
 @app.route('/long_page')
 def list_long_page():
 def list_long_page():
-    return list_long_page_2(conn, 'long_page')
+    return list_long_page_2(load_db.db_get(), 'long_page')
 
 
 # /list/document/short
 # /list/document/short
 @app.route('/short_page')
 @app.route('/short_page')
 def list_short_page():
 def list_short_page():
-    return list_long_page_2(conn, 'short_page')
+    return list_long_page_2(load_db.db_get(), 'short_page')
 
 
 # /list/file
 # /list/file
 @app.route('/image_file_list')
 @app.route('/image_file_list')
 def list_image_file():
 def list_image_file():
-    return list_image_file_2(conn)
+    return list_image_file_2(load_db.db_get())
 
 
 # /list/admin
 # /list/admin
 # /list/admin/list
 # /list/admin/list
 @app.route('/admin_list')
 @app.route('/admin_list')
 def list_admin():
 def list_admin():
-    return list_admin_2(conn)
+    return list_admin_2(load_db.db_get())
 
 
 # /list/admin/auth_use
 # /list/admin/auth_use
 @app.route('/admin_log', methods = ['POST', 'GET'])
 @app.route('/admin_log', methods = ['POST', 'GET'])
 def list_admin_use():
 def list_admin_use():
-    return list_admin_use_2(conn)
+    return list_admin_use_2(load_db.db_get())
 
 
 # /list/user
 # /list/user
 @app.route('/user_log')
 @app.route('/user_log')
 def list_user():
 def list_user():
-    return list_user_2(conn)
+    return list_user_2(load_db.db_get())
 
 
 # /list/user/check
 # /list/user/check
 @app.route('/check/<name>')
 @app.route('/check/<name>')
 def give_user_check(name = None):
 def give_user_check(name = None):
-    return give_user_check_2(conn, name)
+    return give_user_check_2(load_db.db_get(), name)
     
     
 # /list/user/check/delete
 # /list/user/check/delete
 @app.route('/check_delete', methods = ['POST', 'GET'])
 @app.route('/check_delete', methods = ['POST', 'GET'])
 def give_user_check_delete():
 def give_user_check_delete():
-    return give_user_check_delete_2(conn)
+    return give_user_check_delete_2(load_db.db_get())
 
 
 # Func-auth
 # Func-auth
 # /auth/give
 # /auth/give
 # /auth/give/<name>
 # /auth/give/<name>
 @app.route('/admin/<name>', methods = ['POST', 'GET'])
 @app.route('/admin/<name>', methods = ['POST', 'GET'])
 def give_admin(name = None):
 def give_admin(name = None):
-    return give_admin_2(conn, name)
+    return give_admin_2(load_db.db_get(), name)
 
 
 # /auth/give
 # /auth/give
 # /auth/give/<name>
 # /auth/give/<name>
 @app.route('/ban', methods = ['POST', 'GET'])
 @app.route('/ban', methods = ['POST', 'GET'])
 @app.route('/ban/<name>', methods = ['POST', 'GET'])
 @app.route('/ban/<name>', methods = ['POST', 'GET'])
 def give_user_ban(name = None):
 def give_user_ban(name = None):
-    return give_user_ban_2(conn, name)
+    return give_user_ban_2(load_db.db_get(), name)
 
 
 # /auth/list
 # /auth/list
 @app.route('/admin_group')
 @app.route('/admin_group')
 def list_admin_group():
 def list_admin_group():
-    return list_admin_group_2(conn)
+    return list_admin_group_2(load_db.db_get())
 
 
 # /auth/list/add/<name>
 # /auth/list/add/<name>
 @app.route('/admin_plus/<name>', methods = ['POST', 'GET'])
 @app.route('/admin_plus/<name>', methods = ['POST', 'GET'])
 def give_admin_groups(name = None):
 def give_admin_groups(name = None):
-    return give_admin_groups_2(conn, name)
+    return give_admin_groups_2(load_db.db_get(), name)
 
 
 # /auth/list/delete/<name>
 # /auth/list/delete/<name>
 @app.route('/delete_admin_group/<name>', methods = ['POST', 'GET'])
 @app.route('/delete_admin_group/<name>', methods = ['POST', 'GET'])
 def give_delete_admin_group(name = None):
 def give_delete_admin_group(name = None):
-    return give_delete_admin_group_2(conn, name)
+    return give_delete_admin_group_2(load_db.db_get(), name)
 
 
 # /auth/history
 # /auth/history
 # ongoing 반영 필요
 # ongoing 반영 필요
@@ -522,230 +533,230 @@ def give_delete_admin_group(name = None):
 @app.route('/block_log/<regex("user"):tool>/<name>')
 @app.route('/block_log/<regex("user"):tool>/<name>')
 @app.route('/block_log/<regex("admin"):tool>/<name>')
 @app.route('/block_log/<regex("admin"):tool>/<name>')
 def recent_block(name = 'Test', tool = 'all'):
 def recent_block(name = 'Test', tool = 'all'):
-    return recent_block_2(conn, name, tool)
+    return recent_block_2(load_db.db_get(), name, tool)
 
 
 # Func-history
 # Func-history
 @app.route('/recent_change')
 @app.route('/recent_change')
 @app.route('/recent_changes')
 @app.route('/recent_changes')
 def recent_change(name = None):
 def recent_change(name = None):
-    return recent_change_2(conn, name, '')
+    return recent_change_2(load_db.db_get(), name, '')
 
 
 @app.route('/record/<name>')
 @app.route('/record/<name>')
 def recent_record(name = None):
 def recent_record(name = None):
-    return recent_change_2(conn, name, 'record')
+    return recent_change_2(load_db.db_get(), name, 'record')
 
 
 @app.route('/history/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/history/<everything:name>', methods = ['POST', 'GET'])
 def recent_history(name = None):
 def recent_history(name = None):
-    return recent_change_2(conn, name, 'history')
+    return recent_change_2(load_db.db_get(), name, 'history')
 
 
 @app.route('/history/tool/<int(signed=True):rev>/<everything:name>')
 @app.route('/history/tool/<int(signed=True):rev>/<everything:name>')
 def recent_history_tool(name = 'Test', rev = 1):
 def recent_history_tool(name = 'Test', rev = 1):
-    return recent_history_tool_2(conn, name, rev)
+    return recent_history_tool_2(load_db.db_get(), name, rev)
 
 
 @app.route('/history/delete/<int(signed=True):rev>/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/history/delete/<int(signed=True):rev>/<everything:name>', methods = ['POST', 'GET'])
 def recent_history_delete(name = 'Test', rev = 1):
 def recent_history_delete(name = 'Test', rev = 1):
-    return recent_history_delete_2(conn, name, rev)
+    return recent_history_delete_2(load_db.db_get(), name, rev)
 
 
 @app.route('/history/hidden/<int(signed=True):rev>/<everything:name>')
 @app.route('/history/hidden/<int(signed=True):rev>/<everything:name>')
 def recent_history_hidden(name = 'Test', rev = 1):
 def recent_history_hidden(name = 'Test', rev = 1):
-    return recent_history_hidden_2(conn, name, rev)
+    return recent_history_hidden_2(load_db.db_get(), name, rev)
 
 
 @app.route('/history/send/<int(signed=True):rev>/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/history/send/<int(signed=True):rev>/<everything:name>', methods = ['POST', 'GET'])
 def recent_history_send(name = 'Test', rev = 1):
 def recent_history_send(name = 'Test', rev = 1):
-    return recent_history_send_2(conn, name, rev)
+    return recent_history_send_2(load_db.db_get(), name, rev)
 
 
 @app.route('/history/reset/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/history/reset/<everything:name>', methods = ['POST', 'GET'])
 def recent_history_reset(name = 'Test'):
 def recent_history_reset(name = 'Test'):
-    return recent_history_reset_2(conn, name)
+    return recent_history_reset_2(load_db.db_get(), name)
 
 
 @app.route('/history/add/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/history/add/<everything:name>', methods = ['POST', 'GET'])
 def recent_history_add(name = 'Test'):
 def recent_history_add(name = 'Test'):
-    return recent_history_add_2(conn, name)
+    return recent_history_add_2(load_db.db_get(), name)
 
 
 @app.route('/record/reset/<name>', methods = ['POST', 'GET'])
 @app.route('/record/reset/<name>', methods = ['POST', 'GET'])
 def recent_record_reset(name = 'Test'):
 def recent_record_reset(name = 'Test'):
-    return recent_record_reset_2(conn, name)
+    return recent_record_reset_2(load_db.db_get(), name)
 
 
 @app.route('/record/topic/<name>')
 @app.route('/record/topic/<name>')
 def recent_record_topic(name = 'Test'):
 def recent_record_topic(name = 'Test'):
-    return recent_record_topic_2(conn, name)
+    return recent_record_topic_2(load_db.db_get(), name)
 
 
 # 거처를 고심중
 # 거처를 고심중
 @app.route('/app_submit', methods = ['POST', 'GET'])
 @app.route('/app_submit', methods = ['POST', 'GET'])
 def recent_app_submit():
 def recent_app_submit():
-    return recent_app_submit_2(conn)
+    return recent_app_submit_2(load_db.db_get())
 
 
 # Func-search
 # Func-search
 @app.route('/search', methods=['POST'])
 @app.route('/search', methods=['POST'])
 def search():
 def search():
-    return search_2(conn)
+    return search_2(load_db.db_get())
 
 
 @app.route('/goto', methods=['POST'])
 @app.route('/goto', methods=['POST'])
 @app.route('/goto/<everything:name>', methods=['POST'])
 @app.route('/goto/<everything:name>', methods=['POST'])
 def search_goto(name = 'test'):
 def search_goto(name = 'test'):
-    return search_goto_2(conn, name)
+    return search_goto_2(load_db.db_get(), name)
 
 
 @app.route('/search/<everything:name>')
 @app.route('/search/<everything:name>')
 def search_deep(name = 'test'):
 def search_deep(name = 'test'):
-    return search_deep_2(conn, name)
+    return search_deep_2(load_db.db_get(), name)
 
 
 # Func-view
 # Func-view
 @app.route('/xref/<everything:name>')
 @app.route('/xref/<everything:name>')
 def view_xref(name = 'Test'):
 def view_xref(name = 'Test'):
-    return view_xref_2(conn, name)
+    return view_xref_2(load_db.db_get(), name)
 
 
 @app.route('/xref/this/<everything:name>')
 @app.route('/xref/this/<everything:name>')
 def view_xref_this(name = 'Test'):
 def view_xref_this(name = 'Test'):
-    return view_xref_2(conn, name, xref_type = '2')
+    return view_xref_2(load_db.db_get(), name, xref_type = '2')
 
 
 @app.route('/raw/<everything:name>')
 @app.route('/raw/<everything:name>')
 @app.route('/thread/<int:topic_num>/raw/<int:num>')
 @app.route('/thread/<int:topic_num>/raw/<int:num>')
 def view_raw(name = None, topic_num = None, num = None):
 def view_raw(name = None, topic_num = None, num = None):
-    return view_raw_2(conn, name, topic_num, num)
+    return view_raw_2(load_db.db_get(), name, topic_num, num)
 
 
 @app.route('/diff/<int:num_a>/<int:num_b>/<everything:name>')
 @app.route('/diff/<int:num_a>/<int:num_b>/<everything:name>')
 def view_diff(name = 'Test', num_a = 1, num_b = 1):
 def view_diff(name = 'Test', num_a = 1, num_b = 1):
-    return view_diff_2(conn, name, num_a, num_b)
+    return view_diff_2(load_db.db_get(), name, num_a, num_b)
 
 
 @app.route('/down/<everything:name>')
 @app.route('/down/<everything:name>')
 def view_down(name = None):
 def view_down(name = None):
-    return view_down_2(conn, name)
+    return view_down_2(load_db.db_get(), name)
 
 
 @app.route('/w/<everything:name>/doc_rev/<int:doc_rev>')
 @app.route('/w/<everything:name>/doc_rev/<int:doc_rev>')
 @app.route('/w/<everything:name>/doc_from/<everything:doc_from>')
 @app.route('/w/<everything:name>/doc_from/<everything:doc_from>')
 @app.route('/w/<everything:name>')
 @app.route('/w/<everything:name>')
 def view_read(name = 'Test', doc_rev = 0, doc_from = ''):
 def view_read(name = 'Test', doc_rev = 0, doc_from = ''):
-    return view_read_2(conn, name, doc_rev, doc_from)
+    return view_read_2(load_db.db_get(), name, doc_rev, doc_from)
 
 
 # Func-edit
 # Func-edit
 @app.route('/revert/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/revert/<everything:name>', methods = ['POST', 'GET'])
 def edit_revert(name = None):
 def edit_revert(name = None):
-    return edit_revert_2(conn, name)
+    return edit_revert_2(load_db.db_get(), name)
 
 
 @app.route('/edit/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/edit/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/edit/<everything:name>/doc_section/<int:section>', methods = ['POST', 'GET'])
 @app.route('/edit/<everything:name>/doc_section/<int:section>', methods = ['POST', 'GET'])
 def edit(name = 'Test', section = 0):
 def edit(name = 'Test', section = 0):
-    return edit_2(conn, name, section)
+    return edit_2(load_db.db_get(), name, section)
 
 
 @app.route('/backlink_reset/<everything:name>')
 @app.route('/backlink_reset/<everything:name>')
 def edit_backlink_reset(name = 'Test'):
 def edit_backlink_reset(name = 'Test'):
-    return edit_backlink_reset_2(conn, name)
+    return edit_backlink_reset_2(load_db.db_get(), name)
 
 
 @app.route('/delete/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/delete/<everything:name>', methods = ['POST', 'GET'])
 def edit_delete(name = None):
 def edit_delete(name = None):
-    return edit_delete_2(conn, name)
+    return edit_delete_2(load_db.db_get(), name)
 
 
 @app.route('/delete/doc_file/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/delete/doc_file/<everything:name>', methods = ['POST', 'GET'])
 def edit_delete_file(name = 'test.jpg'):
 def edit_delete_file(name = 'test.jpg'):
-    return edit_delete_file_2(conn, name)
+    return edit_delete_file_2(load_db.db_get(), name)
 
 
 @app.route('/delete/doc_mutiple', methods = ['POST', 'GET'])
 @app.route('/delete/doc_mutiple', methods = ['POST', 'GET'])
 def edit_delete_mutiple():
 def edit_delete_mutiple():
-    return edit_delete_mutiple_2(conn)
+    return edit_delete_mutiple_2(load_db.db_get())
 
 
 @app.route('/move/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/move/<everything:name>', methods = ['POST', 'GET'])
 def edit_move(name = None):
 def edit_move(name = None):
-    return edit_move_2(conn, name)
+    return edit_move_2(load_db.db_get(), name)
 
 
 # Func-topic
 # Func-topic
 @app.route('/recent_discuss')
 @app.route('/recent_discuss')
 def recent_discuss():
 def recent_discuss():
-    return recent_discuss_2(conn)
+    return recent_discuss_2(load_db.db_get())
 
 
 @app.route('/thread/<int:topic_num>/b/<int:num>')
 @app.route('/thread/<int:topic_num>/b/<int:num>')
 def topic_block(topic_num = 1, num = 1):
 def topic_block(topic_num = 1, num = 1):
-    return topic_block_2(conn, topic_num, num)
+    return topic_block_2(load_db.db_get(), topic_num, num)
 
 
 @app.route('/thread/<int:topic_num>/notice/<int:num>')
 @app.route('/thread/<int:topic_num>/notice/<int:num>')
 def topic_top(topic_num = 1, num = 1):
 def topic_top(topic_num = 1, num = 1):
-    return topic_top_2(conn, topic_num, num)
+    return topic_top_2(load_db.db_get(), topic_num, num)
 
 
 @app.route('/thread/<int:topic_num>/setting', methods = ['POST', 'GET'])
 @app.route('/thread/<int:topic_num>/setting', methods = ['POST', 'GET'])
 def topic_stop(topic_num = 1):
 def topic_stop(topic_num = 1):
-    return topic_stop_2(conn, topic_num)
+    return topic_stop_2(load_db.db_get(), topic_num)
 
 
 @app.route('/thread/<int:topic_num>/acl', methods = ['POST', 'GET'])
 @app.route('/thread/<int:topic_num>/acl', methods = ['POST', 'GET'])
 def topic_acl(topic_num = 1):
 def topic_acl(topic_num = 1):
-    return topic_acl_2(conn, topic_num)
+    return topic_acl_2(load_db.db_get(), topic_num)
 
 
 @app.route('/thread/<int:topic_num>/delete', methods = ['POST', 'GET'])
 @app.route('/thread/<int:topic_num>/delete', methods = ['POST', 'GET'])
 def topic_delete(topic_num = 1):
 def topic_delete(topic_num = 1):
-    return topic_delete_2(conn, topic_num)
+    return topic_delete_2(load_db.db_get(), topic_num)
 
 
 @app.route('/thread/<int:topic_num>/tool')
 @app.route('/thread/<int:topic_num>/tool')
 def topic_tool(topic_num = 1):
 def topic_tool(topic_num = 1):
-    return topic_tool_2(conn, topic_num)
+    return topic_tool_2(load_db.db_get(), topic_num)
 
 
 @app.route('/thread/<int:topic_num>/change', methods = ['POST', 'GET'])
 @app.route('/thread/<int:topic_num>/change', methods = ['POST', 'GET'])
 def topic_change(topic_num = 1):
 def topic_change(topic_num = 1):
-    return topic_change_2(conn, topic_num)
+    return topic_change_2(load_db.db_get(), topic_num)
 
 
 @app.route('/thread/<int:topic_num>/admin/<int:num>')
 @app.route('/thread/<int:topic_num>/admin/<int:num>')
 def topic_admin(topic_num = 1, num = 1):
 def topic_admin(topic_num = 1, num = 1):
-    return topic_admin_2(conn, topic_num, num)
+    return topic_admin_2(load_db.db_get(), topic_num, num)
 
 
 @app.route('/thread/<int:topic_num>', methods = ['POST', 'GET'])
 @app.route('/thread/<int:topic_num>', methods = ['POST', 'GET'])
 def topic(topic_num = 1):
 def topic(topic_num = 1):
-    return topic_2(conn, topic_num)
+    return topic_2(load_db.db_get(), topic_num)
 
 
 @app.route('/topic/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/topic/<everything:name>', methods = ['POST', 'GET'])
 def topic_close_list(name = 'test'):
 def topic_close_list(name = 'test'):
-    return topic_close_list_2(conn, name)
+    return topic_close_list_2(load_db.db_get(), name)
 
 
 # Func-user
 # Func-user
 @app.route('/change', methods = ['POST', 'GET'])
 @app.route('/change', methods = ['POST', 'GET'])
 def user_setting():
 def user_setting():
-    return user_setting_2(conn, server_set_var)
+    return user_setting_2(load_db.db_get(), server_set_var)
 
 
 @app.route('/change/email', methods = ['POST', 'GET'])
 @app.route('/change/email', methods = ['POST', 'GET'])
 def user_setting_email():
 def user_setting_email():
-    return user_setting_email_2(conn)
+    return user_setting_email_2(load_db.db_get())
 
 
 @app.route('/change/email/check', methods = ['POST', 'GET'])
 @app.route('/change/email/check', methods = ['POST', 'GET'])
 def user_setting_email_check():
 def user_setting_email_check():
-    return user_setting_email_check_2(conn)
+    return user_setting_email_check_2(load_db.db_get())
 
 
 @app.route('/change/pw', methods = ['POST', 'GET'])
 @app.route('/change/pw', methods = ['POST', 'GET'])
 def user_setting_pw_change():
 def user_setting_pw_change():
-    return user_setting_pw_change_2(conn)
+    return user_setting_pw_change_2(load_db.db_get())
 
 
 @app.route('/change/head', methods=['GET', 'POST'])
 @app.route('/change/head', methods=['GET', 'POST'])
 def user_setting_head():
 def user_setting_head():
-    return user_setting_head_2(conn)
+    return user_setting_head_2(load_db.db_get())
 
 
 @app.route('/user')
 @app.route('/user')
 @app.route('/user/<name>')
 @app.route('/user/<name>')
 def user_info(name = ''):
 def user_info(name = ''):
-    return user_info_2(conn, name)
+    return user_info_2(load_db.db_get(), name)
 
 
 @app.route('/count')
 @app.route('/count')
 @app.route('/count/<name>')
 @app.route('/count/<name>')
 def user_count_edit(name = None):
 def user_count_edit(name = None):
-    return user_count_edit_2(conn, name)
+    return user_count_edit_2(load_db.db_get(), name)
     
     
 @app.route('/alarm')
 @app.route('/alarm')
 def user_alarm():
 def user_alarm():
-    return user_alarm_2(conn)
+    return user_alarm_2(load_db.db_get())
 
 
 @app.route('/alarm/delete')
 @app.route('/alarm/delete')
 def user_alarm_del():
 def user_alarm_del():
-    return user_alarm_del_2(conn)
+    return user_alarm_del_2(load_db.db_get())
     
     
 @app.route('/watch_list')
 @app.route('/watch_list')
 def user_watch_list():
 def user_watch_list():
-    return user_watch_list_2(conn, 'watch_list')
+    return user_watch_list_2(load_db.db_get(), 'watch_list')
 
 
 @app.route('/watch_list/<everything:name>')
 @app.route('/watch_list/<everything:name>')
 def user_watch_list_name(name = 'Test'):
 def user_watch_list_name(name = 'Test'):
-    return user_watch_list_name_2(conn, 'watch_list', name)
+    return user_watch_list_name_2(load_db.db_get(), 'watch_list', name)
 
 
 @app.route('/star_doc')
 @app.route('/star_doc')
 def user_star_doc():
 def user_star_doc():
-    return user_watch_list_2(conn, 'star_doc')
+    return user_watch_list_2(load_db.db_get(), 'star_doc')
 
 
 @app.route('/star_doc/<everything:name>')
 @app.route('/star_doc/<everything:name>')
 def user_star_doc_name(name = 'Test'):
 def user_star_doc_name(name = 'Test'):
-    return user_watch_list_name_2(conn, 'star_doc', name)
+    return user_watch_list_name_2(load_db.db_get(), 'star_doc', name)
 
 
 # Func-login
 # Func-login
 # 개편 예정
 # 개편 예정
@@ -756,208 +767,208 @@ def user_star_doc_name(name = 'Test'):
 
 
 @app.route('/login', methods = ['POST', 'GET'])
 @app.route('/login', methods = ['POST', 'GET'])
 def login_login():
 def login_login():
-    return login_login_2(conn)
+    return login_login_2(load_db.db_get())
 
 
 @app.route('/login/2fa', methods = ['POST', 'GET'])
 @app.route('/login/2fa', methods = ['POST', 'GET'])
 def login_login_2fa():
 def login_login_2fa():
-    return login_login_2fa_2(conn)
+    return login_login_2fa_2(load_db.db_get())
 
 
 '''
 '''
 @app.route('/login/2fa/email', methods = ['POST', 'GET'])
 @app.route('/login/2fa/email', methods = ['POST', 'GET'])
 def login_2fa_email():
 def login_2fa_email():
-    return login_login_2fa_email_2(conn)
+    return login_login_2fa_email_2(load_db.db_get())
 '''
 '''
 
 
 @app.route('/register', methods = ['POST', 'GET'])
 @app.route('/register', methods = ['POST', 'GET'])
 def login_register():
 def login_register():
-    return login_register_2(conn)
+    return login_register_2(load_db.db_get())
 
 
 @app.route('/register/email', methods = ['POST', 'GET'])
 @app.route('/register/email', methods = ['POST', 'GET'])
 def login_register_email():
 def login_register_email():
-    return login_register_email_2(conn)
+    return login_register_email_2(load_db.db_get())
 
 
 @app.route('/register/email/check', methods = ['POST', 'GET'])
 @app.route('/register/email/check', methods = ['POST', 'GET'])
 def login_register_email_check():
 def login_register_email_check():
-    return login_register_email_check_2(conn)
+    return login_register_email_check_2(load_db.db_get())
 
 
 @app.route('/register/submit', methods = ['POST', 'GET'])
 @app.route('/register/submit', methods = ['POST', 'GET'])
 def login_register_submit():
 def login_register_submit():
-    return login_register_submit_2(conn)
+    return login_register_submit_2(load_db.db_get())
 
 
 # 개편 필요
 # 개편 필요
 @app.route('/pass_find', methods = ['POST', 'GET'])
 @app.route('/pass_find', methods = ['POST', 'GET'])
 def login_pass_find():
 def login_pass_find():
-    return login_pass_find_2(conn, 'pass_find')
+    return login_pass_find_2(load_db.db_get(), 'pass_find')
 
 
 @app.route('/pass_find/email', methods = ['POST', 'GET'])
 @app.route('/pass_find/email', methods = ['POST', 'GET'])
 def login_pass_find_email():
 def login_pass_find_email():
-    return login_pass_find_email_2(conn, 'check_key')
+    return login_pass_find_email_2(load_db.db_get(), 'check_key')
 
 
 @app.route('/logout')
 @app.route('/logout')
 def login_logout():
 def login_logout():
-    return login_logout_2(conn)
+    return login_logout_2(load_db.db_get())
 
 
 # Func-vote
 # Func-vote
 @app.route('/vote/<int:num>', methods = ['POST', 'GET'])
 @app.route('/vote/<int:num>', methods = ['POST', 'GET'])
 def vote_select(num = 1):
 def vote_select(num = 1):
-    return vote_select_2(conn, str(num))
+    return vote_select_2(load_db.db_get(), str(num))
 
 
 @app.route('/vote/end/<int:num>')
 @app.route('/vote/end/<int:num>')
 def vote_end(num = 1):
 def vote_end(num = 1):
-    return vote_end_2(conn, str(num))
+    return vote_end_2(load_db.db_get(), str(num))
 
 
 @app.route('/vote/close/<int:num>')
 @app.route('/vote/close/<int:num>')
 def vote_close(num = 1):
 def vote_close(num = 1):
-    return vote_close_2(conn, str(num))
+    return vote_close_2(load_db.db_get(), str(num))
 
 
 @app.route('/vote')
 @app.route('/vote')
 @app.route('/vote/list')
 @app.route('/vote/list')
 @app.route('/vote/list/<int:num>')
 @app.route('/vote/list/<int:num>')
 def vote_list(num = 1):
 def vote_list(num = 1):
-    return vote_list_2(conn, 'normal', num)
+    return vote_list_2(load_db.db_get(), 'normal', num)
 
 
 @app.route('/vote/list/close')
 @app.route('/vote/list/close')
 @app.route('/vote/list/close/<int:num>')
 @app.route('/vote/list/close/<int:num>')
 def vote_list_close(num = 1):
 def vote_list_close(num = 1):
-    return vote_list_2(conn, 'close', num)
+    return vote_list_2(load_db.db_get(), 'close', num)
 
 
 @app.route('/vote/add', methods = ['POST', 'GET'])
 @app.route('/vote/add', methods = ['POST', 'GET'])
 def vote_add():
 def vote_add():
-    return vote_add_2(conn)
+    return vote_add_2(load_db.db_get())
 
 
 # Func-api
 # Func-api
 @app.route('/api/w/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/api/w/<everything:name>', methods = ['POST', 'GET'])
 def api_w(name = ''):
 def api_w(name = ''):
-    return api_w_2(conn, name)
+    return api_w_2(load_db.db_get(), name)
 
 
 @app.route('/api/raw/<everything:name>')
 @app.route('/api/raw/<everything:name>')
 def api_raw(name = ''):
 def api_raw(name = ''):
-    return api_raw_2(conn, name)
+    return api_raw_2(load_db.db_get(), name)
 
 
 @app.route('/api/version')
 @app.route('/api/version')
 def api_version():
 def api_version():
-    return api_version_2(conn, version_list)
+    return api_version_2(load_db.db_get(), version_list)
 
 
 @app.route('/api/skin_info')
 @app.route('/api/skin_info')
 @app.route('/api/skin_info/<name>')
 @app.route('/api/skin_info/<name>')
 def api_skin_info(name = ''):
 def api_skin_info(name = ''):
-    return api_skin_info_2(conn, name)
+    return api_skin_info_2(load_db.db_get(), name)
 
 
 @app.route('/api/markup')
 @app.route('/api/markup')
 def api_markup():
 def api_markup():
-    return api_markup_2(conn)
+    return api_markup_2(load_db.db_get())
 
 
 @app.route('/api/user_info/<name>')
 @app.route('/api/user_info/<name>')
 def api_user_info(name = ''):
 def api_user_info(name = ''):
-    return api_user_info_2(conn, name)
+    return api_user_info_2(load_db.db_get(), name)
 
 
 @app.route('/api/thread/<topic_num>')
 @app.route('/api/thread/<topic_num>')
 def api_topic_sub(name = '', topic_num = 1):
 def api_topic_sub(name = '', topic_num = 1):
-    return api_topic_sub_2(conn, topic_num)
+    return api_topic_sub_2(load_db.db_get(), topic_num)
 
 
 @app.route('/api/search/<name>')
 @app.route('/api/search/<name>')
 def api_search(name = ''):
 def api_search(name = ''):
-    return api_search_2(conn, name)
+    return api_search_2(load_db.db_get(), name)
 
 
 @app.route('/api/recent_changes')
 @app.route('/api/recent_changes')
 def api_recent_change():
 def api_recent_change():
-    return api_recent_change_2(conn)
+    return api_recent_change_2(load_db.db_get())
 
 
 @app.route('/api/recent_discuss')
 @app.route('/api/recent_discuss')
 @app.route('/api/recent_discuss/<int:num>')
 @app.route('/api/recent_discuss/<int:num>')
 def api_recent_discuss(num = 10):
 def api_recent_discuss(num = 10):
-    return api_recent_discuss_2(conn, num, 'normal')
+    return api_recent_discuss_2(load_db.db_get(), num, 'normal')
 
 
 @app.route('/api/recent_discuss/stop')
 @app.route('/api/recent_discuss/stop')
 @app.route('/api/recent_discuss/<int:num>/stop')
 @app.route('/api/recent_discuss/<int:num>/stop')
 def api_recent_discuss_stop(num = 10):
 def api_recent_discuss_stop(num = 10):
-    return api_recent_discuss_2(conn, num, 'stop')
+    return api_recent_discuss_2(load_db.db_get(), num, 'stop')
 
 
 @app.route('/api/recent_discuss/all')
 @app.route('/api/recent_discuss/all')
 @app.route('/api/recent_discuss/<int:num>/all')
 @app.route('/api/recent_discuss/<int:num>/all')
 def api_recent_discuss_all(num = 10):
 def api_recent_discuss_all(num = 10):
-    return api_recent_discuss_2(conn, num, 'all')
+    return api_recent_discuss_2(load_db.db_get(), num, 'all')
 
 
 @app.route('/api/sha224/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/api/sha224/<everything:name>', methods = ['POST', 'GET'])
 def api_sha224(name = 'test'):
 def api_sha224(name = 'test'):
-    return api_sha224_2(conn, name)
+    return api_sha224_2(load_db.db_get(), name)
 
 
 @app.route('/api/title_index')
 @app.route('/api/title_index')
 def api_title_index():
 def api_title_index():
-    return api_title_index_2(conn)
+    return api_title_index_2(load_db.db_get())
 
 
 @app.route('/api/image/<everything:name>', methods = ['POST', 'GET'])
 @app.route('/api/image/<everything:name>', methods = ['POST', 'GET'])
 def api_image_view(name = ''):
 def api_image_view(name = ''):
-    return api_image_view_2(conn, name)
+    return api_image_view_2(load_db.db_get(), name)
 
 
 @app.route('/api/sitemap.xml')
 @app.route('/api/sitemap.xml')
 def api_sitemap():
 def api_sitemap():
-    return api_sitemap_2(conn)
+    return api_sitemap_2(load_db.db_get())
 
 
 # Func-main
 # Func-main
 # 여기도 전반적인 조정 시행 예정
 # 여기도 전반적인 조정 시행 예정
 @app.route('/restart', methods = ['POST', 'GET'])
 @app.route('/restart', methods = ['POST', 'GET'])
 def main_restart():
 def main_restart():
-    return main_restart_2(conn)
+    return main_restart_2(load_db.db_get())
 
 
 @app.route('/update', methods=['GET', 'POST'])
 @app.route('/update', methods=['GET', 'POST'])
 def main_update():
 def main_update():
-    return main_update_2(conn, version_list['beta']['r_ver'])
+    return main_update_2(load_db.db_get(), version_list['beta']['r_ver'])
 
 
 @app.route('/random')
 @app.route('/random')
 def main_title_random():
 def main_title_random():
-    return main_title_random_2(conn)
+    return main_title_random_2(load_db.db_get())
 
 
 @app.route('/upload', methods=['GET', 'POST'])
 @app.route('/upload', methods=['GET', 'POST'])
 def main_upload():
 def main_upload():
-    return main_upload_2(conn)
+    return main_upload_2(load_db.db_get())
 
 
 @app.route('/setting')
 @app.route('/setting')
 @app.route('/setting/<int:num>', methods = ['POST', 'GET'])
 @app.route('/setting/<int:num>', methods = ['POST', 'GET'])
 def setting(num = 0):
 def setting(num = 0):
-    return main_setting_2(conn, num, set_data['db_type'])
+    return main_setting_2(load_db.db_get(), num, set_data['db_type'])
 
 
 @app.route('/other')
 @app.route('/other')
 def main_other():
 def main_other():
-    return main_other_2(conn)
+    return main_other_2(load_db.db_get())
 
 
 @app.route('/manager', methods = ['POST', 'GET'])
 @app.route('/manager', methods = ['POST', 'GET'])
 @app.route('/manager/<int:num>', methods = ['POST', 'GET'])
 @app.route('/manager/<int:num>', methods = ['POST', 'GET'])
 def main_manager(num = 1):
 def main_manager(num = 1):
-    return main_manager_2(conn, num)
+    return main_manager_2(load_db.db_get(), num)
 
 
 @app.route('/image/<everything:name>')
 @app.route('/image/<everything:name>')
 def main_image_view(name = None):
 def main_image_view(name = None):
-    return main_image_view_2(conn, name)
+    return main_image_view_2(load_db.db_get(), name)
 
 
 @app.route('/skin_set')
 @app.route('/skin_set')
 @app.route('/main_skin_set')
 @app.route('/main_skin_set')
 def main_skin_set():
 def main_skin_set():
-    return main_skin_set_2(conn)
+    return main_skin_set_2(load_db.db_get())
 
 
 @app.route('/views/<everything:name>')
 @app.route('/views/<everything:name>')
 def main_views(name = None):
 def main_views(name = None):
-    return main_views_2(conn, name)
+    return main_views_2(load_db.db_get(), name)
 
 
 @app.route('/test_func')
 @app.route('/test_func')
 def main_test_func():
 def main_test_func():
-    return main_test_func_2(conn)
+    return main_test_func_2(load_db.db_get())
 
 
 @app.route('/shutdown', methods = ['POST', 'GET'])
 @app.route('/shutdown', methods = ['POST', 'GET'])
 def main_shutdown():
 def main_shutdown():
-    return main_shutdown_2(conn)
+    return main_shutdown_2(load_db.db_get())
 
 
 @app.route('/easter_egg.xml')
 @app.route('/easter_egg.xml')
 def main_easter_egg():
 def main_easter_egg():
-    return main_easter_egg_2(conn)
+    return main_easter_egg_2(load_db.db_get())
 
 
 @app.route('/<regex("[^.]+\.(?:txt|xml)"):data>')
 @app.route('/<regex("[^.]+\.(?:txt|xml)"):data>')
 def main_file(data = ''):
 def main_file(data = ''):
-    return main_file_2(conn, data)
+    return main_file_2(load_db.db_get(), data)
 
 
 @app.errorhandler(404)
 @app.errorhandler(404)
 def main_error_404(e):
 def main_error_404(e):
-    return main_error_404_2(conn)
+    return main_error_404_2(load_db.db_get())
     
     
 if __name__ == "__main__":
 if __name__ == "__main__":
     waitress.serve(
     waitress.serve(

+ 3 - 1
emergency_tool.py

@@ -123,7 +123,9 @@ if data_db_load == 'Y':
             data_db_set['mysql_port'] = '3306'
             data_db_set['mysql_port'] = '3306'
 
 
     db_data_get(data_db_set['type'])
     db_data_get(data_db_set['type'])
-    conn = get_conn(data_db_set)
+    load_db = get_db_connect(data_db_set)
+
+    conn = load_db.db_load()
     curs = conn.cursor()
     curs = conn.cursor()
 else:
 else:
     print('----')
     print('----')

+ 16 - 16
route/inter_wiki.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 from .tool.func import *
 
 
-def inter_wiki_2(conn, tools):
+def inter_wiki(conn, tool):
     curs = conn.cursor()
     curs = conn.cursor()
 
 
     div = '<table id="main_table_set">'
     div = '<table id="main_table_set">'
@@ -14,42 +14,42 @@ def inter_wiki_2(conn, tools):
     
     
     admin = admin_check()
     admin = admin_check()
 
 
-    if tools == 'inter_wiki':
+    if tool == 'inter_wiki':
         plus_link = 'plus_inter_wiki'
         plus_link = 'plus_inter_wiki'
         title = load_lang('interwiki_list')
         title = load_lang('interwiki_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'inter_wiki'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'inter_wiki'"))
-    elif tools == 'email_filter':
+    elif tool == 'email_filter':
         plus_link = 'plus_email_filter'
         plus_link = 'plus_email_filter'
         title = load_lang('email_filter_list')
         title = load_lang('email_filter_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'email'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'email'"))
-    elif tools == 'name_filter':
+    elif tool == 'name_filter':
         plus_link = 'plus_name_filter'
         plus_link = 'plus_name_filter'
         title = load_lang('id_filter_list')
         title = load_lang('id_filter_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'name'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'name'"))
-    elif tools == 'edit_filter':
+    elif tool == 'edit_filter':
         plus_link = 'plus_edit_filter'
         plus_link = 'plus_edit_filter'
         title = load_lang('edit_filter_list')
         title = load_lang('edit_filter_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'regex_filter'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'regex_filter'"))
-    elif tools == 'file_filter':
+    elif tool == 'file_filter':
         plus_link = 'plus_file_filter'
         plus_link = 'plus_file_filter'
         title = load_lang('file_filter_list')
         title = load_lang('file_filter_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'file'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'file'"))
-    elif tools == 'file_filter':
+    elif tool == 'file_filter':
         plus_link = 'plus_file_filter'
         plus_link = 'plus_file_filter'
         title = load_lang('file_filter_list')
         title = load_lang('file_filter_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'file'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'file'"))
-    elif tools == 'image_license':
+    elif tool == 'image_license':
         plus_link = 'plus_image_license'
         plus_link = 'plus_image_license'
         title = load_lang('image_license_list')
         title = load_lang('image_license_list')
 
 
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'image_license'"))
         curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'image_license'"))
-    elif tools == 'extension_filter':
+    elif tool == 'extension_filter':
         plus_link = 'plus_extension_filter'
         plus_link = 'plus_extension_filter'
         title = load_lang('extension_filter_list')
         title = load_lang('extension_filter_list')
 
 
@@ -67,24 +67,24 @@ def inter_wiki_2(conn, tools):
 
 
         div += data[0]
         div += data[0]
         if admin == 1:
         if admin == 1:
-            div += ' <a href="/' + tools + '/add/' + url_pas(data[0]) + '">(' + load_lang('edit') + ')</a>'
-            div += ' <a href="/' + tools + '/del/' + url_pas(data[0]) + '">(' + load_lang('delete') + ')</a>'
+            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>'
         
         
         div += '</td>'
         div += '</td>'
 
 
-        if tools == 'inter_wiki':
-            div += '<td><a id="out_link" href="' + data[1] + '">' + data[1] + '</a></td>'
+        if tool == 'inter_wiki':
+            div += '<td><a id="out_link" href="' + data[1] + '">' + html.escape(data[1]) + '</a></td>'
         else:
         else:
-            div += '<td>' + data[1] + '</td>'
+            div += '<td>' + html.escape(data[1]) + '</td>'
             
             
-        div += '<td>' + data[2] + '</td>'
+        div += '<td>' + html.escape(data[2]) + '</td>'
         div += '</tr>'
         div += '</tr>'
         
         
     div += '</table>'
     div += '</table>'
             
             
     if admin == 1:
     if admin == 1:
         div += '<hr class="main_hr">'
         div += '<hr class="main_hr">'
-        div += '<a href="/' + tools + '/add">(' + load_lang('add') + ')</a>'
+        div += '<a href="/' + tool + '/add">(' + load_lang('add') + ')</a>'
 
 
     return easy_minify(flask.render_template(skin_check(),
     return easy_minify(flask.render_template(skin_check(),
         imp = [title, wiki_set(), wiki_custom(), wiki_css([0, 0])],
         imp = [title, wiki_set(), wiki_custom(), wiki_css([0, 0])],

+ 10 - 10
route/inter_wiki_del.py

@@ -1,28 +1,28 @@
 from .tool.func import *
 from .tool.func import *
 
 
-def inter_wiki_del_2(conn, tools, name):
+def inter_wiki_del(conn, tool, name):
     curs = conn.cursor()
     curs = conn.cursor()
 
 
-    if admin_check(None, tools) == 1:
-        if tools == 'del_inter_wiki':
+    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])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'inter_wiki'"), [name])
-        elif tools == 'del_edit_filter':
+        elif tool == 'del_edit_filter':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'regex_filter'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'regex_filter'"), [name])
-        elif tools == 'del_name_filter':
+        elif tool == 'del_name_filter':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'name'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'name'"), [name])
-        elif tools == 'del_file_filter':
+        elif tool == 'del_file_filter':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'file'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'file'"), [name])
-        elif tools == 'del_email_filter':
+        elif tool == 'del_email_filter':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'email'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'email'"), [name])
-        elif tools == 'del_image_license':
+        elif tool == 'del_image_license':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'image_license'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'image_license'"), [name])
-        elif tools == 'del_extension_filter':
+        elif tool == 'del_extension_filter':
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'extension'"), [name])
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'extension'"), [name])
         else:
         else:
             curs.execute(db_change("delete from html_filter where html = ? and kind = 'edit_top'"), [name])
             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_', '', tools))
+        return redirect('/' + re.sub(r'^del_', '', tool))
     else:
     else:
         return re_error('/error/3')
         return re_error('/error/3')

+ 1 - 1
route/list_acl.py

@@ -22,7 +22,7 @@ def list_acl_2(conn):
             div += '' + \
             div += '' + \
                 '<li>' + \
                 '<li>' + \
                     time_data + \
                     time_data + \
-                    '<a href="/acl/' + url_pas(data[0]) + '">' + data[0] + '</a>' + \
+                    '<a href="/acl/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a>' + \
                     why_data + \
                     why_data + \
                 '</li>' + \
                 '</li>' + \
             ''
             ''

+ 1 - 1
route/list_admin_group.py

@@ -16,7 +16,7 @@ def list_admin_group_2(conn):
 
 
         list_data += '' + \
         list_data += '' + \
             '<li>' + \
             '<li>' + \
-                '<a href="/admin_plus/' + url_pas(data[0]) + '">' + data[0] + '</a>' + \
+                '<a href="/admin_plus/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a>' + \
                 delete_admin_group + \
                 delete_admin_group + \
             '</li>' + \
             '</li>' + \
         ''
         ''

+ 1 - 1
route/list_image_file.py

@@ -15,7 +15,7 @@ def list_image_file_2(conn):
     curs.execute(db_change("select title from data where title like 'file:%' limit ?, 50"), [sql_num])
     curs.execute(db_change("select title from data where title like 'file:%' limit ?, 50"), [sql_num])
     data_list = curs.fetchall()
     data_list = curs.fetchall()
     for data in data_list:
     for data in data_list:
-        list_data += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+        list_data += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a></li>'
 
 
     list_data += next_fix('/image_file_list?num=', num, data_list)
     list_data += next_fix('/image_file_list?num=', num, data_list)
 
 

+ 1 - 1
route/list_long_page.py

@@ -13,7 +13,7 @@ def list_long_page_2(conn, tool):
 
 
     curs.execute(db_change("select title, length(data) from data order by length(data) " + select_data + " limit 50"))
     curs.execute(db_change("select title, length(data) from data order by length(data) " + select_data + " limit 50"))
     for data in curs.fetchall():
     for data in curs.fetchall():
-        div += '<li>' + str(data[1]) + ' : <a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+        div += '<li>' + str(data[1]) + ' : <a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a></li>'
 
 
     div += '</ul>'
     div += '</ul>'
 
 

+ 7 - 2
route/list_please.py

@@ -12,10 +12,15 @@ def list_please_2(conn):
 
 
     div = '<ul class="inside_ul">'
     div = '<ul class="inside_ul">'
 
 
-    curs.execute(db_change("select distinct title from back where type = 'no' order by title asc limit ?, 50"), [sql_num])
+    curs.execute(db_change("select distinct title, link from back where type = 'no' order by title asc limit ?, 50"), [sql_num])
     data_list = curs.fetchall()
     data_list = curs.fetchall()
     for data in data_list:
     for data in data_list:
-        div += '<li><a id="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+        div += '' + \
+            '<li>' + \
+                '<a id="not_thing" href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a> ' + \
+                '<a href="/w/' + url_pas(data[1]) + '">(' + html.escape(data[1]) + ')</a>' + \
+            '</li>' + \
+        ''
 
 
     div += '</ul>' + next_fix('/please?num=', num, data_list)
     div += '</ul>' + next_fix('/please?num=', num, data_list)
 
 

+ 1 - 1
route/list_title_index.py

@@ -20,7 +20,7 @@ def list_title_index_2(conn):
         data += '<hr class="main_hr"><ul class="inside_ul">'
         data += '<hr class="main_hr"><ul class="inside_ul">'
 
 
     for list_data in title_list:
     for list_data in title_list:
-        data += '<li>' + str(all_list) + '. <a href="/w/' + url_pas(list_data[0]) + '">' + list_data[0] + '</a></li>'
+        data += '<li>' + str(all_list) + '. <a href="/w/' + url_pas(list_data[0]) + '">' + html.escape(list_data[0]) + '</a></li>'
         all_list += 1
         all_list += 1
 
 
     if page == 1:
     if page == 1:

+ 5 - 6
route/recent_change.py

@@ -87,11 +87,7 @@ def recent_change_2(conn, name, tool):
         all_ip = ip_pas([i[3] for i in data_list])
         all_ip = ip_pas([i[3] for i in data_list])
         for data in data_list:
         for data in data_list:
             select += '<option value="' + data[0] + '">' + data[0] + '</option>'
             select += '<option value="' + data[0] + '">' + data[0] + '</option>'
-            send = '<br>'
-
-            if data[4]:
-                if not re.search(r"^(?: +)$", data[4]):
-                    send = data[4]
+            send = data[4]
 
 
             if re.search(r"\+", data[5]):
             if re.search(r"\+", data[5]):
                 leng = '<span style="color:green;">(' + data[5] + ')</span>'
                 leng = '<span style="color:green;">(' + data[5] + ')</span>'
@@ -114,6 +110,7 @@ def recent_change_2(conn, name, tool):
                     ip = ''
                     ip = ''
                     ban = ''
                     ban = ''
                     date = ''
                     date = ''
+                    send = ''
 
 
                     style[0] = 'style="display: none;"'
                     style[0] = 'style="display: none;"'
                     style[1] = 'id="toron_color_grey"'
                     style[1] = 'id="toron_color_grey"'
@@ -134,7 +131,9 @@ def recent_change_2(conn, name, tool):
                     <td>''' + date + '''</td>
                     <td>''' + date + '''</td>
                 </tr>
                 </tr>
                 <tr ''' + style[1] + '''>
                 <tr ''' + style[1] + '''>
-                    <td class="send_content" colspan="3">''' + html.escape(send) + '''</td>
+                    <td class="send_content" colspan="3">
+                        ''' + (html.escape(send) if send != '' else '<br>') + '''
+                    </td>
                 </tr>
                 </tr>
             '''
             '''
 
 

+ 1 - 4
route/recent_discuss.py

@@ -30,12 +30,9 @@ def recent_discuss_2(conn):
         curs.execute(db_change("select title, sub, date, code from rd where stop = 'O' order by date desc limit 50"))
         curs.execute(db_change("select title, sub, date, code from rd where stop = 'O' order by date desc limit 50"))
 
 
     for data in curs.fetchall():
     for data in curs.fetchall():
-        title = html.escape(data[0])
-        sub = html.escape(data[1])
-
         div += '' + \
         div += '' + \
             '<tr>' + \
             '<tr>' + \
-                '<td><a href="/thread/' + data[3] + '">' + sub + '</a> <a href="/topic/' + url_pas(title) + '">(' + title + ')</a></td>' + \
+                '<td><a href="/thread/' + data[3] + '">' + html.escape(sub) + '</a> <a href="/topic/' + url_pas(title) + '">(' + html.escape(title) + ')</a></td>' + \
                 '<td>' + data[2] + '</td>' + \
                 '<td>' + data[2] + '</td>' + \
             '</tr>' + \
             '</tr>' + \
         ''
         ''

+ 141 - 64
route/tool/func.py

@@ -84,20 +84,17 @@ global_wiki_set = {}
 
 
 global_db_set = ''
 global_db_set = ''
 
 
-data_css_ver = '117'
+data_css_ver = '118'
 data_css = ''
 data_css = ''
 
 
 conn = ''
 conn = ''
-curs = ''
 
 
 # Func
 # Func
 # Func-main
 # Func-main
 def load_conn(data):
 def load_conn(data):
     global conn
     global conn
-    global curs
 
 
     conn = data
     conn = data
-    curs = conn.cursor()
 
 
     load_conn2(data)
     load_conn2(data)
     
     
@@ -107,7 +104,7 @@ class get_db_connect:
         self.db_set = db_set
         self.db_set = db_set
         self.conn = ''
         self.conn = ''
         
         
-    def __call__(self):
+    def db_load(self):
         if self.db_set['type'] == 'sqlite':
         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)
         else:
         else:
@@ -116,7 +113,7 @@ class get_db_connect:
                 user = self.db_set['mysql_user'],
                 user = self.db_set['mysql_user'],
                 password = self.db_set['mysql_pw'],
                 password = self.db_set['mysql_pw'],
                 charset = 'utf8mb4',
                 charset = 'utf8mb4',
-                port = int(self.db_set['mysql_port'])
+                port = int(self.db_set['mysql_port']),
             )
             )
             curs = self.conn.cursor()
             curs = self.conn.cursor()
 
 
@@ -133,8 +130,16 @@ class get_db_connect:
         load_conn(self.conn)
         load_conn(self.conn)
 
 
         return self.conn
         return self.conn
+    
+    def db_get(self):
+        if self.db_set['type'] != 'sqlite':
+            self.conn.ping(reconnect = True)
+            
+        return self.conn
 
 
 def update(ver_num, set_data):
 def update(ver_num, set_data):
+    curs = conn.cursor()
+
     print('----')
     print('----')
     # 업데이트 하위 호환 유지 함수
     # 업데이트 하위 호환 유지 함수
 
 
@@ -350,6 +355,8 @@ def update(ver_num, set_data):
     print('Update completed')
     print('Update completed')
 
 
 def set_init_always(ver_num):
 def set_init_always(ver_num):
+    curs = conn.cursor()
+
     curs.execute(db_change('delete from other where name = "ver"'))
     curs.execute(db_change('delete from other where name = "ver"'))
     curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [ver_num])
     curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [ver_num])
     
     
@@ -362,6 +369,8 @@ def set_init_always(ver_num):
     conn.commit()
     conn.commit()
     
     
 def set_init():
 def set_init():
+    curs = conn.cursor()
+
     # 초기값 설정 함수    
     # 초기값 설정 함수    
     curs.execute(db_change("select html from html_filter where kind = 'email'"))
     curs.execute(db_change("select html from html_filter where kind = 'email'"))
     if not curs.fetchall():
     if not curs.fetchall():
@@ -403,15 +412,16 @@ def set_init():
     conn.commit()
     conn.commit()
 
 
 # Func-simple
 # Func-simple
+## Func-simple-without_DB
 def get_default_admin_group():
 def get_default_admin_group():
     return ['owner', 'ban']
     return ['owner', 'ban']
 
 
-def load_image_url():
-    curs.execute(db_change('select data from other where name = "image_where"'))
-    image_where = curs.fetchall()
-    image_where = image_where[0][0] if image_where else os.path.join('data', 'images')
-    
-    return image_where
+def load_random_key(long = 64):
+    return ''.join(
+        random.choice(
+            "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+        ) for i in range(long)
+    )
 
 
 def http_warning():
 def http_warning():
     return '''
     return '''
@@ -426,21 +436,71 @@ def http_warning():
         </script>
         </script>
     '''
     '''
 
 
+def next_fix(link, num, page, end = 50):
+    list_data = ''
+
+    if num == 1:
+        if len(page) == end:
+            list_data += '' + \
+                '<hr class="main_hr">' + \
+                '<a href="' + link + str(num + 1) + '">(' + load_lang('next') + ')</a>' + \
+            ''
+    elif len(page) != end:
+        list_data += '' + \
+            '<hr class="main_hr">' + \
+            '<a href="' + link + str(num - 1) + '">(' + load_lang('previous') + ')</a>' + \
+        ''
+    else:
+        list_data += '' + \
+            '<hr class="main_hr">' + \
+            '<a href="' + link + str(num - 1) + '">(' + load_lang('previous') + ')</a> <a href="' + link + str(num + 1) + '">(' + load_lang('next') + ')</a>' + \
+        ''
+
+    return list_data
+
+def leng_check(A, B):
+    # B -> new
+    # A -> old
+    return '0' if A == B else (('-' + str(A - B)) if A > B else ('+' + str(B - A)))
+
+def number_check(data):
+    try:
+        int(data)
+        return data
+    except:
+        return '1'
+
+def redirect(data = '/'):
+    return flask.redirect(flask.request.host_url[:-1] + data)
+    
+def get_acl_list(type_d = 'normal'):
+    if type_d == 'user':
+        return ['', 'user', 'all']
+    else:
+        return ['', 'all', 'user', 'admin', 'owner', '50_edit', 'email', 'ban', 'before', '30_day', 'ban_admin']
+
+## Func-simple-with_DB
+def load_image_url():
+    curs = conn.cursor()
+
+    curs.execute(db_change('select data from other where name = "image_where"'))
+    image_where = curs.fetchall()
+    image_where = image_where[0][0] if image_where else os.path.join('data', 'images')
+    
+    return image_where
+
 def load_domain():
 def load_domain():
+    curs = conn.cursor()
+
     curs.execute(db_change("select data from other where name = 'domain'"))
     curs.execute(db_change("select data from other where name = 'domain'"))
     domain = curs.fetchall()
     domain = curs.fetchall()
     domain = domain[0][0] if domain and domain[0][0] != '' else flask.request.host_url
     domain = domain[0][0] if domain and domain[0][0] != '' else flask.request.host_url
 
 
     return domain
     return domain
 
 
-def load_random_key(long = 64):
-    return ''.join(
-        random.choice(
-            "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
-        ) for i in range(long)
-    )
-
 def edit_button(editor_display = '0'):
 def edit_button(editor_display = '0'):
+    curs = conn.cursor()
+
     insert_list = []
     insert_list = []
 
 
     curs.execute(db_change("select html, plus from html_filter where kind = 'edit_top'"))
     curs.execute(db_change("select html, plus from html_filter where kind = 'edit_top'"))
@@ -462,6 +522,8 @@ def edit_button(editor_display = '0'):
     return data
     return data
 
 
 def ip_warning():
 def ip_warning():
+    curs = conn.cursor()
+
     if ip_or_user() != 0:
     if ip_or_user() != 0:
         curs.execute(db_change('select data from other where name = "no_login_warning"'))
         curs.execute(db_change('select data from other where name = "no_login_warning"'))
         data = curs.fetchall()
         data = curs.fetchall()
@@ -479,52 +541,11 @@ def ip_warning():
         text_data = ''
         text_data = ''
 
 
     return text_data
     return text_data
-
-def next_fix(link, num, page, end = 50):
-    list_data = ''
-
-    if num == 1:
-        if len(page) == end:
-            list_data += '' + \
-                '<hr class="main_hr">' + \
-                '<a href="' + link + str(num + 1) + '">(' + load_lang('next') + ')</a>' + \
-            ''
-    elif len(page) != end:
-        list_data += '' + \
-            '<hr class="main_hr">' + \
-            '<a href="' + link + str(num - 1) + '">(' + load_lang('previous') + ')</a>' + \
-        ''
-    else:
-        list_data += '' + \
-            '<hr class="main_hr">' + \
-            '<a href="' + link + str(num - 1) + '">(' + load_lang('previous') + ')</a> <a href="' + link + str(num + 1) + '">(' + load_lang('next') + ')</a>' + \
-        ''
-
-    return list_data
-
-def leng_check(A, B):
-    # B -> new
-    # A -> old
-    return '0' if A == B else (('-' + str(A - B)) if A > B else ('+' + str(B - A)))
-
-def number_check(data):
-    try:
-        int(data)
-        return data
-    except:
-        return '1'
-
-def redirect(data = '/'):
-    return flask.redirect(flask.request.host_url[:-1] + data)
-    
-def get_acl_list(type_d = 'normal'):
-    if type_d == 'user':
-        return ['', 'user', 'all']
-    else:
-        return ['', 'all', 'user', 'admin', 'owner', '50_edit', 'email', 'ban', 'before', '30_day', 'ban_admin']
     
     
 # Func-login    
 # Func-login    
 def pw_encode(data, type_d = ''):
 def pw_encode(data, type_d = ''):
+    curs = conn.cursor()
+
     if type_d == '':
     if type_d == '':
         curs.execute(db_change('select data from other where name = "encode"'))
         curs.execute(db_change('select data from other where name = "encode"'))
         set_data = curs.fetchall()
         set_data = curs.fetchall()
@@ -540,6 +561,8 @@ def pw_encode(data, type_d = ''):
             return hashlib.sha3_256(bytes(data, 'utf-8')).hexdigest()
             return hashlib.sha3_256(bytes(data, 'utf-8')).hexdigest()
 
 
 def pw_check(data, data2, type_d = 'no', id_d = ''):
 def pw_check(data, data2, type_d = 'no', id_d = ''):
+    curs = conn.cursor()
+
     curs.execute(db_change('select data from other where name = "encode"'))
     curs.execute(db_change('select data from other where name = "encode"'))
     db_data = curs.fetchall()
     db_data = curs.fetchall()
 
 
@@ -566,9 +589,13 @@ def pw_check(data, data2, type_d = 'no', id_d = ''):
         
         
 # Func-skin
 # Func-skin
 def easy_minify(data, tool = None):
 def easy_minify(data, tool = None):
+    # without_DB
+
     return data
     return data
 
 
 def load_lang(data, safe = 0):
 def load_lang(data, safe = 0):
+    curs = conn.cursor()
+
     global global_lang
     global global_lang
 
 
     ip = ip_check()
     ip = ip_check()
@@ -612,6 +639,8 @@ def load_lang(data, safe = 0):
     return html.escape(data + ' (' + lang_name + ')')
     return html.escape(data + ' (' + lang_name + ')')
 
 
 def skin_check(set_n = 0):
 def skin_check(set_n = 0):
+    curs = conn.cursor()
+
     # 개편 필요?
     # 개편 필요?
     skin_list = load_skin('tenshi', 1)
     skin_list = load_skin('tenshi', 1)
     skin = skin_list[0]
     skin = skin_list[0]
@@ -642,6 +671,8 @@ def skin_check(set_n = 0):
         return skin
         return skin
     
     
 def wiki_css(data):
 def wiki_css(data):
+    # without_DB
+
     global data_css
     global data_css
     global data_css_ver
     global data_css_ver
 
 
@@ -672,6 +703,8 @@ def wiki_css(data):
     return data
     return data
 
 
 def cut_100(data):
 def cut_100(data):
+    # without_DB
+
     data = re.search(r'<pre style="display: none;" id="render_content_load">([^<>]+)<\/pre>', data)
     data = re.search(r'<pre style="display: none;" id="render_content_load">([^<>]+)<\/pre>', data)
     if data:
     if data:
         data = data.group(1)
         data = data.group(1)
@@ -683,6 +716,8 @@ def cut_100(data):
         return ''
         return ''
 
 
 def wiki_set(num = 1):
 def wiki_set(num = 1):
+    curs = conn.cursor()
+
     if num == 1:
     if num == 1:
         skin_name = skin_check(1)
         skin_name = skin_check(1)
         data_list = []
         data_list = []
@@ -730,7 +765,9 @@ def wiki_set(num = 1):
 
 
     return data_list
     return data_list
 
 
-def wiki_custom():    
+def wiki_custom():
+    curs = conn.cursor()
+
     ip = ip_check()
     ip = ip_check()
     if ip_or_user(ip) == 0:
     if ip_or_user(ip) == 0:
         user_icon = 1
         user_icon = 1
@@ -797,6 +834,8 @@ def wiki_custom():
     ]
     ]
 
 
 def load_skin(data = '', set_n = 0, default = 0):
 def load_skin(data = '', set_n = 0, default = 0):
+    # without_DB
+
     # data -> 가장 앞에 있을 스킨 이름
     # data -> 가장 앞에 있을 스킨 이름
     # set_n == 0 -> 스트링으로 반환
     # set_n == 0 -> 스트링으로 반환
     # set_n == 1 -> 리스트로 반환
     # set_n == 1 -> 리스트로 반환
@@ -842,6 +881,8 @@ def load_skin(data = '', set_n = 0, default = 0):
 
 
 # Func-markup
 # Func-markup
 def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', doc_acl = ''):
 def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', doc_acl = ''):
+    # without_DB
+
     # data_type in ['view', 'raw', 'api_view', 'backlink']
     # data_type in ['view', 'raw', 'api_view', 'backlink']
     doc_acl = acl_check(doc_name, 'render') if doc_acl == '' else doc_acl
     doc_acl = acl_check(doc_name, 'render') if doc_acl == '' else doc_acl
     doc_data = 0 if doc_data == None else doc_data
     doc_data = 0 if doc_data == None else doc_data
@@ -859,6 +900,8 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
 
 
 # Func-request
 # Func-request
 def send_email(who, title, data):
 def send_email(who, title, data):
+    curs = conn.cursor()
+
     try:
     try:
         curs.execute(db_change('' + \
         curs.execute(db_change('' + \
             'select name, data from other ' + \
             'select name, data from other ' + \
@@ -917,6 +960,8 @@ def send_email(who, title, data):
         return 0
         return 0
 
 
 def captcha_get():
 def captcha_get():
+    curs = conn.cursor()
+
     data = ''
     data = ''
     
     
     if ip_or_user() != 0:
     if ip_or_user() != 0:
@@ -952,6 +997,8 @@ def captcha_get():
     return data
     return data
 
 
 def captcha_post(re_data, num = 1):
 def captcha_post(re_data, num = 1):
+    curs = conn.cursor()
+
     if num == 1:
     if num == 1:
         curs.execute(db_change('select data from other where name = "sec_re"'))
         curs.execute(db_change('select data from other where name = "sec_re"'))
         sec_re = curs.fetchall()
         sec_re = curs.fetchall()
@@ -970,6 +1017,8 @@ def captcha_post(re_data, num = 1):
 
 
 # Func-user
 # Func-user
 def ip_or_user(data = ''):
 def ip_or_user(data = ''):
+    # without_DB
+
     # 1 == ip
     # 1 == ip
     # 0 == reg
     # 0 == reg
     
     
@@ -982,6 +1031,8 @@ def ip_or_user(data = ''):
         return 0
         return 0
 
 
 def admin_check(num = None, what = None, name = ''):
 def admin_check(num = None, what = None, name = ''):
+    curs = conn.cursor()
+
     ip = ip_check() if name == '' else name
     ip = ip_check() if name == '' else name
     time_data = get_time()
     time_data = get_time()
     pass_ok = 0
     pass_ok = 0
@@ -1042,6 +1093,8 @@ def admin_check(num = None, what = None, name = ''):
     return 0
     return 0
 
 
 def acl_check(name = 'test', tool = '', topic_num = '1'):
 def acl_check(name = 'test', tool = '', topic_num = '1'):
+    curs = conn.cursor()
+
     ip = ip_check()
     ip = ip_check()
     get_ban = ban_check()
     get_ban = ban_check()
     acl_c = re.search(r"^user:((?:(?!\/).)*)", name) if name else None
     acl_c = re.search(r"^user:((?:(?!\/).)*)", name) if name else None
@@ -1234,6 +1287,8 @@ def acl_check(name = 'test', tool = '', topic_num = '1'):
     return 1
     return 1
 
 
 def ban_check(ip = None, tool = ''):
 def ban_check(ip = None, tool = ''):
+    curs = conn.cursor()
+
     ip = ip_check() if not ip else ip
     ip = ip_check() if not ip else ip
     tool = '' if not tool else tool
     tool = '' if not tool else tool
 
 
@@ -1276,6 +1331,8 @@ def ban_check(ip = None, tool = ''):
     return 0
     return 0
 
 
 def ip_pas(raw_ip, type_d = 0):
 def ip_pas(raw_ip, type_d = 0):
+    curs = conn.cursor()
+
     hide = 0
     hide = 0
     end_ip = {}
     end_ip = {}
     i = 0
     i = 0
@@ -1322,6 +1379,8 @@ def ip_pas(raw_ip, type_d = 0):
         
         
 # Func-edit
 # Func-edit
 def slow_edit_check():
 def slow_edit_check():
+    curs = conn.cursor()
+
     curs.execute(db_change("select data from other where name = 'slow_edit'"))
     curs.execute(db_change("select data from other where name = 'slow_edit'"))
     slow_edit = curs.fetchall()
     slow_edit = curs.fetchall()
     if slow_edit and slow_edit != '0' and admin_check(5) != 1:
     if slow_edit and slow_edit != '0' and admin_check(5) != 1:
@@ -1345,6 +1404,8 @@ def slow_edit_check():
     return 0
     return 0
 
 
 def edit_filter_do(data):
 def edit_filter_do(data):
+    curs = conn.cursor()
+
     if admin_check(1) != 1:
     if admin_check(1) != 1:
         curs.execute(db_change(
         curs.execute(db_change(
             "select plus, plus_t from html_filter where kind = 'regex_filter' and plus != ''"
             "select plus, plus_t from html_filter where kind = 'regex_filter' and plus != ''"
@@ -1366,11 +1427,16 @@ def edit_filter_do(data):
 
 
 # Func-insert
 # Func-insert
 def add_alarm(who, context):
 def add_alarm(who, context):
+    curs = conn.cursor()
+
     curs.execute(db_change(
     curs.execute(db_change(
         'insert into alarm (name, data, date) values (?, ?, ?)'
         'insert into alarm (name, data, date) values (?, ?, ?)'
     ), [who, context, get_time()])
     ), [who, context, get_time()])
+    conn.commit()
     
     
-def add_user(user_name, user_pw, user_email = '', user_encode = ''):    
+def add_user(user_name, user_pw, user_email = '', user_encode = ''):
+    curs = conn.cursor()
+
     if user_encode == '':
     if user_encode == '':
         user_pw_hash = pw_encode(user_pw)
         user_pw_hash = pw_encode(user_pw)
 
 
@@ -1413,6 +1479,8 @@ def add_user(user_name, user_pw, user_email = '', user_encode = ''):
     conn.commit()
     conn.commit()
     
     
 def ua_plus(u_id, u_ip, u_agent, time):
 def ua_plus(u_id, u_ip, u_agent, time):
+    curs = conn.cursor()
+
     curs.execute(db_change("select data from other where name = 'ua_get'"))
     curs.execute(db_change("select data from other where name = 'ua_get'"))
     rep_data = curs.fetchall()
     rep_data = curs.fetchall()
     if rep_data and rep_data[0][0] != '':
     if rep_data and rep_data[0][0] != '':
@@ -1426,8 +1494,11 @@ def ua_plus(u_id, u_ip, u_agent, time):
             u_agent, 
             u_agent, 
             time
             time
         ])
         ])
+        conn.commit()
 
 
 def ban_insert(name, end, why, login, blocker, type_d = None):
 def ban_insert(name, end, why, login, blocker, type_d = None):
+    curs = conn.cursor()
+
     now_time = get_time()
     now_time = get_time()
     band = type_d if type_d else ''
     band = type_d if type_d else ''
 
 
@@ -1480,6 +1551,8 @@ def ban_insert(name, end, why, login, blocker, type_d = None):
     conn.commit()
     conn.commit()
 
 
 def rd_plus(topic_num, date, name = None, sub = None):
 def rd_plus(topic_num, date, name = None, sub = None):
+    curs = conn.cursor()
+
     curs.execute(db_change("select code from rd where code = ?"), [topic_num])
     curs.execute(db_change("select code from rd where code = ?"), [topic_num])
     if curs.fetchall():
     if curs.fetchall():
         curs.execute(db_change("update rd set date = ? where code = ?"), [date, topic_num])
         curs.execute(db_change("update rd set date = ? where code = ?"), [date, topic_num])
@@ -1491,6 +1564,8 @@ def rd_plus(topic_num, date, name = None, sub = None):
     conn.commit()
     conn.commit()
 
 
 def history_plus(title, data, date, ip, send, leng, t_check = '', mode = ''):
 def history_plus(title, data, date, ip, send, leng, t_check = '', mode = ''):
+    curs = conn.cursor()
+
     if mode == 'add':
     if mode == 'add':
         curs.execute(db_change(
         curs.execute(db_change(
             "select id from history where title = ? order by id + 0 asc limit 1"
             "select id from history where title = ? order by id + 0 asc limit 1"
@@ -1574,6 +1649,8 @@ def history_plus(title, data, date, ip, send, leng, t_check = '', mode = ''):
 
 
 # Func-error
 # Func-error
 def re_error(data):
 def re_error(data):
+    curs = conn.cursor()
+
     conn.commit()
     conn.commit()
 
 
     if data == '/ban':
     if data == '/ban':

+ 15 - 8
route/tool/func_mark.py

@@ -3,16 +3,15 @@ from .func_tool import *
 # 커스텀 마크 언젠간 다시 추가 예정
 # 커스텀 마크 언젠간 다시 추가 예정
 
 
 conn = ''
 conn = ''
-curs = ''
 
 
 def load_conn2(data):
 def load_conn2(data):
     global conn
     global conn
-    global curs
 
 
     conn = data
     conn = data
-    curs = conn.cursor()
     
     
 def backlink_generate(data_markup, doc_data, doc_name):
 def backlink_generate(data_markup, doc_data, doc_name):
+    curs = conn.cursor()
+    
     if data_markup == 'namumark':
     if data_markup == 'namumark':
         # Link
         # Link
         link_re = re.compile(r'\[\[(?!https?:\/\/|inter:|외부:|out:|#)((?:(?!\[\[|\]\]|\|).)+)(?:\]\]|\|)', re.I)
         link_re = re.compile(r'\[\[(?!https?:\/\/|inter:|외부:|out:|#)((?:(?!\[\[|\]\]|\|).)+)(?:\]\]|\|)', re.I)
@@ -29,17 +28,23 @@ def backlink_generate(data_markup, doc_data, doc_name):
         
         
         for i in data_link:
         for i in data_link:
             data_link_in = i
             data_link_in = i
-            if re.search(r'^(?:분류|category):', data_link_in):
+            if  data_link_in.startswith('분류:') or \
+                data_link_in.startswith('category:'):
                 data_link_in = re.sub(r'\\(.)', r'\1', data_link_in)
                 data_link_in = re.sub(r'\\(.)', r'\1', data_link_in)
                 data_link_end['cat'] += [re.sub(r'^분류:', 'category:', data_link_in)]
                 data_link_end['cat'] += [re.sub(r'^분류:', 'category:', data_link_in)]
-            elif re.search(r'^(?:파일|file):', data_link_in):
+            elif data_link_in.startswith('파일:') or \
+                data_link_in.startswith('file:'):
                 data_link_in = re.sub(r'\\(.)', r'\1', data_link_in)
                 data_link_in = re.sub(r'\\(.)', r'\1', data_link_in)
                 data_link_end['file'] += [re.sub(r'^파일:', 'file:', data_link_in)]
                 data_link_end['file'] += [re.sub(r'^파일:', 'file:', data_link_in)]
             else:
             else:
                 data_link_in = re.sub(r'([^\\])#(?:[^#]*)$', r'\1', data_link_in)
                 data_link_in = re.sub(r'([^\\])#(?:[^#]*)$', r'\1', data_link_in)
                 
                 
                 if data_link_in[0] == ':':
                 if data_link_in[0] == ':':
-                    data_link_in = re.sub(r'^:', '', data_link_in)
+                    data_link_in = re.sub(r'^:분류:', 'category:', data_link_in)
+                    data_link_in = re.sub(r'^:category:', 'category:', data_link_in)
+                    
+                    data_link_in = re.sub(r'^:file:', 'file:', data_link_in)
+                    data_link_in = re.sub(r'^:파일:', 'file:', data_link_in)
                 elif data_link_in[0] == '/':
                 elif data_link_in[0] == '/':
                     data_link_in = doc_name + data_link_in
                     data_link_in = doc_name + data_link_in
                 elif len(data_link_in) >= 3 and data_link_in[0:3] == '../':
                 elif len(data_link_in) >= 3 and data_link_in[0:3] == '../':
@@ -98,6 +103,8 @@ def backlink_generate(data_markup, doc_data, doc_name):
     return data_link_end_all
     return data_link_end_all
 
 
 def render_do(doc_name, doc_data, data_type, data_in):
 def render_do(doc_name, doc_data, data_type, data_in):
+    curs = conn.cursor()
+    
     data_in = None if data_in == '' else data_in
     data_in = None if data_in == '' else data_in
     
     
     curs.execute(db_change('select data from other where name = "markup"'))
     curs.execute(db_change('select data from other where name = "markup"'))
@@ -129,7 +136,7 @@ def render_do(doc_name, doc_data, data_type, data_in):
                         test_mode = "normal", 
                         test_mode = "normal", 
                         name_id = "''' + data_in + '''render_content",
                         name_id = "''' + data_in + '''render_content",
                         name_include = "''' + data_in + '''",
                         name_include = "''' + data_in + '''",
-                        name_doc = "''' + doc_name.replace('"', '//"') + '''"
+                        name_doc = "''' + doc_name.replace('"', '\\"') + '''"
                     );
                     );
                 ''',
                 ''',
                 []
                 []
@@ -145,7 +152,7 @@ def render_do(doc_name, doc_data, data_type, data_in):
                         test_mode = "normal", 
                         test_mode = "normal", 
                         name_id = "''' + data_in + '''render_content",
                         name_id = "''' + data_in + '''render_content",
                         name_include = "''' + data_in + '''",
                         name_include = "''' + data_in + '''",
-                        name_doc = "''' + doc_name.replace('"', '//"') + '''"
+                        name_doc = "''' + doc_name.replace('"', '\\"') + '''"
                     );
                     );
                 ''',
                 ''',
                 []
                 []

+ 1 - 1
route/user_alarm.py

@@ -14,7 +14,7 @@ def user_alarm_2(conn):
         data = '<a href="/alarm/delete">(' + load_lang('delete') + ')</a><hr class=\"main_hr\">' + data
         data = '<a href="/alarm/delete">(' + load_lang('delete') + ')</a><hr class=\"main_hr\">' + data
 
 
         for data_one in data_list:
         for data_one in data_list:
-            data += '<li>' + data_one[0] + ' (' + data_one[1] + ')</li>'
+            data += '<li>' + html.escape(data_one[0]) + ' (' + data_one[1] + ')</li>'
 
 
     data += '</ul>' + next_fix('/alarm?num=', num, data_list)
     data += '</ul>' + next_fix('/alarm?num=', num, data_list)
 
 

+ 2 - 2
route/user_setting_pw_change.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 from .tool.func import *
 
 
-def login_pw_change_2(conn):
+def user_setting_pw_change_2(conn):
     curs = conn.cursor()
     curs = conn.cursor()
 
 
     if ban_check() == 1:
     if ban_check() == 1:
@@ -63,4 +63,4 @@ def login_pw_change_2(conn):
                 </form>
                 </form>
             ''',
             ''',
             menu = [['change', load_lang('return')]]
             menu = [['change', load_lang('return')]]
-        ))
+        ))

+ 1 - 1
route/view_down.py

@@ -7,7 +7,7 @@ def view_down_2(conn, name):
 
 
     curs.execute(db_change("select title from data where title like ?"), [name + '/%'])
     curs.execute(db_change("select title from data where title like ?"), [name + '/%'])
     for data in curs.fetchall():
     for data in curs.fetchall():
-        div += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+        div += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a></li>'
 
 
     div += '</ul>'
     div += '</ul>'
 
 

+ 3 - 3
route/view_read.py

@@ -29,10 +29,10 @@ def view_read_2(conn, name, doc_rev, doc_from):
         curs.execute(db_change("select link from back where title = ? and type = 'cat' order by link asc"), [name])
         curs.execute(db_change("select link from back where title = ? and type = 'cat' order by link asc"), [name])
         category_sql = curs.fetchall()
         category_sql = curs.fetchall()
         for data in category_sql:
         for data in category_sql:
-            if re.search(r'^category:', data[0]):
-                category_sub += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
+            if data[0].startswith('category:'):
+                category_sub += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a></li>'
             else:
             else:
-                category_doc += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a> <a id="inside" href="/xref/' + url_pas(data[0]) + '">(' + load_lang('backlink') + ')</a></li>'
+                category_doc += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a> <a id="inside" href="/xref/' + url_pas(data[0]) + '">(' + load_lang('backlink') + ')</a></li>'
 
 
         if category_doc != '':
         if category_doc != '':
             category_doc = '<h2 id="cate_normal">' + load_lang('category_title') + '</h2><ul class="inside_ul">' + category_doc + '</ul>'
             category_doc = '<h2 id="cate_normal">' + load_lang('category_title') + '</h2><ul class="inside_ul">' + category_doc + '</ul>'

+ 1 - 1
route/view_xref.py

@@ -32,7 +32,7 @@ def view_xref_2(conn, name, xref_type = '1'):
 
 
     data_list = curs.fetchall()
     data_list = curs.fetchall()
     for data in data_list:
     for data in data_list:
-        div += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a>'
+        div += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a>'
 
 
         if data[1]:
         if data[1]:
             div += ' (' + data[1] + ')'
             div += ' (' + data[1] + ')'

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
 {
     "beta" : {
     "beta" : {
-        "r_ver" : "v3.5.0-dev (stable1) (beta10) (dev14)",
+        "r_ver" : "v3.5.0-beta (stable1) (beta11) (dev16)",
         "c_ver" : "3500101",
         "c_ver" : "3500101",
         "s_ver" : "3500110"
         "s_ver" : "3500110"
     }
     }

+ 1 - 2
views/main_css/js/render_html.js

@@ -11,8 +11,7 @@ function render_html(name = '') {
                 'b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup', 
                 'b', 'i', 's', 'del', 'strong', 'bold', 'em', 'sub', 'sup', 
                 'div', 'span', 
                 'div', 'span', 
                 'a',
                 'a',
-                'iframe',
-                'video'
+                'iframe'
             ];
             ];
             for(var key in t_data) {
             for(var key in t_data) {
                 patt = new RegExp(
                 patt = new RegExp(

+ 7 - 2
views/main_css/js/render_onmark.js

@@ -361,6 +361,7 @@ function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowik
                             'href="">' + link_out + '</a>';
                             'href="">' + link_out + '</a>';
             } else if(link_real.match(inter_re)) {
             } else if(link_real.match(inter_re)) {
                 let data_inter = link_real.match(inter_re);
                 let data_inter = link_real.match(inter_re);
+                
                 let data_inter_link = '';
                 let data_inter_link = '';
                 let data_inter_logo = '';
                 let data_inter_logo = '';
                 if(data_inter) {
                 if(data_inter) {
@@ -377,6 +378,10 @@ function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowik
                             ''
                             ''
                         );
                         );
                     }
                     }
+                    
+                    var data_inter_var = do_link_change(link_real, data_nowiki, 0);
+                    var data_inter_link_main = data_inter_var[0];
+                    var data_inter_link_sub = data_inter_var[1];
                         
                         
                     let data_inter_get = data_wiki_set['inter_wiki'][data_inter[1]];
                     let data_inter_get = data_wiki_set['inter_wiki'][data_inter[1]];
                     if(data_inter_get) {
                     if(data_inter_get) {
@@ -398,7 +403,7 @@ function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowik
                     '';
                     '';
                     data_js += '' +
                     data_js += '' +
                         'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].href = ' + 
                         'document.getElementsByName("' + name_include + 'set_link_' + num_link_str + '")[0].href = ' + 
-                        '"' + data_inter_link + do_url_change(link_real) + '";' +
+                        '"' + data_inter_link + do_url_change(data_inter_link_main) + data_inter_link_sub + '";' +
                             '\n' +
                             '\n' +
                     '';
                     '';
 
 
@@ -862,7 +867,7 @@ function do_onmark_include_render(data, data_js, name_include, data_nowiki) {
 
 
 function do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki) {   
 function do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki) {   
     var num_nowiki = 0;
     var num_nowiki = 0;
-    data = data.replace(/\\(.)/g, function(x, x_1) {
+    data = data.replace(/\\(&gt;|&lt;|.)/g, function(x, x_1) {
         num_nowiki += 1;
         num_nowiki += 1;
         data_nowiki[name_include + 'nowiki_one_' + String(num_nowiki)] = x_1;
         data_nowiki[name_include + 'nowiki_one_' + String(num_nowiki)] = x_1;
         data_js += do_data_try_insert(name_include + 'nowiki_one_' + String(num_nowiki), do_js_safe_change(x_1));
         data_js += do_data_try_insert(name_include + 'nowiki_one_' + String(num_nowiki), do_js_safe_change(x_1));