This repository has been archived by the owner on Feb 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathspike-server.py
81 lines (62 loc) · 2.47 KB
/
spike-server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#! /usr/bin/env python
import os
import logging
import argparse
from os.path import dirname, abspath
import sys
from time import time, strftime, localtime
from spike import create_app, version
from spike.model import db, rulesets_seeds, whitelists_seeds
from spike.model.naxsi_rulesets import NaxsiRuleSets
from spike.model.naxsi_whitelistsets import NaxsiWhitelistSets
from sqlalchemy.exc import SQLAlchemyError
def run(debug=False):
app = create_app(__get_config_file())
db.init_app(app)
if debug:
app.test_request_context().push()
try:
host = app.config["APP_HOST"]
except KeyError:
host = '127.0.0.1'
try:
port = int(app.config["APP_PORT"])
except KeyError:
port = 5555
app.run(debug=debug, host=host, port=port)
def spike_init():
logging.info("Initializing Spike")
timestamp = int(time())
app = create_app(__get_config_file())
db.init_app(app)
with app.app_context():
db.create_all()
for r in rulesets_seeds:
logging.info("Adding ruleset: %s", r)
rmks = "Ruleset for %s / auto-created %s" % (r, strftime("%F - %H:%M", localtime(time())))
db.session.add(NaxsiRuleSets(r, rmks, timestamp))
for w in whitelists_seeds:
logging.info("Adding whitelistset: %s", w)
rmks = "Ruleset for %s / auto-created %s" % (w, strftime("%F - %H:%M", localtime(time())))
db.session.add(NaxsiWhitelistSets(w, rmks, timestamp))
try:
db.session.commit()
except SQLAlchemyError:
logging.error('It seems that the database was already initialized. Did you meant to run `%s run` instead?',
sys.argv[0])
logging.info('Spike initialization completed')
def __get_config_file():
return os.path.join(dirname(abspath(__name__)), 'config.cfg')
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG, format='%(message)s')
parser = argparse.ArgumentParser(description='Spike %s' % version)
parser.add_argument('command', help='Run the spike server', choices=['run', 'init'])
parser.add_argument('-d', '--debug', help='Run server in debug mode', action='store_true')
args = parser.parse_args()
if args.command == 'run':
if not os.path.exists(os.path.join(dirname(abspath(__name__)), 'spike', 'rules.db')):
print('You should run `python %s init` before using Spike' % sys.argv[0])
else:
run(args.debug)
elif args.command == 'init':
spike_init()