86 lines
2.6 KiB
Bash
86 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
DOMAIN="$1"
|
|
|
|
# Importer les fonctions communes
|
|
source "$(dirname "$0")/../common/common_utils.sh"
|
|
|
|
# Vérifier si le script est exécuté en root
|
|
check_root
|
|
|
|
# Vérification DNS
|
|
check_dns "$DOMAIN"
|
|
|
|
REVERSED_DOMAIN=$(echo "$DOMAIN" | awk -F. '{for(i=NF; i>0; i--) printf "%s%s", $i, (i>1 ? "." : "")}')
|
|
VHOST_CONF="/etc/apache2/sites-available/$REVERSED_DOMAIN.conf"
|
|
LE_DIR="/etc/letsencrypt/live/$DOMAIN"
|
|
BACKUP_DIR="/etc/apache2/backups"
|
|
TEMPLATE_DIR="/etc/apache2/templates"
|
|
TEMPLATE="$TEMPLATE_DIR/vhost-template.conf"
|
|
CHALLENGE_DIR="/var/www/cedrix/.well-known/acme-challenge"
|
|
PATH_URL_ACME_CHALLENGE=".well-known/acme-challenge"
|
|
TEST_FILE="test-challenge"
|
|
TEST_URL="http://${DOMAIN}/${PATH_URL_ACME_CHALLENGE}/${TEST_FILE}"
|
|
RANDOM_CONTENT=$(openssl rand -hex 12)
|
|
|
|
# Créer les dossiers nécessaires
|
|
mkdir -p "$BACKUP_DIR" "$TEMPLATE_DIR" "$CHALLENGE_DIR"
|
|
chown -R www-data:www-data "$CHALLENGE_DIR"
|
|
|
|
mkdir -p "/var/www/$REVERSED_DOMAIN"
|
|
chown -R www-data:www-data "/var/www/$REVERSED_DOMAIN"
|
|
chmod -R 755 "/var/www/$REVERSED_DOMAIN"
|
|
|
|
|
|
|
|
# Vérifier si le VirtualHost HTTP existe déjà
|
|
if [[ ! -f "$VHOST_CONF" ]]; then
|
|
echo "=== Création du fichier VirtualHost HTTP pour $DOMAIN ==="
|
|
cat > "$VHOST_CONF" <<EOF
|
|
<VirtualHost *:80>
|
|
ServerName $DOMAIN
|
|
DocumentRoot /var/www/$REVERSED_DOMAIN
|
|
ErrorLog \${APACHE_LOG_DIR}/$REVERSED_DOMAIN-error.log
|
|
CustomLog \${APACHE_LOG_DIR}/$REVERSED_DOMAIN-access.log combined
|
|
|
|
# Cedrix challenge
|
|
Alias /${PATH_URL_ACME_CHALLENGE}/ $CHALLENGE_DIR/
|
|
<Directory $CHALLENGE_DIR>
|
|
Options +Indexes
|
|
AllowOverride None
|
|
Require all granted
|
|
</Directory>
|
|
|
|
</VirtualHost>
|
|
EOF
|
|
# Activer le VirtualHost et recharger Apache
|
|
a2ensite "$REVERSED_DOMAIN"
|
|
systemctl reload apache2
|
|
else
|
|
echo "✅ VirtualHost HTTP déjà configuré pour $DOMAIN."
|
|
fi
|
|
|
|
|
|
# Vérification d'accès au dossier cedric-challenge
|
|
echo "Vérification d'accès au dossier ${PATH_URL_ACME_CHALLENGE}"
|
|
echo "$RANDOM_CONTENT" | sudo tee "$CHALLENGE_DIR/$TEST_FILE" > /dev/null
|
|
chmod 644 "$CHALLENGE_DIR/$TEST_FILE"
|
|
RESPONSE=$(curl -s "$TEST_URL")
|
|
|
|
if [[ "$RESPONSE" == "$RANDOM_CONTENT" ]]; then
|
|
echo "✅ Le dossier est accessible depuis l'extérieur."
|
|
else
|
|
echo "❌ Le dossier n'est pas accessible depuis l'extérieur."
|
|
echo "URL testée : $TEST_URL"
|
|
echo "Vérifiez votre configuration Apache/Nginx, les firewalls, les proxy et les permissions."
|
|
#sudo rm -f "$CHALLENGE_DIR/$TEST_FILE"
|
|
exit 3
|
|
fi
|
|
|
|
# Suppression du fichier test
|
|
#sudo rm -f "$CHALLENGE_DIR/$TEST_FILE"
|
|
|
|
|
|
echo "✅ Virtual Host configuré pour $DOMAIN avec succès !"
|
|
exit 0
|