Sicherung gegen mehrfachaufruf
This commit is contained in:
@@ -1,9 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ==============================================================================
|
||||
# ISPConfig Proxy Sync Script - Version 3.34 (Fix: Auto-Subdomain Support)
|
||||
# ISPConfig Proxy Sync Script - Version 3.35 (Safe Lock & Auto-Subdomain)
|
||||
# ==============================================================================
|
||||
|
||||
LOCKFILE="/tmp/restart.syncproxy.lock"
|
||||
|
||||
# Sichern gegen Mehrfachstart
|
||||
lockfile -r 0 "$LOCKFILE" || exit 1
|
||||
|
||||
# TRAP: Stellt sicher, dass das Lockfile bei JEDEM Beenden gelöscht wird
|
||||
trap 'rm -f "$LOCKFILE"' EXIT
|
||||
|
||||
# --- KONFIGURATION ---
|
||||
CONF_FILE="/usr/local/bin/sync-ispconfig-proxy.conf"
|
||||
SERVER_LIST="/usr/local/bin/proxy_based_server.conf"
|
||||
@@ -44,11 +52,11 @@ write_nginx_config() {
|
||||
local domain=$1
|
||||
local target_ip=$2
|
||||
local redirect_path=$3
|
||||
local sub_type=$4 # Dies ist das Feld 'subdomain' aus ISPConfig
|
||||
local sub_type=$4 # Feld 'subdomain' aus ISPConfig
|
||||
local cert_dir="/root/.acme.sh/${domain}_ecc"
|
||||
local config_path="$NGINX_CONF_DIR/${domain}.conf"
|
||||
|
||||
# s_names nur um www erweitern, wenn subdomain auf 'www' steht
|
||||
# Server-Namen nur um www erweitern, wenn subdomain auf 'www' steht
|
||||
local s_names="$domain"
|
||||
[[ "$sub_type" == "www" ]] && s_names="$domain www.$domain"
|
||||
|
||||
@@ -109,10 +117,13 @@ main() {
|
||||
if [ -n "$TARGET_DOMAIN" ]; then
|
||||
global_filter="AND (wd.domain = '${TARGET_DOMAIN}' OR parent.domain = '${TARGET_DOMAIN}')"
|
||||
elif [ "$FORCE_ALL" = false ] && [ "$TEST_MODE" = false ]; then
|
||||
# Nutzt dbidx für ISPConfig 3.3.0p3
|
||||
local raw_ids=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -Bse "SELECT DISTINCT dbidx FROM sys_datalog WHERE dbtable = 'web_domain' AND datalog_id > $last_id;" 2>/dev/null)
|
||||
[ $? -ne 0 ] && { echo "FEHLER: SQL-Abfrage fehlgeschlagen." >&2; exit 1; }
|
||||
|
||||
local changed_ids=$(echo "$raw_ids" | grep -oE '[0-9]+')
|
||||
if [ -z "$changed_ids" ]; then exit 0; fi
|
||||
|
||||
global_filter="AND wd.domain_id IN ($(echo "$changed_ids" | paste -sd "," -))"
|
||||
UPDATE_LAST_ID=true
|
||||
else
|
||||
@@ -125,6 +136,7 @@ main() {
|
||||
FROM web_domain wd JOIN server s ON wd.server_id = s.server_id LEFT JOIN web_domain parent ON wd.parent_domain_id = parent.domain_id
|
||||
WHERE TRIM(s.server_name) = TRIM('$CURRENT_SERVER') AND wd.type IN ('vhost', 'alias', 'vhostalias', 'subdomain', 'vhostsubdomain') $global_filter ORDER BY wd.domain_id ASC;"
|
||||
|
||||
[ "$DEBUG_MODE" = true ] && echo "[DEBUG] Query: $sql_query"
|
||||
local sql_result=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -N -B -e "$sql_query")
|
||||
|
||||
while read -r row; do
|
||||
@@ -146,7 +158,6 @@ main() {
|
||||
|
||||
local cert_dir="/root/.acme.sh/${domain}_ecc"
|
||||
if [ ! -f "$cert_dir/fullchain.cer" ] || [ "$RENEW_CERT" = true ]; then
|
||||
# ACME Aufruf: Nur -d www hinzufügen, wenn sub_type == "www"
|
||||
local acme_cmd="/root/.acme.sh/acme.sh --issue -d $domain"
|
||||
[[ "$sub_type" == "www" ]] && acme_cmd="$acme_cmd -d www.$domain"
|
||||
$acme_cmd -w /var/www/html --server letsencrypt --ecc --force
|
||||
|
||||
Reference in New Issue
Block a user