def generate_trigger_urls(app):
    for name, triggers in TRIGGER_MAP.items():
        for trigger in triggers:
            view_name = get_trigger_name(name, trigger)
            view_func = get_trigger_view(name, trigger)

            app.route(view_name, ["GET", "POST"], callback=view_func)
예제 #2
0
def _get_trigger_info(environ):
    """
    This method is essentially the router for this application. It gets
    the vulnerability name and trigger function from the request path.
    These two values are returned in a 2-tuple.

    If we find an invalid path, raise a NotFound exception.
    If we find a vulnerability name homepage, such as /vulnpy/cmdi/, the
    second element of the return value will be None.
    """
    path_components = [s for s in environ["PATH_INFO"].split("/") if s != ""]
    if (
        len(path_components) < 1
        or len(path_components) > 3
        or path_components[0] != "vulnpy"
    ):
        raise NotFound()
    if len(path_components) == 1:
        return "home", None

    name = path_components[1]
    if name not in TRIGGER_MAP:
        raise NotFound()
    # we need to do this to avoid path traversal during template resolution
    sanitized_name = [s for s in TRIGGER_MAP.keys() if s == name][0]

    if len(path_components) == 2:
        return sanitized_name, None

    return sanitized_name, _get_trigger_func(sanitized_name, path_components[2])
def generate_trigger_urls(config):
    for name, triggers in TRIGGER_MAP.items():
        for trigger in triggers:
            view_name = get_trigger_name(name, trigger)
            view_pattern = get_trigger_pattern(name, trigger)
            view_func = get_trigger_view(name, trigger)

            _add_route(config, view_name, view_pattern, view_func)
예제 #4
0
def generate_trigger_urls(app):
    for name, triggers in TRIGGER_MAP.items():
        for trigger in triggers:
            view_name = get_trigger_name(name, trigger)

            view_cls = get_trigger_view(name, trigger)

            app.add_route(view_name, view_cls())
예제 #5
0
def _make_trigger_list():
    arglist = []
    for vuln_name, trigger_names in TRIGGER_MAP.items():
        if not trigger_names:
            continue
        for trigger in trigger_names:
            arglist.append((vuln_name, trigger))

    return arglist
예제 #6
0
def generate_trigger_urls():
    trigger_urls = []

    for name, triggers in TRIGGER_MAP.items():
        for trigger in triggers:
            view_name = get_trigger_name(name, trigger)
            view_func = get_trigger_view(name, trigger)

            trigger_urls.append(compat_url(view_name, view_func))

    return trigger_urls
예제 #7
0
def generate_trigger_urls():
    for name, triggers in TRIGGER_MAP.items():
        for trigger in triggers:
            get_trigger_view(name, trigger)