Decoupling setup creation from pattern's existence

This commit is contained in:
havidarou 2018-01-29 07:57:28 -05:00
parent 9aeac3f0a6
commit a74e0a521c
7 changed files with 48 additions and 54 deletions

View File

@ -44,7 +44,7 @@ app.directive('dynamic', function($compile) {
$scope.currentPattern = data.title;
})
.catch((error) => {
notify.error("Error getting patterns from Kibana...");
notify.error("Pattern applied to visualizations does NOT exist...");
$scope.theresPattern = false;
});

View File

@ -17,7 +17,7 @@ app.controller('managerLogController', function ($scope, Logs, apiReq,Notifier)
return;
} catch (error) {
if(error.data && error.data.errorData && error.data.errorData.error === 1000){
console.log(error.data.errorData.message);
//console.log(error.data.errorData.message);
} else {
notify.error(error.message);
}

View File

@ -445,13 +445,15 @@ let app = require('ui/modules').get('app/wazuh', []).controller('settingsControl
$scope.appInfo["app-version"] = data.data.data["app-version"];
$scope.appInfo["installationDate"] = data.data.data["installationDate"];
$scope.appInfo["revision"] = data.data.data["revision"];
$scope.appInfo["index-pattern"] = data.data.data["index-pattern"];
$scope.load = false;
if (appState.getCurrentPattern() !== undefined && appState.getCurrentPattern() !== null) { // There's a pattern in the cookies
$scope.selectedIndexPattern = appState.getCurrentPattern();
} else { // There's no pattern in the cookies, pick the one in the settings
$scope.selectedIndexPattern = data.data.data["index-pattern"];
genericReq.request('GET', '/api/wazuh-api/configuration', {})
.then(config => {
$scope.selectedIndexPattern = config.data.data["pattern"];
});
}
})
.catch(() => {

View File

@ -4,10 +4,8 @@ require('ui/modules').get('app/wazuh', [])
return {
check_stored: data => {
const headers = {headers:{ "Content-Type": 'application/json' },timeout: 4000};
console.log(appState.getUserCode())
if(appState.getUserCode()) headers.headers.code = appState.getUserCode();
let defered = $q.defer();
console.log(data);
$http
.post(chrome.addBasePath('/api/wazuh-api/checkStoredAPI'), data,headers)
.then(response => {

View File

@ -46,10 +46,6 @@
</md-list>
<p>If the API is <code>active (running)</code> please check its configuration below.</p>
</md-card>
<md-card layout-padding layout-align="start stretch" ng-if="!currentAPI">
<h1 class="wazuh-h1"><i class="fa fa-warning ng-scope font-size-25" aria-hidden="true"></i> Please select an API from the list as default</h1>
<p>The Wazuh app needs an API connection for it to work. Please click the API's star (<i class="fa fa-star font-size-18" aria-hidden="true"></i>) icon of your choice to select that one.</p>
</md-card>
<md-card layout-padding layout-align="start stretch" ng-if="submenuNavItem == 'api'">

View File

@ -7,13 +7,11 @@ const blueWazuh = colors.blue('wazuh');
const OBJECTS_FILE = './integration_files/objects_file.json';
const APP_OBJECTS_FILE = './integration_files/app_objects_file_alerts.json';
const KIBANA_TEMPLATE = './integration_files/kibana_template.json';
const fs = require('fs');
const yml = require('js-yaml');
const fs = require('fs');
const yml = require('js-yaml');
const path = require('path');
module.exports = (server, options) => {
// Elastic JS Client
const elasticRequest = server.plugins.elasticsearch.getCluster('data');
@ -22,19 +20,21 @@ module.exports = (server, options) => {
let kibana_template = {};
let packageJSON = {};
let pattern = null;
// Read config from package JSON
// Read config from package.json and config.yml
try {
const configurationFile = yml.load(fs.readFileSync(path.join(__dirname,'../config.yml'), {encoding: 'utf-8'}));
global.loginEnabled = configurationFile.login.enabled;
pattern = configurationFile.pattern;
packageJSON = require('../package.json');
} catch (e) {
server.log([blueWazuh, 'initialize', 'error'], 'Something went wrong.' + e.message);
server.log([blueWazuh, 'initialize', 'error'], 'Something went wrong while reading the configuration.' + e.message);
}
if(typeof global.sessions === 'undefined') {
global.sessions = { };
}
global.protectedRoute = req => {
if(typeof loginEnabled !== 'undefined' && !loginEnabled) return true;
const session = (req.headers && req.headers.code) ? sessions[req.headers.code] : null;
@ -49,30 +49,6 @@ module.exports = (server, options) => {
let index_pattern = pattern || "wazuh-alerts-3.x-*";
// Save Wazuh App first set up for future executions
const saveConfiguration = (id) => {
let configuration = {
"name": "Wazuh App",
"app-version": packageJSON.version,
"revision": packageJSON.revision,
"installationDate": new Date().toISOString(),
"index-pattern": id
};
elasticRequest.callWithInternalUser('create', {
index: ".wazuh-version",
type: 'wazuh-version',
id: 1,
body: configuration
})
.then(() => {
server.log([blueWazuh, 'initialize', 'info'], 'Wazuh configuration inserted');
})
.catch((error) => {
server.log([blueWazuh, 'initialize', 'error'], 'Could not insert Wazuh configuration');
});
};
// Importing Wazuh built-in visualizations and dashboards
const importObjects = (id) => {
server.log([blueWazuh, 'initialize', 'info'], 'Importing objects (Searches, visualizations and dashboards) into Elasticsearch...');
@ -187,9 +163,6 @@ module.exports = (server, options) => {
// Import objects (dashboards and visualizations)
importObjects(index_pattern);
importAppObjects(index_pattern);
// Save Setup Info
saveConfiguration(index_pattern);
})
.catch((err) => {
server.log([blueWazuh, 'initialize', 'error'], 'Error creating index-pattern.');
@ -214,6 +187,29 @@ module.exports = (server, options) => {
}
};
// Save Wazuh App setup
const saveConfiguration = () => {
let configuration = {
"name": "Wazuh App",
"app-version": packageJSON.version,
"revision": packageJSON.revision,
"installationDate": new Date().toISOString()
};
elasticRequest.callWithInternalUser('create', {
index: ".wazuh-version",
type: 'wazuh-version',
id: 1,
body: configuration
})
.then(() => {
server.log([blueWazuh, 'initialize', 'info'], 'Wazuh configuration inserted');
})
.catch((error) => {
server.log([blueWazuh, 'initialize', 'error'], 'Could not insert Wazuh configuration');
});
};
// Init function. Check for "wazuh-version" document existance.
const init = () => {
elasticRequest.callWithInternalUser('indices.exists', {
@ -246,7 +242,7 @@ module.exports = (server, options) => {
}
})
.catch((error) => {
server.log([blueWazuh, 'initialize', 'error'], 'Could not check if the index .wazuh exists.');
server.log([blueWazuh, 'initialize', 'error'], 'Could not check if .wazuh index exists due to ' + error);
});
elasticRequest.callWithInternalUser('get', {
@ -255,9 +251,8 @@ module.exports = (server, options) => {
id: "1"
})
.then((data) => {
server.log([blueWazuh, 'initialize', 'info'], 'Wazuh-version document already exists. Updating version information.');
server.log([blueWazuh, 'initialize', 'info'], '.wazuh-version document already exists. Updating version information and visualizations...');
// We filled data for the API, let's insert it now
elasticRequest.callWithInternalUser('update', {
index: '.wazuh-version',
type: 'wazuh-version',
@ -317,7 +312,10 @@ module.exports = (server, options) => {
});
})
.catch((error) => {
server.log([blueWazuh, 'initialize', 'info'], 'Wazuh-version document does not exist. Initializating configuration...');
server.log([blueWazuh, 'initialize', 'info'], '.wazuh-version document does not exist. Initializating configuration...');
// Save Setup Info
saveConfiguration(index_pattern);
configureKibana("install");
});
};
@ -328,7 +326,7 @@ module.exports = (server, options) => {
try {
kibana_template = require(KIBANA_TEMPLATE);
} catch (e) {
server.log([blueWazuh, 'initialize', 'error'], 'Could not read the kibana template.');
server.log([blueWazuh, 'initialize', 'error'], 'Could not read the .kibana template file.');
server.log([blueWazuh, 'initialize', 'error'], 'Path: ' + KIBANA_TEMPLATE);
server.log([blueWazuh, 'initialize', 'error'], 'Exception: ' + e);
}
@ -347,7 +345,7 @@ module.exports = (server, options) => {
elasticRequest.callWithInternalUser('indices.exists', {
index: ".kibana"
})
.then((data) => {
.then((data) => {
if (data) { // It exists, initialize!
init();
}
@ -373,7 +371,7 @@ module.exports = (server, options) => {
.catch((error) => {
createKibanaTemplate()
.then((data) => {
server.log([blueWazuh, 'initialize', 'info'], 'Successfully created template .kibana.');
server.log([blueWazuh, 'initialize', 'info'], 'Successfully created .kibana template.');
elasticRequest.callWithInternalUser('indices.create', { index: '.kibana' })
.then((data) => {
@ -398,7 +396,7 @@ module.exports = (server, options) => {
const checkStatus = () => {
server.plugins.elasticsearch.waitUntilReady().then((data) => { checkKibanaStatus() })
.catch((error) => {
server.log([blueWazuh, 'initialize', 'info'], 'Waiting for Elasticsearch servers to be ready...');
server.log([blueWazuh, 'initialize', 'info'], 'Waiting for elasticsearch plugin to be ready...');
setTimeout(() => checkStatus(), 3000);
});
};
@ -513,7 +511,7 @@ module.exports = (server, options) => {
server.log([blueWazuh, 'reindex', 'info'], 'Successfully updated sample cluster information for ' + wapi_config.manager);
})
.catch((err) => {
server.log([blueWazuh, 'reindex', 'error'], 'Could not update sample cluster information ' + wapi_config.manager + 'due to ' + err);
server.log([blueWazuh, 'reindex', 'error'], 'Could not update sample cluster information for ' + wapi_config.manager + 'due to ' + err);
});
});
} else { // 3.x version

View File

@ -20,7 +20,7 @@ module.exports = (server, options) => {
let fDate = new Date().toISOString().replace(/T/, '-').replace(/\..+/, '').replace(/-/g, '.').replace(/:/g, '').slice(0, -7);
let todayIndex = index_prefix + fDate;
let packageJSON = {};
let app_objects = {};
let app_objects = {};
// Read Wazuh App package file
try {
@ -297,7 +297,7 @@ module.exports = (server, options) => {
server.log([blueWazuh, 'monitoring', 'info'], "Successfully deleted old wazuh-monitoring pattern.");
})
.catch((error) => {
server.log([blueWazuh, 'monitoring', 'error'], "Didn't find old wazuh-monitoring pattern. Skipping deletion.");
server.log([blueWazuh, 'monitoring', 'info'], "Didn't find old wazuh-monitoring pattern. Skipping deletion.");
});
configureKibana();
});