#!/bin/bash

# Configurações de SSH
SSH_USER="root"
SSH_HOST="65.109.131.241"
SSH_PASSWORD="3tJAKNiE3tdXe4HuFnkU" # Substitua pela senha ou configure chave SSH e remova essa variável

# Verifica se o domínio foi fornecido como argumento
if [ -z "$1" ]; then
  echo "Uso: $0 dominio.com"
  exit 1
fi

# Recebe o domínio do argumento
DOMAIN=$1

# Gera o prefixo com no máximo 12 caracteres
PREFIX=$(echo "$DOMAIN" | tr -d '.' | cut -c 1-12)

# Função para gerar strings aleatórias com 32 caracteres
generate_random_string() {
  tr -dc 'a-f0-9' < /dev/urandom | head -c 32
}

# Função para encontrar a próxima porta disponível via SSH
find_next_port() {
  sshpass -p "${SSH_PASSWORD}" ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} \
    "port=50001; while ss -tuln | grep -q \":\$port \"; do port=\$((port + 1)); done; echo \$port"
}

# Determina a próxima porta disponível
NEXT_PORT=$(find_next_port)

# Gera valores aleatórios para as variáveis de ambiente
MYSQL_ROOT_PASSWORD=$(generate_random_string)
MYSQL_DATABASE=$(generate_random_string)
MYSQL_USER=$(generate_random_string)
MYSQL_PASSWORD=$(generate_random_string)

# Define o nome do arquivo de saída
OUTPUT_FILE="${DOMAIN}.yml"

# Gera o arquivo YAML com base no domínio
cat <<EOF > $OUTPUT_FILE
version: "3.7"
services:
  db:
    image: mariadb:10.6.4-focal
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - ${PREFIX}_db_data:/var/lib/mysql
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          memory: 512M
          cpus: "0.5"
        reservations:
          memory: 256M
          cpus: "0.25"
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    networks:
      - ${PREFIX}_net
  wordpress:
    image: wordpress:latest
    volumes:
      - ${PREFIX}_wp_data:/var/www/html
    ports:
      - ${NEXT_PORT}:80
    deploy:
      replicas: 1
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=${MYSQL_USER}
      - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
      - WORDPRESS_DB_NAME=${MYSQL_DATABASE}
      - WP_LOCALE=pt_BR
    networks:
      - ${PREFIX}_net

volumes:
  ${PREFIX}_db_data:
  ${PREFIX}_wp_data:

networks:
  ${PREFIX}_net:

# Comando para alterar siteurl e home no WordPress
# mysql -u root -p -e "USE ${MYSQL_DATABASE}; UPDATE wp_options SET option_value='http://${DOMAIN}' WHERE option_name IN ('siteurl', 'home');"
EOF

echo "Arquivo '${OUTPUT_FILE}' gerado com sucesso!"
echo "A porta configurada para o WordPress foi: ${NEXT_PORT}"

