#!/bin/bash

VERSION="1.0.0"
BASE_URL="https://myftp.evorahosting.com.br"

uninstall() {
    echo "Desinstalando my-ftp..."
    launchctl unload ~/Library/LaunchAgents/com.myftp.plist 2>/dev/null
    rm -f ~/Library/LaunchAgents/com.myftp.plist
    rm -f /usr/local/bin/my-ftp
    rm -rf /usr/local/etc/my-ftp
    echo "my-ftp desinstalado!"
    exit 0
}

if [ "$1" = "-u" ] || [ "$1" = "--uninstall" ]; then
    uninstall
fi

CHAVE="${1:-}"
if [ -z "$CHAVE" ]; then
    echo -n "Digite a chave de download: "
    read -r CHAVE
fi

echo ""
echo "=== Configuracao do my-ftp ==="
echo -n "ACCESS_KEY (chave para acesso FTP): "
read -r ACCESS_KEY
if [ -z "$ACCESS_KEY" ]; then
    echo "ACCESS_KEY e obrigatoria!"
    exit 1
fi

echo -n "SHARE_ROOT (pasta de arquivos, padrao: ~/my-ftp-files): "
read -r SHARE_ROOT
if [ -z "$SHARE_ROOT" ]; then
    SHARE_ROOT="$HOME/my-ftp-files"
fi

OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$OS" in
    darwin)  OS="darwin" ;;
    *)       echo "SO nao suportado: $OS"; exit 1 ;;
esac

ARCH=$(uname -m)
case "$ARCH" in
    x86_64)  ARCH="amd64" ;;
    arm64)   ARCH="arm64" ;;
    *)       echo "Arquitetura nao suportada: $ARCH"; exit 1 ;;
esac

PLATFORM="${OS}-${ARCH}"

echo ""
echo "Plataforma detectada: $PLATFORM"
echo "Testando chave..."

RESP=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/api/download?key=$CHAVE&file=teste")
if [ "$RESP" != "200" ]; then
    echo "Erro: Chave invalida ou expirada"
    exit 1
fi

echo "Baixando my-ftp..."
TMP_FILE=$(mktemp)

curl -fsSL -o "$TMP_FILE" "$BASE_URL/api/download?key=$CHAVE&file=$PLATFORM"
CURL_EXIT=$?

if [ $CURL_EXIT -ne 0 ]; then
    echo "Erro ao baixar o binario (curl exit code: $CURL_EXIT)"
    rm -f "$TMP_FILE"
    exit 1
fi

FILE_SIZE=$(stat -f%z "$TMP_FILE" 2>/dev/null || stat -c%s "$TMP_FILE" 2>/dev/null || echo "0")
if [ "$FILE_SIZE" -lt 1000 ]; then
    echo "Arquivo baixado muito pequeno ($FILE_SIZE bytes), possivelmente erro"
    cat "$TMP_FILE"
    rm -f "$TMP_FILE"
    exit 1
fi

echo "Instalando em /usr/local/bin/my-ftp..."
sudo mv "$TMP_FILE" /usr/local/bin/my-ftp
sudo chmod +x /usr/local/bin/my-ftp

mkdir -p "$SHARE_ROOT"
mkdir -p ~/Library/LaunchAgents

echo "Criando configuracao..."
mkdir -p /usr/local/etc/my-ftp
sudo tee /usr/local/etc/my-ftp/.env << EOF
ACCESS_KEY=$ACCESS_KEY
SHARE_ROOT=$SHARE_ROOT
PORT=3000
EOF

echo "Criando servico launchd..."
sudo tee ~/Library/LaunchAgents/com.myftp.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myftp</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/my-ftp</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>ACCESS_KEY</key>
        <string>$ACCESS_KEY</string>
        <key>SHARE_ROOT</key>
        <string>$SHARE_ROOT</string>
        <key>PORT</key>
        <string>3000</string>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/my-ftp.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/my-ftp.log</string>
</dict>
</plist>
EOF

launchctl load ~/Library/LaunchAgents/com.myftp.plist

echo ""
echo "=========================================="
echo "my-ftp instalado com sucesso!"
echo "=========================================="
echo ""
echo "Configuracao em: /usr/local/etc/my-ftp/.env"
echo "Pasta de arquivos: $SHARE_ROOT"
echo "Acesse em: http://localhost:3000"
echo ""
echo "Para desinstalar: $0 -u"
