Files
AyronSantos ae629d1dc2 Migração para PostgreSQL multi-driver + correções de segurança
- Camada de banco unificada (src/database.js): drivers Postgres/Firebird,
  tradutor de SQL, suporte a schema e pool de conexões
- Conexões: novo_local (Postgres externo) e firebird_local (legado)
- Tela de rotas da API redesenhada (auth, params, exemplos de body)
- Correções de segurança (críticos/altos/médios/baixos): XSS no chat,
  escalonamento de privilégio, mídia autenticada, SQL restrito a gerente,
  JWT sem fallback + issuer, IDOR em conversas, CORS por allowlist,
  rate-limit no login, limites de corpo por rota
- Deploy alinhado: install.sh grava .env com PG_*, migracoes.js driver-aware

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:02:59 -03:00

82 lines
3.8 KiB
PowerShell

# =============================================================
# Chatc2 - Script de deploy Windows -> Linux
# Uso: .\deploy.ps1 -IP 192.168.1.100
# =============================================================
param(
[Parameter(Mandatory=$true)]
[string]$IP,
[string]$User = "root",
[string]$ProjectPath = (Split-Path -Parent $PSScriptRoot),
[string]$RemotePath = "/home/chatc2/chatc2"
)
Write-Host "╔════════════════════════════════════════════╗" -ForegroundColor Cyan
Write-Host "║ Chatc2 - Deploy Windows -> Linux ║" -ForegroundColor Cyan
Write-Host "╚════════════════════════════════════════════╝" -ForegroundColor Cyan
Write-Host ""
# 1. Testar conexao SSH
Write-Host "[1/5] Testando conexao SSH..." -ForegroundColor Yellow
try {
$result = ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 "$User@$IP" "echo OK" 2>&1
if ($LASTEXITCODE -ne 0) { throw "SSH falhou" }
Write-Host " ✓ Conectado a $IP" -ForegroundColor Green
} catch {
Write-Host " ✘ Erro: $_" -ForegroundColor Red
exit 1
}
# 2. Criar diretorios no servidor
Write-Host "[2/5] Criando diretorios no servidor..." -ForegroundColor Yellow
ssh "$User@$IP" "mkdir -p $RemotePath/{db,logs,tmp,uploads/audio,public,whisper/models} 2>/dev/null; chown -R chatc2:chatc2 $RemotePath 2>/dev/null; echo 'OK'" 2>$null
Write-Host " ✓ Diretorios criados" -ForegroundColor Green
# 3. Enviar arquivos via SCP
Write-Host "[3/5] Enviando arquivos do projeto..." -ForegroundColor Yellow
Write-Host " (isso pode levar alguns minutos...)" -ForegroundColor Gray
$exclude = @('node_modules', '.git', 'db/*.FDB', 'logs', 'tmp', 'Nova pasta', 'chatc2-py', 'ponto_1', 'whisper')
$excludeArgs = ($exclude | ForEach-Object { "--exclude=$_" }) -join ' '
$scpCommand = "scp -r $excludeArgs `"$ProjectPath\*`" $User@`"$IP`":$RemotePath/"
Write-Host " Executando: scp -r (arquivos do projeto) para $IP..." -ForegroundColor Gray
try {
$result = scp -r `
--exclude='node_modules' `
--exclude='.git' `
--exclude='db/*.FDB' `
--exclude='logs' `
--exclude='tmp' `
--exclude='Nova pasta' `
--exclude='chatc2-py' `
--exclude='ponto_1' `
--exclude='whisper' `
"$ProjectPath\*" "$User@$IP`:$RemotePath/" 2>&1
if ($LASTEXITCODE -ne 0) { throw "SCP falhou" }
Write-Host " ✓ Arquivos enviados" -ForegroundColor Green
} catch {
Write-Host " ✘ Erro no SCP: $_" -ForegroundColor Red
Write-Host " Tente enviar manualmente via FileZilla ou WinSCP" -ForegroundColor Yellow
}
# 4. Ajustar permissoes
Write-Host "[4/5] Ajustando permissoes..." -ForegroundColor Yellow
ssh "$User@$IP" "chown -R chatc2:chatc2 $RemotePath 2>/dev/null; chmod -R 755 $RemotePath 2>/dev/null; echo OK" 2>$null
Write-Host " ✓ Permissoes ajustadas" -ForegroundColor Green
# 5. Instalar dependencias e rodar script de instalacao
Write-Host "[5/5] Instalando dependencias e configurando servico..." -ForegroundColor Yellow
ssh "$User@$IP" "cd $RemotePath/deploy-linux && sudo bash install.sh --continue" 2>&1 | Write-Host
Write-Host ""
Write-Host "╔════════════════════════════════════════════╗" -ForegroundColor Cyan
Write-Host "║ Deploy Concluido! ║" -ForegroundColor Cyan
Write-Host "╚════════════════════════════════════════════╝" -ForegroundColor Cyan
Write-Host ""
Write-Host " Acesse: http://$IP" -ForegroundColor Green
Write-Host " SSH: ssh $User@$IP" -ForegroundColor Gray
Write-Host " Logs: ssh $User@$IP 'pm2 logs chatc2'" -ForegroundColor Gray