Ejemplo n.º 1
0
def add_distributed():
    form = AddDistributedQueryForm()
    form.set_choices()

    if form.validate_on_submit():
        nodes = []

        if not form.nodes.data and not form.tags.data:
            # all nodes get this query
            nodes = Node.query.all()

        if form.nodes.data:
            nodes.extend(
                Node.query.filter(Node.node_key.in_(form.nodes.data)).all())

        if form.tags.data:
            nodes.extend(
                Node.query.filter(Node.tags.any(Tag.value.in_(
                    form.tags.data))).all())

        query = DistributedQuery.create(sql=form.sql.data,
                                        description=form.description.data,
                                        not_before=form.not_before.data)

        for node in nodes:
            task = DistributedQueryTask(node=node, distributed_query=query)
            db.session.add(task)
        else:
            db.session.commit()

        return redirect(url_for('manage.distributed', status='new'))

    flash_errors(form)
    return render_template('distributed.html', form=form)
Ejemplo n.º 2
0
def query(query_id):
    query = Query.query.filter(Query.id == query_id).first_or_404()
    form = UpdateQueryForm(request.form)

    if form.validate_on_submit():
        if form.packs.data:
            query.packs = Pack.query.filter(Pack.name.in_(
                form.packs.data)).all()
        else:
            query.packs = []

        query.tags = create_tags(*form.tags.data.splitlines())
        query = query.update(name=form.name.data,
                             sql=form.sql.data,
                             interval=form.interval.data,
                             platform=form.platform.data,
                             version=form.version.data,
                             description=form.description.data,
                             value=form.value.data,
                             removed=form.removed.data,
                             shard=form.shard.data)
        return redirect(url_for('manage.query', query_id=query.id))

    form = UpdateQueryForm(request.form, obj=query)
    flash_errors(form)
    return render_template('query.html', form=form, query=query)
Ejemplo n.º 3
0
def query(query_id):
    query = Query.query.filter(Query.id == query_id).first_or_404()
    form = UpdateQueryForm(request.form)

    if form.validate_on_submit():
        if form.packs.data:
            query.packs = Pack.query.filter(Pack.name.in_(form.packs.data)).all()
        else:
            query.packs = []

        query.tags = create_tags(*form.tags.data.splitlines())
        query = query.update(name=form.name.data,
                             sql=form.sql.data,
                             interval=form.interval.data,
                             platform=form.platform.data,
                             version=form.version.data,
                             description=form.description.data,
                             value=form.value.data,
                             removed=form.removed.data,
                             shard=form.shard.data)
        return redirect(url_for('manage.query', query_id=query.id))

    form = UpdateQueryForm(request.form, obj=query)
    flash_errors(form)
    return render_template('query.html', form=form, query=query)
Ejemplo n.º 4
0
def add_tag():
    form = CreateTagForm()
    if form.validate_on_submit():
        create_tags(*form.value.data.splitlines())
        return redirect(url_for('manage.tags'))

    flash_errors(form)
    return render_template('tag.html', form=form)
Ejemplo n.º 5
0
def add_tag():
    form = CreateTagForm()
    if form.validate_on_submit():
        create_tags(*form.value.data.splitlines())
        return redirect(url_for('manage.tags'))

    flash_errors(form)
    return render_template('tag.html', form=form)
Ejemplo n.º 6
0
def add_file():
    form = FilePathForm()
    if form.validate_on_submit():
        FilePath.create(category=form.category.data,
                        target_paths=form.target_paths.data.splitlines())
        return redirect(url_for('.files'))

    flash_errors(form)
    return render_template('file.html', form=form)
Ejemplo n.º 7
0
def add_file():
    form = FilePathForm()
    if form.validate_on_submit():
        FilePath.create(category=form.category.data,
                        target_paths=form.target_paths.data.splitlines())
        return redirect(url_for('manage.files'))

    flash_errors(form)
    return render_template('file.html', form=form)
Ejemplo n.º 8
0
def add_pack():
    form = UploadPackForm()
    if form.validate_on_submit():
        pack = create_query_pack_from_upload(form.pack)

        # Only redirect back to the pack list if everything was successful
        if pack is not None:
            return redirect(url_for('manage.packs', _anchor=pack.name))

    flash_errors(form)
    return render_template('pack.html', form=form)
Ejemplo n.º 9
0
def add_pack():
    form = UploadPackForm()
    if form.validate_on_submit():
        pack = create_query_pack_from_upload(form.pack)

        # Only redirect back to the pack list if everything was successful
        if pack is not None:
            return redirect(url_for('manage.packs', _anchor=pack.name))

    flash_errors(form)
    return render_template('pack.html', form=form)
Ejemplo n.º 10
0
def rule(rule_id):
    rule = Rule.query.filter(Rule.id == rule_id).first_or_404()
    form = UpdateRuleForm(request.form)

    if form.validate_on_submit():
        rule = rule.update(name=form.name.data,
                           alerters=form.alerters.data,
                           description=form.description.data,
                           conditions=form.conditions.data,
                           updated_at=dt.datetime.utcnow())
        return redirect(url_for('manage.rule', rule_id=rule.id))

    form = UpdateRuleForm(request.form, obj=rule)
    flash_errors(form)
    return render_template('rule.html', form=form, rule=rule)
Ejemplo n.º 11
0
def rule(rule_id):
    rule = Rule.query.filter(Rule.id == rule_id).first_or_404()
    form = UpdateRuleForm(request.form)

    if form.validate_on_submit():
        rule = rule.update(name=form.name.data,
                           alerters=form.alerters.data,
                           description=form.description.data,
                           conditions=form.conditions.data,
                           updated_at=dt.datetime.utcnow())
        return redirect(url_for('manage.rule', rule_id=rule.id))

    form = UpdateRuleForm(request.form, obj=rule)
    flash_errors(form)
    return render_template('rule.html', form=form, rule=rule)
Ejemplo n.º 12
0
def file_path(file_path_id):
    file_path = FilePath.query.filter(
        FilePath.id == file_path_id).first_or_404()
    form = FilePathUpdateForm(request.form)

    if form.validate_on_submit():
        file_path.tags = create_tags(*form.tags.data.splitlines())
        file_path.set_paths(*form.target_paths.data.splitlines())
        file_path = file_path.update(category=form.category.data, )

        return redirect(url_for('manage.files'))

    form = FilePathUpdateForm(request.form, obj=file_path)
    flash_errors(form)
    return render_template('file.html', form=form, file_path=file_path)
Ejemplo n.º 13
0
def add_rule():
    form = CreateRuleForm()
    form.set_choices()

    if form.validate_on_submit():
        rule = Rule(name=form.name.data,
                    alerters=form.alerters.data,
                    description=form.description.data,
                    conditions=form.conditions.data,
                    updated_at=dt.datetime.utcnow())
        rule.save()

        return redirect(url_for('manage.rule', rule_id=rule.id))

    flash_errors(form)
    return render_template('rule.html', form=form)
Ejemplo n.º 14
0
def rule(rule_id):
    rule = Rule.query.filter(Rule.id == rule_id).first_or_404()
    form = UpdateRuleForm(request.form)

    if form.validate_on_submit():
        rule = rule.update(type=form.type.data,
                           name=form.name.data,
                           action=form.action.data,
                           alerters=form.alerters.data,
                           config=form.config.data)
        reload_rules.delay()
        return redirect(url_for('manage.rule', rule_id=rule.id))

    form = UpdateRuleForm(request.form, obj=rule)
    flash_errors(form)
    return render_template('rule.html', form=form, rule=rule)
Ejemplo n.º 15
0
def file_path(file_path_id):
    file_path = FilePath.query.filter(FilePath.id == file_path_id).first_or_404()
    form = FilePathUpdateForm(request.form)

    if form.validate_on_submit():
        file_path.tags = create_tags(*form.tags.data.splitlines())
        file_path.set_paths(*form.target_paths.data.splitlines())
        file_path = file_path.update(
            category=form.category.data,
        )

        return redirect(url_for('manage.files'))

    form = FilePathUpdateForm(request.form, obj=file_path)
    flash_errors(form)
    return render_template('file.html', form=form, file_path=file_path)
Ejemplo n.º 16
0
def add_rule():
    form = CreateRuleForm()
    form.set_choices()

    if form.validate_on_submit():
        rule = Rule(name=form.name.data,
                    alerters=form.alerters.data,
                    description=form.description.data,
                    conditions=form.conditions.data,
                    updated_at=dt.datetime.utcnow())
        rule.save()

        return redirect(url_for('manage.rule', rule_id=rule.id))

    flash_errors(form)
    return render_template('rule.html', form=form)
Ejemplo n.º 17
0
def add_rule():
    form = CreateRuleForm()
    form.set_choices()

    if form.validate_on_submit():
        rule = Rule(type=form.type.data,
                    name=form.name.data,
                    action=form.action.data,
                    alerters=form.alerters.data,
                    config=form.config.data)
        rule.save()
        reload_rules.delay()

        return redirect(url_for('manage.rule', rule_id=rule.id))

    flash_errors(form)
    return render_template('rule.html', form=form)
Ejemplo n.º 18
0
def add_query():
    form = CreateQueryForm()
    form.set_choices()

    if form.validate_on_submit():
        query = Query(name=form.name.data,
                      sql=form.sql.data,
                      interval=form.interval.data,
                      platform=form.platform.data,
                      version=form.version.data,
                      description=form.description.data,
                      value=form.value.data)
        query.tags = create_tags(*form.tags.data.splitlines())
        query.save()

        return redirect(url_for('.query', query_id=query.id))

    flash_errors(form)
    return render_template('query.html', form=form)
Ejemplo n.º 19
0
def add_query():
    form = CreateQueryForm()
    form.set_choices()

    if form.validate_on_submit():
        query = Query(name=form.name.data,
                      sql=form.sql.data,
                      interval=form.interval.data,
                      platform=form.platform.data,
                      version=form.version.data,
                      description=form.description.data,
                      value=form.value.data,
                      removed=form.removed.data)
        query.tags = create_tags(*form.tags.data.splitlines())
        query.save()

        return redirect(url_for('manage.query', query_id=query.id))

    flash_errors(form)
    return render_template('query.html', form=form)
Ejemplo n.º 20
0
def get_node(node_id):
    node = Node.query.filter_by(id=node_id).first_or_404()
    form = UpdateNodeForm(request.form)

    if form.validate_on_submit():
        node_info = node.node_info.copy()

        if form.display_name.data:
            node_info['display_name'] = form.display_name.data
        elif 'display_name' in node_info:
            node_info.pop('display_name')

        node.node_info = node_info
        node.is_active = form.is_active.data
        node.save()

        if request.is_xhr:
            return '', 204

        return redirect(url_for('manage.get_node', node_id=node.id))

    form = UpdateNodeForm(request.form, obj=node)
    flash_errors(form)

    packs = node.packs \
        .options(
            db.joinedload(Pack.tags, innerjoin=True),
            db.joinedload(Pack.queries, innerjoin=True),
        ).order_by(Pack.name)

    queries = node.queries \
        .options(
            db.joinedload(Query.tags, innerjoin=True),
            db.joinedload(Query.packs)
        ).order_by(Query.name)

    return render_template('node.html',
                           form=form,
                           node=node,
                           packs=packs,
                           queries=queries)
Ejemplo n.º 21
0
def add_distributed():
    form = AddDistributedQueryForm()
    form.set_choices()

    if form.validate_on_submit():
        nodes = []

        if not form.nodes.data and not form.tags.data:
            # all nodes get this query
            nodes = Node.query.all()

        if form.nodes.data:
            nodes.extend(
                Node.query.filter(
                    Node.node_key.in_(form.nodes.data)
                ).all()
            )

        if form.tags.data:
            nodes.extend(
                Node.query.filter(
                    Node.tags.any(
                        Tag.value.in_(form.tags.data)
                    )
                ).all()
            )

        query = DistributedQuery.create(sql=form.sql.data,
                                        description=form.description.data,
                                        not_before=form.not_before.data)

        for node in nodes:
            task = DistributedQueryTask(node=node, distributed_query=query)
            db.session.add(task)
        else:
            db.session.commit()

        return redirect(url_for('manage.distributed', status='new'))

    flash_errors(form)
    return render_template('distributed.html', form=form)
Ejemplo n.º 22
0
def get_node(node_id):
    node = Node.query.filter_by(id=node_id).first_or_404()
    form = UpdateNodeForm(request.form)

    if form.validate_on_submit():
        node_info = node.node_info.copy()

        if form.display_name.data:
            node_info['display_name'] = form.display_name.data
        elif 'display_name' in node_info:
            node_info.pop('display_name')

        node.node_info = node_info
        node.is_active = form.is_active.data
        node.save()

        if request.is_xhr:
            return '', 204

        return redirect(url_for('manage.get_node', node_id=node.id))

    form = UpdateNodeForm(request.form, obj=node)
    flash_errors(form)

    packs = node.packs \
        .options(
            db.joinedload(Pack.tags, innerjoin=True),
            db.joinedload(Pack.queries, innerjoin=True),
        ).order_by(Pack.name)

    queries = node.queries \
        .options(
            db.joinedload(Query.tags, innerjoin=True),
            db.joinedload(Query.packs)
        ).order_by(Query.name)

    return render_template('node.html', form=form, node=node,
                           packs=packs, queries=queries)
Ejemplo n.º 23
0
def get_node(node_id):
    node = Node.query.filter(Node.id == node_id).first_or_404()
    form = UpdateNodeForm(request.form)

    if form.validate_on_submit():
        node_info = node.node_info.copy()

        if form.display_name.data:
            node_info['display_name'] = form.display_name.data
        elif 'display_name' in node_info:
            node_info.pop('display_name')

        node.node_info = node_info
        node.is_active = form.is_active.data
        node.save()

        if request.is_xhr:
            return '', 204

        return redirect(url_for('manage.get_node', node_id=node.id))

    form = UpdateNodeForm(request.form, obj=node)
    flash_errors(form)
    return render_template('node.html', form=form, node=node)
Ejemplo n.º 24
0
def get_node(node_id):
    node = Node.query.filter(Node.id == node_id).first_or_404()
    form = UpdateNodeForm(request.form)

    if form.validate_on_submit():
        node_info = node.node_info.copy()

        if form.display_name.data:
            node_info['display_name'] = form.display_name.data
        elif 'display_name' in node_info:
            node_info.pop('display_name')

        node.node_info = node_info
        node.is_active = form.is_active.data
        node.save()

        if request.is_xhr:
            return '', 204

        return redirect(url_for('manage.get_node', node_id=node.id))

    form = UpdateNodeForm(request.form, obj=node)
    flash_errors(form)
    return render_template('node.html', form=form, node=node)