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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)