Skip to content

Commit 7165756

Browse files
committed
Read from envvar, then config file
1 parent eeb200d commit 7165756

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

detection_rules/eswrap.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from kibana import Kibana, RuleResource
1313

1414
from .main import root
15-
from .misc import getenv
15+
from .misc import getdefault
1616
from .utils import normalize_timing_and_sort, unix_time_to_formatted, get_path
1717
from .rule_loader import get_rule, rta_mappings, load_rule_files, load_rules
1818

@@ -179,10 +179,10 @@ def run(self, agent_hostname, indexes, verbose=True, **match):
179179

180180
@es_group.command('collect-events')
181181
@click.argument('agent-hostname')
182-
@click.option('--elasticsearch-url', '-u', default=getenv("DR_ELASTICSEARCH_URL"))
183-
@click.option('--cloud-id', default=getenv("DR_ELASTICSEARCH_URL"))
184-
@click.option('--user', '-u', default=getenv("DR_USER"))
185-
@click.option('--password', '-p', default=getenv("DR_PASSWORD"), hide_input=True)
182+
@click.option('--elasticsearch-url', '-u', default=getdefault("elasticsearch_url"))
183+
@click.option('--cloud-id', default=getdefault("cloud_id"))
184+
@click.option('--user', '-u', default=getdefault("user"))
185+
@click.option('--password', '-p', default=getdefault("password"), hide_input=True)
186186
@click.option('--index', '-i', multiple=True, help='Index(es) to search against (default: all indexes)')
187187
@click.option('--agent-type', '-a', help='Restrict results to a source type (agent.type) ex: auditbeat')
188188
@click.option('--rta-name', '-r', help='Name of RTA in order to save events directly to unit tests data directory')
@@ -229,10 +229,10 @@ def normalize_file(events_file):
229229

230230
@root.command("kibana-upload")
231231
@click.argument("toml-files", nargs=-1, required=True)
232-
@click.option('--kibana-url', '-u', default=getenv("DR_KIBANA_URL"))
233-
@click.option('--cloud-id', default=getenv("DR_CLOUD_ID"))
234-
@click.option('--user', '-u', default=getenv("DR_USER"))
235-
@click.option('--password', '-p', default=getenv("DR_PASSWORD"))
232+
@click.option('--kibana-url', '-u', default=getdefault("kibana_url"))
233+
@click.option('--cloud-id', default=getdefault("cloud_id"))
234+
@click.option('--user', '-u', default=getdefault("user"))
235+
@click.option('--password', '-p', default=getdefault("password"))
236236
def kibana_upload(toml_files, kibana_url, cloud_id, user, password):
237237
"""Upload a list of rule .toml files to Kibana."""
238238
from uuid import uuid4

detection_rules/misc.py

+13-12
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import click
1313
import requests
1414

15-
from .utils import ROOT_DIR
15+
from .utils import ROOT_DIR, cached
1616

1717
_CONFIG = {}
1818

@@ -197,22 +197,23 @@ def download_worker(rule_info):
197197
return kibana_rules
198198

199199

200+
@cached
200201
def parse_config():
201202
"""Parse a default config file."""
202-
global _CONFIG
203+
config_file = os.path.join(ROOT_DIR, '.detection-rules-cfg.json')
204+
config = {}
203205

204-
if not _CONFIG:
205-
config_file = os.path.join(ROOT_DIR, '.detection-rules-cfg.json')
206+
if os.path.exists(config_file):
207+
with open(config_file) as f:
208+
config = json.load(f)
206209

207-
if os.path.exists(config_file):
208-
with open(config_file) as f:
209-
_CONFIG = json.load(f)
210+
click.secho('Loaded config file: {}'.format(config_file), fg='yellow')
210211

211-
click.secho('Loaded config file: {}'.format(config_file), fg='yellow')
212+
return config
212213

213-
return _CONFIG
214214

215-
216-
def getenv(name):
215+
def getdefault(name):
217216
"""Callback function for `default` to get an environment variable."""
218-
return lambda: os.environ.get(name)
217+
envvar = f"DR_{name.upper()}"
218+
config = parse_config()
219+
return lambda: os.environ.get(envvar, config.get(name))

0 commit comments

Comments
 (0)