give_user_ban.py 6.1 KB

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