from .tool.func import * async def give_user_ban(name = None, ban_type = ''): with get_db_connect() as conn: curs = conn.cursor() ip = ip_check() if (await ban_check(ip = ip, tool = 'login'))[0] == 1: if ip_or_user(ip) == 1 or await acl_check(tool = 'all_admin_auth', ip = ip) != 0: return await re_error(conn, 0) else: if await acl_check(tool = 'ban_auth', ip = ip) == 1: return await re_error(conn, 3) if flask.request.method == 'POST': end = '0' date_select = flask.request.form.get('date_type', 'days') if date_select == 'date': 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: time_limit = int(number_check(flask.request.form.get('date_days', '1'))) time = datetime.datetime.now() plus = datetime.timedelta(days = time_limit) end = (time + plus).strftime("%Y-%m-%d %H:%M:%S") regex_get = flask.request.form.get('do_ban_type', '') why = flask.request.form.get('why', '') release = '' login = '' ban_option = flask.request.form.get('ban_option', '') if ban_option == 'login_able_and_regsiter_disable': login = 'O' elif ban_option == 'login_able': login = 'L' elif ban_option == 'edit_request_able': login = 'E' elif ban_option == 'completely_ban': login = 'A' elif ban_option == 'dont_come_this_site': login = 'D' elif ban_option == 'release': release = '1' if ban_type == 'multiple': all_user = re.findall(r'([^\n]+)\n', flask.request.form.get('name', 'test').replace('\r', '') + '\n') else: if name: all_user = [name] else: all_user = [flask.request.form.get('name', 'test')] for name in all_user: if regex_get == 'regex': type_d = 'regex' try: re.compile(name) except: return await re_error(conn, 23) elif regex_get == 'cidr': type_d = 'cidr' try: ipaddress.IPv4Network(name, False) except: try: ipaddress.IPv6Network(name, False) except: return await re_error(conn, 45) elif regex_get == 'private': type_d = 'private' if await acl_check(tool = 'owner_auth', ip = ip) == 1: return await re_error(conn, 0) else: type_d = None if regex_get != 'private': if name == ip: if await acl_check(tool = 'all_admin_auth', memo = 'ban (' + name + ')') == 1: return await re_error(conn, 3) else: if await acl_check(tool = 'ban_auth', memo = 'ban (' + name + ')') == 1: return await re_error(conn, 3) ban_insert(conn, name, end, why, login, ip_check(), type_d, 1 if release != '' else 0 ) return redirect(conn, '/recent_block') else: if ban_type == 'multiple': main_name = await get_lang('multiple_ban') n_name = '
' else: main_name = await get_lang('ban') n_name = '
' now = 0 if ban_type == 'multiple': action = 'action="/auth/ban/multiple"' else: action = 'action="/auth/ban"' 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] if ban_type == '': info_data = '
' + html.escape(name) + '
' owner_option = '' if await acl_check(tool = 'owner_auth', ip = ip) != 1: owner_option = '' return await render_template( main_name, info_data + '''

''' + await get_lang('method') + '''

''' + n_name + '''

''' + await get_lang('date') + '''


''' + await get_lang('day') + '''

''' + await get_lang('date') + '''

''' + await get_lang('other') + '''


''', now, [['manager', await get_lang('return')]] )