import sys
from lib.configurar_api_gateway import executar_configuracao_completa
from lib.obter_configuracoes import obter_configuracoes
from lib.echo import echo
from lib.executar_validacoes_servidor_linux import executar_validacoes_servidor_linux
import os

arquivo_configuracao = None if len(sys.argv) < 2 else sys.argv[1]
diretorio_scripts_implantacao = r'c:\microuniversoWeb' if len(sys.argv) < 3 else sys.argv[2]

configuracoes = obter_configuracoes(arquivo_configuracao)

if not configuracoes:
    echo(f"Falha ao carregar configuracoes do arquivo {arquivo_configuracao}" , "error")
    exit(1)

if not configuracoes["acessos"]["servidorLinux"]["configurar"]:
    echo("Dados do servidor linux nao informados. API Gateway nao sera configurada")
    exit(0)

if not configuracoes["api-gateway"]["configurar"]:
    echo(f"Configuracao da API Gateway desativada via configuracao")
    exit(0)
    
if configuracoes["api-gateway"]["mtls"]["configurar"]:
    crt = configuracoes["api-gateway"]["mtls"]["certificados"]["enderecoCrt"]
    key = configuracoes["api-gateway"]["mtls"]["certificados"]["enderecoKey"]
    if not (os.path.isfile(crt) and os.path.isfile(key)):
        echo(f"Api Gateway nao sera configurada: Certificados mTLS não encontrados - {crt} ou {key}", "error")
        exit(0)

mensagem_erro = executar_validacoes_servidor_linux(arquivo_configuracao, diretorio_scripts_implantacao)    

if mensagem_erro:
    echo(mensagem_erro, "error")
    exit(1)

executar_configuracao_completa(configuracoes, diretorio_scripts_implantacao)

if configuracoes["api-gateway"]["mtls"]["configurar"]:
    usuario_linux = configuracoes["acessos"]["servidorLinux"]["usuario"]
    host_linux = (
        configuracoes["acessos"]["servidorLinux"]["host"]
        if "host" in configuracoes["acessos"]["servidorLinux"]
        else "192.168.18.14"
    )
    echo(
        "API Gateway mTLS configurada com validacao do certificado do cliente habilitada "
        "(ssl_verify_client on). "
        f"Confira os logs em /home/{usuario_linux}/api-gateway/logs/mtls_access.log "
        f"e /home/{usuario_linux}/api-gateway/logs/mtls_error.log. "
        f"Endpoint para teste: https://{host_linux}/enterprise/api/cobrancapixaprazo/pix"
    )
