def task_addipfrompopup(environ, start_response): request = environ['werkzeug.request'] board = environ['waka.board'] kwargs = kwargs_from_params(request, form=['ip', 'mask', 'total', 'expiration', 'comment', 'delete', 'deleteall_confirm', 'globaldeleteall_confirm'], admin=True, ) kwargs['action'] = 'admin_entry' kwargs['option'] = 'ipban' kwargs['caller'] = 'window' delete = kwargs.pop('delete') delete_all = kwargs.pop('deleteall_confirm') globaldelete_all = kwargs.pop('globaldeleteall_confirm') try: if globaldelete_all: StaffAction(kwargs['cookie'], 'delete_by_ip_global', ip=kwargs['ip'], caller='internal').execute() elif delete_all: StaffAction(kwargs['cookie'], 'delete_by_ip', ip=kwargs['ip'], board=board).execute() elif delete: StaffAction(kwargs['cookie'], 'admin_delete', board=board, posts=[delete], from_window=True, password='', file_only=False, archiving=False, caller='internal')\ .execute() except WakaError: pass make_cookies(ban_mask=kwargs['mask'], ban_expiration=kwargs['expiration'], ban_comment=kwargs['comment']) return StaffAction(**kwargs).execute()
def task_post(environ, start_response): request = environ['werkzeug.request'] board = environ['waka.board'] params = { 'form': [ 'parent', 'field1', 'email', 'subject', 'comment', 'password', 'nofile', 'captcha', 'no_captcha', 'no_format', 'sticky', 'lock', 'adminpost' ], 'cookies': ['wakaadmin'], 'file': ['file'] } kwargs = kwargs_from_params(request, params) kwargs['name'] = kwargs.pop('field1') kwargs['oekaki_post'] = kwargs['srcinfo'] = kwargs['pch'] = None kwargs['admin_post_mode'] = kwargs.pop('adminpost') if kwargs['no_format'] == '0': kwargs['no_format'] = False if kwargs['admin_post_mode']: kwargs['action'] = 'admin_post' kwargs['board'] = board return StaffAction(**kwargs).execute() del kwargs['admin'] return board.post_stuff(**kwargs)
def task_post(environ, start_response): request = environ['werkzeug.request'] board = environ['waka.board'] if request.method != 'POST': raise WakaError("POST only accepted") admin = get_cookie_from_request(request, 'wakaadmin') wakapost = WakaPost.from_request(request) if wakapost.admin_post: return StaffAction(admin, 'admin_post', wakapost=wakapost, board=board).execute() # not admin, so let's check for hcaptcha style_cookie = get_cookie_from_request( request, board.options.get('STYLE_COOKIE', 'wakastyle')) hcaptcha = request.values.get('hcaptcha', '').lower() is_nokosage = wakapost.email.lower() in ['noko', 'sage'] import config if (config.HCAPTCHA and hcaptcha != config.HCAPTCHA_ANSWER and not (config.HCAPTCHA_COOKIE_BYPASS and style_cookie != '') and not (config.HCAPTCHA_NOKOSAGE_BYPASS and is_nokosage)): return Template( 'hcaptcha_failed', question=config.HCAPTCHA_QUESTION, answer=config.HCAPTCHA_ANSWER, ) return board.post_stuff(wakapost)
def task_delete(environ, start_response, archiving=False): # TODO review compatibility with wakaba or refactor request = environ['werkzeug.request'] board = environ['waka.board'] singledelete = (request.values.get("singledelete", '') == 'OK') params = { 'form': ['password', 'file_only', 'from_window', 'admindelete'], 'cookies': ['wakaadmin'] } kwargs = kwargs_from_params(request, params) if singledelete: # NOTE: from_window parameter originates from pop-up windows # brought up by clicking "Delete" without JS enabled. params_single = ['postpassword', 'postfileonly', 'from_window'] for param, single in map(None, params['form'][:3], params_single): kwargs[param] = request.form.get(single, '') kwargs['posts'] = [request.values.get('deletepost', '')] else: kwargs['posts'] = request.form.getlist('num') kwargs['archiving'] = archiving if kwargs['admindelete']: kwargs['board'] = board kwargs['action'] = 'admin_delete' return StaffAction(**kwargs).execute() del kwargs['admin'] return board.delete_stuff(**kwargs)
def task_rebuildglobal(environ, start_response): request = environ['werkzeug.request'] params = {'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) kwargs['action'] = 'rebuild_global' return StaffAction(**kwargs).execute()
def task_removeban(environ, start_response): request = environ['werkzeug.request'] params = {'form': ['num'], 'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) kwargs['action'] = 'remove_admin_entry' return StaffAction(**kwargs).execute()
def task_rebuildglobal(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, admin=True, ) kwargs['action'] = 'rebuild_global' return StaffAction(**kwargs).execute()
def task_updatespam(environ, start_response): request = environ['werkzeug.request'] params = {'form': ['spam'], 'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) kwargs['action'] = 'update_spam' return StaffAction(**kwargs).execute()
def task_updatespam(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['spam'], admin=True, ) kwargs['action'] = 'update_spam' return StaffAction(**kwargs).execute()
def task_removeproxy(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['num'], admin=True, ) kwargs['action'] = 'remove_proxy_entry' return StaffAction(**kwargs).execute()
def task_addproxy(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['type', 'ip', 'timestamp'], admin=True, ) kwargs['action'] = 'add_proxy_entry' return StaffAction(**kwargs).execute()
def task_addstring(environ, start_response): request = environ['werkzeug.request'] params = {'form': ['type', 'string', 'comment'], 'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) kwargs['action'] = 'admin_entry' kwargs['option'] = kwargs.pop('type') kwargs['sval1'] = kwargs.pop('string') return StaffAction(**kwargs).execute()
def task_addip(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['type', 'comment', 'ip', 'mask', 'total', 'expiration'], admin=True, ) kwargs['option'] = kwargs.pop('type') kwargs['action'] = 'admin_entry' return StaffAction(**kwargs).execute()
def task_move(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, admin=True ) kwargs['parent'] = request.values.get('num', '') kwargs['src_brd_obj'] = environ['waka.board'] kwargs['dest_brd_obj'] = Board(request.values.get('destboard', '')) kwargs['action'] = 'thread_move' return StaffAction(**kwargs).execute()
def task_adminedit(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['num', 'ival1', 'ival2', 'sval1', 'total', 'year', 'month', 'day', 'hour', 'min', 'sec', 'comment', 'noexpire'], admin=True, ) kwargs['action'] = 'edit_admin_entry' return StaffAction(**kwargs).execute()
def task_addstring(environ, start_response): request = environ['werkzeug.request'] kwargs = kwargs_from_params(request, form=['type', 'string', 'comment'], admin=True, ) kwargs['action'] = 'admin_entry' kwargs['option'] = kwargs.pop('type') kwargs['sval1'] = kwargs.pop('string') return StaffAction(**kwargs).execute()
def _toggle_thread_state(environ, start_response, operation): request = environ['werkzeug.request'] board = environ['waka.board'] kwargs = kwargs_from_params(request, admin=True, ) kwargs['num'] = request.values.get('thread', 0) kwargs['board'] = board kwargs['action'] = 'thread_' + operation return StaffAction(**kwargs).execute()
def task_restorebackups(environ, start_response): request = environ['werkzeug.request'] board = environ['waka.board'] params = {'form': ['handle'], 'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) kwargs['posts'] = request.form.getlist('num') kwargs['restore'] = kwargs.pop('handle').lower() == 'restore' kwargs['board'] = board kwargs['action'] = 'backup_remove' return StaffAction(**kwargs).execute()
def task_addip(environ, start_response): request = environ['werkzeug.request'] params = { 'form': ['type', 'comment', 'ip', 'mask', 'total', 'expiration'], 'cookies': ['wakaadmin'] } kwargs = kwargs_from_params(request, params) kwargs['option'] = kwargs.pop('type') kwargs['action'] = 'admin_entry' return StaffAction(**kwargs).execute()
def task_move(environ, start_response): request = environ['werkzeug.request'] kwargs = {} kwargs['parent'] = request.values.get('num', '') try: kwargs['admin'] = get_cookie_from_request(request, 'wakaadmin') except KeyError: kwargs['admin'] = '' kwargs['src_brd_obj'] = environ['waka.board'] kwargs['dest_brd_obj'] = Board(request.values.get('destboard', '')) kwargs['action'] = 'thread_move' return StaffAction(**kwargs).execute()
def _toggle_thread_state(environ, start_response, operation): request = environ['werkzeug.request'] board = environ['waka.board'] kwargs = {} kwargs['num'] = request.values.get('thread', 0) kwargs['board'] = board kwargs['action'] = 'thread_' + operation try: kwargs['admin'] = get_cookie_from_request(request, 'wakaadmin') except KeyError: kwargs['admin'] = '' return StaffAction(**kwargs).execute()
def task_editpost(environ, start_response): request = environ['werkzeug.request'] board = environ['waka.board'] if request.method != 'POST': raise WakaError("POST only accepted") admin = get_cookie_from_request(request, 'wakaadmin') wakapost = WakaPost.from_request(request) if wakapost.admin_post: return StaffAction(admin, 'admin_edit', wakapost=wakapost, board=board).execute() else: return board.edit_stuff(wakapost)
def task_deleteall(environ, start_response): request = environ['werkzeug.request'] params = {'form': ['ip', 'mask', 'global'], 'cookies': ['wakaadmin']} kwargs = kwargs_from_params(request, params) if kwargs.pop('global'): kwargs['action'] = 'delete_by_ip_global' else: kwargs['board'] = environ['waka.board'] kwargs['action'] = 'delete_by_ip' # Perform action: returns nothing. StaffAction(**kwargs).execute() return task_mpanel(environ, start_response)
def task_resolve(environ, start_response): request = environ['werkzeug.request'] params = {'cookies': ['wakaadmin'], 'form': ['delete']} kwargs = kwargs_from_params(request, params) posts = {} for post in request.form.getlist('num'): (board_name, num) = post.split('-') try: posts[board_name].append(num) except KeyError: posts[board_name] = [num] kwargs['posts'] = posts kwargs['action'] = 'report_resolve' return StaffAction(**kwargs).execute()