#!/bin/bash

# Функція для перевірки успішності виконання команд
check_success() {
    if [ $? -ne 0 ]; then
        echo "Помилка: $1"
        exit 1
    fi
}

# Встановлення змінних для уникнення інтерактивних запитів
export DEBIAN_FRONTEND=noninteractive

# Генерація паролів
root_password=$(openssl rand -base64 12)
phpmyadmin_password=$(openssl rand -base64 12)
app_password=$(openssl rand -base64 12)

# Створення файлу для автоматичного налаштування phpMyAdmin
debconf-set-selections <<EOF
phpmyadmin phpmyadmin/dbconfig-install boolean true
phpmyadmin phpmyadmin/app-password-confirm password $app_password
phpmyadmin phpmyadmin/mysql/admin-pass password $root_password
phpmyadmin phpmyadmin/mysql/app-pass password $app_password
phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2
EOF

# Оновлення системи
echo "Оновлюємо систему..."
apt update && apt upgrade -y
check_success "Не вдалося оновити систему"

# Встановлення Apache
echo "Встановлюємо Apache..."
apt install -y apache2
check_success "Не вдалося встановити Apache"

# Встановлення MariaDB без запитів пароля
echo "Встановлюємо MariaDB..."
apt install -y mariadb-server mariadb-client
check_success "Не вдалося встановити MariaDB"

# Запуск і налаштування MariaDB
echo "Налаштовуємо MariaDB..."
systemctl start mariadb
systemctl enable mariadb

# Очікування запуску MariaDB
sleep 5

# Налаштування root пароля та безпеки MariaDB
mysql -u root <<EOF
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${root_password}');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
check_success "Не вдалося налаштувати MariaDB"

# Встановлення PHP та phpMyAdmin без інтерактивних запитів
echo "Встановлюємо PHP та phpMyAdmin..."
apt install -y php php-mbstring php-zip php-gd php-json php-curl
apt install -y phpmyadmin
check_success "Не вдалося встановити PHP та phpMyAdmin"

# Налаштування phpMyAdmin з Apache
echo "Налаштовуємо phpMyAdmin з Apache..."
ln -sf /usr/share/phpmyadmin /var/www/html/phpmyadmin
check_success "Не вдалося налаштувати символічне посилання для phpMyAdmin"

# Створення конфігурації Apache для phpMyAdmin
echo 'Alias /phpmyadmin /usr/share/phpmyadmin' > /etc/apache2/conf-available/phpmyadmin.conf
a2enconf phpmyadmin
systemctl reload apache2
check_success "Не вдалося налаштувати Apache для phpMyAdmin"

# Створення користувача phpMyAdmin
echo "Створюємо користувача для phpMyAdmin..."
mysql -u root -p"${root_password}" <<EOF
CREATE USER IF NOT EXISTS 'admin'@'localhost' IDENTIFIED BY '${phpmyadmin_password}';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOF
check_success "Не вдалося створити користувача phpMyAdmin"

# Кольоровий вивід результатів
GREEN="\033[0;32m"
BLUE="\033[0;34m"
RESET="\033[0m"

echo -e "${GREEN}Встановлення завершено успішно!${RESET}"
echo -e "${BLUE}Логін (phpMyAdmin):${RESET} admin"
echo -e "${BLUE}Пароль (phpMyAdmin):${RESET} ${GREEN}$phpmyadmin_password${RESET}"
echo -e "${BLUE}Пароль root (MariaDB):${RESET} ${GREEN}$root_password${RESET}"
echo -e "${BLUE}Адреса phpMyAdmin:${RESET} http://$(hostname -I | awk '{print $1}')/phpmyadmin"