give_user_ban.py 4.8 KB

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