#!/bin/bash dump_config (){ echo "========== Odoo Container Configuration ==========" echo "UUID: $UUID" echo "BRANCH: $BRANCH" echo "STAGING: $STAGING" echo echo "PostgreSQL Host: $POSTGRES_HOST" echo "PostgreSQL Port: $POSTGRES_PORT" echo "PostgreSQL Admin: $POSTGRES_ADMIN_USER / $POSTGRES_ADMIN_PASSWORD" echo "ODOO DB User: $ODOO_DB_USER" echo "ODOO DB Password: $ODOO_DB_PASSWORD" echo echo "BASEURL: $BASEURL" echo "DATA_DIR: $DATA_DIR" echo "CUSTOM_DIR: $CUSTOM_DIR" echo "ENTERPRISE_DIR: $ENTERPRISE_DIR" echo "LOGS_DIR: $LOGS_DIR" echo "CONFIG_DIR: $CONFIG_DIR" echo "CC_DIR: $CC_DIR" echo "BACKUP_DIR: $BACKUP_DIR" echo "GIT_DIR: $GIT_DIR" echo "ETC_DIR: $ETC_DIR" echo "INSTALL_DIR: $INSTALL_DIR" echo "SSH_DIR: $SSH_DIR" echo "HUGO_DIR: $HUGO_DIR" echo echo "SERVER_IP: $SERVER_IP" echo "==================================================" } # ----------------------------- # Function: Create PostgreSQL user # ----------------------------- check_and_create_db() { echo "Connecting as $POSTGRES_ADMIN_USER to $POSTGRES_HOST:$POSTGRES_PORT" # ----------------------------- # Check if user exists # ----------------------------- USER_EXISTS=$(PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='$ODOO_DB_USER';" | grep -q 1 && echo "yes" || echo "no") if [ "$USER_EXISTS" = "no" ]; then echo "Creating PostgreSQL user $ODOO_DB_USER..." PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres -c "CREATE USER \"$ODOO_DB_USER\" WITH PASSWORD '$ODOO_DB_PASSWORD';" fi # ----------------------------- # Check if database exists # ----------------------------- DB_EXISTS=$(PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres -tAc "SELECT 1 FROM pg_database WHERE datname='$UUID';" | grep -q 1 && echo "yes" || echo "no") if [ "$DB_EXISTS" = "no" ]; then /4server/sbin/ODOO_19/restore $UUID default.zip fi } # ----------------------------- # Function: Check DNS and build Traefik labels # ----------------------------- check_domains() { local domains="$1" local server_ip="$2" echo "Checking DNS resolution for domains: $domains" local filtered_domains="" for domain in $domains; do ns_ip=$(nslookup "$domain" 2>/dev/null | grep -Eo 'Address: ([0-9]{1,3}\.){3}[0-9]{1,3}' | awk '{print $2}' | tail -n1) if [[ "$ns_ip" == "$server_ip" ]]; then filtered_domains+=" $domain" fi done filtered_domains=$(echo "$filtered_domains" | xargs) DOMAIN_LABEL="" for domain in $filtered_domains; do if [ -z "$DOMAIN_LABEL" ]; then DOMAIN_LABEL="traefik.http.routers.$UUID.rule=Host(\`$domain\`)" else DOMAIN_LABEL+=" || Host(\`$domain\`)" fi done echo "$DOMAIN_LABEL" }