Merge branch '3.9-6.6' into issue-1164

This commit is contained in:
Jesús Ángel 2019-02-13 15:54:14 +01:00
commit 62ef6a0f25
87 changed files with 1898 additions and 1669 deletions

View File

@ -6,9 +6,16 @@ All notable changes to the Wazuh app project will be documented in this file.
### Added
- Added hotkey `[shift] + [enter]` for sending query ([#1170](https://github.com/wazuh/wazuh-kibana-app/pull/1170)).
- Added `Export JSON` button for the Dev Tools ([#1170](https://github.com/wazuh/wazuh-kibana-app/pull/1170)).
- Added refresh button for agents preview table ([#1169](https://github.com/wazuh/wazuh-kibana-app/pull/1169))
- Support for Wazuh v3.9.0
- Edit master and worker configuration ([#1215](https://github.com/wazuh/wazuh-kibana-app/pull/1215)).
- Edit local rules, local decoders and CDB lists ([#1212](https://github.com/wazuh/wazuh-kibana-app/pull/1212), [#1204](https://github.com/wazuh/wazuh-kibana-app/pull/1204), [#1196](https://github.com/wazuh/wazuh-kibana-app/pull/1196), [#1233](https://github.com/wazuh/wazuh-kibana-app/pull/1233)).
- Dev Tools additions
- Added hotkey `[shift] + [enter]` for sending query ([#1170](https://github.com/wazuh/wazuh-kibana-app/pull/1170)).
- Added `Export JSON` button for the Dev Tools ([#1170](https://github.com/wazuh/wazuh-kibana-app/pull/1170)).
- Added refresh button for agents preview table ([#1169](https://github.com/wazuh/wazuh-kibana-app/pull/1169)).
- Added configuration assessment information in "Agent > Policy monitoring" ([#1227](https://github.com/wazuh/wazuh-kibana-app/pull/1227)).
- Restart master and worker nodes ([#1222](https://github.com/wazuh/wazuh-kibana-app/pull/1222)).
- Restart agents ([#1229](https://github.com/wazuh/wazuh-kibana-app/pull/1229)).
### Changed
@ -16,10 +23,16 @@ All notable changes to the Wazuh app project will be documented in this file.
- Changed empty results message for Wazuh tables ([#1165](https://github.com/wazuh/wazuh-kibana-app/pull/1165)).
- Allowing the same query multiple times on the Dev Tools ([#1174](https://github.com/wazuh/wazuh-kibana-app/pull/1174))
- Refactor JSON/XML viewer for configuration tab ([#1173](https://github.com/wazuh/wazuh-kibana-app/pull/1173), [#1148](https://github.com/wazuh/wazuh-kibana-app/pull/1148)).
- Using full height for all containers when possible ([#1224](https://github.com/wazuh/wazuh-kibana-app/pull/1224)).
- Improved the way we are handling "back button" events ([#1207](https://github.com/wazuh/wazuh-kibana-app/pull/1207)).
- Changed some visualizations for FIM, GDPR, PCI, Vulnerability and Security Events ([#1206](https://github.com/wazuh/wazuh-kibana-app/pull/1206), [#1235](https://github.com/wazuh/wazuh-kibana-app/pull/1235)).
- New design for agent header view ([#1186](https://github.com/wazuh/wazuh-kibana-app/pull/1186)).
- Not fetching data the very first time the Dev Tools are opened ([#1185](https://github.com/wazuh/wazuh-kibana-app/pull/1185)).
### Fixed
- Properly handling long messages on notifier service, until now, they were using out of the card space, also we replaced some API messages with more meaningful messages ([#1168](https://github.com/wazuh/wazuh-kibana-app/pull/1168))
- Properly handling long messages on notifier service, until now, they were using out of the card space, also we replaced some API messages with more meaningful messages ([#1168](https://github.com/wazuh/wazuh-kibana-app/pull/1168)).
- Adapted Wazuh icon for multiple browsers where it was gone ([#1208](https://github.com/wazuh/wazuh-kibana-app/pull/1208))
## Wazuh v3.8.2 - Kibana v6.6.0 - Revision 419

View File

@ -25,8 +25,8 @@ Visualize and analyze Wazuh alerts stored in Elasticsearch using our Kibana app
## Requisites
- Wazuh HIDS 3.8.2
- Wazuh RESTful API 3.8.2
- Wazuh HIDS 3.9.0
- Wazuh RESTful API 3.9.0
- Kibana 6.6.0
- Elasticsearch 6.6.0
@ -35,7 +35,7 @@ Visualize and analyze Wazuh alerts stored in Elasticsearch using our Kibana app
Install the app
```
sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.0.zip
sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.9.0_6.6.0.zip
```
Restart Kibana
@ -90,7 +90,7 @@ chown -R kibana:kibana /usr/share/kibana/plugins
Install the app
```
sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.0.zip
sudo -u kibana NODE_OPTIONS="--max-old-space-size=3072" /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.9.0_6.6.0.zip
```
Restart Kibana
@ -160,7 +160,7 @@ service kibana restart
| 6.5.4 | 3.8.1 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.1_6.5.4.zip> |
| 6.5.4 | 3.8.2 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.5.4.zip> |
| 6.6.0 | 3.8.2 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.0.zip> |
| 6.6.0 | 3.9.0 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.9.0_6.6.0.zip> |
## Contribute

View File

@ -53,7 +53,12 @@ app.run(function($rootScope, $route, $location, appState, $window) {
appState.setNavigation({
reloaded: false,
discoverPrevious: false,
discoverSections: ['/wazuh-discover/', '/overview/', '/agents', '/wazuh-dev']
discoverSections: [
'/wazuh-discover/',
'/overview/',
'/agents',
'/wazuh-dev'
]
});
$rootScope.$on('$routeChangeSuccess', () => {

View File

@ -205,6 +205,34 @@ export class AgentsController {
this.$location.path('/manager/groups');
};
this.$scope.restartAgent = async agent => {
this.$scope.restartingAgent = true;
try {
const data = await this.apiReq.request(
'PUT',
`/agents/${agent.id}/restart`,
{}
);
const result = ((data || {}).data || {}).data || false;
const failed =
result &&
Array.isArray(result.failed_ids) &&
result.failed_ids.length;
if (failed) {
throw new Error(result.failed_ids[0].error.message);
} else if (result) {
this.errorHandler.info(result.msg, '');
} else {
throw new Error('Unexpected error upgrading agent');
}
this.$scope.restartingAgent = false;
} catch (error) {
this.errorHandler.handle(error, '');
this.$scope.restartingAgent = false;
}
this.$scope.$applyAsync();
};
const configuration = this.wazuhConfig.getConfig();
this.$scope.adminMode = !!(configuration || {}).admin;
@ -744,6 +772,41 @@ export class AgentsController {
item =>
this.$scope.agent.group && !this.$scope.agent.group.includes(item)
);
const outdatedAgents = await this.apiReq.request(
'GET',
'/agents/outdated/',
{}
);
this.$scope.agent.outdated = outdatedAgents.data.data.items
.map(x => x.id)
.find(x => x === this.$scope.agent.id);
if (this.$scope.agent.outdated) {
if (
this.appState.getSessionStorageItem(
`updatingAgent${this.$scope.agent.id}`
)
) {
this.$scope.agent.upgrading = true;
}
} else {
if (
this.appState.getSessionStorageItem(
`updatingAgent${this.$scope.agent.id}`
)
) {
this.appState.removeSessionStorageItem(
`updatingAgent${this.$scope.agent.id}`
);
this.$scope.agent.outdated = false;
}
if (!this.$scope.$$phase) this.$scope.$digest();
}
this.$scope.load = false;
if (!this.$scope.$$phase) this.$scope.$digest();
return;
} catch (error) {
if (!this.$scope.agent) {
if ((error || {}).status === -1) {

View File

@ -24,15 +24,15 @@ export class CdbListsController {
wazuhConfig,
rulesetHandler
) {
this.$scope = $scope
this.errorHandler = errorHandler
this.appState = appState
this.csvReq = csvReq
this.wzTableFilter = wzTableFilter
this.$location = $location
this.apiReq = apiReq
this.wazuhConfig = wazuhConfig
this.rulesetHandler = rulesetHandler
this.$scope = $scope;
this.errorHandler = errorHandler;
this.appState = appState;
this.csvReq = csvReq;
this.wzTableFilter = wzTableFilter;
this.$location = $location;
this.apiReq = apiReq;
this.wazuhConfig = wazuhConfig;
this.rulesetHandler = rulesetHandler;
this.appliedFilters = [];
this.searchTerm = '';
@ -69,7 +69,9 @@ export class CdbListsController {
this.currentList.list = [];
this.errorHandler.handle(error, '');
}
this.$scope.$broadcast('changeCdbList', { currentList: this.currentList });
this.$scope.$broadcast('changeCdbList', {
currentList: this.currentList
});
if (!this.$scope.$$phase) this.$scope.$digest();
});
@ -81,7 +83,9 @@ export class CdbListsController {
.request('get', `/cdblists/${incomingList}`, {})
.then(data => {
this.currentList = data.data.data.items[0];
this.$scope.$emit('setCurrentList', { currentList: this.currentList });
this.$scope.$emit('setCurrentList', {
currentList: this.currentList
});
if (
!(Object.keys((this.currentList || {}).details || {}) || []).length
) {
@ -191,12 +195,15 @@ export class CdbListsController {
return this.$scope.$broadcast('wazuhRemoveFilter', { filterName });
}
/**
/**
* Get full data on CSV format
*/
async downloadCsv() {
try {
this.errorHandler.info('Your download should begin automatically...', 'CSV');
this.errorHandler.info(
'Your download should begin automatically...',
'CSV'
);
const currentApi = JSON.parse(this.appState.getCurrentAPI()).id;
const output = await this.csvReq.fetch(
'/cdblists',
@ -206,7 +213,6 @@ export class CdbListsController {
const blob = new Blob([output], { type: 'text/csv' }); // eslint-disable-line
FileSaver.saveAs(blob, 'cdblists.csv');
} catch (error) {
this.errorHandler.handle(error, 'Download CSV');
}
@ -235,7 +241,23 @@ export class CdbListsController {
);
this.viewingDetail = false;
this.currentList = false;
this.addingList = false;
this.$scope.$emit('removeCurrentList');
if (!this.$scope.$$phase) this.$scope.$digest();
}
addNewList() {
this.addingList = true;
this.currentList = {
name: '',
path: 'etc/lists/',
list: [],
new: true
};
this.viewingDetail = true;
if (!this.$scope.$$phase) this.$scope.$digest();
this.$scope.$broadcast('changeCdbList', {
currentList: this.currentList
});
}
}

View File

@ -89,7 +89,8 @@ export class ConfigurationGroupsController {
this.$scope.editingFile = false;
this.$scope.$broadcast('saveXmlFile', {
group: this.$scope.selectedItem.name,
showRestartManager: this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
showRestartManager:
this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
});
};
this.$scope.switchAddingGroup = () => {

View File

@ -57,11 +57,11 @@ export class ConfigurationRulesetController {
this.$scope.fetchedXML =
this.$scope.selectedRulesetTab === 'rules'
? await this.rulesetHandler.getRuleConfiguration(
this.$scope.selectedItem.file
)
this.$scope.selectedItem.file
)
: await this.rulesetHandler.getDecoderConfiguration(
this.$scope.selectedItem.file
);
this.$scope.selectedItem.file
);
this.$location.search('editingFile', true);
this.appState.setNavigation({ status: true });
if (!this.$scope.$$phase) this.$scope.$digest();
@ -76,8 +76,8 @@ export class ConfigurationRulesetController {
this.$scope.editingFile = false;
this.$scope.newFile = false;
this.$scope.fetchedXML = null;
this.appState.setNavigation({ status: true });
if (reload) this.$scope.search();
this.appState.setNavigation({ status: true });
if (!this.$scope.$$phase) this.$scope.$digest();
};
@ -111,19 +111,33 @@ export class ConfigurationRulesetController {
if (this.$scope.type === 'rules') {
this.$scope.$broadcast('saveXmlFile', {
rule: this.$scope.selectedItem,
showRestartManager: this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
showRestartManager:
this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
});
} else if (this.$scope.type === 'decoders') {
this.$scope.$broadcast('saveXmlFile', {
decoder: this.$scope.selectedItem,
showRestartManager: this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
showRestartManager:
this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
});
}
} else {
const objParam =
this.$scope.selectedRulesetTab === 'rules'
? { rule: this.$scope.selectedItem, showRestartManager: this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager' }
: { decoder: this.$scope.selectedItem, showRestartManager: this.clusterInfo.status === 'enabled' ? 'cluster' : 'manager' };
? {
rule: this.$scope.selectedItem,
showRestartManager:
this.clusterInfo.status === 'enabled'
? 'cluster'
: 'manager'
}
: {
decoder: this.$scope.selectedItem,
showRestartManager:
this.clusterInfo.status === 'enabled'
? 'cluster'
: 'manager'
};
this.$scope.$broadcast('saveXmlFile', objParam);
}
this.$scope.editingFile = false;

View File

@ -35,6 +35,7 @@ export class ConfigurationController {
this.$scope.configurationSubTab = '';
this.$scope.integrations = {};
this.$scope.selectedItem = 0;
this.$scope.showHelp = false;
}
/**
@ -98,6 +99,7 @@ export class ConfigurationController {
* Navigate to configuration
*/
this.$scope.switchConfigurationTab = (configurationTab, navigate) => {
this.$scope.editionTab = '';
this.$scope.navigate = navigate;
this.configurationHandler.switchConfigurationTab(
configurationTab,

View File

@ -43,6 +43,7 @@ export class DecodersController {
this.wzTableFilter = wzTableFilter;
this.wazuhConfig = wazuhConfig;
this.rulesetHandler = rulesetHandler;
this.showingLocalDecoders = false;
}
/**
@ -213,34 +214,34 @@ export class DecodersController {
}
async editDecodersConfig() {
this.$scope.editingFile = true;
this.editingFile = true;
try {
this.$scope.fetchedXML = await this.rulesetHandler.getDecoderConfiguration(
this.fetchedXML = await this.rulesetHandler.getDecoderConfiguration(
this.currentDecoder.file
);
this.$location.search('editingFile', true);
this.appState.setNavigation({ status: true });
if (!this.$scope.$$phase) this.$scope.$digest();
this.$scope.$broadcast('fetchedFile', { data: this.$scope.fetchedXML });
this.$scope.$broadcast('fetchedFile', { data: this.fetchedXML });
} catch (error) {
this.$scope.fetchedXML = null;
this.fetchedXML = null;
this.errorHandler.handle(error, 'Fetch file error');
}
}
closeEditingFile() {
this.$scope.editingFile = false;
this.editingFile = false;
this.appState.setNavigation({ status: true });
this.$scope.$broadcast('closeEditXmlFile', {});
}
xmlIsValid(valid) {
this.$scope.xmlHasErrors = valid;
this.xmlHasErrors = valid;
if (!this.$scope.$$phase) this.$scope.$digest();
}
doSaveDecoderConfig() {
this.$scope.editingFile = false;
this.editingFile = false;
this.$scope.$broadcast('saveXmlFile', { decoder: this.currentDecoder });
}
@ -270,4 +271,72 @@ export class DecodersController {
this.$scope.$emit('removeCurrentDecoder');
if (!this.$scope.$$phase) this.$scope.$digest();
}
addNewFile(type) {
this.editingFile = true;
this.newFile = true;
this.newFileName = '';
this.selectedFileName = this.selectedRulesetTab;
this.selectedItem = { file: 'new file' };
this.fetchedXML = '<!-- Modify it at your will. -->';
this.type = type;
if (!this.$scope.$$phase) this.$scope.$digest();
this.$location.search('editingFile', true);
this.appState.setNavigation({ status: true });
this.$scope.$emit('fetchedFile', { data: this.fetchedXML });
}
doSaveConfig(isNewFile, fileName) {
const clusterInfo = this.appState.getClusterInfo();
const showRestartManager =
clusterInfo.status === 'enabled' ? 'cluster' : 'manager';
if (isNewFile && !fileName) {
this.errorHandler.handle(
'You need to specify a file name',
'Error creating a new file.'
);
return false;
} else {
if (isNewFile) {
const validFileName = /(.+).xml/;
const containsNumber = /.*[0-9].*/;
if (fileName && !validFileName.test(fileName)) {
fileName = fileName + '.xml';
}
if (containsNumber.test(fileName)) {
this.errorHandler.handle(
'The filename can not contain numbers',
'Error creating a new file.'
);
return false;
}
this.selectedItem = { file: fileName };
if (this.type === 'rules') {
this.$scope.$broadcast('saveXmlFile', {
rule: this.selectedItem,
showRestartManager
});
} else if (this.type === 'decoders') {
this.$scope.$broadcast('saveXmlFile', {
decoder: this.selectedItem,
showRestartManager
});
}
} else {
const objParam =
this.selectedRulesetTab === 'rules'
? {
rule: this.selectedItem,
showRestartManager
}
: {
decoder: this.selectedItem,
showRestartManager
};
this.$scope.$broadcast('saveXmlFile', objParam);
}
//$scope.editingFile = false;
//$scope.fetchedXML = null;
}
}
}

View File

@ -21,7 +21,14 @@ export class EditionController {
* @param {*} appState
* @param {*} wazuhConfig
*/
constructor($scope, $location, errorHandler, apiReq, appState, configHandler) {
constructor(
$scope,
$location,
errorHandler,
apiReq,
appState,
configHandler
) {
this.$scope = $scope;
this.errorHandler = errorHandler;
this.apiReq = apiReq;
@ -49,7 +56,10 @@ export class EditionController {
try {
let data = false;
let xml = false;
if (this.$scope.clusterStatus.data.data.enabled === 'yes' && this.$scope.clusterStatus.data.data.running === 'yes') {
if (
this.$scope.clusterStatus.data.data.enabled === 'yes' &&
this.$scope.clusterStatus.data.data.running === 'yes'
) {
data = await this.apiReq.request(
'GET',
`/cluster/${this.$scope.selectedNode}/files`,
@ -85,7 +95,7 @@ export class EditionController {
if (!this.$scope.$$phase) this.$scope.$digest();
};
this.$scope.restartNode = async (selectedNode) => {
this.$scope.restartNode = async selectedNode => {
try {
this.$scope.$emit('setRestarting', {});
this.$scope.isRestarting = true;
@ -95,24 +105,33 @@ export class EditionController {
{}
);
let data;
if (this.$scope.clusterStatus.data.data.enabled === 'yes' && this.$scope.clusterStatus.data.data.running === 'yes') {
if (
this.$scope.clusterStatus.data.data.enabled === 'yes' &&
this.$scope.clusterStatus.data.data.running === 'yes'
) {
data = await this.configHandler.restartNode(selectedNode);
} else {
data = await this.configHandler.restartManager();
}
this.$scope.$emit('removeRestarting', {});
this.$scope.isRestarting = false;
this.errorHandler.info(data.data.data, 'It may take a few seconds...');
this.errorHandler.info('It may take a few seconds...', data.data.data);
this.$scope.$applyAsync();
} catch (error) {
this.errorHandler.handle(error.message || error, 'Error restarting node');
this.errorHandler.handle(
error.message || error,
'Error restarting node'
);
this.$scope.$emit('removeRestarting', {});
this.$scope.isRestarting = false;
}
}
};
this.$scope.saveConfiguration = async () => {
try {
if (this.$scope.clusterStatus.data.data.enabled === 'yes' && this.$scope.clusterStatus.data.data.running === 'yes') {
if (
this.$scope.clusterStatus.data.data.enabled === 'yes' &&
this.$scope.clusterStatus.data.data.running === 'yes'
) {
this.$scope.$broadcast('saveXmlFile', {
node: this.$scope.selectedNode,
showRestartManager: 'cluster'
@ -143,8 +162,6 @@ export class EditionController {
this.$scope.editConf();
};
this.$scope.closeEditingFile = () => { };
//listeners
this.$scope.$on('wazuhShowNode', (event, parameters) => {
return this.$scope.edit(parameters.node);

View File

@ -87,11 +87,11 @@ export class ManagementController {
this.$scope.$on('removeCurrentConfiguration', () => {
this.currentConfiguration = false;
});
this.$scope.$on('setRestarting', () => {
this.$rootScope.$on('setRestarting', () => {
this.isRestarting = true;
this.$scope.$applyAsync();
});
this.$scope.$on('removeRestarting', () => {
this.$rootScope.$on('removeRestarting', () => {
this.isRestarting = false;
this.$scope.$applyAsync();
});
@ -128,24 +128,30 @@ export class ManagementController {
async restartManager() {
try {
this.isRestarting = true;
this.isRestarting = true;
const data = await this.configHandler.restartManager();
this.isRestarting = false;
this.errorHandler.info(data.data.data, '');
this.$scope.$applyAsync();
} catch (error) {
this.errorHandler.handle(error.message || error, 'Error restarting manager');
this.errorHandler.handle(
error.message || error,
'Error restarting manager'
);
}
}
async restartCluster() {
try {
this.isRestarting = true;
this.isRestarting = true;
const data = await this.configHandler.restartCluster();
this.isRestarting = false;
this.errorHandler.info(data.data.data, 'It may take a few seconds...');
this.errorHandler.info('It may take a few seconds...', data.data.data);
this.$scope.$applyAsync();
} catch (error) {
this.errorHandler.handle(error.message || error, 'Error restarting cluster');
this.errorHandler.handle(
error.message || error,
'Error restarting cluster'
);
}
}

View File

@ -25,6 +25,10 @@ export function RulesController(
wazuhConfig,
rulesetHandler
) {
$scope.showingLocalRules = false;
$scope.switchLocalRules = () =>
($scope.showingLocalRules = !$scope.showingLocalRules);
$scope.isObject = item => typeof item === 'object';
$scope.appliedFilters = [];
@ -239,16 +243,19 @@ export function RulesController(
errorHandler.handle(error, 'Fetch file error');
}
};
$scope.closeEditingFile = () => {
$scope.editingFile = false;
appState.setNavigation({ status: true });
$scope.$broadcast('closeEditXmlFile', {});
if (!$scope.$$phase) $scope.$digest();
};
$scope.xmlIsValid = valid => {
$scope.xmlHasErrors = valid;
if (!$scope.$$phase) $scope.$digest();
};
$scope.doSaveRuleConfig = () => {
$scope.$broadcast('saveXmlFile', { rule: $scope.currentRule });
};
@ -292,4 +299,72 @@ export function RulesController(
)
);
}
$scope.addNewFile = type => {
$scope.editingFile = true;
$scope.newFile = true;
$scope.newFileName = '';
$scope.selectedFileName = $scope.selectedRulesetTab;
$scope.selectedItem = { file: 'new file' };
$scope.fetchedXML = '<!-- Modify it at your will. -->';
$scope.type = type;
if (!$scope.$$phase) $scope.$digest();
$location.search('editingFile', true);
appState.setNavigation({ status: true });
$scope.$emit('fetchedFile', { data: $scope.fetchedXML });
};
$scope.doSaveConfig = (isNewFile, fileName) => {
const clusterInfo = appState.getClusterInfo();
const showRestartManager =
clusterInfo.status === 'enabled' ? 'cluster' : 'manager';
if (isNewFile && !fileName) {
errorHandler.handle(
'You need to specify a file name',
'Error creating a new file.'
);
return false;
} else {
if (isNewFile) {
const validFileName = /(.+).xml/;
const containsNumber = /.*[0-9].*/;
if (fileName && !validFileName.test(fileName)) {
fileName = fileName + '.xml';
}
if (containsNumber.test(fileName)) {
this.errorHandler.handle(
'The filename can not contain numbers',
'Error creating a new file.'
);
return false;
}
$scope.selectedItem = { file: fileName };
if ($scope.type === 'rules') {
$scope.$broadcast('saveXmlFile', {
rule: $scope.selectedItem,
showRestartManager
});
} else if ($scope.type === 'decoders') {
$scope.$broadcast('saveXmlFile', {
decoder: $scope.selectedItem,
showRestartManager
});
}
} else {
const objParam =
$scope.selectedRulesetTab === 'rules'
? {
rule: $scope.selectedItem,
showRestartManager
}
: {
decoder: $scope.selectedItem,
showRestartManager
};
$scope.$broadcast('saveXmlFile', objParam);
}
//$scope.editingFile = false;
//$scope.fetchedXML = null;
}
};
}

View File

@ -195,7 +195,7 @@ export class SettingsController {
this.errorHandler.info(
`API ${
this.apiEntries[index]._source.cluster_info.manager
this.apiEntries[index]._source.cluster_info.manager
} set as default`,
'Settings'
);
@ -559,7 +559,7 @@ export class SettingsController {
} catch (error) {
if (!this.wzMisc.getApiIsDown()) this.printError(error);
else {
this.errorHandler.handle(error)
this.errorHandler.handle(error);
}
}
}

View File

@ -1,7 +1,7 @@
<div layout="column" layout-align="start">
<div layout="row" class="wz-margin-top-8 md-padding-h">
<button ng-disabled='items.length === 0 || (currentList.new && !currentList.newName)' ng-click='saveList()'
class='btn btn-primary pull-right'>
class='btn wz-button pull-right'>
<span><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save list</span>
</button>
<input ng-show="currentList.new && !currentList.name" placeholder="Enter list file name" ng-model="currentList.newName"

View File

@ -17,13 +17,22 @@ import { checkGap } from '../wz-table/lib/check-gap';
const app = uiModules.get('app/wazuh', []);
app.directive('wzListManage', function () {
app.directive('wzListManage', function() {
return {
restrict: 'E',
scope: {
list: '=list'
},
controller($scope, errorHandler, $filter, $mdDialog, rulesetHandler, wazuhConfig, appState) {
controller(
$scope,
$rootScope,
errorHandler,
$filter,
$mdDialog,
rulesetHandler,
wazuhConfig,
appState
) {
const clusterInfo = appState.getClusterInfo();
/**
@ -41,7 +50,7 @@ app.directive('wzListManage', function () {
$scope.prevPage = () => pagination.prevPage($scope);
$scope.nextPage = async currentPage =>
pagination.nextPage(currentPage, $scope, errorHandler, null);
$scope.setPage = function () {
$scope.setPage = function() {
$scope.currentPage = this.n;
$scope.nextPage(this.n);
};
@ -51,7 +60,7 @@ app.directive('wzListManage', function () {
*/
$scope.filterTable = data => {
const result = Object.keys(data || $scope.currentList.list).map(
function (key) {
function(key) {
return [key, $scope.currentList.list[key]];
}
);
@ -106,7 +115,10 @@ app.directive('wzListManage', function () {
}
await rulesetHandler.sendCdbList($scope.currentList.name, raw);
const msg = 'Success. CDB list has been updated';
showRestartDialog(msg, clusterInfo.status === 'enabled' ? 'cluster' : 'manager');
showRestartDialog(
msg,
clusterInfo.status === 'enabled' ? 'cluster' : 'manager'
);
fetch();
$scope.loadingChange = false;
if (!$scope.$$phase) $scope.$digest();
@ -150,7 +162,7 @@ app.directive('wzListManage', function () {
$scope.removingEntry = key;
};
$scope.editKey = (key) => {
$scope.editKey = key => {
$scope.loadingChange = true;
$scope.currentList.list[key] = $scope.currentList.editingNewValue;
$scope.currentList.editingNewValue = '';
@ -170,39 +182,62 @@ app.directive('wzListManage', function () {
const showRestartDialog = async (msg, target) => {
const confirm = $mdDialog.confirm({
controller: function ($scope, myScope, myError, $mdDialog, configHandler) {
$scope.myScope = myScope;
controller: function(
$scope,
scope,
errorHandler,
rootScope,
$mdDialog,
configHandler
) {
$scope.closeDialog = () => {
$mdDialog.hide();
$('body').removeClass('md-dialog-body');
};
$scope.confirmDialog = () => {
rootScope.$emit('setRestarting', {});
scope.$applyAsync();
$mdDialog.hide();
$scope.myScope.$emit('setRestarting', {});
if (target === 'manager') {
configHandler.restartManager()
configHandler
.restartManager()
.then(data => {
$('body').removeClass('md-dialog-body');
myError.info(data.data.data, 'It may take a few seconds...');
$scope.myScope.$applyAsync();
}).catch(error => {
$scope.myScope.$emit('setRestarting', {});
myError.handle(error.message || error, 'Error restarting manager');
errorHandler.info(
'It may take a few seconds...',
data.data.data
);
rootScope.$emit('removeRestarting', {});
scope.$applyAsync();
})
.catch(error => {
rootScope.$emit('removeRestarting', {});
errorHandler.handle(
error.message || error,
'Error restarting manager'
);
});
} else if (target === 'cluster') {
configHandler.restartCluster()
configHandler
.restartCluster()
.then(data => {
$('body').removeClass('md-dialog-body');
myError.info(data.data.data, 'It may take a few seconds...');
$scope.myScope.$applyAsync();
errorHandler.info(
'It may take a few seconds...',
data.data.data
);
rootScope.$emit('removeRestarting', {});
scope.$applyAsync();
})
.catch(error => {
$scope.myScope.$emit('setRestarting', {});
myError.handle(error.message || error, 'Error restarting cluster');
.catch(error => {
rootScope.$emit('removeRestarting', {});
errorHandler.handle(
error.message || error,
'Error restarting cluster'
);
});
}
$scope.myScope.$emit('removeRestarting', {});
}
};
},
template:
'<md-dialog class="modalTheme euiToast euiToast--success euiGlobalToastListItem">' +
@ -224,13 +259,14 @@ app.directive('wzListManage', function () {
clickOutsideToClose: true,
disableParentScroll: true,
locals: {
myScope: $scope,
myError: errorHandler
scope: $scope,
errorHandler: errorHandler,
rootScope: $rootScope
}
});
$('body').addClass('md-dialog-body');
$mdDialog.show(confirm);
}
};
},
template
};

View File

@ -24,21 +24,21 @@
</div>
</div>
<div class='wzMultipleSelectorButtons'>
<button ng-disabled='availableItems.length === 0 || availableItems.length > 500' type='button' class='btn btn-primary' tooltip='Add all items'
tooltip-placement='top' ng-click='moveAll(availableItems, selectedItems, "a");
<button ng-disabled='availableItems.length === 0 || availableItems.length > 500' type='button' class='btn wz-button'
tooltip='Add all items' tooltip-placement='top' ng-click='moveAll(availableItems, selectedItems, "a");
availableItem=null;availableFilter="" ;doReload("left", availableFilter, true)'>
<span><i class='fa fa-forward'></i></span>
</button>
<button ng-disabled='!availableItem || availableItem.length > 500' type='button' class='btn btn-primary' tooltip='Add selected items'
tooltip-placement='top' ng-click='moveItem(availableItem, availableItems, selectedItems, "a");availableItem=null;availableFilter=""'>
<button ng-disabled='!availableItem || availableItem.length > 500' type='button' class='btn wz-button'
tooltip='Add selected items' tooltip-placement='top' ng-click='moveItem(availableItem, availableItems, selectedItems, "a");availableItem=null;availableFilter=""'>
<span><i class='fa fa-arrow-right'></i></span>
</button>
<button ng-disabled='!selectedElement || selectedElement.length > 500' type='button' class='btn btn-primary' tooltip='Remove selected items'
tooltip-placement='top' ng-click='moveItem(selectedElement, selectedItems, availableItems, "r");selectedFilter="";selectedElement=null'>
<button ng-disabled='!selectedElement || selectedElement.length > 500' type='button' class='btn wz-button'
tooltip='Remove selected items' tooltip-placement='top' ng-click='moveItem(selectedElement, selectedItems, availableItems, "r");selectedFilter="";selectedElement=null'>
<span><i class='fa fa-arrow-left'></i></span>
</button>
<button ng-disabled='selectedItems.length === 0 || selectedItems.length > 500' type='button' class='btn btn-primary' tooltip='Remove all items'
tooltip-placement='top' ng-click='moveAll(selectedItems, availableItems, "r");selectedElement=null;selectedFilter="";doReload("right")'>
<button ng-disabled='selectedItems.length === 0 || selectedItems.length > 500' type='button' class='btn wz-button'
tooltip='Remove all items' tooltip-placement='top' ng-click='moveAll(selectedItems, availableItems, "r");selectedElement=null;selectedFilter="";doReload("right")'>
<span><i class='fa fa-backward'></i></span>
</button>
</div>

View File

@ -57,6 +57,11 @@ export function parseValue(key, item, instancePath, $sce = null) {
) {
return '-';
}
if ((item || {})[key] === '(null)') {
return '-';
}
const isComposedString = typeof key === 'string' && key.includes('.');
const isComposedObject =
typeof key === 'object' && key.value && key.value.includes('.');

View File

@ -16,7 +16,7 @@ import { uiModules } from 'ui/modules';
const app = uiModules.get('app/wazuh', []);
app.directive('wzXmlFileEditor', function () {
app.directive('wzXmlFileEditor', function() {
return {
restrict: 'E',
scope: {
@ -28,6 +28,7 @@ app.directive('wzXmlFileEditor', function () {
},
controller(
$scope,
$rootScope,
$document,
$location,
$mdDialog,
@ -41,7 +42,7 @@ app.directive('wzXmlFileEditor', function () {
* evaluates regular expressions.
* Alternative using split + join, same result.
*/
String.prototype.xmlReplace = function (str, newstr) {
String.prototype.xmlReplace = function(str, newstr) {
return this.split(str).join(newstr);
};
@ -149,10 +150,10 @@ app.directive('wzXmlFileEditor', function () {
var type = single
? 'single'
: closing
? 'closing'
: opening
? 'opening'
: 'other';
? 'closing'
: opening
? 'opening'
: 'other';
var fromTo = lastType + '->' + type;
lastType = type;
var padding = '';
@ -175,25 +176,37 @@ app.directive('wzXmlFileEditor', function () {
const xml = replaceIllegalXML(text);
if (params.group) {
await groupHandler.sendConfiguration(params.group, xml);
const msg = 'Success. Group has been updated'
params.showRestartManager ? showRestartDialog(msg, params.showRestartManager) : errorHandler.info(msg, '');
const msg = 'Success. Group has been updated';
params.showRestartManager
? showRestartDialog(msg, params.showRestartManager)
: errorHandler.info(msg, '');
$scope.$emit('configurationSuccess');
} else if (params.rule) {
await rulesetHandler.sendRuleConfiguration(params.rule, xml);
const msg = 'Success. Rules has been updated'
params.showRestartManager ? showRestartDialog(msg, params.showRestartManager) : errorHandler.info(msg, '');
const msg = 'Success. Rules has been updated';
params.showRestartManager
? showRestartDialog(msg, params.showRestartManager)
: errorHandler.info(msg, '');
} else if (params.decoder) {
await rulesetHandler.sendDecoderConfiguration(params.decoder, xml);
const msg = 'Success. Decoders has been updated';
params.showRestartManager ? showRestartDialog(msg, params.showRestartManager) : errorHandler.info(msg, '');
params.showRestartManager
? showRestartDialog(msg, params.showRestartManager)
: errorHandler.info(msg, '');
} else if (params.node) {
await configHandler.saveNodeConfiguration(params.node, xml);
const msg = `Success. Node (${params.node}) configuration has been updated`;
params.showRestartManager ? showRestartDialog(msg, params.node) : errorHandler.info(msg, '');
const msg = `Success. Node (${
params.node
}) configuration has been updated`;
params.showRestartManager
? showRestartDialog(msg, params.node)
: errorHandler.info(msg, '');
} else if (params.manager) {
await configHandler.saveManagerConfiguration(xml);
const msg = 'Success. Manager configuration has been updated';
params.showRestartManager ? showRestartDialog(msg, params.showRestartManager) : errorHandler.info(msg, '');
params.showRestartManager
? showRestartDialog(msg, params.showRestartManager)
: errorHandler.info(msg, '');
}
$scope.closeFn({ reload: true });
} catch (error) {
@ -244,58 +257,89 @@ app.directive('wzXmlFileEditor', function () {
const showRestartDialog = async (msg, target) => {
const confirm = $mdDialog.confirm({
controller: function ($scope, myScope, myError, $mdDialog, configHandler, apiReq) {
$scope.myScope = myScope;
controller: function(
$scope,
scope,
errorHandler,
rootScope,
$mdDialog,
configHandler,
apiReq
) {
$scope.closeDialog = () => {
$mdDialog.hide();
$('body').removeClass('md-dialog-body');
};
$scope.confirmDialog = async () => {
rootScope.$emit('setRestarting', {});
scope.$applyAsync();
$mdDialog.hide();
$scope.myScope.$emit('setRestarting', {});
const clusterStatus = await apiReq.request(
'GET',
'/cluster/status',
{}
);
if (target !== 'cluster' && target !== 'manager' && (clusterStatus.data.data.enabled === 'no' || clusterStatus.data.data.running === 'no')) {
if (
target !== 'cluster' &&
target !== 'manager' &&
(clusterStatus.data.data.enabled === 'no' ||
clusterStatus.data.data.running === 'no')
) {
target = 'manager';
}
if (target === 'manager') {
try {
const data = await configHandler.restartManager();
$('body').removeClass('md-dialog-body');
myError.info(data.data.data, 'It may take a few seconds...');
$scope.myScope.$applyAsync();
errorHandler.info(
'It may take a few seconds...',
data.data.data
);
rootScope.$emit('removeRestarting', {});
scope.$applyAsync();
} catch (error) {
myError.handle(error.message || error, 'Error restarting manager');
$scope.myScope.$emit('removeRestarting', {});
errorHandler.handle(
error.message || error,
'Error restarting manager'
);
rootScope.$emit('removeRestarting', {});
}
} else if (target === 'cluster') {
try {
const data = await configHandler.restartCluster();
$('body').removeClass('md-dialog-body');
myError.info(data.data.data, 'It may take a few seconds...');
$scope.myScope.$applyAsync();
errorHandler.info(
'It may take a few seconds...',
data.data.data
);
rootScope.$emit('removeRestarting', {});
scope.$applyAsync();
} catch (error) {
myError.handle(error.message || error, 'Error restarting cluster');
$scope.myScope.$emit('removeRestarting', {});
errorHandler.handle(
error.message || error,
'Error restarting cluster'
);
rootScope.$emit('removeRestarting', {});
}
} else {
try {
const data = await configHandler.restartNode(target);
$('body').removeClass('md-dialog-body');
myError.info(data.data.data, 'It may take a few seconds...');
$scope.myScope.$applyAsync();
errorHandler.info(
'It may take a few seconds...',
data.data.data
);
rootScope.$emit('removeRestarting', {});
scope.$applyAsync();
} catch (error) {
myError.handle(error.message || error, 'Error restarting node');
$scope.myScope.$emit('removeRestarting', {});
errorHandler.handle(
error.message || error,
'Error restarting node'
);
rootScope.$emit('removeRestarting', {});
}
}
$scope.myScope.$emit('removeRestarting', {});
}
};
},
template:
'<md-dialog class="modalTheme euiToast euiToast--success euiGlobalToastListItem">' +
@ -317,18 +361,19 @@ app.directive('wzXmlFileEditor', function () {
clickOutsideToClose: true,
disableParentScroll: true,
locals: {
myScope: $scope,
myError: errorHandler
scope: $scope,
errorHandler: errorHandler,
rootScope: $rootScope
}
});
$('body').addClass('md-dialog-body');
$mdDialog.show(confirm);
}
};
$scope.$on('saveXmlFile', (ev, params) => saveFile(params));
$scope.$on('$destroy', function () {
$location.search('editingFile', null);
$scope.$on('$destroy', function() {
//$location.search('editingFile', null);
});
},
template

View File

@ -33,15 +33,15 @@ export class TabVisualizations {
this.overview = {
welcome: 0,
general: 11,
general: 13,
fim: 8,
pm: 5,
vuls: 10,
oscap: 11,
ciscat: 11,
audit: 15,
pci: 6,
gdpr: 6,
pci: 5,
gdpr: 5,
aws: 6,
virustotal: 7,
osquery: 5

View File

@ -1,4 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="69.06103515625" height="74.30986022949219" style=""><rect id="backgroundrect" width="100%" height="100%" x="0" y="0" fill="none" stroke="none" class="" style=""/><defs><filter id="f009" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:label="Roughen" inkscape:menu="ABCs" inkscape:menu-tooltip="Small-scale roughening to edges and content" color-interpolation-filters="sRGB">
<feTurbulence numOctaves="3" seed="0" type="turbulence" baseFrequency=".04" result="result91"/>
<feDisplacementMap scale="6.6" yChannelSelector="G" xChannelSelector="R" in="SourceGraphic" in2="result91"/>
</filter></defs><title>wazuh_blue_full copia</title><g class="currentLayer" style=""><title>Layer 1</title><path class="a" d="M52.462196536083965,1.5023475289344799 L43.59163897516325,19.995637369155887 H27.32232039930419 L17.606474281569277,1.5023475289344799 L10.844165827055729,24.993557384610174 L1.5559362733562334,35.502004596591 l20.883599638938904,19.015754851698876 l8.144603859186171,18.601725974678995 H39.90220303895072 l7.6970981526374835,-18.27641757130623 L68.94035110833242,35.66958771348 L59.433340986986906,25.328723618388178 zM42.06017500164107,51.126665788888936 a1.9889142513275146,1.9715660810470519 0 0 1 -0.8055102717876407,0.6703324675560006 a2.6253668117523197,2.602467226982117 0 0 1 -1.0541245532035828,0.21687226891517639 a2.5656993842124938,2.543320244550705 0 0 1 -0.9944571256637558,-0.21687226891517639 a1.8894685387611387,1.8729877769947052 0 0 1 -0.7756765580177305,-0.6703324675560006 l-3.1424845170974733,-4.7120429337024685 L32.04599174620704,51.126665788888936 a1.9889142513275146,1.9715660810470519 0 0 1 -0.7756765580177305,0.6703324675560006 a2.6054776692390442,2.582751566171646 0 0 1 -0.9944571256637558,0.21687226891517639 a2.0983045351505276,2.080002215504646 0 0 1 -1.8596348249912262,-0.8872047364711797 L12.315962373038086,36.25119970738888 h4.455167922973633 l13.6041734790802,11.829396486282349 L33.10011629941062,43.89101827144623 h4.276165640354156 l2.983371376991272,4.2092935830354685 l13.783175761699676,-12.322288006544113 h4.077274215221404 z" id="svg_6" fill="#ffffff" fill-opacity="1" stroke="none" filter=""/></g></svg>
<svg width="40.303738" height="44.000031" viewBox="0 0 10.663697 11.641675" version="1.1" id="svg8" xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
<g id="layer2" transform="translate(-47.805736,-147.15347)">
<path id="path874-3" d="m 55.670688,147.89073 -1.306598,2.74797 h -2.396404 l -1.431105,-2.74797 -0.99606,3.4906 -1.368118,1.56148 3.076068,2.82558 1.199668,2.76407 h 1.372514 l 1.133749,-2.71572 3.143452,-2.84903 -1.400345,-1.53658 z m -1.532176,7.37376 a 0.29295898,0.29295898 0 0 1 -0.118643,0.0997 0.38670583,0.38670583 0 0 1 -0.155278,0.0322 0.37791708,0.37791708 0 0 1 -0.146481,-0.0322 0.27831103,0.27831103 0 0 1 -0.114255,-0.0997 l -0.462875,-0.70016 -0.477523,0.70016 a 0.29295898,0.29295898 0 0 1 -0.114255,0.0997 0.38377626,0.38377626 0 0 1 -0.146481,0.0322 0.30907171,0.30907171 0 0 1 -0.273919,-0.13185 L 49.7573,153.05412 h 0.656229 l 2.003838,1.75776 0.401356,-0.62254 h 0.629862 l 0.439437,0.62546 2.030206,-1.83099 h 0.600566 z" class="a" style="fill:none;stroke:#fff;stroke-width:0.75;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="69.06103515625" height="74.30986022949219" style=""><rect id="backgroundrect" width="100%" height="100%" x="0" y="0" fill="none" stroke="none" class="" style=""/><defs><filter id="f009" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:label="Roughen" inkscape:menu="ABCs" inkscape:menu-tooltip="Small-scale roughening to edges and content" color-interpolation-filters="sRGB">
<feTurbulence numOctaves="3" seed="0" type="turbulence" baseFrequency=".04" result="result91"/>
<feDisplacementMap scale="6.6" yChannelSelector="G" xChannelSelector="R" in="SourceGraphic" in2="result91"/>
</filter></defs><title>wazuh_blue_full copia</title><g class="currentLayer" style=""><title>Layer 1</title><path class="a" d="M52.462196536083965,1.5023475289344799 L43.59163897516325,19.995637369155887 H27.32232039930419 L17.606474281569277,1.5023475289344799 L10.844165827055729,24.993557384610174 L1.5559362733562334,35.502004596591 l20.883599638938904,19.015754851698876 l8.144603859186171,18.601725974678995 H39.90220303895072 l7.6970981526374835,-18.27641757130623 L68.94035110833242,35.66958771348 L59.433340986986906,25.328723618388178 zM42.06017500164107,51.126665788888936 a1.9889142513275146,1.9715660810470519 0 0 1 -0.8055102717876407,0.6703324675560006 a2.6253668117523197,2.602467226982117 0 0 1 -1.0541245532035828,0.21687226891517639 a2.5656993842124938,2.543320244550705 0 0 1 -0.9944571256637558,-0.21687226891517639 a1.8894685387611387,1.8729877769947052 0 0 1 -0.7756765580177305,-0.6703324675560006 l-3.1424845170974733,-4.7120429337024685 L32.04599174620704,51.126665788888936 a1.9889142513275146,1.9715660810470519 0 0 1 -0.7756765580177305,0.6703324675560006 a2.6054776692390442,2.582751566171646 0 0 1 -0.9944571256637558,0.21687226891517639 a2.0983045351505276,2.080002215504646 0 0 1 -1.8596348249912262,-0.8872047364711797 L12.315962373038086,36.25119970738888 h4.455167922973633 l13.6041734790802,11.829396486282349 L33.10011629941062,43.89101827144623 h4.276165640354156 l2.983371376991272,4.2092935830354685 l13.783175761699676,-12.322288006544113 h4.077274215221404 z" id="svg_6" fill="#ffffff" fill-opacity="1" stroke="none" filter=""/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -581,7 +581,7 @@ md-sidenav {
.wz-agent-status-indicator {
color: white;
padding: 0 6px;
padding: 4px 6px;
border-radius: 2px;
text-transform: uppercase;
}
@ -737,6 +737,18 @@ md-sidenav {
background: #fff;
}
.updateBtn{
background: #0F9D58;
color: white;
}
.upgradingLabel{
color: #0F9D58;
padding-top: 12px;
display: block;
}
/*
* https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/
* Handling long URLs on error toasts.

View File

@ -18,6 +18,13 @@
max-height: 35px !important;
}
.height-20 {
height: 20px !important;
}
.height-25 {
height: 25px !important;
}
.height-35 {
height: 35px !important;
}

View File

@ -126,6 +126,15 @@ html, body, button:not(.fa):not(.fa-times), textarea, input, select, .wz-chip {
}
}
.wz-text-link-add {
cursor: pointer !important;
color: #006BB4 !important;
&:hover {
text-decoration: none !important;
}
}
.wz-text-active {
color: rgb(0, 121, 165);
font-weight: bold;

View File

@ -50,15 +50,23 @@ export class ConfigHandler {
}
/**
* Restart manager (single-node API call)
*/
* Restart manager (single-node API call)
*/
async restartManager() {
try {
const result = await this.apiReq.request(
'PUT',
`/manager/restart`,
const validationError = await this.apiReq.request(
'GET',
`/manager/configuration/validation`,
{}
);
const valid =
(((validationError || {}).data || {}).data || {}).status === 'OK';
if (!valid) {
throw new Error('The configuration has some error.');
}
const result = await this.apiReq.request('PUT', `/manager/restart`, {});
return result;
} catch (error) {
return Promise.reject(error);
@ -66,15 +74,23 @@ export class ConfigHandler {
}
/**
* Restart cluster
*/
* Restart cluster
*/
async restartCluster() {
try {
const result = await this.apiReq.request(
'PUT',
`/cluster/restart`,
const validationError = await this.apiReq.request(
'GET',
`/cluster/configuration/validation`,
{}
);
const valid =
(((validationError || {}).data || {}).data || {}).status === 'OK';
if (!valid) {
throw new Error('The configuration has some error.');
}
const result = await this.apiReq.request('PUT', `/cluster/restart`, {});
return result;
} catch (error) {
return Promise.reject(error);
@ -82,10 +98,22 @@ export class ConfigHandler {
}
/**
* Restart a cluster node
*/
* Restart a cluster node
*/
async restartNode(node) {
try {
const validationError = await this.apiReq.request(
'GET',
`/cluster/${node}/configuration/validation`,
{}
);
const valid =
(((validationError || {}).data || {}).data || {}).status === 'OK';
if (!valid) {
throw new Error('The configuration has some error.');
}
const result = await this.apiReq.request(
'PUT',
`/cluster/${node}/restart`,

View File

@ -1,35 +1,38 @@
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels'" ng-show="!showSyscheckFiles" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels'" ng-show="!showSyscheckFiles" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<div layout="row" layout-padding class="wz-padding-top-0">
<span flex></span>
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
scan</span>
<span></span>
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
Show state</span>
</div>
<!-- View: Panels -->
<div layout="row" class="height-300">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Most active users</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Users" vis-id="'Wazuh-App-Agents-FIM-Users'">
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Actions</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Actions" vis-id="'Wazuh-App-Agents-FIM-Actions'">
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Most active users</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Users" vis-id="'Wazuh-App-Agents-FIM-Users'">
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Actions</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Actions" vis-id="'Wazuh-App-Agents-FIM-Actions'">
</md-card-content>
</md-card>
<md-card flex="40ç" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Events</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Events" vis-id="'Wazuh-App-Agents-FIM-Events'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="40ç" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Events</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-FIM-Events" vis-id="'Wazuh-App-Agents-FIM-Events'"></kbn-vis>
</md-card-content>
</md-card>
</div>
@ -71,15 +74,26 @@
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles" layout-align="start">
<div layout="row" layout-padding class="wz-padding-top-0">
<span flex></span>
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
<span></span>
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i> Show alerts</span>
<<<<<<< HEAD <span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i>
Run scan</span>
<span></span>
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i>
Show alerts</span>
=======
<span ng-click="switchSyscheckFiles()" class="btn pull-right wz-button">Show alerts</span>
>>>>>>> 3.9-6.6
</div>
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showSyscheckFiles && (!agent || !agent.os)">
<div flex class="euiCallOut euiCallOut--warning">
<div class="euiCallOutHeader">
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"><defs><path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z"></path></defs><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use></svg>
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
<defs>
<path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z"></path>
</defs>
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
</svg>
<span class="euiCallOutHeader__title">This agent is never connected.</span>
</div>
</div>
@ -98,12 +112,18 @@
</button>
</div>
<div layout="row" ng-if="agent && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'registry'}]" row-sizes="[6,6,6]" extra-limit="100" keys="['file','sha1','md5']">
</wz-table>
<<<<<<< HEAD <wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'registry'}]"
row-sizes="[6,6,6]" extra-limit="100" keys="['file','sha1','md5']">
=======
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'registry'}]"
row-sizes="[6,6,6]" extra-limit="true" keys="['file','sha1','md5']">
>>>>>>> 3.9-6.6
</wz-table>
</div>
<div layout="row" layout-padding>
<span flex></span>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-registry.csv', [{name:'type',value:'registry'}])">Formatted <i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-registry.csv', [{name:'type',value:'registry'}])">Formatted
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
</div>
</md-card-content>
</md-card>
@ -122,12 +142,18 @@
</button>
</div>
<div layout="row" ng-if="agent && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'file'}]" row-sizes="[6,6,6]" extra-limit="100" keys="['file','size','uname','perm','sha1','sha256','uid','mtime','md5']">
</wz-table>
<<<<<<< HEAD <wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'file'}]"
row-sizes="[6,6,6]" extra-limit="100" keys="['file','size','uname','perm','sha1','sha256','uid','mtime','md5']">
=======
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'file'}]"
row-sizes="[6,6,6]" extra-limit="true" keys="['file','size','uname','perm','sha1','sha256','uid','mtime','md5']">
>>>>>>> 3.9-6.6
</wz-table>
</div>
<div layout="row" layout-padding>
<span flex></span>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv', [{name:'type',value:'file'}])">Formatted <i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv', [{name:'type',value:'file'}])">Formatted
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
</div>
</md-card-content>
</md-card>
@ -151,7 +177,8 @@
</div>
<div layout="row" layout-padding>
<span flex></span>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv')">Formatted <i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
<a class="small" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv')">Formatted
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
</div>
</md-card-content>
</md-card>

View File

@ -1,4 +1,5 @@
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<!-- Agent information section -->
<div layout="row" layout-align="start center">
@ -29,7 +30,8 @@
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
<div class="wz-word-break" flex ng-if="agent.group">
Groups: <span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{ group }}&nbsp;</span>
Groups: <span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{
group }}&nbsp;</span>
</div>
</md-card-content>
</md-card>
@ -37,19 +39,26 @@
<div layout="row" layout-align="start center">
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
<div class="wz-text-truncatable" flex>Last keep alive:<span class="wz-text-bold"> {{agent.lastKeepAlive || 'Unknown' }}</span></div>
<div class="wz-text-truncatable" flex>Last keep alive:<span class="wz-text-bold"> {{agent.lastKeepAlive
|| 'Unknown' }}</span></div>
<div class="wz-text-truncatable" flex>Registration date:<span class="wz-text-bold"> {{agent.dateAdd}}</span></div>
<div class="wz-text-truncatable" flex ng-if="agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold"> Scan in progress</span></div>
<div class="wz-text-truncatable" flex ng-if="!agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold"> {{agent.syscheck.end || 'Unknown'}}</span>
<md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end" md-direction="bottom" class="wz-tooltip">
<div class="wz-text-truncatable" flex ng-if="agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold">
Scan in progress</span></div>
<div class="wz-text-truncatable" flex ng-if="!agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold">
{{agent.syscheck.end || 'Unknown'}}</span>
<md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end"
md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.syscheck.start || 'Unknown'}} <br>
End time: {{ agent.syscheck.end || 'Unknown'}} <br>
Duration time: {{ agent.syscheck.duration +' minutes' || 'Unknown'}}
</md-tooltip>
</div>
<div class="wz-text-truncatable" flex ng-if="agent.rootcheck.inProgress">Last rootcheck scan:<span class="wz-text-bold"> Scan in progress</span></div>
<div class="wz-text-truncatable" flex ng-if="!agent.rootcheck.inProgress">Last rootcheck scan:<span class="wz-text-bold"> {{agent.rootcheck.end || 'Unknown'}}</span>
<md-tooltip ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end" md-direction="bottom" class="wz-tooltip">
<div class="wz-text-truncatable" flex ng-if="agent.rootcheck.inProgress">Last rootcheck scan:<span
class="wz-text-bold"> Scan in progress</span></div>
<div class="wz-text-truncatable" flex ng-if="!agent.rootcheck.inProgress">Last rootcheck scan:<span
class="wz-text-bold"> {{agent.rootcheck.end || 'Unknown'}}</span>
<md-tooltip ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end"
md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.rootcheck.start || 'Unknown'}} <br>
End time: {{ agent.rootcheck.end || 'Unknown'}} <br>
Duration time: {{ agent.rootcheck.duration +' minutes' || 'Unknown'}}
@ -61,62 +70,62 @@
<!-- End agent information section -->
<!-- View: Panels -->
<div layout="row" class="height-300">
<md-card flex="33" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-alerts" vis-id="'Wazuh-App-Agents-Overview-Top-5-alerts'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="33" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 groups</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-groups" vis-id="'Wazuh-App-Agents-Overview-Top-5-groups'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="33" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" class="height-300">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-alerts" vis-id="'Wazuh-App-Agents-Overview-Top-5-alerts'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 groups</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-groups" vis-id="'Wazuh-App-Agents-Overview-Top-5-groups'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="start stretch" class="height-230">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alert level evolution</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Alert-level-evolution" vis-id="'Wazuh-App-Agents-Overview-Alert-level-evolution'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="60" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Alerts" vis-id="'Wazuh-App-Agents-Overview-Alerts'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="start stretch" class="height-230">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alert level evolution</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Alert-level-evolution" vis-id="'Wazuh-App-Agents-Overview-Alert-level-evolution'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Agents-Overview-Alerts" vis-id="'Wazuh-App-Agents-Overview-Alerts'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" class="height-570">
<md-card flex="60" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Alerts-summary'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="40" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Groups summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Groups-summary'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" class="height-570">
<md-card flex="60" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Alerts-summary'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="40" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Groups summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Groups-summary'"></kbn-vis>
</md-card-content>
</md-card>
</div>
</md-content>
</md-content>

View File

@ -3,11 +3,13 @@
<md-card flex class="wz-md-card" flex>
<md-card-content class="wz-text-center">
<div layout="row" layout-padding>
<i class="fa fa-fw fa-info-circle" aria-hidden="true"></i> <span class="wz-headline-title">Could not fetch data for this agent. <span ng-if="emptyAgent">Reason: {{emptyAgent}}</span></span>
<i class="fa fa-fw fa-info-circle" aria-hidden="true"></i> <span class="wz-headline-title">Could
not fetch data for this agent. <span ng-if="emptyAgent">Reason: {{emptyAgent}}</span></span>
</div>
<div layout="row" layout-padding ng-if="emptyAgent">
<span class="wz-text-link" ng-click="getAgent()"><i class="fa fa-fw fa-refresh" aria-hidden="true"></i> Try again</span>
</div>
<span class="wz-text-link" ng-click="getAgent()"><i class="fa fa-fw fa-refresh" aria-hidden="true"></i>
Try again</span>
</div>
</md-card-content>
</md-card>
</div>
@ -15,100 +17,123 @@
<div layout="column" class="" layout-align="start stretch" ng-if="tab === 'welcome'" ng-show="!load && agent">
<!-- Headline -->
<div layout="column" layout-padding>
<span class="font-size-18"><i class="fa fa-fw fa-tv" aria-hidden="true"></i> {{ agent.name || '-' }} <span class="wz-text-bold wz-text-link" ng-click="goDiscover()" tooltip="Discover"><i class="fa fa-fw fa-compass" aria-hidden="true"></i></span></span>
<div layout="row" layout-padding class="wz-margin-right-8">
<span class="font-size-18"><i class="fa fa-fw fa-tv" aria-hidden="true"></i> {{ agent.name || '-' }} <span
class="wz-text-bold wz-text-link" ng-click="goDiscover()" tooltip="Discover"><i class="fa fa-fw fa-compass"
aria-hidden="true"></i></span></span>
<span flex></span>
<button ng-disabled="restartingAgent" class="btn wz-button" ng-disabled="isRestarting" ng-click="restartAgent(agent)"><i
class="fa fa-refresh"></i>
Restart agent
</button>
</div>
<!-- End headline -->
<div layout="row" layout-padding class="wz-padding-top-0 wz-padding-bottom-0">
<md-card flex class="wz-md-card">
<md-card-content>
<div layout="row">
<span class="font-size-16">Details</span>
</div>
<md-divider class="wz-margin-top-10"></md-divider>
<div layout="row" layout-padding>
<div layout="column" flex>
<div layout="row">
<span class="font-size-16">Details</span>
</div>
<md-divider class="wz-margin-top-10"></md-divider>
<div layout="row" class="wz-padding-top-10">
<span flex="15">Name</span>
<span flex="25">Name</span>
<span class="wz-text-right color-grey">{{ agent.name || '-' }}</span>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="15">IP</span>
<span flex="25">IP</span>
<span class="wz-text-right color-grey">{{ agent.ip || '-'}}</span>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="15">Version</span>
<span flex="25">Version</span>
<span class="wz-text-right color-grey">{{ agent.version || '-'}}</span>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="15">OS</span>
<span flex="25">OS</span>
<span class="wz-text-right wz-text-truncatable color-grey">{{ agentOS || '-'}}</span>
<md-tooltip ng-if="agentOS.length > 25" md-direction="bottom" class="wz-tooltip">
Full OS name: {{ agentOS || '-'}}
</md-tooltip>
</div>
</div>
<div layout="column" flex>
<div layout="row" class="wz-padding-top-10">
<span flex="25">Last keep alive</span>
<span class="wz-text-right color-grey">{{agent.lastKeepAlive || '-' }}</span>
<div layout="row" ng-if="agent.group">
<span class="font-size-16">Groups <i ng-if='adminMode' tooltip="Add group" ng-click="switchGroupEdit()"
class="wz-text-bold wz-text-link fa fa-fw" ng-class="!addingGroupToAgent ? 'fa-plus-circle' : 'fa-minus-circle'"></i></span>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="25">Registration date</span>
<span class="wz-text-right color-grey">{{agent.dateAdd || '-'}}</span>
<md-divider ng-if="agent.group" class="wz-margin-top-10"></md-divider>
<div layout="row" class="wz-margin-top-10" ng-if="agent.group && editGroup && !addingGroupToAgent">
<div class="wz-word-break" flex ng-if="groups && groups.length">
Available groups:
</div>
<div class="wz-word-break" flex ng-if="!groups || !groups.length">
There are no more groups available.
</div>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="25">Last syscheck scan</span>
<span class="wz-text-right color-grey" ng-if="agent.syscheck.inProgress">Scan in progress</span>
<span class="wz-text-right color-grey" ng-if="!agent.syscheck.inProgress">{{agent.syscheck.end || '-'}} <md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end" md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.syscheck.start || '-'}} <br>
End time: {{ agent.syscheck.end || '-'}} <br>
Duration time: {{ agent.syscheck.duration +' minutes' || '-'}}
</md-tooltip></span>
<div ng-if="agent.group && editGroup && !addingGroupToAgent && groups && groups.length" class="wz-margin-top-4">
<span ng-repeat="group in groups" class="wz-text-bold wz-text-link" ng-click="showConfirmAddGroup(group)">{{
group }}&nbsp;</span>
</div>
<div class="wz-margin-top-10 confirmEmbedBubble" ng-if="agent.group && editGroup && addingGroupToAgent">
<div layout="row">
<span class="font-size-12 wz-padding-left-8">Group {{addingGroupToAgent}} will be
added to agent {{agent.id}}</span>
</div>
<div layout="row">
<md-button class="cancelBtn" type="button" ng-click="cancelAddGroup()">Cancel</md-button>
<md-button class="agreeBtn" type="button" ng-click="confirmAddGroup(addingGroupToAgent)"><i
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
</div>
</div>
<div layout="row" layout-padding ng-if="agent.group" class="wz-word-break">
<span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{
group
}}&nbsp;</span>
</div>
<div layout="row" class="wz-padding-top-10">
<span flex="25">Last rootcheck scan</span>
<span class="wz-text-right color-grey" ng-if="agent.rootcheck.inProgress">Scan in progress</span>
<span class="wz-text-right color-grey" ng-if="!agent.rootcheck.inProgress">{{agent.rootcheck.end || '-'}} <md-tooltip ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end" md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.rootcheck.start || '-'}} <br>
End time: {{ agent.rootcheck.end || '-'}} <br>
Duration time: {{ agent.rootcheck.duration +' minutes' || '-'}}
</md-tooltip></span>
</div>
</div>
</div>
<div layout="row" ng-if="agent.group">
<span class="font-size-16">Groups <i ng-if='adminMode' tooltip="Add group" ng-click="switchGroupEdit()" class="wz-text-bold wz-text-link fa fa-fw" ng-class="!addingGroupToAgent ? 'fa-plus-circle' : 'fa-minus-circle'"></i></span>
</div>
<md-divider ng-if="agent.group" class="wz-margin-top-10"></md-divider>
<div layout="row" class="wz-margin-top-10" ng-if="agent.group && editGroup && !addingGroupToAgent">
<div class="wz-word-break" flex ng-if="groups && groups.length">
Available groups:
</div>
<div class="wz-word-break" flex ng-if="!groups || !groups.length">
There are no more groups available.
</div>
</div>
<div ng-if="agent.group && editGroup && !addingGroupToAgent && groups && groups.length" class="wz-margin-top-4">
<span ng-repeat="group in groups" class="wz-text-bold wz-text-link" ng-click="showConfirmAddGroup(group)">{{
group }}&nbsp;</span>
</div>
<div class="wz-margin-top-10 confirmEmbedBubble" ng-if="agent.group && editGroup && addingGroupToAgent">
<div layout="row">
<span class="font-size-12 wz-padding-left-8">Group {{addingGroupToAgent}} will be added to agent {{agent.id}}</span>
</div>
<div layout="row">
<md-button class="cancelBtn" type="button" ng-click="cancelAddGroup()"><i aria-hidden='true' class='fa fa-fw fa-close'></i> Cancel</md-button>
<md-button class="agreeBtn" type="button" ng-click="confirmAddGroup(addingGroupToAgent)"><i aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
</div>
</div>
<div layout="row" layout-padding ng-if="agent.group" class="wz-word-break">
<span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{ group }}&nbsp;</span>
</div>
</md-card-content>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-padding class="wz-padding-top-0 wz-padding-bottom-0">
<md-card flex class="wz-md-card">
<md-card-content layout="row">
<span flex>Last keep alive
<span class="color-grey">{{agent.lastKeepAlive || '-' }}</span>
</span>
<span flex>Registration date
<span class="color-grey">{{agent.dateAdd || '-'}}</span>
</span>
<span flex>Last syscheck scan
<span class="color-grey" ng-if="agent.syscheck.inProgress">Scan in progress</span>
<span class="color-grey" ng-if="!agent.syscheck.inProgress">{{agent.syscheck.end
|| '-'}} <md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end"
md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.syscheck.start || '-'}} <br>
End time: {{ agent.syscheck.end || '-'}} <br>
Duration time: {{ agent.syscheck.duration +' minutes' || '-'}}
</md-tooltip></span>
</span>
<span flex>Last rootcheck scan
<span class="color-grey" ng-if="agent.rootcheck.inProgress">Scan in progress</span>
<span class="color-grey" ng-if="!agent.rootcheck.inProgress">{{agent.rootcheck.end
|| '-'}}
<md-tooltip ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end"
md-direction="bottom" class="wz-tooltip">
Start time: {{ agent.rootcheck.start || '-'}} <br>
End time: {{ agent.rootcheck.end || '-'}} <br>
Duration time: {{ agent.rootcheck.duration +' minutes' || '-'}}
</md-tooltip></span>
</span>
</md-card-content>
</md-card>
</div>
@ -119,26 +144,14 @@
<h3 class="euiTitle wzEuiTitle">Security Information Management</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_dashboard.svg'" title="'Security events'"
switch-tab="switchTab('general')" current-tab="'general'"
description="TabDescription.general.description"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_logging.svg'" title="'Integrity monitoring'"
switch-tab="switchTab('fim')" current-tab="'fim'"
description="TabDescription.fim.description"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_devtools.svg'"
title="'Configuration'" switch-tab="switchTab('configuration')" current-tab="'configuration'"
description="TabDescription.configuration.description"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_index_pattern.svg'"
title="'Inventory data'" switch-tab="switchTab('syscollector')" current-tab="'syscollector'"
description="TabDescription.syscollector.description"
></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_dashboard.svg'" title="'Security events'"
switch-tab="switchTab('general')" current-tab="'general'" description="TabDescription.general.description"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_logging.svg'" title="'Integrity monitoring'"
switch-tab="switchTab('fim')" current-tab="'fim'" description="TabDescription.fim.description"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_devtools.svg'" title="'Configuration'"
switch-tab="switchTab('configuration')" current-tab="'configuration'" description="TabDescription.configuration.description"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_index_pattern.svg'" title="'Inventory data'"
switch-tab="switchTab('syscollector')" current-tab="'syscollector'" description="TabDescription.syscollector.description"></wz-welcome-card>
</div>
</div>
</div>
@ -147,26 +160,14 @@
<h3 class="euiTitle wzEuiTitle">Auditing and Policy Monitoring</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_advanced_settings.svg'"
title="'Policy monitoring'" switch-tab="switchTab('pm')" current-tab="'pm'"
description="TabDescription.pm.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.audit && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_monitoring.svg'"
title="'System auditing'" switch-tab="switchTab('audit')" current-tab="'audit'"
description="TabDescription.audit.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.oscap && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_discover.svg'"
title="'OpenSCAP'" switch-tab="switchTab('oscap')" current-tab="'oscap'"
description="TabDescription.oscap.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.ciscat" class="euiFlexItem" logo="'icons/app_management.svg'"
title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'"
description="TabDescription.ciscat.description"
></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_advanced_settings.svg'" title="'Policy monitoring'"
switch-tab="switchTab('pm')" current-tab="'pm'" description="TabDescription.pm.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.audit && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_monitoring.svg'"
title="'System auditing'" switch-tab="switchTab('audit')" current-tab="'audit'" description="TabDescription.audit.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.oscap && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_discover.svg'"
title="'OpenSCAP'" switch-tab="switchTab('oscap')" current-tab="'oscap'" description="TabDescription.oscap.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.ciscat" class="euiFlexItem" logo="'icons/app_management.svg'"
title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'" description="TabDescription.ciscat.description"></wz-welcome-card>
</div>
</div>
</div>
@ -181,21 +182,13 @@
<h3 class="euiTitle wzEuiTitle">Threat Detection and Response</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_security.svg'"
title="'Vulnerabilities'" switch-tab="switchTab('vuls')" current-tab="'vuls'"
description="TabDescription.vuls.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.virustotal" class="euiFlexItem" logo="'icons/app_saved_objects.svg'"
<wz-welcome-card class="euiFlexItem" logo="'icons/app_security.svg'" title="'Vulnerabilities'"
switch-tab="switchTab('vuls')" current-tab="'vuls'" description="TabDescription.vuls.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.virustotal" class="euiFlexItem" logo="'icons/app_saved_objects.svg'"
title="'VirusTotal'" switch-tab="switchTab('virustotal')" current-tab="'virustotal'"
description="TabDescription.virustotal.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.osquery" class="euiFlexItem" logo="'icons/osquery.svg'"
title="'Osquery'" switch-tab="switchTab('osquery')" current-tab="'osquery'"
description="TabDescription.osquery.description"
></wz-welcome-card>
description="TabDescription.virustotal.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.osquery" class="euiFlexItem" logo="'icons/osquery.svg'"
title="'Osquery'" switch-tab="switchTab('osquery')" current-tab="'osquery'" description="TabDescription.osquery.description"></wz-welcome-card>
</div>
</div>
</div>
@ -205,19 +198,13 @@
<h3 class="euiTitle wzEuiTitle">Regulatory Compliance</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
ng-if="extensions.pci" class="euiFlexItem" logo="'icons/app_apm.svg'"
title="'PCI DSS'" switch-tab="switchTab('pci')" current-tab="'pci'"
description="TabDescription.pci.description"
></wz-welcome-card>
<wz-welcome-card
ng-if="extensions.gdpr" class="euiFlexItem" logo="'icons/app_visualize.svg'"
title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'"
description="TabDescription.gdpr.description"
></wz-welcome-card>
<wz-welcome-card ng-if="extensions.pci" class="euiFlexItem" logo="'icons/app_apm.svg'" title="'PCI DSS'"
switch-tab="switchTab('pci')" current-tab="'pci'" description="TabDescription.pci.description"></wz-welcome-card>
<wz-welcome-card ng-if="extensions.gdpr" class="euiFlexItem" logo="'icons/app_visualize.svg'"
title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'" description="TabDescription.gdpr.description"></wz-welcome-card>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -39,7 +39,8 @@
<span> / </span>
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}} ({{agent.id}})</span>
<span> / </span>
<span class="wz-text-link cursor-pointer" ng-click="switchConfigurationTab('welcome', true)">{{ tabNames[tab] }}</span>
<span class="wz-text-link cursor-pointer" ng-click="switchConfigurationTab('welcome', true)">{{
tabNames[tab] }}</span>
<span> / </span>
<span>{{ tabNames[configurationTab] === 'Alerts' ? 'Labels' : tabNames[configurationTab] }}</span>
</div>
@ -51,7 +52,6 @@
<span class="wz-agent-status-indicator small" ng-class="getAgentStatusClass(agent.status)" aria-label="Agent status indicator">{{formatAgentStatus(agent.status)}}</span>
</div>
<!-- End agent status section -->
<!-- Separator -->
<span flex></span>
<!-- End separator -->
@ -59,7 +59,9 @@
<!-- Reporting button section -->
<div ng-show="tab !== 'welcome' && tab !== 'configuration' && tabView === 'panels'">
<!-- Report button -->
<md-button md-no-ink class="md-icon-button small wz-no-margin-padding" tooltip="Generate report" tooltip-placement="bottom" ng-disabled="(!rendered || loading || resultState !== 'ready' || showSyscheckFiles || showRootcheckScan) && tab !== 'syscollector'" ng-click="startVis2Png()" aria-label="Generate report button">
<md-button md-no-ink class="md-icon-button small wz-no-margin-padding" tooltip="Generate report"
tooltip-placement="bottom" ng-disabled="(!rendered || loading || resultState !== 'ready' || showSyscheckFiles || showRootcheckScan) && tab !== 'syscollector'"
ng-click="startVis2Png()" aria-label="Generate report button">
<i class="fa fa-fw fa-print" aria-hidden="true"></i>
</md-button>
</div>
@ -68,12 +70,14 @@
<!-- Discover/Dashboard buttons section -->
<div ng-show="tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'">
<!-- Dashboard button -->
<md-button ng-if="tabView === 'discover'" class="wz-button-flat small" ng-click="switchSubtab('panels')" aria-label="Dashboard button">
<md-button ng-if="tabView === 'discover'" class="wz-button-flat small" ng-click="switchSubtab('panels')"
aria-label="Dashboard button">
<i class="fa fa-fw fa-th" aria-hidden="true"></i> Dashboard
</md-button>
<!-- Discover button -->
<md-button ng-if="tabView === 'panels'" class="wz-button-flat small" ng-click="switchSubtab('discover')" aria-label="Discover button">
<md-button ng-if="tabView === 'panels'" class="wz-button-flat small" ng-click="switchSubtab('discover')"
aria-label="Discover button">
<i class="fa fa-fw fa-compass" aria-hidden="true"></i> Discover
</md-button>
</div>
@ -81,24 +85,18 @@
<!-- Agent autocomplete selector section -->
<div flex="30" class="wz-margin-8-no-left">
<md-autocomplete flex class="wz-autocomplete wz-select-input"
md-no-cache="true"
md-select-on-match="false"
md-selected-item="_swpagent"
md-selected-item-change="getAgent(_swpagent.id,true)"
md-search-text="searchTerm"
md-items="agentAutoComplete in analyzeAgents(searchTerm)"
md-item-text="agentAutoComplete.name"
md-min-length="0"
md-clear-button="true"
md-no-asterisk="false"
placeholder="Search by name, ID or IP address">
<md-autocomplete flex class="wz-autocomplete wz-select-input" md-no-cache="true" md-select-on-match="false"
md-selected-item="_swpagent" md-selected-item-change="getAgent(_swpagent.id,true)" md-search-text="searchTerm"
md-items="agentAutoComplete in analyzeAgents(searchTerm)" md-item-text="agentAutoComplete.name"
md-min-length="0" md-clear-button="true" md-no-asterisk="false" placeholder="Search by name, ID or IP address">
<md-item-template>
<span class="item-title">
<span><strong md-highlight-text="search" md-highlight-flags="i"> {{agentAutoComplete.name}} ({{agentAutoComplete.id}}) </strong></span>
<span><strong md-highlight-text="search" md-highlight-flags="i"> {{agentAutoComplete.name}}
({{agentAutoComplete.id}}) </strong></span>
</span>
<span class="item-metadata">
<span class="item-metastat" md-highlight-text="searchTerm" md-highlight-flags="i"> {{agentAutoComplete.ip}} ({{agentAutoComplete.status}}) </span>
<span class="item-metastat" md-highlight-text="searchTerm" md-highlight-flags="i">
{{agentAutoComplete.ip}} ({{agentAutoComplete.status}}) </span>
</span>
</md-item-template>
<md-not-found>
@ -107,65 +105,50 @@
</md-autocomplete>
</div>
<!-- End agent autocomplete selector section -->
<!-- Help button -->
<md-button md-no-ink class="md-icon-button small" tooltip="About and help" tooltip-placement="left" ng-href="#/settings/about" aria-label="Link to open app about section">
<i class="fa fa-fw fa-question-circle-o" aria-hidden="true"></i>
</md-button>
<!-- End help button -->
</div>
<!-- End navigation section -->
<!-- Host monitoring navigation bar -->
<md-nav-bar
ng-if="inArray(tab, hostMonitoringTabs)"
class="wz-nav-bar"
ng-show="tab !== 'welcome'"
md-selected-nav-item="tab"
nav-bar-aria-label="Host monitoring navigation links">
<md-nav-bar ng-if="inArray(tab, hostMonitoringTabs)" class="wz-nav-bar" ng-show="tab !== 'welcome'"
md-selected-nav-item="tab" nav-bar-aria-label="Host monitoring navigation links">
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('general')" name="general">{{ tabNames['general'] }}</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('fim')" name="fim">{{ tabNames['fim'] }}</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('syscollector')" name="syscollector">{{ tabNames['syscollector'] }}</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('syscollector')" name="syscollector">{{
tabNames['syscollector'] }}</md-nav-item>
</md-nav-bar>
<!-- End Host monitoring navigation bar -->
<!-- System audit navigation bar -->
<md-nav-bar
ng-if="inArray(tab, systemAuditTabs) && (extensions.audit || extensions.oscap || extensions.ciscat)"
class="wz-nav-bar"
ng-show="tab !== 'welcome'"
md-selected-nav-item="tab"
nav-bar-aria-label="System audit navigation links">
<md-nav-bar ng-if="inArray(tab, systemAuditTabs) && (extensions.audit || extensions.oscap || extensions.ciscat)"
class="wz-nav-bar" ng-show="tab !== 'welcome'" md-selected-nav-item="tab" nav-bar-aria-label="System audit navigation links">
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('pm')" name="pm">{{ tabNames['pm'] }}</md-nav-item>
<md-nav-item ng-show="extensions.audit" class="wz-nav-item" md-nav-click="switchTab('audit')" name="audit">{{ tabNames['audit'] }}</md-nav-item>
<md-nav-item ng-show="extensions.oscap" class="wz-nav-item" md-nav-click="switchTab('oscap')" name="oscap">{{ tabNames['oscap'] }}</md-nav-item>
<md-nav-item ng-show="extensions.ciscat" class="wz-nav-item" md-nav-click="switchTab('ciscat')" name="ciscat">{{ tabNames['ciscat'] }}</md-nav-item>
</md-nav-bar>
<md-nav-item ng-show="extensions.audit" class="wz-nav-item" md-nav-click="switchTab('audit')" name="audit">{{
tabNames['audit'] }}</md-nav-item>
<md-nav-item ng-show="extensions.oscap" class="wz-nav-item" md-nav-click="switchTab('oscap')" name="oscap">{{
tabNames['oscap'] }}</md-nav-item>
<md-nav-item ng-show="extensions.ciscat" class="wz-nav-item" md-nav-click="switchTab('ciscat')" name="ciscat">{{
tabNames['ciscat'] }}</md-nav-item>
</md-nav-bar>
<!-- End System audit navigation bar -->
<!-- Security navigation bar -->
<md-nav-bar
ng-if="inArray(tab, securityTabs) && (extensions.virustotal || extensions.osquery)"
class="wz-nav-bar"
ng-show="tab !== 'welcome'"
md-selected-nav-item="tab"
nav-bar-aria-label="Security navigation links">
<md-nav-bar ng-if="inArray(tab, securityTabs) && (extensions.virustotal || extensions.osquery)" class="wz-nav-bar"
ng-show="tab !== 'welcome'" md-selected-nav-item="tab" nav-bar-aria-label="Security navigation links">
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('vuls')" name="vuls">{{ tabNames['vuls'] }}</md-nav-item>
<md-nav-item ng-show="extensions.virustotal" class="wz-nav-item" md-nav-click="switchTab('virustotal')" name="virustotal">{{ tabNames['virustotal'] }}</md-nav-item>
<md-nav-item ng-show="extensions.osquery" class="wz-nav-item" md-nav-click="switchTab('osquery')" name="osquery">{{ tabNames['osquery'] }}</md-nav-item>
<md-nav-item ng-show="extensions.virustotal" class="wz-nav-item" md-nav-click="switchTab('virustotal')" name="virustotal">{{
tabNames['virustotal'] }}</md-nav-item>
<md-nav-item ng-show="extensions.osquery" class="wz-nav-item" md-nav-click="switchTab('osquery')" name="osquery">{{
tabNames['osquery'] }}</md-nav-item>
</md-nav-bar>
<!-- End Security navigation bar -->
<!-- Compliance navigation bar -->
<md-nav-bar
ng-if="inArray(tab, complianceTabs) && extensions.pci && extensions.gdpr"
class="wz-nav-bar"
ng-show="tab !== 'welcome'"
md-selected-nav-item="tab"
nav-bar-aria-label="Compliance navigation links">
<md-nav-item ng-show="extensions.pci" class="wz-nav-item" md-nav-click="switchTab('pci')" name="pci">{{ tabNames['pci'] }}</md-nav-item>
<md-nav-item ng-show="extensions.gdpr" class="wz-nav-item" md-nav-click="switchTab('gdpr')" name="gdpr">{{ tabNames['gdpr'] }}</md-nav-item>
<md-nav-bar ng-if="inArray(tab, complianceTabs) && extensions.pci && extensions.gdpr" class="wz-nav-bar" ng-show="tab !== 'welcome'"
md-selected-nav-item="tab" nav-bar-aria-label="Compliance navigation links">
<md-nav-item ng-show="extensions.pci" class="wz-nav-item" md-nav-click="switchTab('pci')" name="pci">{{
tabNames['pci'] }}</md-nav-item>
<md-nav-item ng-show="extensions.gdpr" class="wz-nav-item" md-nav-click="switchTab('gdpr')" name="gdpr">{{
tabNames['gdpr'] }}</md-nav-item>
</md-nav-bar>
<!-- End Compliance navigation bar -->
@ -174,36 +157,59 @@
<!-- End Discover search bar section -->
<!-- Loading status section -->
<div layout="column" layout-align="center center" ng-if="tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'" ng-show="resultState === 'ready' && tabView === 'panels' && !rendered">
<div layout="column" layout-align="center center" ng-if="tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
ng-show="resultState === 'ready' && tabView === 'panels' && !rendered">
<div class="percentage"><i class="fa fa-fw fa-spin fa-spinner" aria-hidden="true"></i></div>
<div class="percentage">{{loadingStatus}}</div>
</div>
<!-- End loading status section -->
<!-- Report status section -->
<div layout="column" layout-align="center center" class="wz-margin-top-8" ng-if="(tab !== 'welcome') && (tab !== 'configuration')" ng-show="reportBusy && reportStatus">
<div layout="column" layout-align="center center" class="wz-margin-top-8" ng-if="(tab !== 'welcome') && (tab !== 'configuration')"
ng-show="reportBusy && reportStatus">
<div class="percentage"><i class="fa fa-fw fa-spin fa-spinner" aria-hidden="true"></i></div>
<div class="percentage">{{reportStatus}}</div>
</div>
<!-- End report status section -->
<!-- No results section -->
<div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'fim' && resultState === 'none' && tabView === 'panels'" layout-padding class="wz-padding-top-0">
<<<<<<< HEAD <div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'fim' && resultState === 'none' && tabView === 'panels'"
layout-padding class="wz-padding-top-0">
<span flex></span>
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
scan</span>
<span></span>
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
</div>
<div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'pm' && resultState === 'none' && tabView === 'panels'" layout-padding class="wz-padding-top-0">
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
Show state</span>
</div>
<div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'pm' && resultState === 'none' && tabView === 'panels'"
layout-padding class="wz-padding-top-0">
<span flex></span>
<span ng-click="launchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
<span></span>
<span ng-click="switchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show
state</span>
</div>
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && !showRootcheckScan && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
ng-show="resultState === 'none' && tabView === 'panels'">
=======
<div layout="row" ng-if="!showSyscheckFiles && tab === 'fim' && resultState === 'none' && tabView === 'panels'"
layout-padding class="wz-padding-top-0">
<span flex></span>
<span ng-click="launchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
<span></span>
<span ng-click="switchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
</div>
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && !showRootcheckScan && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'" ng-show="resultState === 'none' && tabView === 'panels'">
<span ng-click="switchSyscheckFiles()" class="btn pull-right wz-button">Show files</span>
</div>
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
ng-show="resultState === 'none' && tabView === 'panels'">
>>>>>>> 3.9-6.6
<div flex class="euiCallOut euiCallOut--warning">
<div class="euiCallOutHeader">
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"><defs><path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z"></path></defs><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use></svg>
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
<defs>
<path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z"></path>
</defs>
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
</svg>
<span class="euiCallOutHeader__title">There are no results for selected time range. Try another one.</span>
</div>
</div>
@ -213,4 +219,4 @@
<!-- Loading ring -->
<div class='uil-ring-css' ng-show="load && tab !== 'configuration' && tabView === 'panels'">
<div></div>
</div>
</div>

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'active-response'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['analysis-active_response']"
ng-if="currentConfig['analysis-active_response'] && isString(currentConfig['analysis-active_response'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['analysis-active_response'] && !isString(currentConfig['analysis-active_response']) && currentConfig['analysis-active_response']['active-response'] && !currentConfig['analysis-active_response']['active-response'].length"></wz-no-config>
<wz-no-config flex error="currentConfig['analysis-active_response']" ng-if="currentConfig['analysis-active_response'] && isString(currentConfig['analysis-active_response'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['analysis-active_response'] && !isString(currentConfig['analysis-active_response']) && currentConfig['analysis-active_response']['active-response'] && !currentConfig['analysis-active_response']['active-response'].length"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -39,7 +33,8 @@
<div flex="30" layout="column">
<md-list flex="auto" class="wz-item-list">
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['analysis-active_response']['active-response']">{{ item.command }}</md-list-item>
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['analysis-active_response']['active-response']">{{
item.command }}</md-list-item>
</md-list>
</div>
@ -49,37 +44,21 @@
<div flex layout="column">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Status of this active response"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].disabled === 'yes' ? 'disabled' : 'enabled'">
<wz-config-item label="Status of this active response" value="currentConfig['analysis-active_response']['active-response'][selectedItem].disabled === 'yes' ? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Command to execute"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].command">
<wz-config-item label="Command to execute" value="currentConfig['analysis-active_response']['active-response'][selectedItem].command">
</wz-config-item>
<wz-config-item
label="Execute the command on this location"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].location">
<wz-config-item label="Execute the command on this location" value="currentConfig['analysis-active_response']['active-response'][selectedItem].location">
</wz-config-item>
<wz-config-item
label="Agent ID on which execute the command"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].agent_id">
<wz-config-item label="Agent ID on which execute the command" value="currentConfig['analysis-active_response']['active-response'][selectedItem].agent_id">
</wz-config-item>
<wz-config-item
label="Match to this severity level or above"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].level">
<wz-config-item label="Match to this severity level or above" value="currentConfig['analysis-active_response']['active-response'][selectedItem].level">
</wz-config-item>
<wz-config-item
label="Match to one of these groups"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].rules_group">
<wz-config-item label="Match to one of these groups" value="currentConfig['analysis-active_response']['active-response'][selectedItem].rules_group">
</wz-config-item>
<wz-config-item
label="Match to one of these rule IDs"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].rules_id">
<wz-config-item label="Match to one of these rule IDs" value="currentConfig['analysis-active_response']['active-response'][selectedItem].rules_id">
</wz-config-item>
<wz-config-item
label="Timeout (in seconds) before reverting"
value="currentConfig['analysis-active_response']['active-response'][selectedItem].timeout">
<wz-config-item label="Timeout (in seconds) before reverting" value="currentConfig['analysis-active_response']['active-response'][selectedItem].timeout">
</wz-config-item>
</div>
@ -98,16 +77,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/active-response.html">Active response reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active
response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/active-response.html">Active
response reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'active-response'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['com-active-response']"
ng-if="currentConfig['com-active-response'] && isString(currentConfig['com-active-response'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['com-active-response'] && !isString(currentConfig['com-active-response']) && !currentConfig['com-active-response']['active-response']"></wz-no-config>
<wz-no-config flex error="currentConfig['com-active-response']" ng-if="currentConfig['com-active-response'] && isString(currentConfig['com-active-response'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['com-active-response'] && !isString(currentConfig['com-active-response']) && !currentConfig['com-active-response']['active-response']"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -35,22 +29,13 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Active response status"
value="currentConfig['com-active-response']['active-response'] === 'yes' ? 'disabled' : 'enabled'">
<wz-config-item label="Active response status" value="currentConfig['com-active-response']['active-response'] === 'yes' ? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="List of timeouts (in minutes) for repeated offenders"
value="currentConfig['com-active-response']['active-response'].repeated_offenders">
<wz-config-item label="List of timeouts (in minutes) for repeated offenders" value="currentConfig['com-active-response']['active-response'].repeated_offenders">
</wz-config-item>
<wz-config-item
is-array="true"
label="Use the following list of root CA certificates"
value="currentConfig['com-active-response']['active-response'].ca_store">
<wz-config-item is-array="true" label="Use the following list of root CA certificates" value="currentConfig['com-active-response']['active-response'].ca_store">
</wz-config-item>
<wz-config-item
label="Validate WPKs using root CA certificate"
value="currentConfig['com-active-response']['active-response'].ca_verification">
<wz-config-item label="Validate WPKs using root CA certificate" value="currentConfig['com-active-response']['active-response'].ca_verification">
</wz-config-item>
</div>
@ -66,16 +51,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/active-response.html">Active response reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active
response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/active-response.html">Active
response reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'commands'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['analysis-command']"
ng-if="currentConfig['analysis-command'] && isString(currentConfig['analysis-command'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['analysis-command'] && !isString(currentConfig['analysis-command']) && currentConfig['analysis-command'].command && !currentConfig['analysis-command'].command.length"></wz-no-config>
<wz-no-config flex error="currentConfig['analysis-command']" ng-if="currentConfig['analysis-command'] && isString(currentConfig['analysis-command'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['analysis-command'] && !isString(currentConfig['analysis-command']) && currentConfig['analysis-command'].command && !currentConfig['analysis-command'].command.length"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -22,7 +16,8 @@
<div>
<span class="font-size-16">Command definitions</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">Find here all the currently defined commands used for Active response</span>
<span class="md-subheader small">Find here all the currently defined commands used for
Active response</span>
</div>
</div>
<span flex></span>
@ -49,25 +44,15 @@
<div flex layout="column" ng-if="currentConfig['analysis-command'].command.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Command name"
value="currentConfig['analysis-command'].command[selectedItem].name">
<wz-config-item label="Command name" value="currentConfig['analysis-command'].command[selectedItem].name">
</wz-config-item>
<wz-config-item
label="Name of executable file"
value="currentConfig['analysis-command'].command[selectedItem].executable">
<wz-config-item label="Name of executable file" value="currentConfig['analysis-command'].command[selectedItem].executable">
</wz-config-item>
<wz-config-item
label="List of expected fields"
value="currentConfig['analysis-command'].command[selectedItem].expect">
<wz-config-item label="List of expected fields" value="currentConfig['analysis-command'].command[selectedItem].expect">
</wz-config-item>
<wz-config-item
label="Extra arguments"
value="currentConfig['analysis-command'].command[selectedItem].extra_args">
<wz-config-item label="Extra arguments" value="currentConfig['analysis-command'].command[selectedItem].extra_args">
</wz-config-item>
<wz-config-item
label="Allow this command to be reverted"
value="currentConfig['analysis-command'].command[selectedItem].timeout_allowed ? 'yes' : 'no'">
<wz-config-item label="Allow this command to be reverted" value="currentConfig['analysis-command'].command[selectedItem].timeout_allowed ? 'yes' : 'no'">
</wz-config-item>
</div>
@ -85,16 +70,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/commands.html">Commands reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/active-response/index.html">Active
response documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/commands.html">Commands
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -18,10 +18,7 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['agentless-agentless']"
ng-if="currentConfig['agentless-agentless'] && isString(currentConfig['agentless-agentless'])"></wz-no-config>
<wz-no-config flex error="currentConfig['agentless-agentless']" ng-if="currentConfig['agentless-agentless'] && isString(currentConfig['agentless-agentless'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -51,7 +48,8 @@
<div flex="30" layout="column">
<md-list flex="auto" class="wz-item-list">
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['agentless-agentless'].agentless">{{ item.type }} ({{ item.state }})</md-list-item>
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['agentless-agentless'].agentless">{{
item.type }} ({{ item.state }})</md-list-item>
</md-list>
</div>
@ -61,26 +59,15 @@
<div flex layout="column" ng-if="currentConfig['agentless-agentless'].agentless.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Agentless monitoring type"
value="currentConfig['agentless-agentless'].agentless[selectedItem].type">
<wz-config-item label="Agentless monitoring type" value="currentConfig['agentless-agentless'].agentless[selectedItem].type">
</wz-config-item>
<wz-config-item
label="Interval (in seconds) between checks"
value="currentConfig['agentless-agentless'].agentless[selectedItem].frequency">
<wz-config-item label="Interval (in seconds) between checks" value="currentConfig['agentless-agentless'].agentless[selectedItem].frequency">
</wz-config-item>
<wz-config-item
is-array="true"
label="Device username and hostname"
value="currentConfig['agentless-agentless'].agentless[selectedItem].host">
<wz-config-item is-array="true" label="Device username and hostname" value="currentConfig['agentless-agentless'].agentless[selectedItem].host">
</wz-config-item>
<wz-config-item
label="Device check type"
value="currentConfig['agentless-agentless'].agentless[selectedItem].state">
<wz-config-item label="Device check type" value="currentConfig['agentless-agentless'].agentless[selectedItem].state">
</wz-config-item>
<wz-config-item
label="Pass these arguments to check"
value="currentConfig['agentless-agentless'].agentless[selectedItem].arguments">
<wz-config-item label="Pass these arguments to check" value="currentConfig['agentless-agentless'].agentless[selectedItem].arguments">
</wz-config-item>
</div>
@ -98,13 +85,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/agentless-monitoring/index.html">How to monitor agentless devices</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/agentless.html">Agentless reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/agentless-monitoring/index.html">How
to monitor agentless devices</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/agentless.html">Agentless
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -112,4 +101,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'email-alerts'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['mail-alerts']"
ng-if="currentConfig['mail-alerts'] && isString(currentConfig['mail-alerts'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['mail-alerts'] && !isString(currentConfig['mail-alerts']) && (!currentConfig['mail-alerts'].email_alerts || !currentConfig['mail-alerts'].email_alerts.length)"></wz-no-config>
<wz-no-config flex error="currentConfig['mail-alerts']" ng-if="currentConfig['mail-alerts'] && isString(currentConfig['mail-alerts'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['mail-alerts'] && !isString(currentConfig['mail-alerts']) && (!currentConfig['mail-alerts'].email_alerts || !currentConfig['mail-alerts'].email_alerts.length)"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -48,37 +42,21 @@
<div flex layout="column" ng-if="currentConfig['mail-alerts'].email_alerts.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Send alerts to this email address"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].email_to">
<wz-config-item label="Send alerts to this email address" value="currentConfig['mail-alerts'].email_alerts[selectedItem].email_to">
</wz-config-item>
<wz-config-item
label="Minimum severity level to send the alert by email"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].level">
<wz-config-item label="Minimum severity level to send the alert by email" value="currentConfig['mail-alerts'].email_alerts[selectedItem].level">
</wz-config-item>
<wz-config-item
label="Send only alerts that belong to one of these groups"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].group">
<wz-config-item label="Send only alerts that belong to one of these groups" value="currentConfig['mail-alerts'].email_alerts[selectedItem].group">
</wz-config-item>
<wz-config-item
label="Send alerts when they match this event location"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].event_location">
<wz-config-item label="Send alerts when they match this event location" value="currentConfig['mail-alerts'].email_alerts[selectedItem].event_location">
</wz-config-item>
<wz-config-item
label="Format for email alerts"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].format">
<wz-config-item label="Format for email alerts" value="currentConfig['mail-alerts'].email_alerts[selectedItem].format">
</wz-config-item>
<wz-config-item
label="Send only alerts that belong to one of these rule IDs"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].rule_id">
<wz-config-item label="Send only alerts that belong to one of these rule IDs" value="currentConfig['mail-alerts'].email_alerts[selectedItem].rule_id">
</wz-config-item>
<wz-config-item
label="Disable delayed email delivery"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].do_not_delay">
<wz-config-item label="Disable delayed email delivery" value="currentConfig['mail-alerts'].email_alerts[selectedItem].do_not_delay">
</wz-config-item>
<wz-config-item
label="Disable alerts grouping into the same email"
value="currentConfig['mail-alerts'].email_alerts[selectedItem].do_not_group">
<wz-config-item label="Disable alerts grouping into the same email" value="currentConfig['mail-alerts'].email_alerts[selectedItem].do_not_group">
</wz-config-item>
</div>
@ -96,17 +74,20 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-email-report/index.html">How to configure email alerts</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-email-report/smtp_authentication.html">How to configure authenticated SMTP server</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/email_alerts.html">Email alerts reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-email-report/index.html">How
to configure email alerts</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-email-report/smtp_authentication.html">How
to configure authenticated SMTP server</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/email_alerts.html">Email
alerts reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'general-alerts'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['analysis-alerts']"
ng-if="currentConfig['analysis-alerts'] && isString(currentConfig['analysis-alerts'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['analysis-alerts'] && !isString(currentConfig['analysis-alerts']) && !currentConfig['analysis-alerts'].alerts"></wz-no-config>
<wz-no-config flex error="currentConfig['analysis-alerts']" ng-if="currentConfig['analysis-alerts'] && isString(currentConfig['analysis-alerts'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['analysis-alerts'] && !isString(currentConfig['analysis-alerts']) && !currentConfig['analysis-alerts'].alerts"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -35,17 +29,11 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Minimum severity level to store the alert"
value="currentConfig['analysis-alerts'].alerts.log_alert_level">
<wz-config-item label="Minimum severity level to store the alert" value="currentConfig['analysis-alerts'].alerts.log_alert_level">
</wz-config-item>
<wz-config-item
label="Minimum severity level to send the alert by email"
value="currentConfig['analysis-alerts'].alerts.email_alert_level">
<wz-config-item label="Minimum severity level to send the alert by email" value="currentConfig['analysis-alerts'].alerts.email_alert_level">
</wz-config-item>
<wz-config-item
label="Enable GeoIP lookups"
value="currentConfig['analysis-alerts'].use_geoip || 'no'">
<wz-config-item label="Enable GeoIP lookups" value="currentConfig['analysis-alerts'].use_geoip || 'no'">
</wz-config-item>
</div>
@ -60,16 +48,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/getting-started/use-cases.html">Use cases about alerts generation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/alerts.html">Alerts reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/getting-started/use-cases.html">Use
cases about alerts generation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/alerts.html">Alerts
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'labels'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels']"
ng-if="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'] && isString(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'] && !isString(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels']) && !hasSize(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'].labels)"></wz-no-config>
<wz-no-config flex error="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels']" ng-if="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'] && isString(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'] && !isString(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels']) && !hasSize(currentConfig[(agent && agent.id !== '000') ? 'agent-labels' : 'analysis-labels'].labels)"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -57,16 +51,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/labels.html">Labels documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/labels.html">Labels reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/labels.html">Labels
documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/labels.html">Labels
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'reports'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['monitor-reports']"
ng-if="currentConfig['monitor-reports'] && isString(currentConfig['monitor-reports'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['monitor-reports'] && !isString(currentConfig['monitor-reports']) && (!currentConfig['monitor-reports'].reports || !currentConfig['monitor-reports'].reports.length)"></wz-no-config>
<wz-no-config flex error="currentConfig['monitor-reports']" ng-if="currentConfig['monitor-reports'] && isString(currentConfig['monitor-reports'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['monitor-reports'] && !isString(currentConfig['monitor-reports']) && (!currentConfig['monitor-reports'].reports || !currentConfig['monitor-reports'].reports.length)"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -39,7 +33,8 @@
<div flex="30" layout="column">
<md-list flex="auto" class="wz-item-list">
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['monitor-reports'].reports">{{ item.title }}</md-list-item>
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['monitor-reports'].reports">{{
item.title }}</md-list-item>
</md-list>
</div>
@ -49,46 +44,25 @@
<div flex layout="column" ng-if="currentConfig['monitor-reports'].reports.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Report name"
value="currentConfig['monitor-reports'].reports[selectedItem].title">
<wz-config-item label="Report name" value="currentConfig['monitor-reports'].reports[selectedItem].title">
</wz-config-item>
<wz-config-item
is-array="true"
label="Send report to this email addresses"
value="currentConfig['monitor-reports'].reports[selectedItem].mail_to">
<wz-config-item is-array="true" label="Send report to this email addresses" value="currentConfig['monitor-reports'].reports[selectedItem].mail_to">
</wz-config-item>
<wz-config-item
label="Include logs when creating a report"
value="currentConfig['monitor-reports'].reports[selectedItem].showlogs">
<wz-config-item label="Include logs when creating a report" value="currentConfig['monitor-reports'].reports[selectedItem].showlogs">
</wz-config-item>
<wz-config-item
label="Filter by this group"
value="currentConfig['monitor-reports'].reports[selectedItem].group">
<wz-config-item label="Filter by this group" value="currentConfig['monitor-reports'].reports[selectedItem].group">
</wz-config-item>
<wz-config-item
label="Filter by this category"
value="currentConfig['monitor-reports'].reports[selectedItem].category">
<wz-config-item label="Filter by this category" value="currentConfig['monitor-reports'].reports[selectedItem].category">
</wz-config-item>
<wz-config-item
label="Filter by this rule ID"
value="currentConfig['monitor-reports'].reports[selectedItem].rule">
<wz-config-item label="Filter by this rule ID" value="currentConfig['monitor-reports'].reports[selectedItem].rule">
</wz-config-item>
<wz-config-item
label="Filter by this alert level and above"
value="currentConfig['monitor-reports'].reports[selectedItem].level">
<wz-config-item label="Filter by this alert level and above" value="currentConfig['monitor-reports'].reports[selectedItem].level">
</wz-config-item>
<wz-config-item
label="Filter by this log location"
value="currentConfig['monitor-reports'].reports[selectedItem].location">
<wz-config-item label="Filter by this log location" value="currentConfig['monitor-reports'].reports[selectedItem].location">
</wz-config-item>
<wz-config-item
label="Filter by this source IP address"
value="currentConfig['monitor-reports'].reports[selectedItem].srcip">
<wz-config-item label="Filter by this source IP address" value="currentConfig['monitor-reports'].reports[selectedItem].srcip">
</wz-config-item>
<wz-config-item
label="Filter by this user name"
value="currentConfig['monitor-reports'].reports[selectedItem].user">
<wz-config-item label="Filter by this user name" value="currentConfig['monitor-reports'].reports[selectedItem].user">
</wz-config-item>
</div>
@ -107,16 +81,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/automatic-reports.html">How to generate automatic reports</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/reports.html">Reports reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/automatic-reports.html">How
to generate automatic reports</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/reports.html">Reports
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'syslog'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['csyslog-csyslog']"
ng-if="currentConfig['csyslog-csyslog'] && isString(currentConfig['csyslog-csyslog'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['csyslog-csyslog'] && !isString(currentConfig['csyslog-csyslog']) && (!currentConfig['csyslog-csyslog'].syslog_output || !currentConfig['csyslog-csyslog'].syslog_output.length)"></wz-no-config>
<wz-no-config flex error="currentConfig['csyslog-csyslog']" ng-if="currentConfig['csyslog-csyslog'] && isString(currentConfig['csyslog-csyslog'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['csyslog-csyslog'] && !isString(currentConfig['csyslog-csyslog']) && (!currentConfig['csyslog-csyslog'].syslog_output || !currentConfig['csyslog-csyslog'].syslog_output.length)"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -72,16 +66,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-syslog-output.html">How to configure the syslog output</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/syslog-output.html">Syslog output reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-syslog-output.html">How
to configure the syslog output</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/syslog-output.html">Syslog
output reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/amazon/index.html">Using Wazuh to monitor AWS</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-s3.html">Amazon S3 module reference</md-list-item>

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/policy-monitoring/ciscat/ciscat.html">CIS-CAT module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-ciscat.html">CIS-CAT module reference</md-list-item>

View File

@ -4,8 +4,10 @@
<div layout="column" layout-padding>
<div>
<span class="font-size-18">Anti-flooding settings</span>
<span ng-if="(currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && currentConfig['agent-buffer'].buffer.disabled === 'no') || (currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && !currentConfig['agent-buffer'].buffer.disabled)" class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && currentConfig['agent-buffer'].buffer.disabled === 'yes'" class="wz-agent-status-indicator small red">Disabled</span>
<span ng-if="(currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && currentConfig['agent-buffer'].buffer.disabled === 'no') || (currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && !currentConfig['agent-buffer'].buffer.disabled)"
class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="currentConfig['agent-buffer'] && currentConfig['agent-buffer'].buffer && currentConfig['agent-buffer'].buffer.disabled === 'yes'"
class="wz-agent-status-indicator small red">Disabled</span>
</div>
<span class="md-subheader">Agent bucket parameters to avoid event flooding</span>
</div>
@ -20,14 +22,8 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['agent-buffer']"
ng-if="currentConfig['agent-buffer'] && isString(currentConfig['agent-buffer'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['agent-buffer'] && !isString(currentConfig['agent-buffer']) && !currentConfig['agent-buffer'].buffer"></wz-no-config>
<wz-no-config flex error="currentConfig['agent-buffer']" ng-if="currentConfig['agent-buffer'] && isString(currentConfig['agent-buffer'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['agent-buffer'] && !isString(currentConfig['agent-buffer']) && !currentConfig['agent-buffer'].buffer"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -40,7 +36,8 @@
<div>
<span class="font-size-16">Main settings</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">These settings determine the event processing rate for the agent</span>
<span class="md-subheader small">These settings determine the event processing rate for
the agent</span>
</div>
</div>
<span flex></span>
@ -53,17 +50,11 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Buffer status"
value="currentConfig['agent-buffer'].buffer.disabled === 'yes'? 'disabled' : 'enabled'">
<wz-config-item label="Buffer status" value="currentConfig['agent-buffer'].buffer.disabled === 'yes'? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Queue size"
value="currentConfig['agent-buffer'].buffer.queue_size || '5000'">
<wz-config-item label="Queue size" value="currentConfig['agent-buffer'].buffer.queue_size || '5000'">
</wz-config-item>
<wz-config-item
label="Events per second"
value="currentConfig['agent-buffer'].buffer.events_per_second || '500'">
<wz-config-item label="Events per second" value="currentConfig['agent-buffer'].buffer.events_per_second || '500'">
</wz-config-item>
</div>
@ -78,13 +69,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/antiflooding.html">Anti-flooding mechanism</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/agent_buffer.html">Client buffer reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/antiflooding.html">Anti-flooding
mechanism</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/agent_buffer.html">Client
buffer reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -92,4 +85,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -18,10 +18,7 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['agent-client']"
ng-if="currentConfig['agent-client'] && isString(currentConfig['agent-client'])"></wz-no-config>
<wz-no-config flex error="currentConfig['agent-client']" ng-if="currentConfig['agent-client'] && isString(currentConfig['agent-client'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -47,29 +44,18 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Method used to encrypt communications"
value="currentConfig['agent-client'].client.crypto_method || 'aes'">
<wz-config-item label="Method used to encrypt communications" value="currentConfig['agent-client'].client.crypto_method || 'aes'">
</wz-config-item>
<wz-config-item
label="Auto-restart the agent when receiving valid configuration from manager"
<wz-config-item label="Auto-restart the agent when receiving valid configuration from manager"
value="currentConfig['agent-client'].client.auto_restart || 'yes'">
</wz-config-item>
<wz-config-item
label="Time (in seconds) between agent checkings to the manager"
value="currentConfig['agent-client'].client.notify_time || '60'">
<wz-config-item label="Time (in seconds) between agent checkings to the manager" value="currentConfig['agent-client'].client.notify_time || '60'">
</wz-config-item>
<wz-config-item
label="Time (in seconds) before attempting to reconnect"
value="currentConfig['agent-client'].client['time-reconnect'] || '300'">
<wz-config-item label="Time (in seconds) before attempting to reconnect" value="currentConfig['agent-client'].client['time-reconnect'] || '300'">
</wz-config-item>
<wz-config-item
label="Configuration profiles"
value="currentConfig['agent-client'].client['config-profile'] || '-'">
<wz-config-item label="Configuration profiles" value="currentConfig['agent-client'].client['config-profile'] || '-'">
</wz-config-item>
<wz-config-item
ng-if="currentConfig['agent-client'].client.local_ip"
label="IP address used when the agent has multiple network interfaces"
<wz-config-item ng-if="currentConfig['agent-client'].client.local_ip" label="IP address used when the agent has multiple network interfaces"
value="currentConfig['agent-client'].client.local_ip">
</wz-config-item>
@ -114,13 +100,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/agents/agent-connection.html">Checking connection with manager</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/client.html">Client reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/agents/agent-connection.html">Checking
connection with manager</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/client.html">Client
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -128,4 +116,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -19,10 +19,7 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['com-cluster']"
ng-if="currentConfig['com-cluster'] && isString(currentConfig['com-cluster'])"></wz-no-config>
<wz-no-config flex error="currentConfig['com-cluster']" ng-if="currentConfig['com-cluster'] && isString(currentConfig['com-cluster'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -45,38 +42,21 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Cluster status"
value="currentConfig['com-cluster'].disabled === 'yes'? 'disabled' : 'enabled'">
<wz-config-item label="Cluster status" value="currentConfig['com-cluster'].disabled === 'yes'? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Cluster name"
value="currentConfig['com-cluster'].name">
<wz-config-item label="Cluster name" value="currentConfig['com-cluster'].name">
</wz-config-item>
<wz-config-item
label="Node name"
value="currentConfig['com-cluster'].node_name">
<wz-config-item label="Node name" value="currentConfig['com-cluster'].node_name">
</wz-config-item>
<wz-config-item
label="Node type"
value="currentConfig['com-cluster'].node_type">
<wz-config-item label="Node type" value="currentConfig['com-cluster'].node_type">
</wz-config-item>
<wz-config-item
is-array="true"
label="Master node IP address"
value="currentConfig['com-cluster'].nodes">
<wz-config-item is-array="true" label="Master node IP address" value="currentConfig['com-cluster'].nodes">
</wz-config-item>
<wz-config-item
label="Port to listen to cluster communications"
value="currentConfig['com-cluster'].port">
<wz-config-item label="Port to listen to cluster communications" value="currentConfig['com-cluster'].port">
</wz-config-item>
<wz-config-item
label="IP address to listen to cluster communications"
value="currentConfig['com-cluster'].bind_addr">
<wz-config-item label="IP address to listen to cluster communications" value="currentConfig['com-cluster'].bind_addr">
</wz-config-item>
<wz-config-item
label="Hide cluster information in alerts"
value="currentConfig['com-cluster'].hidden">
<wz-config-item label="Hide cluster information in alerts" value="currentConfig['com-cluster'].hidden">
</wz-config-item>
</div>
@ -91,13 +71,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/wazuh-cluster.html">How to configure the Wazuh cluster</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/cluster.html">Wazuh cluster reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/wazuh-cluster.html">How
to configure the Wazuh cluster</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/cluster.html">Wazuh
cluster reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -105,4 +87,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -12,9 +12,6 @@
<span class="font-size-18">
<i class="fa fa-fw fa-edit" aria-hidden="true"></i> Cluster configuration</span>
</div>
<div layout="row">
<span class="md-subheader">Edit master/worker configuration</span>
</div>
</div>
<!-- Headline (manager) -->
@ -23,9 +20,6 @@
<span class="font-size-18">
<i class="fa fa-fw fa-edit" aria-hidden="true"></i> Manager configuration</span>
</div>
<div layout="row">
<span class="md-subheader">Edit manager configuration</span>
</div>
</div>
<!-- End headline -->
@ -33,27 +27,31 @@
<!-- XML editor for node configuration -->
<div flex layout="column">
<div layout="row" class="md-padding-h">
<button ng-disabled='xmlHasErrors' ng-click='saveConfiguration()' class='btn btn-primary'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
<!-- List of nodes if cluster is enabled -->
<div ng-show="selectedNode && clusterStatus.data.data.enabled === 'yes' && clusterStatus.data.data.running === 'yes' " layout="row" class="wz-margin-left-8"
layout-padding style="padding: 0;height: 32px;">
<div ng-show="selectedNode && clusterStatus.data.data.enabled === 'yes' && clusterStatus.data.data.running === 'yes' "
layout="row" layout-padding style="padding: 0;height: 32px;">
<div layout="column" layout-align="center" class="height-35 wz-select-input">
<select class="kuiSelect wz-border-none cursor-pointer max-height-35" id="categoryBox"
ng-model="selectedNode" ng-change="changeNode()" aria-label="Select node">
<option ng-repeat="node in nodes" value="{{node.name}}">{{node.name}} ({{node.type}})</option>
</select>
</div>
<button class="btn btn-primary wz-margin-left-8" ng-disabled="isRestarting" ng-click="restartNode(selectedNode)"><i
class="fa fa-refresh"></i>
Restart {{selectedNode}}
</button>
</div>
<button ng-disabled='xmlHasErrors' ng-click="switchConfigurationTab('welcome', false)" class='btn btn-info wz-margin-left-8'>
<span>Cancel</span>
</button>
<button ng-disabled='xmlHasErrors' ng-click='saveConfiguration()' class='btn wz-button wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
<span flex></span>
<button class="btn wz-button" ng-disabled="isRestarting" ng-click="restartNode(selectedNode)"><i
class="fa fa-refresh"></i>
Restart {{selectedNode}}
</button>
</div>
<div class="md-padding md-padding-top-10" style="height: calc(100vh - 280px);" ng-if="fetchedXML">
<div class="md-padding md-padding-top-10" style="height: calc(100vh - 230px);" ng-if="fetchedXML">
<wz-xml-file-editor file-name='ossec.conf' data="fetchedXML" target-name="selectedNode" valid-fn='xmlIsValid(valid)'
close-fn='closeEditingFile(reload)'>
</wz-xml-file-editor>

View File

@ -1,55 +0,0 @@
<div flex="auto" layout="column" ng-if="editionTab === 'groups'" ng-controller="configurationGroupsController">
<div layout="column" layout-padding>
<div layout="row">
<span class="font-size-18"> <i class="fa fa-fw fa-object-group" aria-hidden="true"></i> Edit the groups</span>
<span ng-if='adminMode' class="font-size-18 wz-text-link" tooltip="Add new group" ng-click="switchAddingGroup()">
<i class="fa fa-fw fa-plus-circle"></i></span>
</div>
<span ng-if="!addingGroup" class="md-subheader">Edit your groups configuration</span>
<div layout="row" ng-if="addingGroup" ng-if='adminMode' class="wz-padding-bottom-0">
<input placeholder="Group name..." ng-model="groupToBeAdded" type="text" class="kuiLocalSearchInput addGroupInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton addGroupBtn" ng-click="createGroup(groupToBeAdded)">
<span class="fa fa-save fa-fw" aria-hidden="true"></span>
</button>
</div>
</div>
<div class="md-padding" ng-show="!editingFile">
<!-- Search bar -->
<div layout="row" ng-if="!addingAgents && !file" class="wz-padding-bottom-14">
<input placeholder="Filter groups..." ng-model="custom_search" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false" wz-enter="search(custom_search)">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="search(custom_search)">
<span class="fa fa-search" aria-hidden="true"></span>
</button>
</div>
<!-- End search bar -->
<md-card flex class="wz-md-card _md flex wz-no-margin">
<md-card-content>
<wz-table flex path="'/agents/groups'" keys="['name']" allow-click="true" row-sizes="[17,15,13]">
</md-card-content>
</md-card>
</wz-table>
</div>
<!-- XML editor for node configuration -->
<div class="md-padding" ng-show="editingFile">
<div flex layout="column">
<div layout="row" class="wz-padding-bottom-14">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveConfig()' class='btn btn-primary pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
</div>
<div ng-if="fetchedXML" style="height: calc(100vh - 305px);">
<wz-xml-file-editor file-name='agent.conf' data="fetchedXML" target-name="selectedItem.name + ' group'"
valid-fn='xmlIsValid(valid)' close-fn='closeEditingFile(reload)'>
</wz-xml-file-editor>
</div>
</div>
</div>
</div>

View File

@ -1,98 +0,0 @@
<div flex="auto" layout="column" ng-if="editionTab === 'ruleset'" ng-controller="configurationRulesetController">
<div layout="column" layout-padding>
<div layout="row">
<span class="font-size-18"><i class="fa fa-fw fa-file-text-o" aria-hidden="true"></i> Edit the ruleset
</span>
<span ng-if='adminMode && !editingFile && selectedRulesetTab === "rules"' class="font-size-18 wz-text-link"
ng-click="addNewFile('rules')" tooltip="Add new rules file" tooltip-placement="right">
<i class="fa fa-fw fa-plus-circle"></i></span>
<span ng-if='adminMode && !editingFile && selectedRulesetTab === "decoders"' class="font-size-18 wz-text-link"
ng-click="addNewFile('decoders')" tooltip="Add new decoders file" tooltip-placement="right">
<i class="fa fa-fw fa-plus-circle"></i></span>
<span ng-if='adminMode && !currentList && selectedRulesetTab === "cdblists"' class="font-size-18 wz-text-link"
ng-click="addNewList()" tooltip="Add new list file" tooltip-placement="right">
<i class="fa fa-fw fa-plus-circle"></i></span>
</div>
<div layout="row">
<span class="md-subheader">Edit your current local rules, decoders and CDB lists</span>
</div>
</div>
<md-nav-bar class="wz-nav-bar" md-selected-nav-item="selectedRulesetTab">
<md-nav-item class="wz-nav-item" md-nav-click="switchRulesetTab('rules')" name="rules">Local rules</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="switchRulesetTab('decoders')" name="decoders">Local decoders</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="switchRulesetTab('cdblists')" name="cdblists">CDB Lists</md-nav-item>
</md-nav-bar>
<div class="md-padding" ng-show="!editingFile && !viewingDetail">
<!-- Search bar -->
<div layout="row" ng-if="!addingAgents && !file" class="wz-padding-bottom-14">
<input placeholder="{{searchPlaceholder}}" ng-model="custom_search" type="text" id="config-ruleset-input-search"
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid" aria-invalid="false"
wz-enter="search(custom_search)">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="search(custom_search)">
<span class="fa fa-search" aria-hidden="true"></span>
</button>
</div>
<!-- End search bar -->
<div ng-if="selectedRulesetTab === 'rules'">
<md-card flex class="wz-md-card _md flex wz-no-margin">
<md-card-content>
<wz-table flex path="'/rules'" keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
implicit-filter="[{ name:'path',value: '/var/ossec/etc/rules'}]" allow-click="true" row-sizes="[17,15,13]"></wz-table>
</md-card-content>
</md-card>
</div>
<div ng-if="selectedRulesetTab === 'decoders'">
<md-card flex class="wz-md-card _md flex wz-no-margin">
<md-card-content>
<wz-table flex path="'/decoders'" keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
implicit-filter="[{ name:'path',value: '/var/ossec/etc/decoders'}]" allow-click="true"
row-sizes="[17,15,13]"></wz-table>
</md-card-content>
</md-card>
</div>
<div ng-if="selectedRulesetTab === 'cdblists'">
<md-card flex class="wz-md-card _md flex wz-no-margin">
<md-card-content>
<wz-table flex path="'/lists/files'" keys="['name']" allow-click="true" row-sizes="[17,15,13]"></wz-table>
</md-card-content>
</md-card>
</div>
</div>
<!-- XML editor for ruleset -->
<div class="md-padding" ng-show="editingFile">
<div flex layout="column">
<div layout="row" ng-if="!newFile" class="wz-padding-bottom-14">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveConfig(false)' class='btn btn-primary pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
</div>
<div layout="row" ng-if="newFile" class="wz-padding-bottom-14">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveConfig(true,newFileName)' class='btn btn-primary pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
<input placeholder="Enter file name" ng-model="newFileName" type="text" class="wz-margin-left-8 kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false">
</div>
<div ng-if="fetchedXML" style="height: calc(100vh - 340px);">
<wz-xml-file-editor file-name='{{selectedFileName}}' data="fetchedXML" target-name="selectedItem.file"
valid-fn='xmlIsValid(valid)' close-fn='closeEditingFile(reload)'>
</wz-xml-file-editor>
</div>
</div>
</div>
<div class="md-padding" ng-show="viewingDetail">
<div class="wz-margin-bottom-25">
<h1 class="font-size-18">{{currentList.name}}</h1>
</div>
<div flex layout="column">
<wz-list-manage style="margin: -16px;" ng-if="currentList" list="currentList"></wz-list-manage>
</div>
</div>
</div>

View File

@ -1,22 +1,2 @@
<div flex="auto" layout="column" ng-controller="managementConfigurationController" ng-if="mctrl.tab === 'configuration'"
class="" ng-init="switchConfigurationTab('welcome', false)">
<!-- Navigation section -->
<div ng-show="adminMode" style="position: absolute;right: 0;top: 90px;z-index: 1;">
<div style="float:left">
<button ng-if="mctrl.clusterInfo.status === 'enabled'" class="btn btn-primary wz-margin-right-15" ng-disabled="mctrl.isRestarting" ng-click="mctrl.restartCluster()"><i class="fa fa-refresh"></i>
Restart cluster
</button>
<button ng-if="mctrl.clusterInfo.status !== 'enabled'" class="btn btn-primary wz-margin-right-15" ng-disabled="mctrl.isRestarting" ng-click="mctrl.restartManager()"><i class="fa fa-refresh"></i>
Restart manager
</button>
</div>
</div>
<!-- End navigation section -->
<md-nav-bar class="wz-nav-bar nav-bar-white-bg" md-selected-nav-item="mctrl.globalConfigTab" ng-show="adminMode">
<md-nav-item class="wz-nav-item" md-nav-click="mctrl.switchTab('configuration', true)" name="overview">Overview</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="mctrl.setConfigTab('editconfiguration', true)" name="editconfiguration">Edit
configuration</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="mctrl.setConfigTab('ruleset', true)" name="ruleset">Edit ruleset</md-nav-item>
<md-nav-item class="wz-nav-item" md-nav-click="mctrl.setConfigTab('groups', true)" name="groups">Edit groups</md-nav-item>
</md-nav-bar>
ng-init="switchConfigurationTab('welcome', false)">

View File

@ -3,8 +3,6 @@ include ./welcome.html
include ./global-configuration/global-configuration.pug
include ./cluster/cluster.html
include ./config-edition/config-edition.html
include ./config-ruleset/config-ruleset.html
include ./config-groups/config-groups.html
include ./registration-service/registration-service.html
include ./alerts/alerts.pug
include ./integrations/integrations.html

View File

@ -31,7 +31,8 @@
<div>
<span class="font-size-16">Main settings</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">These settings indicate the database where alerts are stored</span>
<span class="md-subheader small">These settings indicate the database where alerts are
stored</span>
</div>
</div>
<span flex></span>
@ -44,21 +45,13 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Database type"
value="'foo'">
<wz-config-item label="Database type" value="'foo'">
</wz-config-item>
<wz-config-item
label="Database name"
value="'foo'">
<wz-config-item label="Database name" value="'foo'">
</wz-config-item>
<wz-config-item
label="Database server IP"
value="'foo'">
<wz-config-item label="Database server IP" value="'foo'">
</wz-config-item>
<wz-config-item
label="Database username"
value="'foo'">
<wz-config-item label="Database username" value="'foo'">
</wz-config-item>
</div>
@ -73,12 +66,13 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/database-output.html">Database output reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/database-output.html">Database
output reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -86,4 +80,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -137,10 +137,10 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item ng-if="!agent || agent.id === '000'" target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/global.html">Global
reference</md-list-item>

View File

@ -2,14 +2,8 @@
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'remote'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['request-remote']"
ng-if="currentConfig['request-remote'] && isString(currentConfig['request-remote'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['request-remote'] && !isString(currentConfig['request-remote']) && !currentConfig['request-remote'].remote"></wz-no-config>
<wz-no-config flex error="currentConfig['request-remote']" ng-if="currentConfig['request-remote'] && isString(currentConfig['request-remote'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['request-remote'] && !isString(currentConfig['request-remote']) && !currentConfig['request-remote'].remote"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -22,7 +16,8 @@
<div>
<span class="font-size-16">Remote settings</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">Configuration to listen for events from the agents or a syslog client</span>
<span class="md-subheader small">Configuration to listen for events from the agents or a
syslog client</span>
</div>
</div>
<span flex></span>
@ -53,16 +48,16 @@
<td>{{ item.protocol || 'udp' }}</td>
<td>{{ item.ipv6 || '-' }}</td>
<td>
<ul ng-if="item['allowed-ips']">
<li ng-repeat="ip in item['allowed-ips']">{{ ip }}</li>
</ul>
<span ng-if="!item['allowed-ips']">-</span>
<ul ng-if="item['allowed-ips']">
<li ng-repeat="ip in item['allowed-ips']">{{ ip }}</li>
</ul>
<span ng-if="!item['allowed-ips']">-</span>
</td>
<td>
<ul ng-if="item['denied-ips']">
<li ng-repeat="ip in item['denied-ips']">{{ ip }}</li>
</ul>
<span ng-if="!item['denied-ips']">-</span>
<ul ng-if="item['denied-ips']">
<li ng-repeat="ip in item['denied-ips']">{{ ip }}</li>
</ul>
<span ng-if="!item['denied-ips']">-</span>
</td>
<td>{{ item.local_ip || 'All interfaces' }}</td>
<td>{{ item.queue_size || '16384' }}</td>
@ -82,16 +77,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/daemons/ossec-remoted.html">Remote daemon reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html">Remote configuration reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/daemons/ossec-remoted.html">Remote
daemon reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html">Remote
configuration reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -17,12 +17,9 @@
<!-- This section contains the main content and the right sidenav -->
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['integrator-integration']"
ng-if="currentConfig['integrator-integration'] && isString(currentConfig['integrator-integration'])"></wz-no-config>
<!-- End no configuration section -->
<!-- No configuration section -->
<wz-no-config flex error="currentConfig['integrator-integration']" ng-if="currentConfig['integrator-integration'] && isString(currentConfig['integrator-integration'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
<div flex layout="column" ng-if="currentConfig['integrator-integration'] && !isString(currentConfig['integrator-integration'])">
@ -46,25 +43,15 @@
<!-- Configuration block -->
<div class="wz-padding-top-10" ng-if="integrations['virustotal']">
<wz-config-item
label="Filter alerts by this level or above"
value="integrations['virustotal'].level">
<wz-config-item label="Filter alerts by this level or above" value="integrations['virustotal'].level">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule IDs"
value="integrations['virustotal'].rule_id">
<wz-config-item label="Filter alerts by this rule IDs" value="integrations['virustotal'].rule_id">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule groups"
value="integrations['virustotal'].group">
<wz-config-item label="Filter alerts by this rule groups" value="integrations['virustotal'].group">
</wz-config-item>
<wz-config-item
label="Filter alerts by location (agent, IP or file)"
value="integrations['virustotal'].event_location">
<wz-config-item label="Filter alerts by location (agent, IP or file)" value="integrations['virustotal'].event_location">
</wz-config-item>
<wz-config-item
label="Used format to write alerts"
value="integrations['virustotal'].alert_format">
<wz-config-item label="Used format to write alerts" value="integrations['virustotal'].alert_format">
</wz-config-item>
</div>
@ -81,29 +68,17 @@
<!-- Configuration block -->
<div class="wz-padding-top-10" ng-if="integrations['slack']">
<wz-config-item
label="Hook URL"
value="integrations['slack'].hook_url">
<wz-config-item label="Hook URL" value="integrations['slack'].hook_url">
</wz-config-item>
<wz-config-item
label="Filter alerts by this level or above"
value="integrations['slack'].level">
<wz-config-item label="Filter alerts by this level or above" value="integrations['slack'].level">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule IDs"
value="integrations['slack'].rule_id">
<wz-config-item label="Filter alerts by this rule IDs" value="integrations['slack'].rule_id">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule groups"
value="integrations['slack'].group">
<wz-config-item label="Filter alerts by this rule groups" value="integrations['slack'].group">
</wz-config-item>
<wz-config-item
label="Filter alerts by location (agent, IP or file)"
value="integrations['slack'].event_location">
<wz-config-item label="Filter alerts by location (agent, IP or file)" value="integrations['slack'].event_location">
</wz-config-item>
<wz-config-item
label="Used format to write alerts"
value="integrations['slack'].alert_format">
<wz-config-item label="Used format to write alerts" value="integrations['slack'].alert_format">
</wz-config-item>
</div>
@ -112,7 +87,8 @@
<div class="wz-margin-top-10" ng-if="integrations['pagerduty']">
<span class="font-size-16">PagerDuty</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">Get alerts on this streamlined incident resolution software</span>
<span class="md-subheader small">Get alerts on this streamlined incident resolution
software</span>
</div>
</div>
<md-divider class="wz-margin-top-10" ng-if="integrations['pagerduty']"></md-divider>
@ -120,25 +96,15 @@
<!-- Configuration block -->
<div class="wz-padding-top-10" ng-if="integrations['pagerduty']">
<wz-config-item
label="Filter alerts by this level or above"
value="integrations['pagerduty'].level">
<wz-config-item label="Filter alerts by this level or above" value="integrations['pagerduty'].level">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule IDs"
value="integrations['pagerduty'].rule_id">
<wz-config-item label="Filter alerts by this rule IDs" value="integrations['pagerduty'].rule_id">
</wz-config-item>
<wz-config-item
label="Filter alerts by this rule groups"
value="integrations['pagerduty'].group">
<wz-config-item label="Filter alerts by this rule groups" value="integrations['pagerduty'].group">
</wz-config-item>
<wz-config-item
label="Filter alerts by location (agent, IP or file)"
value="integrations['pagerduty'].event_location">
<wz-config-item label="Filter alerts by location (agent, IP or file)" value="integrations['pagerduty'].event_location">
</wz-config-item>
<wz-config-item
label="Used format to write alerts"
value="integrations['pagerduty'].alert_format">
<wz-config-item label="Used format to write alerts" value="integrations['pagerduty'].alert_format">
</wz-config-item>
</div>
@ -153,14 +119,17 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-integration.html">How to integrate Wazuh with external APIs</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/virustotal-scan/index.html">VirusTotal integration documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/integration.html">Integration reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/manual-integration.html">How
to integrate Wazuh with external APIs</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/virustotal-scan/index.html">VirusTotal
integration documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/integration.html">Integration
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -168,4 +137,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html">Integrity monitoring documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/syscheck.html">Syscheck reference</md-list-item>

View File

@ -4,8 +4,10 @@
<div layout="column" layout-padding>
<div>
<span class="font-size-18">Inventory data</span>
<span ng-if="currentConfig && currentConfig.syscollector && currentConfig.syscollector.disabled === 'no'" class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="(currentConfig && currentConfig.syscollector && currentConfig.syscollector.disabled === 'yes') || (currentConfig && !currentConfig.syscollector)" class="wz-agent-status-indicator small red">Disabled</span>
<span ng-if="currentConfig && currentConfig.syscollector && currentConfig.syscollector.disabled === 'no'"
class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="(currentConfig && currentConfig.syscollector && currentConfig.syscollector.disabled === 'yes') || (currentConfig && !currentConfig.syscollector)"
class="wz-agent-status-indicator small red">Disabled</span>
</div>
<span class="md-subheader">Gather relevant information about system OS, hardware, networking and packages</span>
</div>
@ -19,16 +21,10 @@
<!-- This section contains the main content and the right sidenav -->
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['wmodules-wmodules']"
ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig && !currentConfig.syscollector && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<!-- End no configuration section -->
<!-- No configuration section -->
<wz-no-config flex error="currentConfig['wmodules-wmodules']" ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig && !currentConfig.syscollector && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
<div flex layout="column" ng-if="currentConfig && currentConfig.syscollector">
@ -53,17 +49,11 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Syscollector integration status"
value="currentConfig.syscollector.disabled === 'yes' ? 'disabled' : 'enabled'">
<wz-config-item label="Syscollector integration status" value="currentConfig.syscollector.disabled === 'yes' ? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Interval between system scans"
value="currentConfig.syscollector.interval">
<wz-config-item label="Interval between system scans" value="currentConfig.syscollector.interval">
</wz-config-item>
<wz-config-item
label="Scan on start"
value="currentConfig.syscollector['scan-on-start']">
<wz-config-item label="Scan on start" value="currentConfig.syscollector['scan-on-start']">
</wz-config-item>
</div>
@ -80,33 +70,19 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Scan hardware info"
value="currentConfig.syscollector.hardware">
<wz-config-item label="Scan hardware info" value="currentConfig.syscollector.hardware">
</wz-config-item>
<wz-config-item
label="Scan current processes"
value="currentConfig.syscollector.processes">
<wz-config-item label="Scan current processes" value="currentConfig.syscollector.processes">
</wz-config-item>
<wz-config-item
label="Scan operating system info"
value="currentConfig.syscollector.os">
<wz-config-item label="Scan operating system info" value="currentConfig.syscollector.os">
</wz-config-item>
<wz-config-item
label="Scan installed packages"
value="currentConfig.syscollector.packages">
<wz-config-item label="Scan installed packages" value="currentConfig.syscollector.packages">
</wz-config-item>
<wz-config-item
label="Scan network interfaces"
value="currentConfig.syscollector.network">
<wz-config-item label="Scan network interfaces" value="currentConfig.syscollector.network">
</wz-config-item>
<wz-config-item
label="Scan listening network ports"
value="currentConfig.syscollector.ports">
<wz-config-item label="Scan listening network ports" value="currentConfig.syscollector.ports">
</wz-config-item>
<wz-config-item
label="Scan all network ports"
value="currentConfig.syscollector.ports_all">
<wz-config-item label="Scan all network ports" value="currentConfig.syscollector.ports_all">
</wz-config-item>
</div>
@ -122,13 +98,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/syscollector.html">Syscollector module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-syscollector.html">Syscollector module reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/syscollector.html">Syscollector
module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-syscollector.html">Syscollector
module reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -136,4 +114,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -1,16 +1,10 @@
<!-- This section contains the main content and the right sidenav -->
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'localfile'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['logcollector-localfile']"
ng-if="currentConfig['logcollector-localfile'] && isString(currentConfig['logcollector-localfile'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['logcollector-localfile'] && !isString(currentConfig['logcollector-localfile']) && !currentConfig['logcollector-localfile'].localfile"></wz-no-config>
<!-- End no configuration section -->
<!-- No configuration section -->
<wz-no-config flex error="currentConfig['logcollector-localfile']" ng-if="currentConfig['logcollector-localfile'] && isString(currentConfig['logcollector-localfile'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['logcollector-localfile'] && !isString(currentConfig['logcollector-localfile']) && !currentConfig['logcollector-localfile'].localfile"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
<div flex layout="column" ng-if="currentConfig['logcollector-localfile'] && !isString(currentConfig['logcollector-localfile']) && currentConfig['logcollector-localfile'].localfile && currentConfig['logcollector-localfile'].localfile.length">
@ -40,8 +34,10 @@
<md-list flex="auto" class="wz-item-list">
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['logcollector-localfile'].localfile">
<span ng-if='item.file || item.alias || item.command'>{{ item.file || item.alias || item.command }}</span>
<span ng-if='!item.file && !item.alias && !item.command'>{{ item.logformat }} - {{ item.targetStr }}</span></md-list-item>
<span ng-if='item.file || item.alias || item.command'>{{ item.file || item.alias ||
item.command }}</span>
<span ng-if='!item.file && !item.alias && !item.command'>{{ item.logformat }} - {{
item.targetStr }}</span></md-list-item>
</md-list>
</div>
@ -51,47 +47,25 @@
<div flex layout="column" ng-if="currentConfig['logcollector-localfile'].localfile.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Log format"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].logformat">
<wz-config-item label="Log format" value="currentConfig['logcollector-localfile'].localfile[selectedItem].logformat">
</wz-config-item>
<wz-config-item
label="Log location"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].file || '-'">
<wz-config-item label="Log location" value="currentConfig['logcollector-localfile'].localfile[selectedItem].file || '-'">
</wz-config-item>
<wz-config-item
label="Run this command"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].command || '-'">
<wz-config-item label="Run this command" value="currentConfig['logcollector-localfile'].localfile[selectedItem].command || '-'">
</wz-config-item>
<wz-config-item
label="Command alias"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].alias || '-'">
<wz-config-item label="Command alias" value="currentConfig['logcollector-localfile'].localfile[selectedItem].alias || '-'">
</wz-config-item>
<wz-config-item
label="Interval between command executions"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].frequency || '-'">
<wz-config-item label="Interval between command executions" value="currentConfig['logcollector-localfile'].localfile[selectedItem].frequency || '-'">
</wz-config-item>
<wz-config-item
label="Only receive logs occured after start"
value="currentConfig['logcollector-localfile'].localfile[selectedItem]['only-future-events'] || '-'">
<wz-config-item label="Only receive logs occured after start" value="currentConfig['logcollector-localfile'].localfile[selectedItem]['only-future-events'] || '-'">
</wz-config-item>
<wz-config-item
label="Filter logs using this XPATH query"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].query || '-'">
<wz-config-item label="Filter logs using this XPATH query" value="currentConfig['logcollector-localfile'].localfile[selectedItem].query || '-'">
</wz-config-item>
<wz-config-item
label="Log labels"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].labels || '-'">
<wz-config-item label="Log labels" value="currentConfig['logcollector-localfile'].localfile[selectedItem].labels || '-'">
</wz-config-item>
<wz-config-item
is-array="true"
label="Redirect output to this socket"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].target || 'agent'">
<wz-config-item is-array="true" label="Redirect output to this socket" value="currentConfig['logcollector-localfile'].localfile[selectedItem].target || 'agent'">
</wz-config-item>
<wz-config-item
is-array="true"
label="Log collection output format"
value="currentConfig['logcollector-localfile'].localfile[selectedItem].target">
<wz-config-item is-array="true" label="Log collection output format" value="currentConfig['logcollector-localfile'].localfile[selectedItem].target">
</wz-config-item>
</div>
@ -109,16 +83,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html">Log data collection documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html">Localfile reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html">Log
data collection documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html">Localfile
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -1,16 +1,10 @@
<!-- This section contains the main content and the right sidenav -->
<div flex="auto" layout="row" ng-if="!load && configurationSubTab === 'socket'">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['logcollector-socket']"
ng-if="currentConfig['logcollector-socket'] && isString(currentConfig['logcollector-socket'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig['logcollector-socket'] && !isString(currentConfig['logcollector-socket']) && !currentConfig['logcollector-socket'].target"></wz-no-config>
<!-- End no configuration section -->
<!-- No configuration section -->
<wz-no-config flex error="currentConfig['logcollector-socket']" ng-if="currentConfig['logcollector-socket'] && isString(currentConfig['logcollector-socket'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig['logcollector-socket'] && !isString(currentConfig['logcollector-socket']) && !currentConfig['logcollector-socket'].target"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
<div flex layout="column" ng-if="currentConfig['logcollector-socket'] && !isString(currentConfig['logcollector-socket']) && currentConfig['logcollector-socket'].target && currentConfig['logcollector-socket'].target.length">
@ -39,7 +33,8 @@
<div flex="30" layout="column">
<md-list flex="auto" class="wz-item-list">
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['logcollector-socket'].target">{{ item.name }}</md-list-item>
<md-list-item class="wz-text-link" ng-click="updateSelectedItem($index)" ng-repeat="item in currentConfig['logcollector-socket'].target">{{
item.name }}</md-list-item>
</md-list>
</div>
@ -49,21 +44,13 @@
<div flex layout="column" ng-if="currentConfig['logcollector-socket'].target.length">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Socket name"
value="currentConfig['logcollector-socket'].target[selectedItem].name || '-'">
<wz-config-item label="Socket name" value="currentConfig['logcollector-socket'].target[selectedItem].name || '-'">
</wz-config-item>
<wz-config-item
label="Socket location"
value="currentConfig['logcollector-socket'].target[selectedItem].location || '-'">
<wz-config-item label="Socket location" value="currentConfig['logcollector-socket'].target[selectedItem].location || '-'">
</wz-config-item>
<wz-config-item
label="UNIX socket protocol"
value="currentConfig['logcollector-socket'].target[selectedItem].mode || 'udp'">
<wz-config-item label="UNIX socket protocol" value="currentConfig['logcollector-socket'].target[selectedItem].mode || 'udp'">
</wz-config-item>
<wz-config-item
label="Prefix to place before the message"
value="currentConfig['logcollector-socket'].target[selectedItem].prefix || '-'">
<wz-config-item label="Prefix to place before the message" value="currentConfig['logcollector-socket'].target[selectedItem].prefix || '-'">
</wz-config-item>
</div>
@ -81,16 +68,18 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/log-data-configuration.html#using-multiple-outputs">Using multiple outputs</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/socket.html">Socket reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/log-data-configuration.html#using-multiple-outputs">Using
multiple outputs</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/socket.html">Socket
reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
</div>
<!-- End main content and right sidenav section -->
<!-- End main content and right sidenav section -->

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/policy-monitoring/openscap/index.html">OpenSCAP module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-openscap.html">OpenSCAP module reference</md-list-item>

View File

@ -5,7 +5,8 @@
<div>
<span class="font-size-18">Osquery</span>
<span ng-if="currentConfig && currentConfig.osquery && currentConfig.osquery.disabled === 'no'" class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="(currentConfig && currentConfig.osquery && currentConfig.osquery.disabled === 'yes') || (currentConfig && !currentConfig.osquery)" class="wz-agent-status-indicator small red">Disabled</span>
<span ng-if="(currentConfig && currentConfig.osquery && currentConfig.osquery.disabled === 'yes') || (currentConfig && !currentConfig.osquery)"
class="wz-agent-status-indicator small red">Disabled</span>
</div>
<span class="md-subheader">Expose an operating system as a high-performance relational database</span>
</div>
@ -19,16 +20,10 @@
<!-- This section contains the main content and the right sidenav -->
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['wmodules-wmodules']"
ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig && !currentConfig.osquery && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<!-- End no configuration section -->
<!-- No configuration section -->
<wz-no-config flex error="currentConfig['wmodules-wmodules']" ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig && !currentConfig.osquery && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
<div flex layout="column" ng-if="currentConfig && currentConfig.osquery">
@ -53,44 +48,36 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Osquery integration status"
value="currentConfig.osquery.disabled === 'yes' ? 'disabled' : 'enabled'">
<wz-config-item label="Osquery integration status" value="currentConfig.osquery.disabled === 'yes' ? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Auto-run the Osquery daemon"
value="currentConfig.osquery.run_daemon">
<wz-config-item label="Auto-run the Osquery daemon" value="currentConfig.osquery.run_daemon">
</wz-config-item>
<wz-config-item
label="Path to the Osquery executable"
value="currentConfig.osquery.bin_path">
<wz-config-item label="Path to the Osquery executable" value="currentConfig.osquery.bin_path">
</wz-config-item>
<wz-config-item
label="Path to the Osquery results log file"
value="currentConfig.osquery.log_path">
<wz-config-item label="Path to the Osquery results log file" value="currentConfig.osquery.log_path">
</wz-config-item>
<wz-config-item
label="Path to the Osquery configuration file"
value="currentConfig.osquery.config_path">
<wz-config-item label="Path to the Osquery configuration file" value="currentConfig.osquery.config_path">
</wz-config-item>
<wz-config-item
label="Use defined labels as decorators"
value="currentConfig.osquery.add_labels">
<wz-config-item label="Use defined labels as decorators" value="currentConfig.osquery.add_labels">
</wz-config-item>
</div>
<!-- End configuration block -->
<div ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length" class="wz-margin-top-10">
<div ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length"
class="wz-margin-top-10">
<span class="font-size-16">Osquery packs</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">A pack contains multiple queries to quickly retrieve system information</span>
<span class="md-subheader small">A pack contains multiple queries to quickly retrieve
system information</span>
</div>
</div>
<md-divider ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length" class="wz-margin-top-10"></md-divider>
<md-divider ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length"
class="wz-margin-top-10"></md-divider>
<!-- Configuration block -->
<div ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length" class="wz-padding-top-10">
<div ng-if="currentConfig.osquery.packs && isArray(currentConfig.osquery.packs) && currentConfig.osquery.packs.length"
class="wz-padding-top-10">
<table class="table table-striped table-condensed" style="table-layout: fixed !important;">
<thead class="wz-text-bold">
@ -117,13 +104,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/osquery.html">Osquery module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-osquery.html">Osquery module reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/osquery.html">Osquery
module documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-osquery.html">Osquery
module reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -131,4 +120,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/anomalies-detection/index.html">Anomaly and malware detection documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/policy-monitoring/index.html">Policy monitoring documentation</md-list-item>

View File

@ -4,7 +4,8 @@
<div layout="column" layout-padding>
<div>
<span class="font-size-18">Registration service</span>
<span ng-if="currentConfig['auth-auth'] && currentConfig['auth-auth'].auth && currentConfig['auth-auth'].auth.disabled === 'no'" class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="currentConfig['auth-auth'] && currentConfig['auth-auth'].auth && currentConfig['auth-auth'].auth.disabled === 'no'"
class="wz-agent-status-indicator small teal">Enabled</span>
<span ng-if="currentConfig['auth-auth'] && isString(currentConfig['auth-auth'])" class="wz-agent-status-indicator small red">Disabled</span>
</div>
<span class="md-subheader">Automatic agent registration service</span>
@ -20,10 +21,7 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['auth-auth']"
ng-if="currentConfig['auth-auth'] && isString(currentConfig['auth-auth']) && !currentConfig['auth-auth'].auth"></wz-no-config>
<wz-no-config flex error="currentConfig['auth-auth']" ng-if="currentConfig['auth-auth'] && isString(currentConfig['auth-auth']) && !currentConfig['auth-auth'].auth"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -49,33 +47,19 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Service status"
value="currentConfig['auth-auth'].auth.disabled === 'yes'? 'disabled' : 'enabled'">
<wz-config-item label="Service status" value="currentConfig['auth-auth'].auth.disabled === 'yes'? 'disabled' : 'enabled'">
</wz-config-item>
<wz-config-item
label="Listen to connections at port"
value="currentConfig['auth-auth'].auth.port">
<wz-config-item label="Listen to connections at port" value="currentConfig['auth-auth'].auth.port">
</wz-config-item>
<wz-config-item
label="Use client's source IP address"
value="currentConfig['auth-auth'].auth.use_source_ip">
<wz-config-item label="Use client's source IP address" value="currentConfig['auth-auth'].auth.use_source_ip">
</wz-config-item>
<wz-config-item
label="Use a password to register agents"
value="currentConfig['auth-auth'].auth.use_password">
<wz-config-item label="Use a password to register agents" value="currentConfig['auth-auth'].auth.use_password">
</wz-config-item>
<wz-config-item
label="Purge agents list when removing agents"
value="currentConfig['auth-auth'].auth.purge">
<wz-config-item label="Purge agents list when removing agents" value="currentConfig['auth-auth'].auth.purge">
</wz-config-item>
<wz-config-item
label="Limit registration to maximum number of agents"
value="currentConfig['auth-auth'].auth.limit_maxagents">
<wz-config-item label="Limit registration to maximum number of agents" value="currentConfig['auth-auth'].auth.limit_maxagents">
</wz-config-item>
<wz-config-item
label="Force registration when using an existing IP address"
value="currentConfig['auth-auth'].auth.force_insert">
<wz-config-item label="Force registration when using an existing IP address" value="currentConfig['auth-auth'].auth.force_insert">
</wz-config-item>
</div>
@ -84,7 +68,8 @@
<div class="wz-margin-top-10">
<span class="font-size-16">SSL settings</span>
<div class="wz-margin-top-10">
<span class="md-subheader small">Applied when the registration service uses SSL certificates</span>
<span class="md-subheader small">Applied when the registration service uses SSL
certificates</span>
</div>
</div>
<md-divider class="wz-margin-top-10"></md-divider>
@ -92,29 +77,17 @@
<!-- Configuration block -->
<div class="wz-padding-top-10">
<wz-config-item
label="Verify agents using a CA certificate"
value="currentConfig['auth-auth'].auth.ssl_verify_host">
<wz-config-item label="Verify agents using a CA certificate" value="currentConfig['auth-auth'].auth.ssl_verify_host">
</wz-config-item>
<wz-config-item
label="Auto-select the SSL negotiation method"
value="currentConfig['auth-auth'].auth.ssl_auto_negotiate">
<wz-config-item label="Auto-select the SSL negotiation method" value="currentConfig['auth-auth'].auth.ssl_auto_negotiate">
</wz-config-item>
<wz-config-item
label="CA certificate location"
value="currentConfig['auth-auth'].auth.ssl_agent_ca">
<wz-config-item label="CA certificate location" value="currentConfig['auth-auth'].auth.ssl_agent_ca">
</wz-config-item>
<wz-config-item
label="Server SSL certificate location"
value="currentConfig['auth-auth'].auth.ssl_manager_cert">
<wz-config-item label="Server SSL certificate location" value="currentConfig['auth-auth'].auth.ssl_manager_cert">
</wz-config-item>
<wz-config-item
label="Server SSL key location"
value="currentConfig['auth-auth'].auth.ssl_manager_key">
<wz-config-item label="Server SSL key location" value="currentConfig['auth-auth'].auth.ssl_manager_key">
</wz-config-item>
<wz-config-item
label="Use the following SSL ciphers"
value="currentConfig['auth-auth'].auth.ciphers">
<wz-config-item label="Use the following SSL ciphers" value="currentConfig['auth-auth'].auth.ciphers">
</wz-config-item>
</div>
@ -129,13 +102,15 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/registering/use-registration-service.html">How to use the registration service</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/auth.html">Registration service reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/registering/use-registration-service.html">How
to use the registration service</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/auth.html">Registration
service reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -143,4 +118,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/ruleset/index.html">Ruleset documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/ruleset.html">Ruleset reference</md-list-item>

View File

@ -5,9 +5,10 @@
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
class="md-sidenav-right" style="width: auto !important;"
md-is-locked-open="true">
<md-list>
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection.html">Vulnerability detector documentation</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-vuln-detector.html">Vulnerability detector reference</md-list-item>

View File

@ -18,14 +18,8 @@
<div flex="auto" layout="row" ng-if="!load">
<!-- No configuration section -->
<wz-no-config
flex
error="currentConfig['wmodules-wmodules']"
ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config
flex
error="'not-present'"
ng-if="currentConfig && !currentConfig.commands && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config flex error="currentConfig['wmodules-wmodules']" ng-if="currentConfig['wmodules-wmodules'] && isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<wz-no-config flex error="'not-present'" ng-if="currentConfig && !currentConfig.commands && !isString(currentConfig['wmodules-wmodules'])"></wz-no-config>
<!-- End no configuration section -->
<!-- This section is the main content -->
@ -65,49 +59,27 @@
<div flex layout="column">
<div flex="auto" class="wz-item-detail">
<wz-config-item
label="Command status"
value="currentConfig.commands[selectedItem].disabled === 'no' ? 'enabled' : 'disabled'">
<wz-config-item label="Command status" value="currentConfig.commands[selectedItem].disabled === 'no' ? 'enabled' : 'disabled'">
</wz-config-item>
<wz-config-item
label="Command name"
value="currentConfig.commands[selectedItem].tag">
<wz-config-item label="Command name" value="currentConfig.commands[selectedItem].tag">
</wz-config-item>
<wz-config-item
label="Command to execute"
value="currentConfig.commands[selectedItem].command">
<wz-config-item label="Command to execute" value="currentConfig.commands[selectedItem].command">
</wz-config-item>
<wz-config-item
label="Interval between executions"
value="currentConfig.commands[selectedItem].interval">
<wz-config-item label="Interval between executions" value="currentConfig.commands[selectedItem].interval">
</wz-config-item>
<wz-config-item
label="Run on start"
value="currentConfig.commands[selectedItem].run_on_start">
<wz-config-item label="Run on start" value="currentConfig.commands[selectedItem].run_on_start">
</wz-config-item>
<wz-config-item
label="Ignore command output"
value="currentConfig.commands[selectedItem].ignore_output">
<wz-config-item label="Ignore command output" value="currentConfig.commands[selectedItem].ignore_output">
</wz-config-item>
<wz-config-item
label="Timeout (in seconds) to wait for execution"
value="currentConfig.commands[selectedItem].timeout">
<wz-config-item label="Timeout (in seconds) to wait for execution" value="currentConfig.commands[selectedItem].timeout">
</wz-config-item>
<wz-config-item
label="Verify MD5 sum"
value="currentConfig.commands[selectedItem].verify_md5">
<wz-config-item label="Verify MD5 sum" value="currentConfig.commands[selectedItem].verify_md5">
</wz-config-item>
<wz-config-item
label="Verify SHA1 sum"
value="currentConfig.commands[selectedItem].verify_sha1">
<wz-config-item label="Verify SHA1 sum" value="currentConfig.commands[selectedItem].verify_sha1">
</wz-config-item>
<wz-config-item
label="Verify SHA256 sum"
value="currentConfig.commands[selectedItem].verify_sha256">
<wz-config-item label="Verify SHA256 sum" value="currentConfig.commands[selectedItem].verify_sha256">
</wz-config-item>
<wz-config-item
label="Ignore checksum verification"
value="currentConfig.commands[selectedItem].skip_verification">
<wz-config-item label="Ignore checksum verification" value="currentConfig.commands[selectedItem].skip_verification">
</wz-config-item>
</div>
@ -125,12 +97,13 @@
<!-- End main content section -->
<!-- This section is the right sidenav content -->
<md-sidenav
class="md-sidenav-right"
md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-command.html">Command module reference</md-list-item>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/wodle-command.html">Command
module reference</md-list-item>
</md-list>
</md-sidenav>
<!-- End right sidenav section -->
@ -138,4 +111,4 @@
</div>
<!-- End main content and right sidenav section -->
</div>
</div>

View File

@ -1,13 +1,15 @@
<div flex="auto" layout="column" ng-if="configurationTab === 'welcome' && !editionTab" class="" ng-class="agent && agent.id !== '000'?'wz-margin-top-8':''">
<!-- Headline -->
<div layout="column" layout-padding>
<div ng-show="agent && agent.id !== '000'">
<div layout="column" layout-padding ng-show="agent && agent.id !== '000'">
<div>
<span class="font-size-18"> <i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration</span>
<span ng-if="isSynchronized" class="wz-agent-status-indicator small teal">SYNCHRONIZED</span>
<span ng-if="!isSynchronized" class="wz-agent-status-indicator small red">NOT SYNCHRONIZED</span>
</div>
<span class="font-size-18" ng-show="!agent || agent.id === '000'">
<i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration</span>
</div>
<div layout="row" ng-show="!agent || agent.id === '000'" class="wz-padding-left-8">
<md-button class="wz-button" ng-click="mctrl.setConfigTab('editconfiguration', true)"><i class="fa fa-fw fa-pencil"></i>
Edit configuration</md-button>
</div>
<!-- End headline -->
@ -257,8 +259,10 @@
<!-- End configuration cards section -->
<!-- This section is the right sidenav content -->
<md-sidenav class="md-sidenav-right" md-is-locked-open="true">
<md-list>
<md-sidenav class="md-sidenav-right" style="width: auto !important;" md-is-locked-open="true">
<span class="wz-margin-right-8 wz-text-link wz-text-right wz-margin-top-8" ng-click="showHelp = !showHelp"><i
class="fa fa-fw fa-question-circle-o"></i></span>
<md-list ng-if="showHelp">
<md-subheader>More info about this section</md-subheader>
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/index.html">Wazuh
administration documentation</md-list-item>

View File

@ -68,7 +68,7 @@
<div ng-show="editingFile">
<div layout="row" class="md-padding-h wz-margin-top-10">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveGroupAgentConfig()' class='btn btn-primary pull-right wz-margin-left-8'>
<button ng-disabled='xmlHasErrors' ng-click='doSaveGroupAgentConfig()' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
@ -86,7 +86,7 @@
<div layout="row" class="md-padding" ng-if="lookingGroup && currentGroup && addingAgents">
<span ng-click='addMultipleAgents(false)' class='btn btn-info'>
Cancel</span>
<span ng-hide='moreThan500' ng-click='saveAddAgents()' class='btn btn-primary wz-margin-left-8'><i
<span ng-hide='moreThan500' ng-click='saveAddAgents()' class='btn wz-button wz-margin-left-8'><i
aria-hidden='true' class='fa fa-fw fa-save'></i>
Apply changes</span>
<span class='error-msg' ng-show='moreThan500'><i class="fa fa-exclamation-triangle"></i> It is not
@ -95,11 +95,11 @@
<div layout="row" class="md-padding wz-padding-bottom-0" ng-if="lookingGroup && currentGroup && !addingAgents && !editingFile && !file && adminMode">
<button ng-if="lookingGroup && groupsSelectedTab==='files'" ng-click='editGroupAgentConfig(currentGroup)'
class='btn btn-primary'><i aria-hidden='true' class='fa fa-fw fa-pencil'></i>
class='btn wz-button'><i aria-hidden='true' class='fa fa-fw fa-pencil'></i>
Edit group configuration
</button>
<button ng-if="lookingGroup && groupsSelectedTab==='agents'" ng-disabled="currentGroup.name === 'default'"
ng-click='addMultipleAgents(true)' class='btn btn-primary'><i aria-hidden='true' class='fa fa-fw fa-tv'></i>
ng-click='addMultipleAgents(true)' class='btn wz-button'><i aria-hidden='true' class='fa fa-fw fa-tv'></i>
Add or remove agents
</button>
</div>

View File

@ -2,11 +2,11 @@
<!-- Back button and title -->
<div layout="row" layout-align="start center">
<!-- Back button -->
<md-button class="md-icon-button" style="margin: 5px!important;" aria-label="Back to CDB Lists list"
tooltip="Back" tooltip-placement="bottom" ng-click="cdbctrl.closeDetailView(true)"><i class="fa fa-fw fa-arrow-left"
<md-button class="md-icon-button" style="margin: 5px!important;" aria-label="Back to CDB Lists list" tooltip="Back"
tooltip-placement="bottom" ng-click="cdbctrl.closeDetailView(true)"><i class="fa fa-fw fa-arrow-left"
aria-hidden="true"></i></md-button>
<!-- List title -->
<div>
<div ng-if="!cdbctrl.addingList">
<!-- <h1 class="font-size-18">{{currentList.name}}</h1> -->
<h1 class="font-size-18">{{cdbctrl.currentList.name}}</h1>
</div>
@ -15,7 +15,7 @@
<!-- List information ribbon -->
<div layout="row" class="wz-padding-left-8 wz-padding-right-8">
<div layout="row" class="wz-padding-left-8 wz-padding-right-8" ng-if="!cdbctrl.addingList">
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
<div flex="50" class="wz-text-truncatable">Name: <span class="wz-text-bold wz-text-link">{{cdbctrl.currentList.name}}</span></div>

View File

@ -1,6 +1,7 @@
<div ng-if="!cdbctrl.viewingDetail" layout="column">
<div id="content" layout="row" class="md-padding ">
<input flex placeholder="Filter lists..." ng-model="cdbctrl.custom_search" type="text" class="kuiLocalSearchInput height-40 ng-empty ng-pristine ng-scope ng-touched ng-valid" aria-invalid="false" wz-enter="cdbctrl.search(cdbctrl.custom_search)">
<input flex placeholder="Filter lists..." ng-model="cdbctrl.custom_search" type="text" class="kuiLocalSearchInput height-40 ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false" wz-enter="cdbctrl.search(cdbctrl.custom_search)">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="cdbctrl.search(cdbctrl.custom_search)">
<span class="fa fa-search" aria-hidden="true"></span>
</button>
@ -42,11 +43,16 @@
<div layout="row">
<md-card flex class="wz-md-card _md flex md-margin-h">
<md-card-content>
<wz-table implicit-filter="cdbctrl.appliedFilters" flex path="'/lists/files'" keys="['name', 'path']" allow-click="true" row-sizes="[15,13,11]">
<div layout="row">
<a ng-click="cdbctrl.addNewList()">Add new list <i aria-hidden="true" class="fa fa-plus"></i></a>
</div>
<wz-table implicit-filter="cdbctrl.appliedFilters" flex path="'/lists/files'" keys="['name', 'path']"
allow-click="true" row-sizes="[15,13,11]">
</wz-table>
<div layout="row" class="wz-margin-top-10 md-padding-h">
<span flex></span>
<a class="small" id="btnDownload" ng-click="cdbctrl.downloadCsv()">Formatted <i aria-hidden="true" class="fa fa-download"></i></a>
<a class="small" id="btnDownload" ng-click="cdbctrl.downloadCsv()">Formatted <i aria-hidden="true"
class="fa fa-download"></i></a>
</div>
</md-card-content>
</md-card>

View File

@ -1,6 +1,6 @@
<div ng-if="!loading && dctrl.viewingDetail" layout="column" class="">
<!-- Back button and title -->
<div layout="row" layout-align="start center">
<div layout="row" layout-align="start center" ng-show="!dctrl.editingFile">
<!-- Back button -->
<md-button class="md-icon-button" style="margin: 5px!important;" aria-label="Back to decoders list" tooltip="Back"
tooltip-placement="bottom" ng-click="dctrl.closeDetailView()"><i class="fa fa-fw fa-arrow-left" aria-hidden="true"></i></md-button>
@ -11,8 +11,15 @@
</div>
<!-- End back button, title and status indicator -->
<div layout="row" class="md-padding" ng-if="!dctrl.editingFile && dctrl.currentDecoder.file && dctrl.currentDecoder.path === '/var/ossec/etc/decoders' && adminMode">
<button ng-click='dctrl.editDecodersConfig(dctrl.currentDecoder)' class='btn wz-button'><i aria-hidden='true'
class='fa fa-fw fa-pencil'></i>
Edit {{ dctrl.currentDecoder.file }}
</button>
</div>
<!-- Decoder information ribbon -->
<div layout="row" class="wz-padding-left-8 wz-padding-right-8">
<div layout="row" class="wz-padding-left-8 wz-padding-right-8" ng-show="!dctrl.editingFile">
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
<div flex="20" ng-if="dctrl.currentDecoder.position || dctrl.currentDecoder.position == 0" class="wz-text-truncatable">Position:
@ -29,7 +36,7 @@
<!-- End Decoder information ribbon -->
<!-- Rest of decoder information -->
<div layout="column" layout-align="start">
<div layout="column" layout-align="start" ng-show="!dctrl.editingFile">
<div layout="row" class="wz-padding-left-8 wz-padding-right-8" layout-align="start stretch">
@ -95,15 +102,9 @@
</md-card>
<!-- End prematch section -->
</div>
<div layout="row" class="md-padding wz-padding-bottom-0" ng-if="!editingFile && dctrl.currentDecoder.file && dctrl.currentDecoder.path === '/var/ossec/etc/decoders' && adminMode">
<button ng-click='dctrl.editDecodersConfig(dctrl.currentDecoder)' class='btn btn-primary'><i aria-hidden='true'
class='fa fa-fw fa-pencil'></i>
Edit decoder file
</button>
</div>
<!-- Related decoders section -->
<div ng-show="!editingFile">
<div ng-show="!dctrl.editingFile">
<div layout="row" class="md-padding wz-padding-top-10" ng-if="dctrl.currentDecoder">
<h1 class="md-headline wz-headline"><i class="fa fa-fw fa-link" aria-hidden="true"></i> Related
decoders</h1>
@ -124,18 +125,18 @@
<!-- End rest of decoder information -->
<!-- XML editor for rules -->
<div layout="column" layout-align="start" ng-show="editingFile">
<div layout="column" layout-align="start" ng-show="dctrl.editingFile">
<div layout="row" class="wz-margin-left-16">
<span ng-click='dctrl.closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='dctrl.doSaveDecoderConfig()' class='btn btn-primary pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
<button ng-disabled='dctrl.xmlHasErrors' ng-click='dctrl.doSaveDecoderConfig()' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!dctrl.xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='dctrl.xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
</div>
<div class="md-padding md-padding-top-10" ng-if="fetchedXML" style="height: calc(100vh - 367px);">
<wz-xml-file-editor file-name='decoders' data="fetchedXML" target-name="currentDecoder.file" valid-fn='xmlIsValid(valid)'
close-fn='closeEditingFile(reload)'>
<div class="md-padding md-padding-top-10" ng-if="dctrl.fetchedXML" style="height: calc(100vh - 367px);">
<wz-xml-file-editor file-name='decoders' data="dctrl.fetchedXML" target-name="dctrl.currentDecoder.file"
valid-fn='dctrl.xmlIsValid(valid)' close-fn='dctrl.closeEditingFile(reload)'>
</wz-xml-file-editor>
</div>
</div>

View File

@ -1,20 +1,14 @@
<div ng-if="!loading && !dctrl.viewingDetail" layout="column">
<div id="content" layout="row" layout-align="start start" class="md-padding">
<div id="content" layout="row" layout-align="start start" class="md-padding" ng-if="!dctrl.editingFile">
<input flex placeholder="Filter decoders..." ng-model="dctrl.custom_search" type="text" class="kuiLocalSearchInput height-40 ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false" wz-enter="dctrl.search(dctrl.custom_search)">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40 wz-margin-right-8" ng-click="dctrl.search(dctrl.custom_search)">
<span class="fa fa-search" aria-hidden="true"></span>
</button>
<div layout="column" layout-align="center" class="height-40 wz-select-input">
<select flex class="kuiSelect wz-border-none cursor-pointer" ng-model="dctrl.typeFilter" ng-change="dctrl.onlyParents(dctrl.typeFilter)"
aria-label="Filter by type" ng-init="'All decoders'">
<option value="all">All decoders</option>
<option value="parents">Parent decoders</option>
</select>
</div>
</div>
<md-chips class="wz-chips md-padding-h wz-padding-bottom-14" readonly="true" ng-show="dctrl.appliedFilters.length">
<md-chips class="wz-chips md-padding-h wz-padding-bottom-14" readonly="true" ng-show="dctrl.appliedFilters.length"
ng-if="!dctrl.editingFile">
<md-chip class="wz-chip" ng-show="dctrl.includesFilter('file')">
<span>File: {{ dctrl.getFilter('file') }}
<i class="fa fa-fw fa-times cursor-pointer" aria-hidden="true" ng-click="dctrl.removeFilter('file')"></i>
@ -28,11 +22,21 @@
</md-chips>
<div layout="row">
<md-card flex class="wz-md-card _md flex md-margin-h">
<md-card flex class="wz-md-card _md flex md-margin-h" ng-if="!dctrl.editingFile">
<md-card-content>
<wz-table implicit-filter="dctrl.appliedFilters" flex path="'/decoders'" keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
allow-click="true" row-sizes="[15,13,11]">
<div layout="row" ng-if="!dctrl.editingFile">
<a ng-click="dctrl.addNewFile('decoders')">Add new decoder <i aria-hidden="true" class="fa fa-plus"></i></a>
<span flex></span>
<md-switch ng-model="dctrl.showingLocalDecoders" class="md-primary wz-no-top-bottom-margin">
Only custom
</md-switch>
</div>
<wz-table ng-if="!dctrl.showingLocalDecoders" implicit-filter="dctrl.appliedFilters" flex path="'/decoders'"
keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
allow-click="true" row-sizes="[16,13,11]">
</wz-table>
<wz-table ng-if="dctrl.showingLocalDecoders" flex path="'/decoders'" keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
implicit-filter="[{ name:'path',value: '/var/ossec/etc/decoders'}]" allow-click="true" row-sizes="[16,13,11]"></wz-table>
<div layout="row" class="wz-margin-top-10 md-padding-h">
<span flex></span>
<a class="small" id="btnDownload" ng-click="dctrl.downloadCsv()">Formatted <i aria-hidden="true"
@ -41,4 +45,33 @@
</md-card-content>
</md-card>
</div>
<div class="md-padding" ng-if="dctrl.editingFile && dctrl.type === 'decoders'">
<div flex layout="column">
<div layout="row" ng-if="!dctrl.newFile" class="wz-padding-bottom-14">
<span ng-click='dctrl.closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='dctrl.xmlHasErrors' ng-click='dctrl.doSaveConfig(false)' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!dctrl.xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save
file</span>
<span ng-show='dctrl.xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
</div>
<div layout="row" ng-if="dctrl.newFile" class="wz-padding-bottom-14">
<span ng-click='dctrl.closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='dctrl.xmlHasErrors' ng-click='dctrl.doSaveConfig(true,dctrl.newFileName)' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!dctrl.xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save
file</span>
<span ng-show='dctrl.xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
<input placeholder="Eg: my_local_decoder.xml" ng-model="dctrl.newFileName" type="text" class="wz-margin-left-8 kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false">
</div>
<div ng-if="dctrl.fetchedXML" style="height: calc(100vh - 340px);">
<wz-xml-file-editor file-name='{{dctrl.selectedFileName}}' data="dctrl.fetchedXML" target-name="dctrl.selectedItem.file"
valid-fn='dctrl.xmlIsValid(valid)' close-fn='dctrl.closeEditingFile(reload)'>
</wz-xml-file-editor>
</div>
</div>
</div>
</div>

View File

@ -1,6 +1,6 @@
<div ng-if="!loading && viewingDetail" layout="column" class="">
<!-- Back button and title -->
<div layout="row" layout-align="start center">
<div layout="row" layout-align="start center" ng-show="!editingFile">
<!-- Back button -->
<md-button class="md-icon-button" style="margin: 5px!important;" aria-label="Back to rules list" tooltip="Back"
tooltip-placement="bottom" ng-click="closeDetailView(true)"><i class="fa fa-fw fa-arrow-left" aria-hidden="true"></i></md-button>
@ -10,10 +10,15 @@
</div>
</div>
<div layout="row" class="md-padding" ng-if="!editingFile && currentRule.file && currentRule.path === '/var/ossec/etc/rules' && adminMode">
<button ng-click='editRulesConfig(currentRule)' class='btn wz-button'><i aria-hidden='true' class='fa fa-fw fa-pencil'></i>
Edit {{ currentRule.file }}
</button>
</div>
<!-- End back button, title and status indicator -->
<!-- Rule information ribbon -->
<div layout="row" class="wz-padding-left-8 wz-padding-right-8">
<div layout="row" ng-show="!editingFile" class="wz-padding-left-8 wz-padding-right-8">
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
<div flex="15" ng-if="currentRule.id" class="wz-text-truncatable">ID: <span class="wz-text-bold">{{currentRule.id}}</span></div>
@ -33,7 +38,7 @@
<!-- End Rule information ribbon -->
<!-- Rest of rule information -->
<div layout="column" layout-align="start">
<div layout="column" layout-align="start" ng-show="!editingFile">
<div layout="row" class="wz-padding-left-8 wz-padding-right-8" layout-align="start stretch">
@ -149,11 +154,6 @@
</md-card>
<!-- End prematch section -->
</div>
<div layout="row" class="md-padding wz-padding-bottom-0" ng-if="!editingFile && currentRule.file && currentRule.path === '/var/ossec/etc/rules' && adminMode">
<button ng-click='editRulesConfig(currentRule)' class='btn btn-primary'><i aria-hidden='true' class='fa fa-fw fa-pencil'></i>
Edit rule file
</button>
</div>
<!-- Related rules section -->
<div ng-show="!editingFile">
@ -181,7 +181,7 @@
<div layout="row" class="wz-margin-left-16">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveRuleConfig()' class='btn btn-primary pull-right wz-margin-left-8'>
<button ng-disabled='xmlHasErrors' ng-click='doSaveRuleConfig()' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>

View File

@ -1,5 +1,5 @@
<div ng-if="!loading && !viewingDetail" layout="column">
<div id="content" layout="row" class="md-padding ">
<div id="content" layout="row" class="md-padding " ng-if="!editingFile">
<input flex placeholder="Filter rules..." ng-model="custom_search" type="text" class="kuiLocalSearchInput height-40 ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false" wz-enter="search(custom_search)">
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="search(custom_search)">
@ -7,7 +7,7 @@
</button>
</div>
<md-chips class="wz-chips md-padding-h wz-padding-bottom-14" readonly="true" ng-show="appliedFilters.length">
<md-chips class="wz-chips md-padding-h wz-padding-bottom-14" readonly="true" ng-show="appliedFilters.length" ng-if="!editingFile">
<md-chip class="wz-chip" ng-show="includesFilter('file')">
<span>File: {{getFilter('file')}}
<i class="fa fa-fw fa-times cursor-pointer" aria-hidden="true" ng-click="removeFilter('file')"></i>
@ -40,11 +40,20 @@
</md-chip>
</md-chips>
<div layout="row">
<div layout="row" ng-if="!editingFile">
<md-card flex class="wz-md-card _md flex md-margin-h">
<md-card-content>
<wz-table implicit-filter="appliedFilters" flex path="'/rules'" keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
allow-click="true" row-sizes="[15,13,11]">
<div layout="row" ng-if="!editingFile">
<a ng-click="addNewFile('rules')">Add new rule <i aria-hidden="true" class="fa fa-plus"></i></a>
<span flex></span>
<md-switch ng-model="showingLocalRules" ng-change="switchLocalRules()" class="md-primary wz-no-top-bottom-margin">
Only custom
</md-switch>
</div>
<wz-table flex ng-if="showingLocalRules" path="'/rules'" keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
implicit-filter="[{ name:'path',value: '/var/ossec/etc/rules'}]" allow-click="true" row-sizes="[16,13,11]"></wz-table>
<wz-table ng-if="!showingLocalRules" implicit-filter="appliedFilters" flex path="'/rules'" keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
allow-click="true" row-sizes="[16,13,11]">
</wz-table>
<div layout="row" class="wz-margin-top-10 md-padding-h">
<span flex></span>
@ -53,4 +62,33 @@
</md-card-content>
</md-card>
</div>
<div class="md-padding" ng-if="editingFile && type === 'rules'">
<div flex layout="column">
<div layout="row" ng-if="!newFile" class="wz-padding-bottom-14">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveConfig(false)' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save
file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
</div>
<div layout="row" ng-if="newFile" class="wz-padding-bottom-14">
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
<button ng-disabled='xmlHasErrors' ng-click='doSaveConfig(true,newFileName)' class='btn wz-button pull-right wz-margin-left-8'>
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save
file</span>
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
XML format error</span>
</button>
<input placeholder="Eg: my_local_rule.xml" ng-model="newFileName" type="text" class="wz-margin-left-8 kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
aria-invalid="false">
</div>
<div ng-if="fetchedXML" style="height: calc(100vh - 340px);">
<wz-xml-file-editor file-name='{{selectedFileName}}' data="fetchedXML" target-name="selectedItem.file"
valid-fn='xmlIsValid(valid)' close-fn='closeEditingFile(reload)'>
</wz-xml-file-editor>
</div>
</div>
</div>
</div>

View File

@ -19,6 +19,17 @@
<option ng-repeat="node in ctrl.nodes" value="{{node.name}}">{{node.name}}</option>
</select>
</div>
<div flex></div>
<div layout="column" class="height-40 wz-no-padding">
<button ng-if="mctrl.clusterInfo.status === 'enabled'" class="btn wz-button height-40" ng-disabled="mctrl.isRestarting"
ng-click="mctrl.restartCluster()"><i class="fa fa-refresh"></i>
Restart cluster
</button>
<button ng-if="mctrl.clusterInfo.status !== 'enabled'" class="btn wz-button height-40" ng-disabled="mctrl.isRestarting"
ng-click="mctrl.restartManager()"><i class="fa fa-refresh"></i>
Restart manager
</button>
</div>
</div>
<!-- End headline -->

View File

@ -15,21 +15,13 @@
<h3 class="euiTitle wzEuiTitle">Administration</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
class="euiFlexItem" logo="'icons/ruleset.png'" title="'Ruleset'"
switch-tab="mctrl.switchTab('ruleset', true)" current-tab="'rules'"
description="'Explore your Wazuh cluster ruleset.'"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/groups.png'"
title="'Groups'" switch-tab="mctrl.switchTab('groups', true)" current-tab="'groups'"
description="'Check your agent groups.'"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_devtools.svg'"
title="'Configuration'" switch-tab="mctrl.switchTab('configuration', true)" current-tab="'configuration'"
description="'Check your Wazuh cluster configuration.'"
></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/ruleset.png'" title="'Ruleset'" switch-tab="mctrl.switchTab('ruleset', true)"
current-tab="'rules'" description="'Explore your Wazuh cluster ruleset.'"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/groups.png'" title="'Groups'" switch-tab="mctrl.switchTab('groups', true)"
current-tab="'groups'" description="'Check your agent groups.'"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_devtools.svg'" title="'Configuration'"
switch-tab="mctrl.switchTab('configuration', true)" current-tab="'configuration'"
description="'Check your Wazuh cluster configuration.'"></wz-welcome-card>
</div>
</div>
</div>
@ -38,29 +30,17 @@
<h3 class="euiTitle wzEuiTitle">Status and reports</h3>
<div class="euiSpacer euiSpacer--m"></div>
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_monitoring.svg'" title="'Status'"
switch-tab="mctrl.switchTab('status', true)" current-tab="'status'"
description="'Check your Wazuh cluster status.'"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_logging.svg'" title="'Logs'"
switch-tab="mctrl.switchTab('logs', true)" current-tab="'logs'"
description="'Logs from your Wazuh cluster.'"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/app_index_pattern.svg'" title="'Cluster'"
switch-tab="mctrl.switchTab('monitoring', true)" current-tab="'monitoring'"
description="'Visualize your Wazuh cluster.'"
></wz-welcome-card>
<wz-welcome-card
class="euiFlexItem" logo="'icons/reporting.png'" title="'Reporting'"
switch-tab="mctrl.switchTab('reporting', true)" current-tab="'reporting'"
description="'Check your stored Wazuh reports.'"
></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_monitoring.svg'" title="'Status'"
switch-tab="mctrl.switchTab('status', true)" current-tab="'status'" description="'Check your Wazuh cluster status.'"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_logging.svg'" title="'Logs'" switch-tab="mctrl.switchTab('logs', true)"
current-tab="'logs'" description="'Logs from your Wazuh cluster.'"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/app_index_pattern.svg'" title="'Cluster'"
switch-tab="mctrl.switchTab('monitoring', true)" current-tab="'monitoring'" description="'Visualize your Wazuh cluster.'"></wz-welcome-card>
<wz-welcome-card class="euiFlexItem" logo="'icons/reporting.png'" title="'Reporting'"
switch-tab="mctrl.switchTab('reporting', true)" current-tab="'reporting'" description="'Check your stored Wazuh reports.'"></wz-welcome-card>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,11 +1,12 @@
<md-content flex layout="column" ng-if="octrl.tab === 'aws' && octrl.tabView === 'panels'" layout-align="start">
<div layout="column" layout-align="center center" ng-if="octrl.tab === 'aws'" ng-show="resultState === 'ready' && octrl.tabView === 'panels' && !rendered">
<md-content flex layout="column" ng-if="octrl.tab === 'aws' && octrl.tabView === 'panels'" layout-align="start" ng-show="resultState === 'ready' && octrl.tabView === 'panels' && !rendered">
<div layout="column" layout-align="center center" ng-if="octrl.tab === 'aws'">
<div class="percentage"><i class="fa fa-fw fa-spin fa-spinner" aria-hidden="true"></i></div>
<div class="percentage">{{loadingStatus}}</div>
</div>
</md-content>
<md-content flex layout="column" ng-if="octrl.tab === 'aws' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="octrl.tab === 'aws' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<div layout="row" class="height-250">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
@ -36,7 +37,7 @@
</md-card-content>
</md-card>
</div>
<div layout="row" class="height-300">
<md-card flex="50" class="wz-md-card">
<md-card-content class="wazuh-column">
@ -54,8 +55,8 @@
</md-card>
</div>
<div layout="row" class="height-310">
<md-card flex class="wz-md-card">
<div layout="row" class="height-400">
<md-card flex="40" class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 buckets</span>
<md-divider class="wz-margin-top-10"></md-divider>
@ -71,4 +72,4 @@
</md-card>
</div>
</md-content>
</md-content>

View File

@ -1,4 +1,5 @@
<md-content flex layout="column" ng-if="octrl.tab === 'gdpr' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="octrl.tab === 'gdpr' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<div layout="row" layout-align="center stretch" ng-show="octrl.gdprTabs.length">
<md-card flex class="wz-md-card">
@ -16,26 +17,16 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-530">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" >
<span class="wz-headline-title">Last alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-Requirements-heatmap" vis-id="'Wazuh-App-Overview-GDPR-Requirements-heatmap'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-255">
<md-card flex="30" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Groups</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-Groups" vis-id="'Wazuh-App-Overview-GDPR-Groups'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="70" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">GDPR Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-requirements" vis-id="'Wazuh-App-Overview-GDPR-requirements'"></kbn-vis>
@ -43,31 +34,30 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-300">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top requirements over time</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-Requirements-heatmap" vis-id="'Wazuh-App-Overview-GDPR-Requirements-heatmap'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-255">
<md-card flex="70" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Requirements by agent</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-Requirements-by-agent" vis-id="'Wazuh-App-Overview-GDPR-Requirements-by-agent'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="30" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Agents</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-GDPR-Agents" vis-id="'Wazuh-App-Overview-GDPR-Agents'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-570">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Overview-GDPR-Last-alerts'"></kbn-vis>
</md-card-content>
</md-card>
</div>
</md-content>
</md-content>

View File

@ -1,4 +1,5 @@
<md-content flex layout="column" ng-if="octrl.tab === 'general' && octrl.tabView === 'panels'" layout-align="start" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}">
<md-content flex layout="column" ng-if="octrl.tab === 'general' && octrl.tabView === 'panels'" layout-align="start"
ng-class="{'no-opacity': resultState !== 'ready' || !rendered}">
<div layout="row">
<md-card flex class="wz-metric-color wz-md-card">
<md-card-content layout="row" class="wz-padding-metric">
@ -17,16 +18,16 @@
<kbn-vis vis-id="'Wazuh-App-Overview-General-Authentication-success'"></kbn-vis>
</div>
<div layout="row" layout-align="start stretch" class="height-300" >
<div layout="row" layout-align="start stretch" class="height-300">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alert level evolution</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Alert-level-evolution" vis-id="'Wazuh-App-Overview-General-Alert-level-evolution'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Alerts" vis-id="'Wazuh-App-Overview-General-Alerts'"></kbn-vis>
@ -35,22 +36,22 @@
</div>
<div layout="row" layout-align="space-between stretch" class="height-270">
<md-card flex class="wz-md-card" >
<md-card-content class="wazuh-column" >
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 agents</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Top-5-agents" vis-id="'Wazuh-App-Overview-General-Top-5-agents'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card" >
<md-card-content class="wazuh-column" >
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 rule groups</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Top-5-rule-groups" vis-id="'Wazuh-App-Overview-General-Top-5-rule-groups'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" ng-show="octrl.wzMonitoringEnabled" >
<md-card-content class="wazuh-column" ng-show="octrl.wzMonitoringEnabled">
<span class="wz-headline-title">Agents status</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Agents-status" vis-id="'Wazuh-App-Overview-General-Agents-status'"></kbn-vis>
@ -88,21 +89,35 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-570">
<md-card flex="60" class="wz-md-card">
<div layout="row" layout-align="center stretch" class="height-270">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts summary</span>
<span class="wz-headline-title">Commonly fired rules</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Overview-General-Alerts-summary'"></kbn-vis>
<kbn-vis id="Wazuh-App-Overview-General-Commonly-fired-rules" vis-id="'Wazuh-App-Overview-General-Commonly-fired-rules'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="40" class="wz-md-card">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Groups summary</span>
<span class="wz-headline-title">Rule level distribution</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Overview-General-Groups-summary'"></kbn-vis>
<kbn-vis id="Wazuh-App-Overview-General-Rule-level-distribution" vis-id="'Wazuh-App-Overview-General-Rule-level-distribution'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top PCI DSS requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Top-PCI" vis-id="'Wazuh-App-Overview-General-Top-PCI'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top GDPR requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-General-Top-GDPR" vis-id="'Wazuh-App-Overview-General-Top-GDPR'"></kbn-vis>
</md-card-content>
</md-card>
</div>
</md-content>
</md-content>

View File

@ -1,4 +1,5 @@
<md-content flex layout="column" ng-if="octrl.tab === 'pci' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="octrl.tab === 'pci' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<div layout="row" layout-align="center stretch">
<md-card flex class="wz-md-card">
@ -16,26 +17,16 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-530">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" >
<span class="wz-headline-title">Last alerts</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PCI-DSS-Requirements-heatmap" vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-heatmap'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-255">
<md-card flex="70" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">PCI Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PCI-DSS-requirements" vis-id="'Wazuh-App-Overview-PCI-DSS-requirements'"></kbn-vis>
</md-card-content>
</md-card>
<md-card flex="30" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Groups</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PCI-DSS-Groups" vis-id="'Wazuh-App-Overview-PCI-DSS-Groups'"></kbn-vis>
@ -43,6 +34,16 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-300">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top requirements over time</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PCI-DSS-Requirements-over-time" vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-over-time'"></kbn-vis>
</md-card-content>
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-255">
<md-card flex="30" class="wz-md-card">
<md-card-content class="wazuh-column">
@ -52,7 +53,7 @@
</md-card-content>
</md-card>
<md-card flex="70" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Requirements by agent</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PCI-DSS-Requirements-by-agent" vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-by-agent'"></kbn-vis>
@ -60,14 +61,4 @@
</md-card>
</div>
<div layout="row" layout-align="center stretch" class="height-570">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Alerts summary</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Last-alerts'"></kbn-vis>
</md-card-content>
</md-card>
</div>
</md-content>
</md-content>

View File

@ -1,8 +1,9 @@
<md-content flex layout="column" ng-if="octrl.tab === 'pm' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
<md-content flex layout="column" ng-if="octrl.tab === 'pm' && octrl.tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
layout-align="start">
<div layout="row" layout-align="center stretch" class="height-290">
<md-card flex="50" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Events over time</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PM-Events-over-time" vis-id="'Wazuh-App-Overview-PM-Events-over-time'"></kbn-vis>
@ -10,7 +11,7 @@
</md-card>
<md-card flex="25" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 CIS Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PM-Top-5-CIS-requirements" vis-id="'Wazuh-App-Overview-PM-Top-5-CIS-requirements'"></kbn-vis>
@ -18,7 +19,7 @@
</md-card>
<md-card flex="25" class="wz-md-card">
<md-card-content class="wazuh-column" >
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PM-Top-5-PCI-DSS-requirements" vis-id="'Wazuh-App-Overview-PM-Top-5-PCI-DSS-requirements'"></kbn-vis>
@ -28,8 +29,8 @@
<div layout="row" layout-align="center stretch" class="height-240">
<md-card flex class="wz-md-card">
<md-card-content class="wazuh-column" >
<span class="wz-headline-title">Events per agent evolution</span>
<md-card-content class="wazuh-column">
<span class="wz-headline-title">Events per control type evolution</span>
<md-divider class="wz-margin-top-10"></md-divider>
<kbn-vis id="Wazuh-App-Overview-PM-Events-per-agent-evolution" vis-id="'Wazuh-App-Overview-PM-Events-per-agent-evolution'"></kbn-vis>
</md-card-content>
@ -46,4 +47,4 @@
</md-card>
</div>
</md-content>
</md-content>

View File

@ -154,7 +154,10 @@ export class WazuhApiCtrl {
}
} catch (error) {
if (error.code === 'EPROTO') {
log('POST /api/check-stored-api', 'Wrong protocol being used to connect to the Wazuh API');
log(
'POST /api/check-stored-api',
'Wrong protocol being used to connect to the Wazuh API'
);
return {
statusCode: 200,
data: { password: '****', apiIsDown: true }
@ -198,7 +201,7 @@ export class WazuhApiCtrl {
req.idChanged = api._id;
return this.checkStoredAPI(req, reply);
}
} catch (error) { } // eslint-disable-line
} catch (error) {} // eslint-disable-line
}
} catch (error) {
log('POST /api/check-stored-api', error.message || error);
@ -342,8 +345,16 @@ export class WazuhApiCtrl {
throw new Error(tmpMsg);
} catch (error) {
if (error.code === 'EPROTO') {
log('POST /api/check-api', 'Wrong protocol being used to connect to the Wazuh API');
return ErrorResponse('Wrong protocol being used to connect to the Wazuh API', 3005, 500, reply);
log(
'POST /api/check-api',
'Wrong protocol being used to connect to the Wazuh API'
);
return ErrorResponse(
'Wrong protocol being used to connect to the Wazuh API',
3005,
500,
reply
);
}
log('POST /api/check-api', error.message || error);
return ErrorResponse(error.message || error, 3005, 500, reply);
@ -599,7 +610,7 @@ export class WazuhApiCtrl {
}
throw ((response || {}).body || {}).error &&
((response || {}).body || {}).message
((response || {}).body || {}).message
? { message: response.body.message, code: response.body.error }
: new Error('Unexpected error fetching data from the Wazuh API');
} catch (error) {
@ -658,7 +669,7 @@ export class WazuhApiCtrl {
}
throw ((response || {}).body || {}).error &&
((response || {}).body || {}).message
((response || {}).body || {}).message
? { message: response.body.message, code: response.body.error }
: new Error('Unexpected error fetching data from the Wazuh API');
} catch (error) {
@ -807,18 +818,18 @@ export class WazuhApiCtrl {
if ((((output || {}).body || {}).data || {}).totalItems) {
const fields = req.payload.path.includes('/agents')
? [
'id',
'status',
'name',
'ip',
'group',
'manager',
'node_name',
'dateAdd',
'version',
'lastKeepAlive',
'os'
]
'id',
'status',
'name',
'ip',
'group',
'manager',
'node_name',
'dateAdd',
'version',
'lastKeepAlive',
'os'
]
: Object.keys(output.body.data.items[0]);
const json2csvParser = new Parser({ fields });

View File

@ -194,8 +194,8 @@ export class WazuhReportingCtrl {
parseInt(a[a.length - 1]) < parseInt(b[b.length - 1])
? 1
: parseInt(a[a.length - 1]) > parseInt(b[b.length - 1])
? -1
: 0;
? -1
: 0;
TimSort.sort(rows, sortFunction);
@ -312,14 +312,14 @@ export class WazuhReportingCtrl {
str +=
i === len - 1
? (filter.meta.negate ? 'NOT ' : '') +
filter.meta.key +
': ' +
filter.meta.value
filter.meta.key +
': ' +
filter.meta.value
: (filter.meta.negate ? 'NOT ' : '') +
filter.meta.key +
': ' +
filter.meta.value +
' AND ';
filter.meta.key +
': ' +
filter.meta.value +
' AND ';
}
if (searchBar) {
@ -1020,14 +1020,14 @@ export class WazuhReportingCtrl {
this.dd.content.push({
text: `Last policy monitoring scan was executed from ${
lastScan.data.start
} to ${lastScan.data.end}.`,
} to ${lastScan.data.end}.`,
style: 'standard'
});
} else if (lastScan.data.start) {
this.dd.content.push({
text: `Policy monitoring scan is currently in progress for this agent (started on ${
lastScan.data.start
}).`,
}).`,
style: 'standard'
});
} else {
@ -1147,13 +1147,13 @@ export class WazuhReportingCtrl {
this.dd.content.push({
text: `Last file integrity monitoring scan was executed from ${
lastScan.data.start
} to ${lastScan.data.end}.`
} to ${lastScan.data.end}.`
});
} else if (lastScan.data.start) {
this.dd.content.push({
text: `File integrity monitoring scan is currently in progress for this agent (started on ${
lastScan.data.start
}).`
}).`
});
} else {
this.dd.content.push({
@ -1216,7 +1216,7 @@ export class WazuhReportingCtrl {
ulcustom.push(hardware.data.cpu.name);
if (hardware.data.ram && hardware.data.ram.total)
ulcustom.push(
Math.round(hardware.data.ram.total / 1024 / 1024, 2) + 'GB RAM'
Number(hardware.data.ram.total / 1024 / 1024).toFixed(2) + 'GB RAM'
);
ulcustom &&
ulcustom.length &&
@ -1432,7 +1432,7 @@ export class WazuhReportingCtrl {
agent && agent.data && agent.data.os && agent.data.os.platform
? agent.data.os.platform
: '';
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
try {
const packages = await this.apiRequest.makeGenericRequest(
'GET',
@ -1447,26 +1447,26 @@ export class WazuhReportingCtrl {
agentOs === 'windows'
? ['Name', 'Architecture', 'Version', 'Vendor']
: [
'Name',
'Architecture',
'Version',
'Vendor',
'Description'
],
'Name',
'Architecture',
'Version',
'Vendor',
'Description'
],
rows: packages.data.items.map(x => {
return agentOs === 'windows'
? [x['name'], x['architecture'], x['version'], x['vendor']]
: [
x['name'],
x['architecture'],
x['version'],
x['vendor'],
x['description']
];
x['name'],
x['architecture'],
x['version'],
x['vendor'],
x['description']
];
})
});
}
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
try {
const processes = await this.apiRequest.makeGenericRequest(
'GET',
@ -1485,15 +1485,15 @@ export class WazuhReportingCtrl {
return agentOs === 'windows'
? [x['name'], x['cmd'], x['priority'], x['nlwp']]
: [
x['name'],
x['euser'],
x['nice'],
ProcessEquivalence[x.state]
];
x['name'],
x['euser'],
x['nice'],
ProcessEquivalence[x.state]
];
})
});
}
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
try {
const ports = await this.apiRequest.makeGenericRequest(
@ -1523,7 +1523,7 @@ export class WazuhReportingCtrl {
})
});
}
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
try {
const netiface = await this.apiRequest.makeGenericRequest(
@ -1541,7 +1541,7 @@ export class WazuhReportingCtrl {
})
});
}
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
try {
const netaddr = await this.apiRequest.makeGenericRequest(
'GET',
@ -1570,7 +1570,7 @@ export class WazuhReportingCtrl {
})
});
}
} catch (err) {} //eslint-disable-line
} catch (err) { } //eslint-disable-line
}
await this.renderHeader(section, tab, isAgents, apiId);

View File

@ -15,8 +15,8 @@ export default [
_source: {
title: 'Top 5 alerts',
visState:
'{"title":"Top 5 rule groups","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":false,"legendPosition":"right","isDonut":true,"labels":{"show":true,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.description","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":false}}',
'{"title":"Top 5 alerts","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.description","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {
@ -31,8 +31,8 @@ export default [
_source: {
title: 'Top 5 groups',
visState:
'{"title":"Top 5 rule groups","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":false,"legendPosition":"right","isDonut":true,"labels":{"show":true,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.groups","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":false}}',
'{"title":"Top 5 rule groups","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.groups","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {
@ -45,10 +45,10 @@ export default [
{
_id: 'Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements',
_source: {
title: 'Top 5 PCI DSS Requirements',
title: 'Top 5 PCI DSS requirements',
visState:
'{"title":"Top 5 rule groups","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":false,"legendPosition":"right","isDonut":true,"labels":{"show":true,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.pci_dss","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":false}}',
'{"title":"Top 5 PCI DSS requirements","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.pci_dss","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {

View File

@ -83,7 +83,7 @@ export default [
_source: {
title: 'Accounts',
visState:
'{"title":"Accounts","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"data.aws.account_id","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
'{"title":"Accounts","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"data.aws.aws_account_id","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{}',
description: '',
version: 1,

View File

@ -13,11 +13,10 @@ export default [
{
_id: 'Wazuh-App-Overview-GDPR-Requirements-heatmap',
_source: {
title: 'GDPR Requirements heatmap',
title: 'GDPR requirements over time',
visState:
'{"title":"GDPR Requirements heatmap","type":"heatmap","params":{"type":"heatmap","addTooltip":true,"addLegend":true,"enableHover":false,"legendPosition":"right","times":[],"colorsNumber":4,"colorSchema":"Greens","setColorRange":false,"colorsRange":[],"invertColors":false,"percentageMode":false,"valueAxes":[{"show":false,"id":"ValueAxis-1","type":"value","scale":{"type":"linear","defaultYExtents":false},"labels":{"show":false,"rotate":0,"color":"#555"}}]},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"agent.name","size":5,"order":"desc","orderBy":"1","customLabel":"Agents"}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.gdpr","size":5,"order":"desc","orderBy":"1","customLabel":"GDPR Requirements"}}]}',
uiStateJSON:
'{"vis":{"defaultColors":{"0 - 1,125":"rgb(247,252,245)","1,125 - 2,250":"rgb(199,233,192)","2,250 - 3,375":"rgb(116,196,118)","3,375 - 4,500":"rgb(35,139,69)"}}}',
'{"title":"Requirements over time","type":"area","params":{"type":"area","grid":{"categoryLines":false,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"area","mode":"normal","data":{"label":"Count","id":"1"},"drawLinesBetweenPoints":true,"showCircles":true,"interpolate":"cardinal","valueAxis":"ValueAxis-1"}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","timeRange":{"from":"now-24h","to":"now","mode":"quick"},"useNormalizedEsInterval":true,"interval":"auto","time_zone":"Europe/Berlin","drop_partials":false,"customInterval":"2h","min_doc_count":1,"extended_bounds":{}}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"rule.gdpr","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{}',
description: '',
version: 1,
kibanaSavedObjectMeta: {

View File

@ -193,7 +193,8 @@ export default [
_source: {
title: 'Alert level evolution',
visState:
'{"title":"Alert level evolution","type":"area","params":{"type":"area","grid":{"categoryLines":true,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"line","mode":"stacked","data":{"label":"Count","id":"1"},"drawLinesBetweenPoints":true,"showCircles":true,"interpolate":"cardinal","valueAxis":"ValueAxis-1"}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","timeRange":{"from":"now-15m","to":"now","mode":"quick"},"useNormalizedEsInterval":true,"interval":"auto","time_zone":"Europe/Berlin","drop_partials":false,"customInterval":"2h","min_doc_count":1,"extended_bounds":{}}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"rule.level","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
'{"title":"Alert level evolution","type":"area","params":{"type":"area","grid":{"categoryLines":false,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"area","mode":"normal","data":{"label":"Count","id":"1"},"drawLinesBetweenPoints":true,"showCircles":true,"interpolate":"cardinal","valueAxis":"ValueAxis-1"}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","timeRange":{"from":"now-24h","to":"now","mode":"quick"},"useNormalizedEsInterval":true,"interval":"auto","time_zone":"Europe/Berlin","drop_partials":false,"customInterval":"2h","min_doc_count":1,"extended_bounds":{}}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"rule.level","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{}',
description: '',
version: 1,
@ -254,14 +255,13 @@ export default [
_type: 'visualization'
},
{
_id: 'Wazuh-App-Overview-General-Alerts-summary',
_id: 'Wazuh-App-Overview-General-Commonly-fired-rules',
_type: 'visualization',
_source: {
title: 'Alerts summary',
title: 'Commonly fired rules',
visState:
'{"title":"Alerts summary","type":"table","params":{"perPage":10,"showPartialRows":false,"showMeticsAtAllLevels":false,"sort":{"columnIndex":null,"direction":null},"showTotal":false,"totalFunc":"sum"},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.id","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":50,"order":"desc","orderBy":"1","customLabel":"Rule ID"}},{"id":"3","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.description","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":1,"order":"desc","orderBy":"1","customLabel":"Description"}},{"id":"4","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.level","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":1,"order":"desc","orderBy":"1","customLabel":"Level"}}]}',
uiStateJSON:
'{"vis":{"params":{"sort":{"columnIndex":null,"direction":null}}}}',
'{"title":"Commonly fired rules","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.description","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {
@ -271,14 +271,45 @@ export default [
}
},
{
_id: 'Wazuh-App-Overview-General-Groups-summary',
_id: 'Wazuh-App-Overview-General-Rule-level-distribution',
_type: 'visualization',
_source: {
title: 'Groups summary',
title: 'Rule level distribution',
visState:
'{"title":"Groups summary","type":"table","params":{"perPage":10,"showPartialRows":false,"showMeticsAtAllLevels":false,"sort":{"columnIndex":null,"direction":null},"showTotal":false,"totalFunc":"sum"},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.groups","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":50,"order":"desc","orderBy":"1","customLabel":"Group"}}]}',
uiStateJSON:
'{"vis":{"params":{"sort":{"columnIndex":null,"direction":null}}}}',
'{"title":"Rule level distribution","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.level","size":16,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {
searchSourceJSON:
'{"index":"wazuh-alerts","filter":[],"query":{"query":"","language":"lucene"}}'
}
}
},
{
_id: 'Wazuh-App-Overview-General-Top-PCI',
_type: 'visualization',
_source: {
title: 'Top PCI DSS requirements',
visState:
'{"title":"Top PCI DSS requirements","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.pci_dss","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {
searchSourceJSON:
'{"index":"wazuh-alerts","filter":[],"query":{"query":"","language":"lucene"}}'
}
}
},
{
_id: 'Wazuh-App-Overview-General-Top-GDPR',
_type: 'visualization',
_source: {
title: 'Top GDPR requirements',
visState:
'{"title":"Top GDPR requirements","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.gdpr","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{"vis":{"legendOpen":true}}',
description: '',
version: 1,
kibanaSavedObjectMeta: {

View File

@ -11,13 +11,13 @@
*/
export default [
{
_id: 'Wazuh-App-Overview-PCI-DSS-Requirements-heatmap',
_id: 'Wazuh-App-Overview-PCI-DSS-Requirements-over-time',
_source: {
title: 'Requirements heatmap',
title: 'Requirements over time',
visState:
'{"title":"Requirements heatmap","type":"heatmap","params":{"type":"heatmap","addTooltip":true,"addLegend":true,"enableHover":false,"legendPosition":"right","times":[],"colorsNumber":4,"colorSchema":"Reds","setColorRange":false,"colorsRange":[],"invertColors":false,"percentageMode":false,"valueAxes":[{"show":false,"id":"ValueAxis-1","type":"value","scale":{"type":"linear","defaultYExtents":false},"labels":{"show":false,"rotate":0,"color":"#555"}}]},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"agent.name","size":5,"order":"desc","orderBy":"1","customLabel":"Agents"}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.pci_dss","size":5,"order":"desc","orderBy":"1","customLabel":"Requirements"}}]}',
uiStateJSON:
'{"vis":{"defaultColors":{"0 - 60":"rgb(255,245,240)","60 - 120":"rgb(252,187,161)","120 - 180":"rgb(251,106,74)","180 - 240":"rgb(203,24,29)"}}}',
'{"title":"Requirements over time","type":"area","params":{"type":"area","grid":{"categoryLines":false,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"area","mode":"normal","data":{"label":"Count","id":"1"},"drawLinesBetweenPoints":true,"showCircles":true,"interpolate":"cardinal","valueAxis":"ValueAxis-1"}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","timeRange":{"from":"now-24h","to":"now","mode":"quick"},"useNormalizedEsInterval":true,"interval":"auto","time_zone":"Europe/Berlin","drop_partials":false,"customInterval":"2h","min_doc_count":1,"extended_bounds":{}}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"rule.pci_dss","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
uiStateJSON: '{}',
description: '',
version: 1,
kibanaSavedObjectMeta: {

View File

@ -61,9 +61,9 @@ export default [
{
_id: 'Wazuh-App-Overview-PM-Events-per-agent-evolution',
_source: {
title: 'Events per agent evolution',
title: 'Events per control type evolution',
visState:
'{"title":"Events per agent evolution","type":"line","params":{"type":"line","grid":{"categoryLines":false,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"line","mode":"normal","data":{"label":"Count","id":"1"},"valueAxis":"ValueAxis-1","drawLinesBetweenPoints":true,"showCircles":true}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"agent.name","size":5,"order":"desc","orderBy":"1"}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","interval":"h","customInterval":"2h","min_doc_count":1,"extended_bounds":{}}}]}',
'{"title":"Events per control type evolution","type":"line","params":{"type":"line","grid":{"categoryLines":false,"style":{"color":"#eee"}},"categoryAxes":[{"id":"CategoryAxis-1","type":"category","position":"bottom","show":true,"style":{},"scale":{"type":"linear"},"labels":{"show":true,"truncate":100},"title":{}}],"valueAxes":[{"id":"ValueAxis-1","name":"LeftAxis-1","type":"value","position":"left","show":true,"style":{},"scale":{"type":"linear","mode":"normal"},"labels":{"show":true,"rotate":0,"filter":false,"truncate":100},"title":{"text":"Count"}}],"seriesParams":[{"show":"true","type":"line","mode":"normal","data":{"label":"Count","id":"1"},"valueAxis":"ValueAxis-1","drawLinesBetweenPoints":true,"showCircles":true}],"addTooltip":true,"addLegend":true,"legendPosition":"right","times":[],"addTimeMarker":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"3","enabled":true,"type":"terms","schema":"group","params":{"field":"data.title","size":5,"order":"desc","orderBy":"1"}},{"id":"2","enabled":true,"type":"date_histogram","schema":"segment","params":{"field":"@timestamp","interval":"h","customInterval":"2h","min_doc_count":1,"extended_bounds":{}}}]}',
uiStateJSON: '{}',
description: '',
version: 1,
@ -80,7 +80,7 @@ export default [
_source: {
title: 'Alerts summary',
visState:
'{"title":"Alerts summary","type":"table","params":{"perPage":10,"showMeticsAtAllLevels":false,"showPartialRows":false,"showTotal":false,"sort":{"columnIndex":null,"direction":null},"totalFunc":"sum"},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"bucket","params":{"field":"agent.name","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":50,"order":"desc","orderBy":"1","customLabel":"Agent"}},{"id":"3","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.description","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":10,"order":"desc","orderBy":"1","customLabel":"Description"}},{"id":"4","enabled":true,"type":"terms","schema":"bucket","params":{"field":"data.title","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","size":10,"order":"desc","orderBy":"1","customLabel":"Control"}}]}',
'{"title":"Alerts summary","type":"table","params":{"perPage":10,"showPartialRows":false,"showMetricsAtAllLevels":false,"sort":{"columnIndex":null,"direction":null},"showTotal":false,"totalFunc":"sum"},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"3","enabled":true,"type":"terms","schema":"bucket","params":{"field":"data.title","size":10,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","customLabel":"Control"}}]}',
uiStateJSON:
'{"vis":{"params":{"sort":{"columnIndex":null,"direction":null}}}}',
description: '',

View File

@ -76,6 +76,22 @@ export const apiRequestList = [
name: '/agents/restart',
args: []
},
{
name: '/cluster/:node_id/restart',
args: [
{
name: ':node_id'
}
]
},
{
name: '/cluster/restart',
args: []
},
{
name: '/manager/restart',
args: []
},
{
name: '/rootcheck',
args: []
@ -136,6 +152,14 @@ export const apiRequestList = [
}
]
},
{
name: '/agents/group/:group_id',
args: [
{
name: ':group_id'
}
]
},
{
name: '/agents/groups',
args: []
@ -322,6 +346,22 @@ export const apiRequestList = [
}
]
},
{
name: '/cluster/:node_id/configuration/validation',
args: [
{
name: ':node_id'
}
]
},
{
name: '/cluster/:node_id/files',
args: [
{
name: ':node_id'
}
]
},
{
name: '/cluster/:node_id/info',
args: [
@ -354,6 +394,14 @@ export const apiRequestList = [
}
]
},
{
name: '/cluster/:node_id/stats/analysisd',
args: [
{
name: ':node_id'
}
]
},
{
name: '/cluster/:node_id/stats/hourly',
args: [
@ -362,6 +410,14 @@ export const apiRequestList = [
}
]
},
{
name: '/cluster/:node_id/stats/remoted',
args: [
{
name: ':node_id'
}
]
},
{
name: '/cluster/:node_id/stats/weekly',
args: [
@ -382,6 +438,10 @@ export const apiRequestList = [
name: '/cluster/config',
args: []
},
{
name: '/cluster/configuration/validation',
args: []
},
{
name: '/cluster/healthcheck',
args: []
@ -406,6 +466,29 @@ export const apiRequestList = [
name: '/cluster/status',
args: []
},
{
name: '/manager/stats/remoted',
args: []
},
{
name: '/configuration_assessment/:agent_id',
args: [
{
name: ':agent_id'
}
]
},
{
name: '/configuration_assessment/:agent_id/checks/:policy_id',
args: [
{
name: ':agent_id'
},
{
name: ':policy_id'
}
]
},
{
name: '/decoders',
args: []
@ -426,10 +509,26 @@ export const apiRequestList = [
name: '/decoders/parents',
args: []
},
{
name: '/lists',
args: []
},
{
name: '/lists/files',
args: []
},
{
name: '/manager/configuration',
args: []
},
{
name: '/manager/configuration/validation',
args: []
},
{
name: '/manager/files',
args: []
},
{
name: '/manager/info',
args: []
@ -634,6 +733,33 @@ export const apiRequestList = [
name: '/agents',
args: []
},
{
name: '/agents/group/:group_id',
args: [
{
name: ':group_id'
}
]
},
{
name: '/agents/groups/:group_id/configuration',
args: [
{
name: ':group_id'
}
]
},
{
name: '/agents/groups/:group_id/files/:file_name',
args: [
{
name: ':group_id'
},
{
name: ':file_name'
}
]
},
{
name: '/agents/insert',
args: []
@ -641,6 +767,18 @@ export const apiRequestList = [
{
name: '/agents/restart',
args: []
},
{
name: '/cluster/:node_id/files',
args: [
{
name: ':node_id'
}
]
},
{
name: '/manager/files',
args: []
}
]
}