mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 09:55:18 +00:00
Merge branch '3.9-6.6' into issue-1164
This commit is contained in:
commit
62ef6a0f25
21
CHANGELOG.md
21
CHANGELOG.md
@ -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
|
||||
|
||||
|
10
README.md
10
README.md
@ -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
|
||||
|
||||
|
@ -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', () => {
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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 = () => {
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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>
|
||||
|
@ -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('.');
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 |
4
public/img/icon_filled.svg
Normal file
4
public/img/icon_filled.svg
Normal 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 |
@ -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.
|
||||
|
@ -18,6 +18,13 @@
|
||||
max-height: 35px !important;
|
||||
}
|
||||
|
||||
|
||||
.height-20 {
|
||||
height: 20px !important;
|
||||
}
|
||||
.height-25 {
|
||||
height: 25px !important;
|
||||
}
|
||||
.height-35 {
|
||||
height: 35px !important;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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`,
|
||||
|
@ -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>
|
||||
|
@ -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 }} </span>
|
||||
Groups: <span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{
|
||||
group }} </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>
|
@ -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 }} </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
|
||||
}} </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 }} </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 }} </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>
|
@ -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>
|
@ -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 -->
|
@ -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 -->
|
@ -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 -->
|
@ -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>
|
@ -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 -->
|
@ -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 -->
|
@ -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 -->
|
@ -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 -->
|
@ -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 -->
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
@ -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)">
|
@ -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
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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 -->
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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 -->
|
@ -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 -->
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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 -->
|
||||
|
||||
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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 });
|
||||
|
@ -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);
|
||||
|
@ -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: {
|
||||
|
@ -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,
|
||||
|
@ -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: {
|
||||
|
@ -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: {
|
||||
|
@ -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: {
|
||||
|
@ -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: '',
|
||||
|
@ -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: []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user