2du 4 năm trước cách đây
mục cha
commit
7bd224b7db

+ 21 - 9
app.py

@@ -535,6 +535,18 @@ def user_tool(name = None):
 def user_setting():
     return user_setting_2(conn, server_init)
 
+@app.route('/change/email', methods = ['POST', 'GET'])
+def user_setting_email():
+    return user_setting_email_2(conn)
+
+@app.route('/change/email/check', methods = ['POST', 'GET'])
+def user_setting_email_check():
+    return user_setting_email_check_2(conn)
+
+@app.route('/change/pw', methods = ['POST', 'GET'])
+def user_setting_pw_change():
+    return user_setting_pw_change_2(conn)
+
 @app.route('/user')
 def user_info():
     return user_info_2(conn)
@@ -552,7 +564,7 @@ def user_count_edit(name = None):
 def alarm():
     return alarm_2(conn)
 
-@app.route('/del_alarm')
+@app.route('/alarm/delete')
 def alarm_del():
     return alarm_del_2(conn)
     
@@ -565,27 +577,27 @@ def watch_list_name(tool = 'star_doc', name = 'Test'):
     return watch_list_name_2(conn, tool, name)
 
 # Func-login
-@app.route('/2fa_login', methods = ['POST', 'GET'])
-def login_2fa():
-    return login_2fa_2(conn)
 
+# 현 구조
 @app.route('/login', methods = ['POST', 'GET'])
 def login():
     return login_2(conn)
 
-@app.route('/pw_change', methods = ['POST', 'GET'])
-def login_pw_change():
-    return login_pw_change_2(conn)
+@app.route('/login/2fa', methods = ['POST', 'GET'])
+def login_2fa():
+    return login_2fa_2(conn)
 
 @app.route('/register', methods = ['POST', 'GET'])
 def login_register():
     return login_register_2(conn)
 
-@app.route('/<regex("need_email|pass_find|email_change"):tool>', methods = ['POST', 'GET'])
+@app.route('/<regex("need_email"):tool>', methods = ['POST', 'GET'])
+@app.route('/<regex("pass_find"):tool>', methods = ['POST', 'GET'])
 def login_need_email(tool = 'pass_find'):
     return login_need_email_2(conn, tool)
 
-@app.route('/<regex("check_key|check_pass_key|email_replace"):tool>', methods = ['POST', 'GET'])
+@app.route('/<regex("check_key"):tool>', methods = ['POST', 'GET'])
+@app.route('/<regex("check_pass_key"):tool>', methods = ['POST', 'GET'])
 def login_check_key(tool = 'check_pass_key'):
     return login_check_key_2(conn, tool)
 

+ 3 - 1
route/__init__.py

@@ -74,6 +74,9 @@ from .api_version import *
 # Import-user
 from .user_info import *
 from .user_setting import *
+from .user_setting_email import *
+from .user_setting_email_check import *
+from .user_setting_pw_change import *
 from .user_tool import *
 from .user_count_edit import *
 from .user_custom_head_view import *
@@ -89,7 +92,6 @@ from .inter_wiki import *
 
 # Import-login
 from .login import *
-from .login_pw_change import *
 from .login_2fa import *
 from .login_check_key import *
 from .login_logout import *

+ 1 - 1
route/login.py

@@ -47,7 +47,7 @@ def login_2(conn):
         if fa_data and fa_data[0][0] != '':
             flask.session['b_id'] = user_id
 
-            return redirect('/2fa_login')
+            return redirect('/login/2fa')
         else:
             flask.session['id'] = user_id
 

+ 8 - 0
route/tool/func_mark.py

@@ -68,6 +68,14 @@ def backlink_generate(data_markup, doc_data, doc_name):
             data_link_end_all += [[doc_name, i, 'file'] for i in data_link_end['file']]
             data_link_end_all += [[doc_name, i, ''] for i in data_link_end['link']]
             
+            data_link_no = []
+            for i in data_link_end['link']:
+                curs.execute(db_change("select title from data where title = ?"), [i])
+                if not curs.fetchall():
+                    data_link_no += [[doc_name, i, 'no']]
+                    
+            data_link_end_all += data_link_no
+            
         # Include
         include_re = re.compile(r'\[include\(((?:(?!\)\]).)+)\)\]', re.I)
         

+ 2 - 5
route/user_alarm.py

@@ -4,17 +4,14 @@ def alarm_2(conn):
     curs = conn.cursor()
 
     num = int(number_check(flask.request.args.get('num', '1')))
-    if num * 50 > 0:
-        sql_num = num * 50 - 50
-    else:
-        sql_num = 0
+    sql_num = (num * 50 - 50) if num * 50 > 0 else 0
 
     data = '<ul class="inside_ul">'
 
     curs.execute(db_change("select data, date from alarm where name = ? order by date desc limit ?, 50"), [ip_check(), sql_num])
     data_list = curs.fetchall()
     if data_list:
-        data = '<a href="/del_alarm">(' + 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:
             data += '<li>' + data_one[0] + ' (' + data_one[1] + ')</li>'

+ 2 - 2
route/user_setting.py

@@ -77,9 +77,9 @@ def user_setting_2(conn, server_init):
                         <div id="get_user_info"></div>
                         <script>load_user_info("''' + ip + '''");</script>
                         <hr class="main_hr">
-                        <a href="/pw_change">(''' + load_lang('password_change') + ''')</a>
+                        <a href="/change/pw">(''' + load_lang('password_change') + ''')</a>
                         <hr class="main_hr">
-                        <span>''' + load_lang('email') + ''' : ''' + email + '''</span> <a href="/email_change">(''' + load_lang('email_change') + ''')</a>
+                        <span>''' + load_lang('email') + ''' : ''' + email + '''</span> <a href="/change/email">(''' + load_lang('email_change') + ''')</a>
                         <h2>''' + load_lang('main') + '''</h2>
                         <span>''' + load_lang('skin') + '''</span>
                         <hr class="main_hr">

+ 70 - 0
route/user_setting_email.py

@@ -0,0 +1,70 @@
+from .tool.func import *
+
+def user_setting_email_2(conn):
+    curs = conn.cursor()
+    
+    if flask.request.method == 'POST':
+        re_set_list = ['c_key']
+        flask.session['c_key'] = load_random_key(32)
+
+        user_email = flask.request.form.get('email', '')
+        email_data = re.search(r'@([^@]+)$', user_email)
+        if email_data:
+            curs.execute(db_change("select html from html_filter where html = ? and kind = 'email'"), [email_data.group(1)])
+            if not curs.fetchall():
+                for i in re_set_list:
+                    flask.session.pop(i, None)
+
+                return redirect('/email_filter')
+        else:
+            for i in re_set_list:
+                flask.session.pop(i, None)
+
+            return re_error('/error/36')
+
+        curs.execute(db_change('select data from other where name = "email_title"'))
+        sql_d = curs.fetchall()
+        t_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else (wiki_set()[0] + ' key')
+
+        curs.execute(db_change('select data from other where name = "email_text"'))
+        sql_d = curs.fetchall()
+        if sql_d and sql_d[0][0] != '':
+            i_text = html.escape(sql_d[0][0]) + '\n\nKey : ' + flask.session['c_key']
+        else:
+            i_text = 'Key : ' + flask.session['c_key']
+        
+        curs.execute(db_change('select id from user_set where name = "email" and data = ?'), [user_email])
+        if curs.fetchall():
+            for i in re_set_list:
+                flask.session.pop(i, None)
+
+            return re_error('/error/35')
+
+        if send_email(user_email, t_text, i_text) == 0:
+            for i in re_set_list:
+                flask.session.pop(i, None)
+
+            return re_error('/error/18')
+
+        flask.session['c_email'] = user_email
+
+        return redirect('/change/email/check')
+    else:
+        curs.execute(db_change('select data from other where name = "email_insert_text"'))
+        sql_d = curs.fetchall()
+        b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = [load_lang('email'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+            data = '''
+                <a href="/email_filter">(''' + load_lang('email_filter_list') + ''')</a>
+                <hr class="main_hr">
+                ''' + b_text + '''
+                <form method="post">
+                    <input placeholder="''' + load_lang('email') + '''" name="email" type="text">
+                    <hr class="main_hr">
+                    <button type="submit">''' + load_lang('save') + '''</button>
+                </form>
+            ''',
+            menu = [['user', load_lang('return')]]
+        ))

+ 42 - 0
route/user_setting_email_check.py

@@ -0,0 +1,42 @@
+from .tool.func import *
+
+def user_setting_email_check_2(conn):
+    curs = conn.cursor()
+
+    re_set_list = ['c_key', 'c_email']
+    if  not 'c_key' in flask.session or \
+        not 'c_email' in flask.session:
+        for i in re_set_list:
+            flask.session.pop(i, None)
+    
+    if  flask.request.method == 'POST':
+        ip = ip_check()
+        input_key = flask.request.form.get('key', '')
+        user_agent = flask.request.headers.get('User-Agent', '')
+
+        if flask.session['c_key'] == input_key:
+            curs.execute(db_change('delete from user_set where name = "email" and id = ?'), [ip])
+            curs.execute(db_change('insert into user_set (name, id, data) values ("email", ?, ?)'), [ip, flask.session['c_email']])
+
+
+        for i in re_set_list:
+            flask.session.pop(i, None)
+
+        return redirect('/change')
+    else:
+        curs.execute(db_change('select data from other where name = "check_key_text"'))
+        sql_d = curs.fetchall()
+        b_text = (sql_d[0][0] + '<hr class="main_hr">') if sql_d and sql_d[0][0] != '' else ''
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = [load_lang('check_key'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+            data = '''
+                <form method="post">
+                    ''' + b_text + '''
+                    <input placeholder="''' + load_lang('key') + '''" name="key" type="text">
+                    <hr class="main_hr">
+                    <button type="submit">''' + load_lang('save') + '''</button>
+                </form>
+            ''',
+            menu = [['user', load_lang('return')]]
+        ))

+ 0 - 0
route/login_pw_change.py → route/user_setting_pw_change.py


+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.0-stable-01b (beta-01b) (dev-21.08.12-01)",
+        "r_ver" : "v3.4.0-stable-01b (beta-01b) (dev-21.08.13-01)",
         "c_ver" : "3400101",
         "s_ver" : "12"
     }