#!/bin/bash
source /root/brln-os/scripts/.env
# Script para configurar Elements/Liquid
# Substitui as credenciais RPC no elements.conf.example

set -e

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

# Função para imprimir mensagens coloridas
print_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Caminho para o arquivo de configuração
ELEMENTS_CONFIG_FILE_EXAMPLE="/root/brln-os/container/elements/elements.conf.example"
ELEMENTS_CONFIG_FILE="/root/brln-os/container/elements/elements.conf"
ELEMENTS_DATA_DIR="/data/elements"

if sudo docker ps --format '{{.Names}}' | grep -q "^elements$"; then
    print_warning "O container elements já está em execução."
    read -p "Deseja parar e remover o container elements e bitcoin antes de reiniciar? Isso não causará perda de dados. (y/N): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        print_info "Parando e removendo o container elements existente..."
        docker-compose down -v
    else
        print_info "Mantendo o container elements atual."
    fi
fi

# Verificar se o arquivo existe
if [ ! -f "$ELEMENTS_CONFIG_FILE_EXAMPLE" ]; then
    print_error "Arquivo $ELEMENTS_CONFIG_FILE_EXAMPLE não encontrado!"
    exit 1
fi

print_info "Configurando Elements RPC credentials..."
echo
echo "Você pode utilizar credenciais locais ou as remotas do BRLN Club."
# Solicitar credenciais do usuário
echo -n "Digite o nome de usuário RPC para Elements: "
read -r rpc_user

# Validar se o usuário não está vazio
if [ -z "$rpc_user" ]; then
    print_error "Nome de usuário não pode estar vazio!"
    exit 1
fi

echo -n "Digite a senha RPC para Elements: "
read -r rpc_password
echo  # Nova linha após entrada silenciosa

# Validar se a senha não está vazia
if [ -z "$rpc_password" ]; then
    print_error "Senha não pode estar vazia!"
    exit 1
fi

# Perguntar sobre o tipo de conexão RPC
echo
print_info "Configurando tipo de conexão RPC do Bitcoin..."
echo "1) Conexão local (bitcoin)"
echo "2) Conexão remota BRLN Club (bitcoin.br-ln.com)"
echo -n "Escolha o tipo de conexão (1 ou 2): "
read -r connection_type

# Validar a escolha
case $connection_type in
    1)
        mainchain_host="bitcoin"
        rpc_port=8332
        print_info "Configurado para conexão local"
        ;;
    2)
        rpc_port=8085
        mainchain_host="bitcoin.br-ln.com"
        print_info "Configurado para conexão remota BRLN Club"
        ;;
    *)
        print_error "Opção inválida! Use 1 para local ou 2 para remoto"
        exit 1
        ;;
esac

print_info "Atualizando configurações no arquivo $ELEMENTS_CONFIG_FILE_EXAMPLE..."

# Copia para oficializar o conf
cp "$ELEMENTS_CONFIG_FILE_EXAMPLE" "$ELEMENTS_CONFIG_FILE"

# Copia o .conf para o /data para ser acessado pelo container
cp "$ELEMENTS_CONFIG_FILE" "$ELEMENTS_DATA_DIR/elements.conf"

# Substituir rpcuser usando sed
sed -i "s/^rpcuser=ELEMENTS_RPC_USER/rpcuser=$rpc_user/" "$ELEMENTS_CONFIG_FILE"
if [ $? -eq 0 ]; then
    print_info "rpcuser atualizado com sucesso"
else
    print_error "Erro ao atualizar rpcuser"
    exit 1
fi

# Substituir rpcpassword usando sed
sed -i "s/^rpcpassword=ELEMENTS_RPC_PASSWORD/rpcpassword=$rpc_password/" "$ELEMENTS_CONFIG_FILE"
if [ $? -eq 0 ]; then
    print_info "rpcpassword atualizado com sucesso"
else
    print_error "Erro ao atualizar rpcpassword"
    exit 1
fi

# Substituir mainchainrpchost usando sed
sed -i "s/^mainchainrpchost=bitcoin/mainchainrpchost=$mainchain_host/" "$ELEMENTS_CONFIG_FILE"
if [ $? -eq 0 ]; then
    print_info "mainchainrpchost atualizado para $mainchain_host"
else
    print_error "Erro ao atualizar mainchainrpchost"
    exit 1
fi

# Substituir rpcport usando sed
sed -i "s/^rpcport=8085/rpcport=$rpc_port/" "$ELEMENTS_CONFIG_FILE"
if [ $? -eq 0 ]; then
    print_info "rpcport atualizado para $rpc_port"
else
    print_error "Erro ao atualizar rpcport"
    exit 1
fi

print_info "Configuração concluída!"
print_info "As seguintes linhas foram atualizadas:"
echo "  rpcuser=$rpc_user"
echo "  rpcpassword=***"
echo "  mainchainrpchost=$mainchain_host"
echo
print_warning "Lembre-se de manter suas credenciais seguras!"
echo ""
echo -e "${CYAN}🚀 Instalando Elements...${NC}"
app="elements"

docker-compose build $app
docker-compose up -d $app
#clear

