Completed
Push — master ( ac8e27...9493cd )
by -
01:40
created

plain()   A

Complexity

Conditions 2

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2
Metric Value
cc 2
dl 0
loc 12
ccs 7
cts 7
cp 1
crap 2
rs 9.4285
1 1
from time import time, localtime, strftime
2
3 1
from flask import current_app, Blueprint, render_template, request, redirect, flash, Response
4
5 1
from spike.model import db
6 1
from spike.model.naxsi_rules import NaxsiRules
7 1
from spike.model.naxsi_rulesets import NaxsiRuleSets
8
9
10 1
rulesets = Blueprint('rulesets', __name__)
11
12
13 1
@rulesets.route("/")
14
def index():
15 1
    _rulesets = NaxsiRuleSets.query.order_by(NaxsiRuleSets.name).all()
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
16 1
    return render_template("rulesets/index.html", rulesets=_rulesets)
17
18
19 1
@rulesets.route("/plain/")
20 1
@rulesets.route("/plain/<int:rid>")
21 1
def plain(rid=0):
22
    """
23
    Show the rule `rid` in plain text
24
    :param int rid: Rule id
25
    """
26 1
    if not rid:
27 1
        out = ''.join(map(__get_rules_for_ruleset, NaxsiRuleSets.query.all()))
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
28
    else:
29 1
        out = __get_rules_for_ruleset(NaxsiRuleSets.query.filter(NaxsiRuleSets.id == rid).first())
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
30 1
    return Response(out, mimetype='text/plain')
31
32
33 1
@rulesets.route("/view/<int:rid>")
34
def view(rid):
35 1
    ruleset = NaxsiRuleSets.query.filter(NaxsiRuleSets.id == rid).first()
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
36 1
    return render_template("rulesets/view.html", r=ruleset, rout=__get_rules_for_ruleset(ruleset))
37
38
39 1
@rulesets.route("/new", methods=["POST"])
40
def new():  # TODO filter parameter
0 ignored issues
show
Coding Style introduced by
TODO and FIXME comments should generally be avoided.
Loading history...
41 1
    rname = request.form["rname"].strip().upper()
42
43 1
    if NaxsiRuleSets.query.filter(NaxsiRuleSets.name == rname).first():
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
44 1
        flash("ERROR, ruleset exists: %s " % rname, "error")
45 1
        return redirect("/rulesets/")
46
47 1
    db.session.add(NaxsiRuleSets(rname, "naxsi-ruleset: %s" % rname, int(time())))
48 1
    db.session.commit()
49
50 1
    flash("OK created: %s " % rname, "success")
51 1
    return redirect("/rulesets/")
52
53
54 1
@rulesets.route("/del/<int:rname>", methods=["POST"])
55
def remove(rname):
56 1
    _rset = NaxsiRuleSets.query.filter(NaxsiRuleSets.id == rname).first()
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
57 1
    if _rset is None:
58 1
        flash("ERROR, ruleset doesn't exists: %s " % rname, "error")
59 1
        return redirect("/rulesets/")
60
61 1
    db.session.delete(_rset)
62 1
    db.session.commit()
63
64 1
    flash("OK deleted: %s " % rname, "success")
65 1
    return redirect("/rulesets/")
66
67
68 1
@rulesets.route("/select/<string:selector>", methods=["GET"])
69
def select(selector):
70 1
    _rules = NaxsiRules.query.filter(NaxsiRules.ruleset == selector).order_by(NaxsiRules.sid.desc()).all()
0 ignored issues
show
Bug introduced by
The Class NaxsiRules does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
71 1
    _selection = "Search sid: %s " % selector
72 1
    return render_template("rules/index.html", rules=_rules, selection=_selection)
73
74
75 1
def __get_rules_for_ruleset(ruleset):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
76 1
    if not ruleset:
77 1
        return ''
78
79 1
    _rules = NaxsiRules.query.filter(
0 ignored issues
show
Bug introduced by
The Class NaxsiRules does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
80
        NaxsiRules.ruleset == ruleset.name,
81
        NaxsiRules.active == 1
82
    ).all()
83
84 1
    nxruleset = NaxsiRuleSets.query.filter(NaxsiRuleSets.name == ruleset.name).first()
0 ignored issues
show
Bug introduced by
The Class NaxsiRuleSets does not seem to have a member named query.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
85 1
    db.session.add(nxruleset)
86 1
    db.session.commit()
87
88 1
    text_rules = ''.join([r.fullstr() for r in _rules])
89
90 1
    header = current_app.config["RULESET_HEADER"]
91 1
    header = header.replace("RULESET_DESC", ruleset.name)
92 1
    header = header.replace("RULESET_DATE", strftime("%F - %H:%M", localtime(time())))
93
94
    return header + text_rules
95