#!/bin/bash

# Download all files from keys.dvbr.net/list/
# Usage: ./download_keys.sh

BASE_URL="https://keys.dvbr.net/list"
USER="PP5PK"
DEST_DIR="$HOME/.ssh"

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Pede senha
read -sp "Senha para $USER: " PASSWORD
echo -e "\n"

if [ -z "$PASSWORD" ]; then
    echo -e "${RED}Erro: Senha não pode estar vazia${NC}"
    exit 1
fi

# Cria diretório se não existir
mkdir -p "$DEST_DIR"

echo -e "${YELLOW}Conectando a $BASE_URL...${NC}"

# Faz download do HTML da página
HTML=$(wget -qO- --user="$USER" --password="$PASSWORD" "$BASE_URL" 2>/dev/null)

if [ $? -ne 0 ] || [ -z "$HTML" ]; then
    echo -e "${RED}Erro: Não conseguiu conectar ou autenticar${NC}"
    unset PASSWORD
    exit 1
fi

# Extrai nomes de arquivo do HTML
FILES=$(echo "$HTML" | grep -oP '(?<=href=")[^"]+' | grep -v '^\?$' | grep -v '^/$' | grep -v 'icons' | sort -u)

if [ -z "$FILES" ]; then
    echo -e "${RED}Erro: Nenhum arquivo encontrado${NC}"
    unset PASSWORD
    exit 1
fi

echo -e "${GREEN}Arquivos encontrados:${NC}"
echo "$FILES"
echo ""

# Conta arquivos
COUNT=$(echo "$FILES" | wc -l)
echo -e "${YELLOW}Total: $COUNT arquivo(s)${NC}\n"

# Download de cada arquivo
DOWNLOADED=0
FAILED=0

while IFS= read -r FILE; do
    if [ -z "$FILE" ]; then
        continue
    fi
    
    echo -n "Baixando: $FILE ... "
    
    if wget -q --user="$USER" --password="$PASSWORD" \
        "$BASE_URL/$FILE" -O "$DEST_DIR/$FILE" 2>/dev/null; then
        echo -e "${GREEN}OK${NC}"
        ((DOWNLOADED++))
    else
        echo -e "${RED}FALHA${NC}"
        ((FAILED++))
    fi
done <<< "$FILES"

echo ""
echo -e "${GREEN}Resumo:${NC}"
echo "  Baixados: $DOWNLOADED"
echo "  Falhados: $FAILED"

# Configura permissões das chaves privadas (sem extensão)
echo -e "\n${YELLOW}Configurando permissões...${NC}"
while IFS= read -r FILE; do
    if [ -z "$FILE" ] || [[ "$FILE" == *.* ]]; then
        continue
    fi
    
    if [ -f "$DEST_DIR/$FILE" ]; then
        chmod 600 "$DEST_DIR/$FILE"
        echo "  chmod 600: $FILE"
    fi
done <<< "$FILES"

# Permissões de chaves públicas (.pub)
chmod 644 "$DEST_DIR"/*.pub 2>/dev/null
echo "  chmod 644: *.pub"

echo ""
echo -e "${GREEN}Pronto! Arquivos em: $DEST_DIR${NC}"

# Limpa variável de senha da memória
unset PASSWORD
