HEX
Server: LiteSpeed
System: Linux CentOS-79-64-minimal 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: vishn3436 (5293)
PHP: 8.0.15
Disabled: NONE
Upload Files
File: //scripts/kuma_auto_sync.sh
#!/bin/bash

# ---------------------------
# CONFIGURATION
# ---------------------------
KUMA_URL="https://status.karmanye.in"
API_KEY="uk1_MtY-Zytfs8U9xc3suBAUiogfEgd48jomZJF8i9di"
ALREADY_FILE="/scripts/kuma_added_sites.txt"
TMP_FILE="/scripts/active_sites.txt"

# Ensure files exist
mkdir -p /scripts
touch "$ALREADY_FILE"
touch "$TMP_FILE"

# ---------------------------
# DISCOVER ACTIVE SITES
# ---------------------------
> "$TMP_FILE"

# 1. Nginx sites
NGINX_PATH="/etc/nginx/conf.d"
if [ -d "$NGINX_PATH" ]; then
    grep -hR "server_name" "$NGINX_PATH"/* 2>/dev/null | awk '{print $2}' | tr -d ';' >> "$TMP_FILE"
fi

# 2. CyberPanel/OpenLiteSpeed sites (use folder names as domains)
VHOST_PATH="/usr/local/lsws/conf/vhosts"
if [ -d "$VHOST_PATH" ]; then
    for FOLDER in "$VHOST_PATH"/*; do
        DOMAIN=$(basename "$FOLDER")
        # Skip suspended sites (if folder name contains 'suspended')
        if [[ "$DOMAIN" != *suspended* ]]; then
            echo "$DOMAIN" >> "$TMP_FILE"
        fi
    done
fi

# Remove duplicates and empty lines
sort -u "$TMP_FILE" -o "$TMP_FILE"
sed -i '/^$/d' "$TMP_FILE"

# ---------------------------
# SYNC WITH UPTIME KUMA
# ---------------------------
while read -r SITE; do
    if ! grep -q "^$SITE$" "$ALREADY_FILE"; then
        echo "Adding new site to Uptime Kuma: $SITE"
        RESPONSE=$(curl -s -X POST "$KUMA_URL/api/monitor/add" \
            -H "Content-Type: application/json" \
            -H "Authorization: Bearer $API_KEY" \
            -d "{\"name\":\"$SITE\",\"type\":\"http\",\"url\":\"https://$SITE\",\"interval\":60}")

        if echo "$RESPONSE" | grep -q "monitorId"; then
            echo "$SITE" >> "$ALREADY_FILE"
            echo "Added $SITE successfully."
        else
            echo "Failed to add $SITE. Response: $RESPONSE"
        fi
    else
        echo "$SITE is already in Uptime Kuma."
    fi
done < "$TMP_FILE"

echo "Sync completed."