Пример #1
0
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()
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
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()
Пример #8
0
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()
Пример #9
0
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()
Пример #10
0
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()
Пример #11
0
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()
Пример #12
0
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()
Пример #13
0
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()
Пример #14
0
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()
Пример #15
0
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()
Пример #16
0
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()
Пример #17
0
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()
Пример #18
0
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()
Пример #19
0
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()
Пример #20
0
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()
Пример #21
0
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()
Пример #22
0
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)
Пример #23
0
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)
Пример #24
0
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()