# Próspero Connector

O Próspero Connector permite que o Dashboard Próspero IA hospedado na internet
consulte a API Horse e o Firebird instalados na rede do cliente sem expor a
porta 3001 na internet.

## Arquitetura

1. O navegador acessa somente a plataforma web publicada no IIS.
2. O PHP grava um comando criptografado na fila do PostgreSQL.
3. O serviço Windows `ProsperoConnector`, instalado no computador do cliente,
   consulta essa fila por HTTPS.
4. O Connector encaminha apenas rotas permitidas para
   `http://127.0.0.1:3001`.
5. O resultado volta criptografado pelo mesmo canal e é entregue ao Dashboard.

O Bearer da empresa e a sessão do usuário continuam sendo validados pela API
Horse. O Connector não acessa diretamente o Firebird e não aceita comandos SQL.

## Instalação no servidor em nuvem

Requisitos:

- Windows Server com IIS e PHP;
- PostgreSQL da plataforma Próspero IA;
- extensões PHP `curl`, `openssl`, `PDO` e `pdo_pgsql`;
- domínio com certificado HTTPS para produção.

Não é necessário instalar Node.js, serviço Delphi ou liberar uma porta para o
Connector. O pacote do servidor inclui a pasta `wwwroot` da plataforma. Extraia
o pacote e execute como administrador:

```powershell
.\Install-ProsperoConnectorServer.ps1
```

O instalador atualiza `C:\inetpub\wwwroot\prospero` e aplica
`007_connector_tunnel.sql` usando uma conta PostgreSQL proprietária das tabelas.
O usuário da aplicação não deve receber permissão para alterar o esquema. A
conexão do portal continua em
`C:\ProgramData\ProsperoIA\portal-config.php`; informe ali a URL pública HTTPS
do servidor.

## Instalação no cliente

No painel da desenvolvedora:

1. abra **Conexões de clientes**;
2. clique em **Vincular Connector**;
3. copie o endereço do servidor e o código temporário;
4. execute como administrador o instalador do pacote do cliente.

Exemplo de homologação por IP e HTTP:

```powershell
.\Install-ProsperoConnector.ps1 `
  -ServerURL 'http://IP-DO-SERVIDOR/app' `
  -CNPJ '00000000000000' `
  -EnrollmentCode 'CODIGO-GERADO' `
  -AllowInsecureHTTP
```

Em produção, use `https://painel.seudominio.com/app` e não informe
`AllowInsecureHTTP`.

## Segurança

- comunicação iniciada sempre pelo computador do cliente;
- nenhum redirecionamento de porta no roteador;
- código de vínculo de uso único com validade de 30 minutos;
- segredo do Connector armazenado como hash no servidor;
- segredo local protegido pelo DPAPI da máquina Windows;
- payload e resposta criptografados no PostgreSQL com AES-256-GCM;
- lista fechada de rotas Horse autorizadas;
- exclusão de conexão disponível somente para usuário administrativo autorizado
  e com confirmação digitada.

## Atualização

A versão inicial do Connector é `0.1.0`. O executável oficial deve ser gerado
por `client\build_release.ps1`, publicado no pacote de download e substituído no
cliente antes de reiniciar o serviço.
