Bladeren bron

https://github.com/openNAMU/openNAMU/issues/1913

잉여개발기 (SPDV) 2 jaren geleden
bovenliggende
commit
cb5facc9c6
5 gewijzigde bestanden met toevoegingen van 68 en 100 verwijderingen
  1. 2 2
      emergency_tool.py
  2. 43 65
      route/give_user_ban.py
  3. 0 3
      route/recent_block.py
  4. 22 29
      route/tool/func.py
  5. 1 1
      version.json

+ 2 - 2
emergency_tool.py

@@ -103,8 +103,8 @@ elif what_i_do == '3':
 
     curs.execute(
         db_change(
-            "insert into rb (block, end, today, blocker, why, band) "
-            "values (?, ?, ?, ?, ?, ?)"
+            "insert into rb (block, end, today, blocker, why, band, ongoing, login) "
+            "values (?, ?, ?, ?, ?, ?, '', '')"
         ),
         [
             user_data,

+ 43 - 65
route/give_user_ban.py

@@ -14,13 +14,18 @@ def give_user_ban(name = None, ban_type = ''):
                 return re_error('/error/3')
 
         if flask.request.method == 'POST':
-            end = flask.request.form.get('second', '0')
-            end = end if end else '0'
+            time_limit = flask.request.form.get('date', '')
+            if re.search(r'^[0-9]{4}-[0-9]{2}-[0-9]{2}$', time_limit):
+                end = time_limit + ' 00:00:00'
+            else:
+                end = '0'
             
             regex_get = flask.request.form.get('regex', None)
             login = flask.request.form.get('login', '')
             why = flask.request.form.get('why', '')
 
+            release = flask.request.form.get('release', '')
+
             if ban_type == 'multiple':
                 all_user = re.findall(r'([^\n]+)\n', flask.request.form.get('name', 'test').replace('\r', '') + '\n')
             else:
@@ -57,82 +62,55 @@ def give_user_ban(name = None, ban_type = ''):
                     why,
                     login,
                     ip_check(),
-                    type_d
+                    type_d,
+                    1 if release != '' else 0
                 )
 
             return redirect('/block_log')
         else:
-            curs.execute(db_change("select end, why from rb where block = ? and ongoing = '1' and band = ?"), [name, ban_type])
-            end = curs.fetchall()
-            if end:
-                main_name = name
-                b_now = load_lang('release')
-                now = '(' + b_now + ')'
-                
-                if ban_type == 'regex':
-                    action = 'action="/auth/give/ban_regex/' + url_pas(name) + '"'
-                else:
-                    action = 'action="/auth/give/ban/' + url_pas(name) + '"'
-
-                if end[0][0] == '':
-                    data = '<ul class="opennamu_ul"><li>' + load_lang('limitless') + '</li>'
-                else:
-                    data = '<ul class="opennamu_ul"><li>' + load_lang('period') + ' : ' + end[0][0] + '</li>'
-
-                curs.execute(db_change("select block from rb where block = ? and login = 'O' and ongoing = '1'"), [name])
-                if curs.fetchall():
-                    data += '<li>' + load_lang('login_able') + '</li>'
+            if ban_type == 'multiple':
+                main_name = load_lang('multiple_ban')
+                n_name = '<textarea class="opennamu_textarea_500" placeholder="' + load_lang('name_or_ip_or_regex_multiple') + '" name="name"></textarea><hr class="main_hr">'
+            else:
+                main_name = load_lang('ban')
+                n_name = '<input placeholder="' + load_lang('name_or_ip_or_regex') + '" value="' + (name if name else '') + '" name="name"><hr class="main_hr">'
 
-                if end[0][1] != '':
-                    data += '<li>' + load_lang('why') + ' : ' + end[0][1] + '</li></ul><hr class="main_hr">'
-                else:
-                    data += '</ul><hr class="main_hr">'
+            now = 0
+            
+            if ban_type == 'multiple':
+                action = 'action="/auth/give/ban_multiple"'
             else:
-                if ban_type == 'multiple':
-                    main_name = load_lang('multiple_ban')
-                    n_name = '<textarea class="opennamu_textarea_500" placeholder="' + load_lang('name_or_ip_or_regex_multiple') + '" name="name"></textarea><hr class="main_hr">'
-                else:
-                    main_name = load_lang('ban')
-                    n_name = '<input placeholder="' + load_lang('name_or_ip_or_regex') + '" value="' + (name if name else '') + '" name="name"><hr class="main_hr">'
-                
-                regex = '<input type="checkbox" name="regex" ' + ('checked' if ban_type == 'regex' else '') + '> ' + load_lang('regex') + '<hr class="main_hr">'
-                plus = '<input type="checkbox" name="login"> ' + load_lang('login_able') + '<hr class="main_hr">'
-                now = 0
-                b_now = load_lang('ban')
+                action = 'action="/auth/give/ban"'
                 
-                if ban_type == 'multiple':
-                    action = 'action="/auth/give/ban_multiple"'
-                else:
-                    action = 'action="/auth/give/ban"'
-
-                time_data = [
-                    ['86400', load_lang('1_day')],
-                    ['432000', load_lang('5_day')],
-                    ['2592000', load_lang('30_day')],
-                    ['15552000', load_lang('180_day')],
-                    ['31104000', load_lang('360_day')],
-                    ['0', load_lang('limitless')]
-                ]
-                insert_data = ''
-                for i in time_data:
-                    insert_data += '<a href="javascript:opennamu_insert_v(\'second\', \'' + i[0] + '\')">(' + i[1] + ')</a> '
+            date_value = ''
+            info_data = ''
+            if name:
+                curs.execute(db_change("select end from rb where block = ? and ongoing = '1'"), [name])
+                db_data = curs.fetchall()
+                if db_data and db_data[0][0] != '':
+                    date_value = db_data[0][0].split()[0]
 
-                data = n_name + '''
-                    ''' + regex + '''
-                    ''' + insert_data + '''
-                    <hr class="main_hr">
-                    <input placeholder="''' + load_lang('ban_period') + ''' (''' + load_lang('second') + ''')" name="second" id="second" type="text">
-                    <hr class="main_hr">
-                    <input placeholder="''' + load_lang('why') + '''" name="why" type="text">
+                info_data = '''
+                    <div id="opennamu_get_user_info">''' + html.escape(name) + '''</div>
                     <hr class="main_hr">
-                ''' + plus
+                '''
 
             return easy_minify(flask.render_template(skin_check(),
                 imp = [main_name, wiki_set(), wiki_custom(), wiki_css([now, 0])],
-                data = '''
+                data = info_data + '''
                     <form method="post" ''' + action + '''>
-                        ''' + data + '''
-                        <button type="submit">''' + b_now + '''</button>
+                        ''' + n_name + '''
+                        <input type="checkbox" name="regex" ''' + ('checked' if ban_type == 'regex' else '') + '> ' + load_lang('regex') + '''
+                        <hr class="main_hr">
+                        <input type="date" value="''' + date_value + '''" name="date" pattern="\\d{4}-\\d{2}-\\d{2}">
+                        <hr class="main_hr">
+                        <input placeholder="''' + load_lang('why') + '''" name="why" type="text">
+                        <hr class="main_hr">
+                        <input type="checkbox" name="login"> ''' + load_lang('login_able') + '''
+                        <hr class="main_hr">
+                        <input type="checkbox" name="release"> ''' + load_lang('release') + '''
+                        <hr class="main_hr">
+                        <button type="submit">''' + load_lang('save') + '''</button>
                     </form>
                 ''',
                 menu = [['manager', load_lang('return')]]

+ 0 - 3
route/recent_block.py

@@ -17,9 +17,6 @@ def recent_block_2(name = 'Test', tool = 'all'):
                     </tr>
         '''
 
-        curs.execute(db_change("update rb set ongoing = '' where end < ? and end != '' and ongoing = '1'"), [get_time()])
-        conn.commit()
-
         get_type = flask.request.args.get('type', '')
         sub_type = flask.request.args.get('s_type', '')
         if tool == 'all':

+ 22 - 29
route/tool/func.py

@@ -590,6 +590,11 @@ def update(ver_num, set_data):
             for db_data in select_data:
                 curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [select_data[db_data][1], select_data[db_data][0], select_data[db_data][2]])
 
+        if ver_num < 3500374:
+            # ban 오류 해결
+            curs.execute(db_change("update rb set ongoing = '' where ongoing is null"))
+            curs.execute(db_change("update rb set login = '' where login is null"))
+
         conn.commit()
 
         print('Update completed')
@@ -2249,9 +2254,19 @@ def do_edit_filter(data):
             for data_list in curs.fetchall():
                 match = re.compile(data_list[0], re.I)
                 if match.search(data):
+                    end = '0' if data_list[1] == 'X' else data_list[1]
+
+                    if end != '0':
+                        end = int(number_check(end))
+                        time = datetime.datetime.now()
+                        plus = datetime.timedelta(seconds = end)
+                        r_time = (time + plus).strftime("%Y-%m-%d %H:%M:%S")
+                    else:
+                        r_time = '0'
+                
                     ban_insert(
                         ip_check(),
-                        '0' if data_list[1] == 'X' else data_list[1],
+                        r_time,
                         'edit filter',
                         None,
                         'tool:edit filter'
@@ -2402,25 +2417,16 @@ def ua_plus(u_id, u_ip, u_agent, time):
                 time
             ])
 
-def ban_insert(name, end, why, login, blocker, type_d = None):
+def ban_insert(name, end, why, login, blocker, type_d = None, release = 0):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
         now_time = get_time()
         band = type_d if type_d else ''
 
-        curs.execute(db_change(
-            "update rb set ongoing = '' where end < ? and end != '' and ongoing = '1'"
-        ), [now_time])
-        curs.execute(db_change("" + \
-            "select block from rb " + \
-            "where ((end > ? and end != '') or end = '') and block = ? and " + \
-            "band = ? and ongoing = '1'" + \
-        ""), [now_time, name, band])
-        if curs.fetchall():
-            curs.execute(db_change(
-                "insert into rb (block, end, today, blocker, why, band) values (?, ?, ?, ?, ?, ?)"
-            ), [
+        curs.execute(db_change("update rb set ongoing = '' where block = ? and band = ? and ongoing = '1'"), [name, band])
+        if release == 1:
+            curs.execute(db_change("insert into rb (block, end, today, blocker, why, band, ongoing, login) values (?, ?, ?, ?, ?, ?, '', '')"), [
                 name,
                 'release',
                 now_time,
@@ -2428,24 +2434,11 @@ def ban_insert(name, end, why, login, blocker, type_d = None):
                 '',
                 band
             ])
-            curs.execute(db_change(
-                "update rb set ongoing = '' where block = ? and band = ? and ongoing = '1'"
-            ), [name, band])
         else:
             login = 'O' if login != '' else ''
+            r_time = end if end != '0' else ''
 
-            if end != '0':
-                end = int(number_check(end))
-                time = datetime.datetime.now()
-                plus = datetime.timedelta(seconds = end)
-                r_time = (time + plus).strftime("%Y-%m-%d %H:%M:%S")
-            else:
-                r_time = ''
-
-            curs.execute(db_change(
-                "insert into rb (block, end, today, blocker, why, band, ongoing, login) " + \
-                "values (?, ?, ?, ?, ?, ?, '1', ?)"
-            ), [
+            curs.execute(db_change("insert into rb (block, end, today, blocker, why, band, ongoing, login) values (?, ?, ?, ?, ?, ?, '1', ?)"), [
                 name, 
                 r_time, 
                 now_time, 

+ 1 - 1
version.json

@@ -1,7 +1,7 @@
 {
     "beta" : {
         "r_ver" : "v3.4.6-RC5-dev77",
-        "c_ver" : "3500373",
+        "c_ver" : "3500374",
         "s_ver" : "3500112"
     }
 }