🏠 Introdução ao iConect

💡 O que é o iConect?
Sistema completo de gerenciamento de Hotspots para Mikrotik com autenticação RADIUS, login via WhatsApp/CPF e pagamento PIX.

🎯 Principais Funcionalidades

  • 🔐 Autenticação RADIUS: Sistema centralizado
  • 📱 Login por WhatsApp: Código via mensagem
  • 🆔 Login por CPF/CNPJ: Identificação única
  • 💰 Pagamento PIX: Integração com gateways
  • 📦 Planos Flexíveis: Limites personalizados
  • 👥 Multi-tenancy: Super Admin, Admin, Usuários
  • 🔓 Walled Garden: Acesso livre (bancos, PIX, WhatsApp)

🏢 Hierarquia de Usuários

🟣

Super Admin

Controle total, gerencia todos os recursos

🔵

Admin

Cria e gerencia seus próprios hotspots

🟢

Usuário

Acesso aos hotspots atribuídos

🔄 Fluxo de Autenticação

1. Cliente conecta WiFi (sem senha)
   ↓
2. Mikrotik redireciona → Portal Captive
   ↓
3. Cliente escolhe login:
   • WhatsApp → Código via mensagem
   • CPF/CNPJ → Digita documento
   • Cadastro → Formulário completo
   ↓
4. Sistema valida e cria usuário RADIUS
   ↓
5. Mikrotik consulta RADIUS
   ↓
6. RADIUS autoriza (MAC + Plano)
   ↓
7. Cliente ganha acesso à Internet

⚙️ Instalação do Sistema

📋 Requisitos

  • Servidor: Linux (Ubuntu 20.04+)
  • PHP: 7.4+
  • Banco: MySQL 5.7+ ou MariaDB 10.3+
  • Extensões PHP: pdo, pdo_mysql, curl, mbstring
  • Mikrotik: RouterOS 6.x ou 7.x

🚀 Passo a Passo

1. Preparar Servidor

# Atualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar Apache + PHP + MySQL
sudo apt install apache2 php php-mysql php-curl php-mbstring mysql-server composer -y

# Habilitar módulos
sudo a2enmod rewrite ssl
sudo systemctl restart apache2

2. Configurar Banco

# Acessar MySQL
sudo mysql -u root -p

# Criar banco
CREATE DATABASE iconect CHARACTER SET utf8mb4;
CREATE USER 'iconect_user'@'localhost' IDENTIFIED BY 'senha_forte';
GRANT ALL PRIVILEGES ON iconect.* TO 'iconect_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3. Configurar config.php

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'iconect');
define('DB_USER', 'iconect_user');
define('DB_PASS', 'senha_forte');
define('RADIUS_SECRET', 'testing123');
?>

4. Importar Banco

mysql -u iconect_user -p iconect < database.sql

5. Configurar Permissões

sudo chown -R www-data:www-data /var/www/html/iconect
sudo chmod -R 755 /var/www/html/iconect
✅ Instalação Concluída!
Acesse: http://seu-servidor/iconect

📡 Configuração do Mikrotik

🔧 Cadastrar no Sistema

  1. Acesse: Mikrotiks → Adicionar
  2. Preencha:
    • Nome: Ex: "Matriz"
    • Host: IP do Mikrotik
    • Usuário SSH: admin
    • Senha SSH: senha
    • Porta SSH: 22
    • Porta API: 8728
  3. Clique em Salvar

🔐 Habilitar API

# No Mikrotik
/ip service
set api disabled=no

# Verificar
/ip service print

🌐 Configurar DNS

/ip dns
set servers=8.8.8.8,8.8.4.4
set allow-remote-requests=yes
💡 Importante: Certifique-se de que as portas 22 e 8728 estão abertas no firewall do Mikrotik.

🔐 Gerenciamento de Hotspots

➕ Criar Hotspot

  1. Acesse: Hotspots → Criar Novo
  2. Passo 1: Selecionar Mikrotik
  3. Passo 2: Escolher Interface
  4. Passo 3: IP gerado automaticamente (/22)
  5. Passo 4: Nome do hotspot
  6. Passo 5: Métodos de login
  7. Passo 6: Habilitar/desabilitar PIX
  8. Passo 7: Escolher instância WhatsApp

🎯 O que é Criado Automaticamente

No Mikrotik:

  • ✅ IP Address (/22)
  • ✅ IP Pool
  • ✅ Hotspot Server
  • ✅ DHCP Server

Segurança:

  • ✅ RADIUS configurado
  • ✅ Walled Garden (18 regras)
  • ✅ NAT Masquerade
  • ✅ WhatsApp CIDR

✏️ Editar Hotspot

  • Alterar IP: Botão ✏️
  • Configurações: Botão 🔐
  • Atribuir Usuário: Botão 👤

🗑️ Excluir Hotspot

⚠️ Atenção: Remove TUDO do Mikrotik (Server, DHCP, IP, Walled Garden). RADIUS permanece ativo.

🔑 Sistema RADIUS

🎯 O que é RADIUS?

RADIUS provê gerenciamento centralizado de Autenticação, Autorização e Accounting (AAA).

🔄 Funcionamento

Cliente → Mikrotik → RADIUS → Banco de Dados
   ↓         ↓          ↓           ↓
Conecta  Solicita  Valida    Retorna Plano

⚙️ Configuração Automática

O sistema configura automaticamente ao criar o primeiro hotspot:

/radius add
  address=IP_SERVIDOR
  secret=testing123
  service=hotspot
  timeout=3000ms
  
/radius set [find] accounting=yes

🔧 Comandos Úteis

# Ver configuração
/radius print detail

# Testar autenticação
/radius incoming test user=teste pass=123

# Ver sessões ativas
/ip hotspot active print

# Ver logs
/log print where topics~"radius"
💡 Segurança: Altere o secret padrão "testing123" em produção!

📱 Integração WhatsApp

🎯 Funcionalidades

  • 📲 Login por WhatsApp com código
  • 🔢 Código de 6 dígitos
  • ⏱️ Validade de 5 minutos
  • 🔄 Reenvio disponível
  • 📊 Multi-instância

➕ Cadastrar Instância

  1. Acesse: WhatsApp → Instâncias
  2. Clique em + Nova Instância
  3. Preencha:
    • Nome da instância
    • Tipo de API (Evolution, Z-API, etc)
    • URL da API
    • Token/API Key
  4. Escaneie o QR Code

🔗 APIs Suportadas

✅ Evolution API (Recomendado)

Open source, gratuito, múltiplas instâncias

💰 Z-API

Serviço pago, estável, suporte técnico

🔓 Walled Garden WhatsApp

Ranges liberados automaticamente:

157.240.0.0/16
31.13.64.0/18
185.60.216.0/22
179.60.192.0/22
163.70.128.0/17
102.132.96.0/20
⚠️ Importante: Mantenha pelo menos 1 instância conectada!

💰 Sistema PIX

🎯 Fluxo de Pagamento

  1. Cliente faz login no portal
  2. Sistema gera QR Code PIX
  3. Cliente escaneia e paga
  4. Webhook confirma pagamento
  5. Sistema libera acesso via RADIUS

🔗 Gateways Suportados

  • Mercado Pago: Integração completa
  • PagSeguro: Suporte a PIX
  • Asaas: API simples

🔔 Configurar Webhook

# Mercado Pago
URL: https://seudominio.com/webhook_mp.php

# No código (webhook_mp.php)
$data = json_decode(file_get_contents('php://input'), true);

if ($data['type'] === 'payment' && $data['status'] === 'approved') {
    // Criar usuário RADIUS
    // Liberar acesso
}

🔓 Walled Garden PIX

Sites liberados automaticamente:

  • ✅ Mercado Pago
  • ✅ Banco Central (BCB)
  • ✅ DICT PIX
  • ✅ Bancos (Itaú, Bradesco, BB, etc)
💡 Modo Gratuito: Se PIX estiver desabilitado, acesso é liberado sem cobrança.

📦 Gerenciamento de Planos

➕ Criar Plano

  1. Acesse: Planos → Adicionar
  2. Defina:
    • Nome: Ex: "24h - 20Mbps"
    • Preço: R$ 5,00
    • Download: 20M
    • Upload: 10M
    • Validade: 24h
    • Tráfego: 5GB

📋 Atributos RADIUS

Mikrotik-Rate-Limit = "20M/10M"
Session-Timeout = 86400  (24h em segundos)
Mikrotik-Total-Limit = 5368709120  (5GB em bytes)

🎨 Exemplos de Planos

💙 Básico

Grátis • 5/2 Mbps • 30min

💚 Padrão

R$ 5 • 20/10 Mbps • 24h

💜 Premium

R$ 20 • 100/50 Mbps • 30d

👥 Gerenciamento de Usuários

🎭 Tipos de Usuário

🟣 Super Admin

Controle total do sistema

🔵 Admin

Gerencia seus próprios hotspots

🟢 Usuário

Acesso apenas ao atribuído

➕ Criar Usuário

  1. Acesse: Usuários → Adicionar
  2. Preencha dados básicos (nome, email, senha)
  3. Escolha função (Admin ou Usuário)
  4. Defina limites (apenas Super Admin)

🎯 Atribuir Hotspot

  1. Acesse a lista de hotspots
  2. Clique no botão 👤
  3. Selecione o usuário
  4. Clique em Atribuir
💡 Nota: Usuário verá apenas hotspots atribuídos a ele.

🔧 Solução de Problemas

🔴 RADIUS não autentica

Verificar:

  • Secret igual no Mikrotik e sistema
  • Firewall liberado (portas 1812, 1813)
  • Usuário existe no banco
# Testar no Mikrotik
/radius incoming test user=teste pass=123

# Ver logs
/log print where topics~"radius"

📱 WhatsApp não envia

Soluções:

  • Verificar instância conectada
  • Validar formato do número (5571999999999)
  • Checar Walled Garden WhatsApp
  • Ver logs da API

💰 PIX não confirma

Soluções:

  • Validar URL webhook no gateway
  • Verificar HTTPS (gateways exigem)
  • Checar logs do webhook
  • Confirmar manualmente no banco

🌐 Portal não redireciona

Soluções:

  • Verificar URL no hotspot profile
  • Checar DNS no Mikrotik (8.8.8.8)
  • Testar acesso direto à URL
  • Ver logs do Apache
💡 Dica: Sempre verifique os logs primeiro!
  • Apache: /var/log/apache2/error.log
  • MySQL: /var/log/mysql/error.log
  • Mikrotik: /log print