give_user_ban.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from .tool.func import *
  2. def give_user_ban(name = None, ban_type = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. band = ban_type
  6. ip = ip_check()
  7. if ban_check(ip = ip, tool = 'login') == 1:
  8. if ip_or_user(ip) == 1 or admin_check('all', None, ip) == 0:
  9. return re_error('/ban')
  10. else:
  11. if admin_check(1, None, ip) !=1:
  12. return re_error('/error/3')
  13. if flask.request.method == 'POST':
  14. end = flask.request.form.get('second', '0')
  15. end = end if end else '0'
  16. name = name if name else flask.request.form.get('name', 'test')
  17. regex_get = flask.request.form.get('regex', None)
  18. login = flask.request.form.get('login', '')
  19. why = flask.request.form.get('why', '')
  20. if regex_get or band != '':
  21. type_d = 'regex' if regex_get else band
  22. try:
  23. re.compile(name)
  24. except:
  25. return re_error('/error/23')
  26. else:
  27. type_d = None
  28. if type_d:
  29. if admin_check(None, 'ban' + (' ' + type_d if type_d else '') + ' (' + name + ')') != 1:
  30. return re_error('/error/3')
  31. else:
  32. if name == ip:
  33. if admin_check('all', 'ban (' + name + ')') != 1:
  34. return re_error('/error/3')
  35. else:
  36. if admin_check(1, 'ban (' + name + ')') != 1:
  37. return re_error('/error/3')
  38. ban_insert(
  39. name,
  40. end,
  41. why,
  42. login,
  43. ip_check(),
  44. type_d
  45. )
  46. return redirect('/block_log')
  47. else:
  48. curs.execute(db_change("select end, why from rb where block = ? and ongoing = '1' and band = ?"), [name, band])
  49. end = curs.fetchall()
  50. if end:
  51. main_name = name
  52. b_now = load_lang('release')
  53. now = '(' + b_now + ')'
  54. if band != '':
  55. action = 'action="/auth/give/ban_regex/' + url_pas(name) + '"'
  56. else:
  57. action = 'action="/auth/give/ban/' + url_pas(name) + '"'
  58. if end[0][0] == '':
  59. data = '<ul class="inside_ul"><li>' + load_lang('limitless') + '</li>'
  60. else:
  61. data = '<ul class="inside_ul"><li>' + load_lang('period') + ' : ' + end[0][0] + '</li>'
  62. curs.execute(db_change("select block from rb where block = ? and login = 'O' and ongoing = '1'"), [name])
  63. if curs.fetchall():
  64. data += '<li>' + load_lang('login_able') + '</li>'
  65. if end[0][1] != '':
  66. data += '<li>' + load_lang('why') + ' : ' + end[0][1] + '</li></ul><hr class="main_hr">'
  67. else:
  68. data += '</ul><hr class="main_hr">'
  69. else:
  70. main_name = load_lang('ban')
  71. n_name = '<input placeholder="' + load_lang('name_or_ip_or_regex') + '" value="' + (name if name else '') + '" name="name" type="text"><hr class="main_hr">'
  72. regex = '<input type="checkbox" name="regex" ' + ('checked' if band == 'regex' else '') + '> ' + load_lang('regex') + '<hr class="main_hr">'
  73. plus = '<input type="checkbox" name="login"> ' + load_lang('login_able') + '<hr class="main_hr">'
  74. now = 0
  75. b_now = load_lang('ban')
  76. action = 'action="/auth/give/ban"'
  77. time_data = [
  78. ['86400', load_lang('1_day')],
  79. ['432000', load_lang('5_day')],
  80. ['2592000', load_lang('30_day')],
  81. ['15552000', load_lang('180_day')],
  82. ['31104000', load_lang('360_day')],
  83. ['0', load_lang('limitless')]
  84. ]
  85. insert_data = ''
  86. for i in time_data:
  87. insert_data += '<a href="javascript:insert_v(\'second\', \'' + i[0] + '\')">(' + i[1] + ')</a> '
  88. data = n_name + '''
  89. ''' + regex + '''
  90. <script>function insert_v(name, data) { document.getElementById(name).value = data; }</script>''' + insert_data + '''
  91. <hr class="main_hr">
  92. <input placeholder="''' + load_lang('ban_period') + ''' (''' + load_lang('second') + ''')" name="second" id="second" type="text">
  93. <hr class="main_hr">
  94. <input placeholder="''' + load_lang('why') + '''" name="why" type="text">
  95. <hr class="main_hr">
  96. ''' + plus
  97. return easy_minify(flask.render_template(skin_check(),
  98. imp = [main_name, wiki_set(), wiki_custom(), wiki_css([now, 0])],
  99. data = '''
  100. <form method="post" ''' + action + '''>
  101. ''' + data + '''
  102. <button type="submit">''' + b_now + '''</button>
  103. </form>
  104. ''',
  105. menu = [['manager', load_lang('return')]]
  106. ))