#!/bin/bash
rep="guacamole"

apt-get update
apt-get install -y curl wget vim

if ! which docker ; then
       curl -s -o getdocker.sh https://get.docker.com
       bash getdocker.sh
       gpasswd -a vagrant docker
fi

[[ -e "$rep" ]] || mkdir "$rep"

cd "$rep" || exit 1

cat > docker-compose.yml <<EOT
version: '3'
services:

  guacdb:
    container_name: guacdb
    image: mariadb/server:latest
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'MariaDBRootPSW'
      MYSQL_DATABASE: 'guacamole_db'
      MYSQL_USER: 'guacamole_user'
      MYSQL_PASSWORD: 'MariaDBUserPSW'
    volumes:
      - 'guacdb-data:/var/lib/mysql'
      - ./initdb:/docker-entrypoint-initdb.d

  guacd:
    container_name: guacd
    image: guacamole/guacd
    restart: unless-stopped

  guacamole:
    container_name: guacamole
    image: 'guacamole/guacamole:latest'
    restart: unless-stopped
    ports:
      - '8080:8080'
    environment:
      GUACD_HOSTNAME: "guacd"
      MYSQL_HOSTNAME: "guacdb"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USER: "guacamole_user"
      MYSQL_PASSWORD: "MariaDBUserPSW"
    depends_on:
      - guacdb
      - guacd

volumes:
  guacdb-data:
EOT


docker compose pull
# creation fichiers initialisation mariadb
[[ -e "initdb" ]] || mkdir "initdb"
cat > initdb/01-initdb.sql <<EOT
CREATE DATABASE IF NOT EXISTS guacamole_db;
EOT

echo "USE guacamole_db ;" > initdb/02-initdb.sql
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql >> initdb/02-initdb.sql
cat > initdb/03-initdb.sql <<EOT
CREATE USER IF NOT EXISTS 'guacamole_user'@'%' IDENTIFIED BY 'StrongPassw0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'%';
FLUSH PRIVILEGES;
EOT
docker compose up -d