mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 18:05:20 +00:00
5f34eff198
* Removed "Pattern" and "First use" sections from Settings * Simplified API entries table in Settings * Started "API is down" guide * Started "Add API" guide * Loading new components for Settings * Adapt Settings views for using new components * Migrate hosts and remove .wazuh index * Prevent duplicate hosts * Improve regex * Cleaning settings.js controller (in progress) * Prevent try to add again if .wazuh was not deleted * Add function to check if is busy * Migrate the cluster_info and extensions to the wazuh-registry * Replace wazuh-version by wazuh-registry * Add endpoint to get the host from wazuh-hosts.yml * Get the APIs from the wazuh-hosts.yml * Updates the cluster info in the registry when checking connection * Remove console.error * Check api connection from wazuh-host data * Try to connect to another API in case the default fails * Adapt settings-wizard and api-count * Adapt wazuh-api.js controller for using wazuh-hosts.yml * Prevent undefined results * Clean initialize * Remove wazuh-api-elastic routes and controllers * Remove addApiProps * Change config.yml by wazuh.yml * Replace config.yml in the kibana plugin helper * Delete wazuh-api-elastic tests * Check for orphan registry entries * Check manager connection before setting as default * Prevent error toaster when there is any api entry * Prevent errors when any api is reachable * Check for new apis and their connection * Prevent error when update registry of undefined * Prevent error when no cluster_info * Remove console.log * Change state by props * Fix settings-wizard * Fix when joinning hosts and registry * Check for new API entries * Close add api component * Remove await * Improve checks for new apis * Test if API is down in wazuh-api * Check down APIs * Api is down component finish * Transform hosts in the backend * Fix key * Adapt removeOrphanentries * Adapt settings-wizard * Improve api-is-down component * Change the way to display the helpers components * Check APIs status when get them * Remove console.log * Check manager sets the status to the API entry * Prevent create wazuh-registry.json without hosts * FIx extensions * Add panel * Change style for wazuh hosts * Show add api component from the table * Refresh API entries * Update wazuh-hosts * Api is down table loading effect * Show API is down when accessing to settings if any API is up * Update cluster info in the settings wizard * Change color * Remove wazuh-hosts.yml * Remove hosts from configuration * Fix \n in the migration * Fix api-count * Fix typo * Fix API wizard * Fix example in getting started guide * Fix typos * Refresh hosts in api-is-down component * Set default in props * Fix API count * Iterates the api entries to set one as default * Fix component unmount * Fix flick * Fix when refresh and all entries and the yml is corrupt * Improve handler error when getting error in the yml parser * Adapt monitoring * Allow unsigned certs * Fix when there is not stored api - health check * Fix when any api entry could be select * Warning when set an API as default * Send to settings when achieve connect with an API when trying set as default * Try to set others API entries * Preven duplicate hosts: in wazuh.yml * Improve when stored api is not reachable handler * Fix typo * Added ID and the capability to search in the table * Fix input style * Fix typo * Do pararell requests * Fix when checking entry * Add cheking spinner while checking api connection * Spinner while checking in api-is-down component * Use for instead of forEach * Change spinner by message while refreshing entries * Add a spinner by each entry while checking it * Show the reason why wazuh is down * Improve message from error 3099 * Add capability to copy to the clipboard the error
112 lines
3.4 KiB
JavaScript
112 lines
3.4 KiB
JavaScript
/*
|
|
* Wazuh app - Class for Wazuh-API functions
|
|
* Copyright (C) 2015-2019 Wazuh, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Find more information about this on the LICENSE file.
|
|
*/
|
|
|
|
import { ManageHosts } from '../lib/manage-hosts';
|
|
import { UpdateRegistry } from '../lib/update-registry';
|
|
import { log } from '../../server/logger';
|
|
import { ErrorResponse } from './error-response';
|
|
|
|
export class WazuhHostsCtrl {
|
|
constructor() {
|
|
this.manageHosts = new ManageHosts();
|
|
this.updateRegistry = new UpdateRegistry();
|
|
}
|
|
|
|
/**
|
|
* This get all hosts entries in the wazuh.yml and the related info in the wazuh-registry.json
|
|
* @param {Object} req
|
|
* @param {Object} reply
|
|
* API entries or ErrorResponse
|
|
*/
|
|
async getHostsEntries(req, reply, removePassword = true) {
|
|
try {
|
|
const hosts = await this.manageHosts.getHosts(removePassword);
|
|
const registry = await this.updateRegistry.getHosts();
|
|
const result = this.joinHostRegistry(hosts, registry, removePassword);
|
|
return result;
|
|
} catch (error) {
|
|
log('wazuh-hosts:getHostsEntries', error.message || error);
|
|
const errorResponse = reply ? ErrorResponse(error.message || error, 2001, 500, reply) : error;
|
|
return errorResponse;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Joins the hosts with the related information in the registry
|
|
* @param {Object} hosts
|
|
* @param {Object} registry
|
|
*/
|
|
joinHostRegistry(hosts, registry, removePassword = true) {
|
|
try {
|
|
const joined = [];
|
|
hosts.forEach(h => {
|
|
const id = Object.keys(h)[0];
|
|
const api = Object.assign(h[id], {id: id});
|
|
const host = Object.assign(api, registry[id]);
|
|
if (removePassword) delete host.password;
|
|
joined.push(host);
|
|
});
|
|
return joined;
|
|
} catch (error) {
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
/**
|
|
* This update an API hostname
|
|
* @param {Object} req
|
|
* @param {Object} reply
|
|
* Status response or ErrorResponse
|
|
*/
|
|
async updateClusterInfo(req, reply) {
|
|
try {
|
|
const id = req.params.id;
|
|
await this.updateRegistry.updateClusterInfo(id, req.payload.cluster_info);
|
|
log(
|
|
'wazuh-hosts:updateClusterInfo',
|
|
`API entry ${req.params.id} hostname updated`,
|
|
'debug'
|
|
);
|
|
return { statusCode: 200, message: 'ok' };
|
|
} catch (error) {
|
|
log('wazuh-hosts:updateClusterInfo', error.message || error);
|
|
return ErrorResponse(
|
|
`Could not update data in wazuh-registry.json due to ${error.message || error}`,
|
|
2012,
|
|
500,
|
|
reply
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the orphan host entries in the registry
|
|
* @param {Object} req
|
|
* @param {Object} reply
|
|
*/
|
|
async removeOrphanEntries(req, reply) {
|
|
try {
|
|
log('wazuh-hosts:cleanRegistry', 'Cleaning registry', 'debug');
|
|
if (!req.payload && !req.payload.entries) throw new Error('No entries given to check');
|
|
await this.updateRegistry.removeOrphanEntries(req.payload.entries)
|
|
return { statusCode: 200, message: 'ok' };
|
|
} catch (error) {
|
|
log('wazuh-hosts:cleanRegistry', error.message || error);
|
|
return ErrorResponse(
|
|
`Could not clean entries in the wazuh-registry.json due to ${error.message || error}`,
|
|
2013,
|
|
500,
|
|
reply
|
|
);
|
|
}
|
|
}
|
|
}
|