QZDEV License Panel
Dashboard
Total de Licenças
-
Licenças Ativas
-
Licenças Expiradas
-
Validações (24h)
-
Validações Bem-sucedidas
-
Validações Falhadas
-
Gerenciar Licenças
| ID | Licença | Produto | Expira em | Status | Máquinas | Ações |
|---|---|---|---|---|---|---|
| Carregando... | ||||||
Logs de Validação
| ID | Licença | Produto | Válido | Erro | IP | Data/Hora |
|---|---|---|---|---|---|---|
| Carregando... | ||||||
Documentação da API
📋 Configuração Inicial
Para usar o sistema de autenticação, você precisa configurar os arquivos do seu resource FiveM.
🔗 Integrações (Teste)
Use estes botões para testar integrações sem precisar colar código no console.
1️⃣ Configurar auth.lua
Copie e cole este código no arquivo auth.lua na raiz do seu resource:
-- ============================================
-- SISTEMA DE VALIDAÇÃO AUTH V2 - SHARED
-- Configurações compartilhadas entre client e server
-- ============================================
-- Configuração (edite aqui)
local Config = {
API_URL = "http://SEU_IP:3000/api/validate", -- ⚠️ ALTERE: IP do servidor onde o painel está rodando
LICENSE = "QZDEV-QZ_ARSENAL-XXXXXXXXXX", -- ⚠️ ALTERE: Sua licença gerada no painel
PRODUCT = "Spotify", -- ⚠️ ALTERE: Nome EXATO do produto cadastrado no painel
TIMEOUT = 10000, -- Timeout de 10 segundos
RETRY_COUNT = 3, -- Tentativas de validação
BLOCK_IF_INVALID = true -- Bloquear script se inválido
}
-- Variável global para verificação
_G.AUTH_V2_LICENSE_VALID = false
_G.AUTH_V2_CONFIG = Config
⚠️ IMPORTANTE:
- Substitua
SEU_IPpelo IP público do servidor onde o painel está rodando - Se estiver em produção, use HTTPS:
https://seu-dominio.com/api/validate - Certifique-se de que a porta 3000 está aberta no firewall
- O nome do produto deve ser EXATAMENTE igual ao cadastrado no painel (case-sensitive)
2️⃣ Estrutura do fxmanifest.lua
Copie e cole este código no arquivo fxmanifest.lua:
fx_version 'bodacious'
game 'gta5'
-- ============================================
-- IMPORTANTE: auth.lua DEVE ser carregado PRIMEIRO
-- A validação acontece ANTES de qualquer código rodar
-- ============================================
shared_script 'auth.lua'
client_scripts {
'auth_client.lua',
'client_auth_wrapper.lua',
'client.config.lua',
'client.lua',
}
server_scripts {
'auth_server.lua',
'adapter.lua',
'server.js',
}
lua54 'yes'
ui_page 'dist/index.html'
files { 'dist/**/*' }
data_file 'DLC_ITYP_REQUEST' 'stream/rojo_jblboombox.ytyp'
⚠️ ATENÇÃO:
- O
shared_script 'auth.lua'DEVE ser o primeiro a ser carregado - Mantenha a ordem dos arquivos exatamente como mostrado
- Se você não usar o prop JBL, pode remover a última linha do
data_file
3️⃣ Arquivos Necessários
Certifique-se de ter todos os arquivos de autenticação:
✅ auth.lua - Configuração compartilhada (deve ser carregado primeiro)
✅ auth_server.lua - Validação no servidor
✅ auth_client.lua - Validação no cliente
✅ client_auth_wrapper.lua - Wrapper de autenticação
✅ adapter.lua - Adaptador de permissões
4️⃣ Como Obter sua Licença
- Acesse a aba "Licenças" no painel
- Clique em "+ Nova Licença"
- Preencha o campo "Produto" (ex: "Spotify")
- Clique no botão "🔑 Gerar" ao lado do campo "Licença"
- Uma chave única será gerada automaticamente no formato:
QZDEV-PRODUTO-XXXXXXXXXX - Configure a data de expiração e salve
- Copie a licença gerada e cole no arquivo
auth.lua
5️⃣ Código Completo - auth.lua (Copiar e Colar)
Copie este código completo e cole no arquivo auth.lua. Apenas altere os valores marcados com ⚠️:
-- ============================================
-- SISTEMA DE VALIDAÇÃO AUTH V2 - SHARED
-- Configurações compartilhadas entre client e server
-- ============================================
-- Configuração (edite aqui)
local Config = {
API_URL = "http://SEU_IP:3000/api/validate", -- ⚠️ ALTERE: IP do servidor onde o painel está rodando
LICENSE = "QZDEV-QZ_ARSENAL-XXXXXXXXXX", -- ⚠️ ALTERE: Sua licença gerada no painel
PRODUCT = "Spotify", -- ⚠️ ALTERE: Nome EXATO do produto cadastrado no painel
TIMEOUT = 10000, -- Timeout de 10 segundos
RETRY_COUNT = 3, -- Tentativas de validação
BLOCK_IF_INVALID = true -- Bloquear script se inválido
}
-- Variável global para verificação
_G.AUTH_V2_LICENSE_VALID = false
_G.AUTH_V2_CONFIG = Config
📝 Passos:
- Copie o código acima
- Cole no arquivo
auth.luana raiz do resource - Substitua
SEU_IPpelo IP da sua VPS onde o painel está rodando - Substitua
QZDEV-QZ_ARSENAL-XXXXXXXXXXpela licença gerada no painel - Substitua
Spotifypelo nome do produto cadastrado no painel - Salve o arquivo
6️⃣ Como Funciona a Validação
- Quando o resource inicia, o
auth_server.luafaz uma requisição POST para a API - A API verifica se a licença existe, está ativa e não expirou
- Verifica se o servidor já está vinculado ou se há espaço para novas máquinas
- Retorna
{ valid: true/false, expiryDate?: string, error?: string } - Se válido, o script continua funcionando. Se inválido, é bloqueado
7️⃣ Endpoint da API
POST
/api/validate
Request Body:
{
"license": "QZDEV-QZ_ARSENAL-A3B7C9D2E1",
"product": "Spotify",
"machineInfo": {
"ip": "192.168.1.100",
"hostname": "Meu Servidor",
"serverPort": "30120",
"fingerprint": "Meu Servidor-30120-192.168.1.100"
}
}
Response (Sucesso):
{
"valid": true,
"expiryDate": "2025-12-31T23:59:59.000Z"
}
Response (Erro):
{
"valid": false,
"error": "Licença não encontrada"
}
8️⃣ Troubleshooting
❌ Erro: "Licença não encontrada"
- Verifique se a licença foi criada no painel
- Confirme que o formato está correto:
QZDEV-PRODUTO-XXXXXXXXXX - Verifique se o produto corresponde exatamente (case-sensitive)
❌ Erro: "Erro ao conectar com servidor de validação"
- Verifique se o painel está rodando
- Confirme que o IP/URL está correto no
auth.lua - Verifique se a porta 3000 está aberta no firewall
- Teste acessar a URL no navegador:
http://SEU_IP:3000
❌ Erro: "Limite de máquinas atingido"
- Aumente o
max_machinesda licença no painel - Ou remova máquinas antigas vinculadas à licença
❌ Erro: "Licença expirada"
- Renove a data de expiração da licença no painel
- Ou crie uma nova licença
❌ Script não valida / sempre bloqueado
- Verifique os logs do servidor FiveM para ver o erro específico
- Confirme que o
auth.luaestá sendo carregado primeiro - Verifique se todos os arquivos de auth estão presentes
- Veja os logs de validação no painel para mais detalhes
9️⃣ Verificar Status da Validação
Você pode verificar o status das validações em tempo real:
- Acesse a aba "Logs" no painel
- Veja todas as tentativas de validação
- Verifique se houve erros e qual foi a causa
- Monitore o IP e horário das validações
🔟 Checklist de Configuração
📋 Código Completo - Copiar e Colar
Use estes códigos prontos. Apenas altere os valores marcados:
📄 auth.lua (Copiar Tudo)
-- ============================================
-- SISTEMA DE VALIDAÇÃO AUTH V2 - SHARED
-- Configurações compartilhadas entre client e server
-- ============================================
-- Configuração (edite aqui)
local Config = {
API_URL = "http://SEU_IP:3000/api/validate", -- ⚠️ ALTERE: IP do servidor onde o painel está rodando
LICENSE = "QZDEV-QZ_ARSENAL-XXXXXXXXXX", -- ⚠️ ALTERE: Sua licença gerada no painel
PRODUCT = "Spotify", -- ⚠️ ALTERE: Nome EXATO do produto cadastrado no painel
TIMEOUT = 10000, -- Timeout de 10 segundos
RETRY_COUNT = 3, -- Tentativas de validação
BLOCK_IF_INVALID = true -- Bloquear script se inválido
}
-- Variável global para verificação
_G.AUTH_V2_LICENSE_VALID = false
_G.AUTH_V2_CONFIG = Config
📄 fxmanifest.lua (Copiar Tudo)
fx_version 'bodacious'
game 'gta5'
-- ============================================
-- IMPORTANTE: auth.lua DEVE ser carregado PRIMEIRO
-- A validação acontece ANTES de qualquer código rodar
-- ============================================
shared_script 'auth.lua'
client_scripts {
'auth_client.lua',
'client_auth_wrapper.lua',
'client.config.lua',
'client.lua',
}
server_scripts {
'auth_server.lua',
'adapter.lua',
'server.js',
}
lua54 'yes'
ui_page 'dist/index.html'
files { 'dist/**/*' }
data_file 'DLC_ITYP_REQUEST' 'stream/rojo_jblboombox.ytyp'
✅ Checklist Rápido:
- Copie o código do
auth.luaacima - Cole no arquivo
auth.luana raiz do resource - Altere
SEU_IPpelo IP da sua VPS - Altere
QZDEV-QZ_ARSENAL-XXXXXXXXXXpela licença do painel - Altere
Spotifypelo nome do produto do painel - Copie o código do
fxmanifest.luaacima - Cole no arquivo
fxmanifest.lua(substitua o conteúdo) - Salve os arquivos e reinicie o resource
📞 Suporte
Se você ainda tiver problemas:
- Verifique os logs do servidor FiveM
- Consulte os logs de validação no painel (aba "Logs")
- Confirme que todas as configurações estão corretas
- Verifique se o painel está acessível do servidor FiveM