#!/bin/bash

    # Parameters
    CERT_PATH=""
    PASSPHRASE=""
    DOMAINS=""

    # Parse command line arguments
    while [[ "$#" -gt 0 ]]; do
        case $1 in
            --CertPath) CERT_PATH="$2"; shift ;;
            --Domains) DOMAINS="$2"; shift ;;
            --Passphrase) PASSPHRASE="$2"; shift ;;
            *) echo "Unknown parameter passed: $1"; exit 1 ;;
        esac
        shift
    done

    # Fix hosts file
    update_hosts_file() {
        HOSTS_FILE="/etc/hosts"
        echo "Updating $HOSTS_FILE..."

        IFS=',' read -ra DOMAIN_ARRAY <<< "$DOMAINS"
        for DOMAIN in "${DOMAIN_ARRAY[@]}"; do
            NEW_HOST_ENTRY="127.0.0.1 $DOMAIN"

            if ! grep -q "$NEW_HOST_ENTRY" "$HOSTS_FILE"; then
                echo "Adding \"$NEW_HOST_ENTRY\" to the hosts file..."
                sudo echo "$NEW_HOST_ENTRY" | sudo tee -a "$HOSTS_FILE" > /dev/null
            fi
        done
    }

    # Install certificate
    install_certificate() {
        if [ -n "$CERT_PATH" ]; then
            echo "Installing certificate... (OS type: $OSTYPE)"

            if [[ "$OSTYPE" == "linux-gnu" ]]; then
                sudo -p "Installing self-signed cert $CRT_NAME [sudo] password required: " cp -f $CRT_NAME /usr/local/share/ca-certificates/
                sudo update-ca-certificates --fresh

                echo "Installing cert for use in Chrome"
                echo "$PASSPHRASE" > /tmp/tmppwd

                if [ ! -d $HOME/.pki/nssdb ]; then
                    rm -rf $HOME/.pki/nssdb
                    echo "Creating nssdb user database"
                    mkdir -p $HOME/.pki/nssdb
                    certutil -N -d sql:$HOME/.pki/nssdb -f /tmp/tmppwd
                    chmod -R a+r $HOME/.pki/
                fi

                echo "Adding local cert to nssdb"
                certutil -d sql:$HOME/.pki/nssdb -D -n "$URL_NAME" -f /tmp/tmppwd || true
                certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "$URL_NAME" -i $CRT_NAME -f /tmp/tmppwd

            else
               sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "$CERT_PATH"
            fi

            echo "Certificate installed successfully. You may need to restart your browser to pick up the changes."
        fi
    }

    # Update hosts file if domains are provided
    if [ -n "$DOMAINS" ]; then
        update_hosts_file
    fi

    # Install certificate if CertPath is provided
    if [ -n "$CERT_PATH" ]; then
        install_certificate
    fi

    echo "Script completed."
