#!/bin/bash

CA_CERT_FILE="/ssl/ca-cert.pem"
CA_KEY_FILE="/ssl/ca-key.pem"
SERVER_CERT_FILE="/ssl/server-cert.pem"
SERVER_KEY_FILE="/ssl/server-key.pem"

if [ ! -d "/app/ssl" ]; then
    mkdir -p "/app/ssl"
fi

if [ ! -d "/app/public/documents/ssl/" ]; then
    mkdir -p "/app/public/documents/ssl/"
fi

if [ -f "$CA_CERT_FILE" ] && [ -f "$CA_KEY_FILE" ] && [ -f "$SERVER_CERT_FILE" ] && [ -f "$SERVER_KEY_FILE" ]; then
    echo "SSL Files Present. Moving Forward >>>"
else
    echo "Generating SSL Files ..."
    rm -Rf /ssl/*
    cd /ssl
    openssl genrsa 2048 >ca-key.pem
    openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem -subj "/C=/ST=/L=/O=/CN=MariaDB admin"
    openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem -subj "/C=/ST=/L=/O=/CN=MariaDB server"
    openssl rsa -in server-key.pem -out server-key.pem
    openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
    openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem -subj "/C=/ST=/L=/O=/CN=MariaDB user"
    openssl rsa -in client-key.pem -out client-key.pem
    openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
fi

chmod 755 /ssl
chmod 644 /ssl/*.pem

rm -f /app/ssl/ca-cert.pem
rm -Rf /app/ssl/*
rm -Rf /app/public/documents/ssl/*

cp /ssl/ca-cert.pem /app/ssl/
cp /ssl/ca-cert.pem /app/public/documents/ssl/

LOCAL_CONFIG_DIR="/app/jsonData/dbSchemas/users"
if [ ! -d "$LOCAL_CONFIG_DIR" ]; then
    echo "Creating Local Config Directory ..."
    mkdir -p "$LOCAL_CONFIG_DIR"
fi

##------------------
# Create SSH keys
##------------------
echo "Generating SSH keys ..."

KEY_NAME="dsql"
OUTPUT_DIR="/ssh"
PASSPHRASE=""

mkdir -p "$OUTPUT_DIR"

KEY_PATH="$OUTPUT_DIR/$KEY_NAME"

if [ ! -f "$KEY_PATH" ]; then
    echo "Generating SSH keypair..."
    ssh-keygen -t rsa -b 4096 -f "$KEY_PATH" -N "$PASSPHRASE" -q

    if [ $? -eq 0 ]; then
        echo "SSH keypair generated successfully!"
        echo "Private key: $KEY_PATH"
        echo "Public key: $KEY_PATH.pub"
    else
        echo "Error: Failed to generate SSH keypair."
        exit 1
    fi
else
    echo "SSH keypair already exists. Skipping key generation."
fi

exit 0
