Este projeto Python funciona como um cron job para verificar usuários expirados e desconectá-los automaticamente do Mikrotik Hotspot.
-
Criar novo App no EasyPanel:
- Clique em "New App"
- Escolha "Python" como template
- Conecte seu repositório GitHub
-
Configurar variáveis de ambiente:
DATABASE_URL=mysql://user:pass@host:3306/database MIKROTIK_HOST=192.168.88.1 MIKROTIK_USERNAME=admin MIKROTIK_PASSWORD=senha MIKROTIK_PORT=8728 CHECK_INTERVAL_MINUTES=5 DEFAULT_ACTIVE_TIME_MINUTES=15 RUN_ON_START=false -
Build Settings:
- Build Command:
pip install -r requirements.txt - Start Command:
python disconnect_expired_users.py
- Build Command:
- Use o Dockerfile incluído no projeto
- No EasyPanel, selecione "Docker" como build type
- Configure as mesmas variáveis de ambiente
disconnect_expired_users.py- Script principalrequirements.txt- Dependências PythonDockerfile- Para deploy via DockerREADME.md- Esta documentação
DATABASE_URL: URL completa de conexão MySQLMIKROTIK_HOST: IP do MikrotikMIKROTIK_USERNAME: Usuário do MikrotikMIKROTIK_PASSWORD: Senha do MikrotikMIKROTIK_PORT: Porta da API (padrão: 8728)CHECK_INTERVAL_MINUTES: Intervalo de verificação em minutos (padrão: 5)DEFAULT_ACTIVE_TIME_MINUTES: Tempo padrão de sessão (padrão: 15)RUN_ON_START: Se "true", executa verificação ao iniciar
- Conecta ao banco de dados MySQL
- Verifica usuários cujo
updatedAtultrapassou o tempo configurado - Para cada usuário expirado:
- Conecta ao Mikrotik via API
- Remove cookies do hotspot
- Remove sessões ativas
- Repete o processo no intervalo configurado
O sistema gera logs detalhados:
=== Mikrotik User Disconnect Cron ===
✔ Conexão com banco de dados OK
Agendando execução a cada 5 minutos
Cron job iniciado com sucesso
--- Iniciando verificação de usuários expirados ---
Usuários expirados encontrados: 2
Processando usuário: João Silva (MAC: AA:BB:CC:DD:EE:FF)
✔ Usuário desconectado
# Instalar dependências
pip install -r requirements.txt
# Executar com verificação inicial
RUN_ON_START=true python disconnect_expired_users.py- Verifique se a API está habilitada no Mikrotik
- Confirme usuário e senha
- Verifique se a porta 8728 está acessível
- Verifique o formato da DATABASE_URL
- Confirme que o banco está acessível
- Verifique permissões do usuário
- Verifique os logs para ver se foram encontrados
- Confirme o tempo em
active_time_minutes - Verifique se o MAC está correto no banco
mysql://usuario:senha@host:porta/banco
Exemplo:
mysql://root:password@localhost:3306/mikrotik_db
# Ver logs em tempo real
tail -f /var/log/app.log
# Testar conexão manualmente
python -c "from disconnect_expired_users import get_db_connection; print(get_db_connection())"
# Executar verificação manual
RUN_ON_START=true python disconnect_expired_users.py