Skip to content

Commit dd16059

Browse files
authored
Merge pull request #585 from jmpsec/add-option-admin
Adding new osquery option to configuration in `osctr-admin`
2 parents 32050fc + 69934e0 commit dd16059

File tree

3 files changed

+87
-2
lines changed

3 files changed

+87
-2
lines changed

admin/static/js/configuration.js

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,46 @@ function confirmAddQuerySchedule() {
5353
var _schedule = _editor.getValue();
5454
var obj = JSON.parse(_schedule);
5555
var _query = {
56-
"query": $("#query_sql").val(),
57-
"interval": parseInt($("#query_interval").val()),
56+
query: $("#query_sql").val(),
57+
interval: parseInt($("#query_interval").val()),
5858
};
5959
obj[$("#query_name").val()] = _query;
6060
_editor.setValue(JSON.stringify(obj, null, "\t"));
6161
}
6262

63+
function addOsqueryOption() {
64+
$("#addoption_action").click(function () {
65+
$("#addOptionModal").modal("hide");
66+
confirmAddOsqueryOption();
67+
});
68+
$("#option_name").val("");
69+
$("#option_value").val("");
70+
$("#addOptionModal").modal();
71+
}
72+
73+
function confirmAddOsqueryOption() {
74+
var _editor = $("#options_conf").data("CodeMirrorInstance");
75+
var _options = _editor.getValue();
76+
var obj = JSON.parse(_options);
77+
if ($("#option_type").val() === "boolean") {
78+
if ($("#option_value").val().toLowerCase() === "true") {
79+
obj[$("#option_name").val()] = true;
80+
} else {
81+
obj[$("#option_name").val()] = false;
82+
}
83+
}
84+
if ($("#option_type").val() === "integer") {
85+
obj[$("#option_name").val()] = parseInt($("#option_value").val());
86+
}
87+
if ($("#option_type").val() === "string") {
88+
obj[$("#option_name").val()] = $("#option_value").val();
89+
}
90+
if ($("#option_name").val() === "" || $("#option_value").val() === null) {
91+
return;
92+
}
93+
_editor.setValue(JSON.stringify(obj, null, "\t"));
94+
}
95+
6396
function saveIntervals() {
6497
var _csrftoken = $("#csrftoken").val();
6598
var _config = $("#conf_range").val();

admin/templates/components/page-modals.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,49 @@ <h4 class="modal-title">Add new query to schedule</h4>
221221
</div>
222222
<!-- /.modal -->
223223

224+
<div class="modal fade" id="addOptionModal" tabindex="-1" role="dialog" aria-labelledby="addOptionModal" aria-hidden="true">
225+
<div class="modal-dialog modal-dark" role="document">
226+
<div class="modal-content">
227+
<div class="modal-header">
228+
<h4 class="modal-title">Add new option to configuration</h4>
229+
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
230+
<span aria-hidden="true">&times;</span>
231+
</button>
232+
</div>
233+
<div class="modal-body">
234+
<div class="form-group row">
235+
<label class="col-md-3 col-form-label" for="option_name">Option: </label>
236+
<div class="col-md-9">
237+
<input class="form-control" name="option_name" id="option_name" type="text" autocomplete="off"
238+
autofocus>
239+
</div>
240+
</div>
241+
<div class="form-group row">
242+
<label class="col-md-3 col-form-label" for="option_type">Type: </label>
243+
<div class="col-md-9">
244+
<select class="form-control" id="option_type" name="option_type">
245+
<option value="integer">Integer</option>
246+
<option value="boolean">Boolean</option>
247+
<option value="string">String</option>
248+
</select>
249+
</div>
250+
</div>
251+
<div class="form-group row">
252+
<label class="col-md-3 col-form-label" for="option_value">Value: </label>
253+
<div class="col-md-9">
254+
<input class="form-control" name="option_value" id="option_value" type="text" autocomplete="off">
255+
</div>
256+
</div>
257+
</div>
258+
<div class="modal-footer">
259+
<button id="addoption_action" type="button" class="btn btn-dark" data-dismiss="modal">Add</button>
260+
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
261+
</div>
262+
</div>
263+
<!-- /.modal-content -->
264+
</div>
265+
<!-- /.modal-dialog -->
266+
</div>
267+
<!-- /.modal -->
268+
224269
{{ end }}

admin/templates/conf.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@
8282
data-tooltip="true" data-placement="bottom" title="Documentation" onclick="javascript:window.open('https://osquery.readthedocs.io/en/stable/deployment/configuration/#options', '_blank');">
8383
<i class="far fa-question-circle"></i>
8484
</button>
85+
<button id="options_add_flag" class="btn btn-sm btn-dark"
86+
data-tooltip="true" data-placement="bottom" title="Add Option to osquery" onclick="addOsqueryOption();">
87+
<i class="fas fa-plus-square"></i>
88+
</button>
8589
<button id="options_json_save" class="btn btn-sm btn-dark"
8690
data-tooltip="true" data-placement="bottom" title="Save Changes" onclick="saveOptions();">
8791
<i class="far fa-save"></i>
@@ -369,6 +373,8 @@
369373
_valid = false
370374
// Disable button
371375
$('#options_json_save').prop("disabled", true);
376+
$('#options_add_flag').prop("disabled", true);
377+
options_add_flag
372378
// Position cursor in where the problem is at
373379
}
374380
if (_valid) {
@@ -379,6 +385,7 @@
379385
$(this).addClass("btn-success");
380386
});
381387
$('#options_json_save').prop("disabled", false);
388+
$('#options_add_flag').prop("disabled", false);
382389
}
383390
});
384391
editorOptions.setSize("100%", "100%");

0 commit comments

Comments
 (0)