#!/bin/bash

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

uninstall() {
    echo "Desinstalando my-ftp..."
    sudo systemctl stop my-ftp 2>/dev/null
    sudo systemctl disable my-ftp 2>/dev/null
    sudo rm -f /etc/systemd/system/my-ftp.service
    sudo rm -f /usr/local/bin/my-ftp
    sudo rm -rf /usr/local/etc/my-ftp
    sudo systemctl daemon-reload
    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: /srv/my-ftp/files): "
read -r SHARE_ROOT
if [ -z "$SHARE_ROOT" ]; then
    SHARE_ROOT="/srv/my-ftp/files"
fi

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

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

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

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

RESP=$(wget -q -O - --server-response "$BASE_URL/api/download?key=$CHAVE&file=teste" 2>&1 | head -1 | awk '{print $2}')
if [ "$RESP" != "200" ]; then
    echo "Erro: Chave invalida ou expirada"
    exit 1
fi

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

wget --progress=dot:giga -O "$TMP_FILE" "$BASE_URL/api/download?key=$CHAVE&file=$PLATFORM"
WGET_EXIT=$?

if [ $WGET_EXIT -ne 0 ]; then
    echo "Erro ao baixar o binario (wget exit code: $WGET_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

echo "Criando configuracao..."
sudo 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 systemd..."
sudo tee /etc/systemd/system/my-ftp.service << 'EOF'
[Unit]
Description=My-FTP Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/my-ftp
Restart=always
RestartSec=5
EnvironmentFile=/usr/local/etc/my-ftp/.env
WorkingDirectory=/usr/local/etc/my-ftp

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now my-ftp

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"
