def remove_admin_entry(task_data, num, override_log=False, no_redirect=False): session = model.Session() table = model.admin sql = table.select().where(table.c.num == num) row = session.execute(sql).fetchone() if not row: raise WakaError('Entry not found. Deleted?') ival1 = row['ival1'] ip = misc.dec_to_dot(ival1) if ival1 else '' string_val = row['sval1'] if row['total']: remove_htaccess_entry(ip) sql = table.delete().where(table.c.num == num) session.execute(sql) task_data.action = row['type'] + '_remove' if string_val: task_data.contents.append(row['sval1']) else: task_data.contents.append(ip + ' (' + misc.dec_to_dot(row['ival2']) \ + ')') board = local.environ['waka.board'] forward_url = misc.make_script_url(task='bans', board=board.name) return util.make_http_forward(forward_url, config.ALTERNATE_REDIRECT)
def remove_admin_entry(task_data, num, override_log=False, no_redirect=False): session = model.Session() table = model.admin sql = table.select().where(table.c.num == num) row = session.execute(sql).fetchone() if not row: raise WakaError("Entry not found. Deleted?") ival1 = row["ival1"] ip = misc.dec_to_dot(ival1) if ival1 else "" string_val = row["sval1"] if row["total"]: remove_htaccess_entry(ip) sql = table.delete().where(table.c.num == num) session.execute(sql) task_data.action = row["type"] + "_remove" if string_val: task_data.contents.append(row["sval1"]) else: task_data.contents.append(ip + " (" + misc.dec_to_dot(row["ival2"]) + ")") board = local.environ["waka.board"] forward_url = misc.make_script_url(task="bans", board=board.name) return util.make_http_forward(forward_url, config.ALTERNATE_REDIRECT)
def ban_check(numip, name, subject, comment): '''This function raises an exception if the IP address is banned, or the post contains a forbidden (non-spam) string. It otherwise returns nothing.''' session = model.Session() table = model.admin # IP Banned? sql = table.select().where(and_(table.c.type == 'ipban', table.c.ival1.op('&')(table.c.ival2) \ == table.c.ival2.op('&')(numip))) ip_row = session.execute(sql).fetchone() if ip_row: raise WakaError('Address %s banned. Reason: %s' % \ (misc.dec_to_dot(numip), ip_row.comment)) # To determine possible string bans, first normalize input to lowercase. comment = comment.lower() subject = subject.lower() name = name.lower() sql = select([table.c.sval1], table.c.type == 'wordban') query = session.execute(sql) for row in query: bad_string = row.sval1.lower() if comment.count(bad_string) or subject.count(bad_string) or \ name.count(bad_string): raise WakaError(strings.STRREF)
def remove_old_bans(): session = model.Session() table = model.admin sql = select([table.c.ival1, table.c.total], and_(table.c.expiration <= time.time(), table.c.expiration != 0)) query = session.execute(sql) for row in query: sql = table.delete().where(table.c.ival1 == row["ival1"]) session.execute(sql) if row["total"]: ip = misc.dec_to_dot(row["ival1"]) remove_htaccess_entry(ip)
def remove_old_bans(): session = model.Session() table = model.admin sql = select([table.c.ival1, table.c.total], and_(table.c.expiration <= time.time(), table.c.expiration != 0)) query = session.execute(sql) for row in query: sql = table.delete().where(table.c.ival1 == row['ival1']) session.execute(sql) if row['total']: ip = misc.dec_to_dot(row['ival1']) remove_htaccess_entry(ip)
def dec_to_dot(self, numip): if not numip: return '' return misc.dec_to_dot(numip)