#!/bin/bash set -xe OSSEC_CONF="ossec.conf" # -------------------------- # Defaults based on OSSEC_CONF # -------------------------- if [[ -z "$WAZUH_CLUSTER_KEY" ]]; then WAZUH_CLUSTER_KEY=$(sed -n '//,/<\/cluster>/s/.*\(.*\)<\/key>.*/\1/p' "$OSSEC_CONF" | head -n1) fi if [[ -z "$WAZUH_CLUSTER_PORT" ]]; then WAZUH_CLUSTER_PORT=$(sed -n '//,/<\/cluster>/s/.*\(.*\)<\/port>.*/\1/p' "$OSSEC_CONF" | head -n1) fi # Node type logic if [[ -z "$WAZUH_NODE_TYPE" ]]; then if [[ "$HOSTNAME" == "manager" || "$HOSTNAME" == "aio_node" ]]; then WAZUH_NODE_TYPE="master" else WAZUH_NODE_TYPE="worker" fi fi # Default node name → HOSTNAME if not defined WAZUH_NODE_NAME="${WAZUH_NODE_NAME:-$HOSTNAME}" # -------------------------- # Replace Indexer Hosts # -------------------------- if [[ -n "$WAZUH_INDEXER_HOSTS" ]]; then TMP_HOSTS=$(mktemp) { echo " " for NODE in $WAZUH_INDEXER_HOSTS; do IP="${NODE%:*}" PORT="${NODE#*:}" echo " https://$IP:$PORT" done echo " " } > "$TMP_HOSTS"; sed -i -e '//,/<\/indexer>/{ //,/<\/hosts>/{ //r '"$TMP_HOSTS" \ -e 'd }}' "$OSSEC_CONF"; rm -f "$TMP_HOSTS"; fi # -------------------------- # Cluster: node_name # -------------------------- sed -i "//,/<\/cluster>/ s|.*|$WAZUH_NODE_NAME|" "$OSSEC_CONF" # -------------------------- # Cluster: node_type # -------------------------- sed -i "//,/<\/cluster>/ s|.*|$WAZUH_NODE_TYPE|" "$OSSEC_CONF" # -------------------------- # Cluster: key # -------------------------- sed -i "//,/<\/cluster>/ s|.*|$WAZUH_CLUSTER_KEY|" "$OSSEC_CONF" # -------------------------- # Cluster: port # -------------------------- sed -i "//,/<\/cluster>/ s|.*|$WAZUH_CLUSTER_PORT|" "$OSSEC_CONF" # -------------------------- # Cluster: nodes list # -------------------------- if [[ -n "$WAZUH_CLUSTER_NODES" ]]; then TMP_NODES=$(mktemp) { echo " " for N in $WAZUH_CLUSTER_NODES; do echo " $N" done echo " " } > "$TMP_NODES"; sed -i -e '//,/<\/cluster>/{ //,/<\/nodes>/{ //r '"$TMP_NODES" \ -e 'd }}' "$OSSEC_CONF"; rm -f "$TMP_NODES"; fi echo "Wazuh manager config modified successfully."