Browse Source

Merge branch 'master' of https://github.com/2DU/openNAMU

Surplus_Up (2DU) 7 years ago
parent
commit
a607a2893b
3 changed files with 42 additions and 44 deletions
  1. 21 30
      app.py
  2. 19 12
      func.py
  3. 2 2
      set_mark/tool.py

+ 21 - 30
app.py

@@ -17,7 +17,7 @@ import sys
 
 from func import *
 
-r_ver = 'v3.0.7-Master-01'
+r_ver = 'v3.0.7-Master-03'
 c_ver = ''.join(re.findall('[0-9]', r_ver))
 
 print('Version : ' + r_ver)
@@ -236,7 +236,7 @@ if not rep_data:
             rep_language = 'en-US'
     else:
         while 1:
-            print('Language [{}] : '.format(' '.join(support_language)))
+            print('Language [{}] : '.format(' '.join(support_language)), end = '')
             rep_language = str(input())
             if rep_language in support_language:
                 curs.execute("insert into other (name, data) values ('language', ?)", [rep_language])
@@ -2495,23 +2495,7 @@ def login():
     ip = ip_check()
     agent = flask.request.headers.get('User-Agent')
     
-    curs.execute("select block from ban where block = ? and login = 'O'", [ip])
-    if not curs.fetchall():
-        match = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
-        if match:
-            match = match.groups()[0]
-        else:
-            match = 'Not'
-
-        curs.execute("select block from ban where block = ? and login = 'O'", [match])
-        if not curs.fetchall():
-            ban = ban_check()
-        else:
-            ban = 0
-    else:
-        ban = 0
-
-    if ban == 1:
+    if ban_check(tool = 'login') == 1:
         return re_error('/ban')
         
     if flask.request.method == 'POST':        
@@ -2855,15 +2839,19 @@ def logout():
     
 @app.route('/ban/<name>', methods=['POST', 'GET'])
 def user_ban(name = None):
-    curs.execute("select acl from user where id = ?", [name])
-    user = curs.fetchall()
-    if not user:
-        return re_error('/error/2')
+    if ip_or_user(name) == 0:
+        curs.execute("select acl from user where id = ?", [name])
+        user = curs.fetchall()
+        if not user:
+            return re_error('/error/2')
 
-    if user and user[0][0] != 'user':
-        if admin_check(None, None) != 1:
-            return re_error('/error/4')
+        if user and user[0][0] != 'user':
+            if admin_check(None, None) != 1:
+                return re_error('/error/4')
 
+    if ban_check(ip = ip_check(), tool = 'login') == 1:
+        return re_error('/ban')
+                
     if flask.request.method == 'POST':
         if admin_check(1, 'ban (' + name + ')') != 1:
             return re_error('/error/3')
@@ -2889,6 +2877,10 @@ def user_ban(name = None):
                 data = '<ul><li>' + load_lang('limitless') + ' ' + load_lang('ban') + '</li>'
             else:
                 data = '<ul><li>' + load_lang('ban') + ' : ' + end[0][0] + '</li>'
+                
+            curs.execute("select block from ban where block = ? and login = 'O'", [name])
+            if curs.fetchall():
+                data += '<li>' + load_lang('login') + ' ' + load_lang('able') + '</li>'
 
             if end[0][1] != '':
                 data += '<li>' + load_lang('why') + ' : ' + end[0][1] + '</li></ul><hr>'
@@ -3205,8 +3197,7 @@ def read_view(name = None):
         if test and test[0][0] != 'user':
             acl = ' (' + load_lang('admin') + ')'
         else:
-            curs.execute("select block from ban where block = ?", [g[0]])
-            if curs.fetchall():
+            if ban_check(g[0]) == 1:
                 sub += ' (' + load_lang('ban') + ')'
             else:
                 acl = ''
@@ -3618,7 +3609,7 @@ def user_info():
         if match:
             match = match.groups()[0]
         else:
-            match = 'Error'
+            match = '-'
 
         curs.execute("select end, login, band from ban where block = ? or block = ?", [ip, match])
         block_data = curs.fetchall()
@@ -3626,7 +3617,7 @@ def user_info():
             if block_data[0][0] != '':
                 acl += ' (End : ' + block_data[0][0] + ')'
             else:
-                acl += ' (End : ' + load_lang('limitless') + ')'        
+                acl += ' (' + load_lang('limitless') + ')'        
 
             if block_data[0][1] != '':
                 acl += ' (' + load_lang('login') + ' ' + load_lang('able') + ')'

+ 19 - 12
func.py

@@ -23,7 +23,7 @@ def load_conn(data):
     load_conn2(data)
 
 def easy_minify(data):
-    data = re.sub('\n +', '\n', data)
+    data = re.sub('\n +<', '\n<', data)
     
     return data
 
@@ -502,23 +502,30 @@ def acl_check(name):
 
     return 0
 
-def ban_check():
-    ip = ip_check()
+def ban_check(ip = None, tool = None):
+    if not ip:
+        ip = ip_check()
 
     band = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
     if band:
         band_it = band.groups()[0]
     else:
-        band_it = 'Not'
-        
-    curs.execute("select block from ban where block = ?", [band_it])
+        band_it = '-'
+    
+    curs.execute("select end, login from ban where block = ?", [band_it])
     band_d = curs.fetchall()
     
-    curs.execute("select block from ban where block = ?", [ip])
+    curs.execute("select end, login from ban where block = ?", [ip])
     ban_d = curs.fetchall()
-    if band_d or ban_d:
-        return 1
     
+    data = band_d or ban_d
+    if data and (data[0][0] == '' or data[0][0] > get_time()):
+        if tool and tool == 'login':                    
+            if data[0][1] == 'O':
+                return 0
+                
+        return 1
+
     return 0
         
 def topic_check(name, sub):
@@ -625,7 +632,7 @@ def re_error(data):
                     end_data = curs.fetchall()
             
             if end_data:
-                end = '<li>' + load_lang('state') + ' : '
+                end = '<li>' + load_lang('state') + ' : ' + load_lang('ban') + '</li><li>'
 
                 if end_data[0][0]:
                     now = int(re.sub('(\-| |:)', '', get_time()))
@@ -637,9 +644,9 @@ def re_error(data):
 
                         end += '<script>location.reload();</script>'
                     else:
-                        end += load_lang('why') + ' : ' + end_data[0][0]
+                        end += 'End : ' + end_data[0][0]
                 else:
-                    end += load_lang('why') + ' : ' + load_lang('limitless')
+                    end += load_lang('limitless')
                 
                 end += '</li>'
 

+ 2 - 2
set_mark/tool.py

@@ -17,8 +17,8 @@ def ip_check():
             if ip == ('::1' or '127.0.0.1'):
                 ip = flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr)
         except:
-            ip = 'Error'
-
+            ip = '-'
+            
     return str(ip)
 
 def savemark(data):