{{ aviso.title }}
{{ aviso.subtitle }}
{{ aviso.footer }}
Clique aqui para configurar
{{ formatMoneyBRL(dashboardKpisDisplay.revenue_forecast_30d) }}
Meu Rendimento Esperado - Próximos 30 Dias
Clientes - Subrevendas
Guard - Tentativas de Abuso
Clientes - Próprios
Clientes - Total
Clientes que venceram nos últimos 7 dias e que vão vencer em 7 dias
0 clientes| Usuário | Vencimento | Ações |
|---|---|---|
| Nenhum registro encontrado. | ||
Nenhum pacote ativo. Crie modelos em Pacotes de teste rápido.
Revendas - Subrevendas
Revendas - Próprias
Revendas - Total
Revendas com menos de 10 créditos
{{ dashboardResellersLowCredits.length }} revendasRevendas criados nos últimos 7 dias
{{ dashboardResellersLast7Days.length }} revendasAvisos e Comunicados
Inclui avisos publicados pelo administrador para toda a rede.
{{ aviso.title }}
MasterNenhum pacote disponível no momento. Volte assim que o administrador cadastrar pacotes em Pacote de Créditos (Preço).
{{ editingClientId ? 'Editar cliente' : 'Adicionar novo cliente' }}
Os dados são atualizados no painel SIGMA. Se o seu servidor fonte não sincronizar automaticamente, aplique a mesma alteração lá também.
O nome de usuário não pode ser alterado (conta no servidor).
- A senha só pode ter letras, números, traços e underline.
- A senha deve conter apenas letras e números e ter no mínimo 9 caracteres.
- A senha precisa ter no mínimo 8 caracteres.
Defina as linhas do cartão Teste Rápido no dashboard: servidor, plano, texto exibido, duração opcional e custo em créditos.
| Linha (dashboard) | Servidor | Plano | Tempo | Ações |
|---|---|---|---|---|
|
{{ row.label }}
🔞
{{ row.provider_display }}
|
{{ row.server_name || '—' }} | {{ row.plan_name || '—' }} | {{ row.duration_hours }}h Plano | |
| Nenhum pacote cadastrado. | ||||
{{ quickTestEditor.id ? 'Editar pacote' : 'Novo pacote' }}
{{ supportActiveContactId > 0 ? 'Conversa com Revenda' : 'Suporte' }}
Envie uma mensagem para iniciar seu suporte.
Conversas de Suporte
Perfil
Integrações
A ativação e configuração das formas de pagamento agora ficam na página Integrações.Nenhuma integração ativa. Nenhum resultado para este filtro ou pesquisa.
{{ sec.title }}
{{ sec.count }}Preferências da forma de pagamento
Ajuste as regras de roteamento usadas após suas formas de pagamento serem ativados.
Domínio do painel
Use um endereço próprio (ex.: painel.seudominio.com) para o painel da sua rede de revendas. Abaixo encontra o guia completo; mais em baixo regista o domínio, copia o token e verifica.
Guia passo a passo — configuração de domínio
Este fluxo liga o DNS do seu domínio ao mesmo servidor onde o Sigma já está instalado, activa HTTPS para esse nome, e prova à plataforma que controla o domínio (registo TXT ou URL HTTP). Quando o estado ficar active, os seus revendedores e sub-revendedores podem aceder pelo novo URL; neste hostname só é permitido login a contas da sua árvore de revenda.
-
O que vai precisar
Acesso ao painel DNS do domínio (Cloudflare, Registro.br, GoDaddy, etc.), acesso ao servidor (IP ou hostname do painel principal) e permissões para criar virtual host e certificado SSL. O painel Sigma já inclui o ficheiro
panel_domain_verify.phpna raiz do projecto. -
Escolher o hostname
Recomenda-se um subdomínio dedicado (ex.:
painel.cliente.com), para não conflituar com o site principal (www). No formulário desta página use só o nome: semhttps://, sem barra final. -
DNS: apontar o nome para o servidor
No fornecedor de DNS, crie um dos seguintes (propagação pode demorar de minutos a horas):
- Registo A: nome = o subdomínio escolhido (ou
@se for apex), valor = endereço IP público do servidor onde o painel corre. - Ou CNAME: nome = subdomínio, valor = o hostname onde o painel já responde hoje (ex.: o host principal do Sigma), se o seu DNS permitir CNAME nesse nível.
Confirme compingou ferramentas online que o novo nome resolve para o IP correcto antes de insistir na verificação. - Registo A: nome = o subdomínio escolhido (ou
-
Servidor web (Apache / Nginx / painel)
O novo hostname deve servir exactamente os mesmos ficheiros (mesma raiz de documentos) que o painel principal. Crie um virtual host / server block com
ServerName/server_nameigual ao hostname escolhido e a mesmaDocumentRoot/rootdo painel existente.Se o domínio apontar para outro servidor ou pasta vazia, o login e a verificação HTTP falham. -
Certificado HTTPS
Em produção, emita um certificado válido para o hostname (ex.: Let’s Encrypt com certbot, ou certificado do alojamento). O browser deve abrir
https://seu-host/sem erro de certificado antes de considerar a configuração concluída para utilizadores finais. -
Registar no painel Sigma
Na secção «Adicionar domínio» mais abaixo, introduza o hostname e clique em Gerar token e registar. O sistema guarda o domínio em estado
pendinge mostra um token único e o nome completo do registo TXT. -
Prova por DNS — registo TXT
No DNS, crie um registo TXT:
- Nome / host:
_sigma-verify.o-seu-host.com(o painel mostra o nome exacto após registar). - Valor: copie o token completo, uma linha, sem espaços extra — tem de coincidir byte a byte com o valor mostrado.
Alguns painéis DNS pedem o subdomínio só como
_sigma-verify; outros pedem o FQDN completo. Use o formato que o seu fornecedor exige para equivaler a_sigma-verify.hostname. - Nome / host:
-
Prova por HTTP (alternativa)
Com o domínio já a servir este site pela mesma raiz, o URL
https://SEU_HOST/panel_domain_verify.phpdeve responder em texto plano só com o token (sem HTML). O ficheiro na raiz do projecto já faz isso quando o host corresponde a um domínio pendente na base de dados. -
Verificar e activar
Após o TXT ou o HTTP estarem correctos e o DNS propagado, clique em Verificar na linha do domínio (ou em Verificar agora quando o token acabou de ser gerado). Se tudo estiver certo, o estado passa a
active. Se falhar, leia a coluna Último erro, corrija e volte a verificar. -
Quem pode fazer login neste URL
Neste hostname personalizado só entram utilizadores que pertencem à sua rede de revendas (árvore sob a sua conta). Contas de outras revendas ou administradores noutros contextos não autenticam aqui — é uma medida de segurança do white-label.
-
Manutenção e resolução de problemas
Desactivar suspende o uso sem apagar o registo. Apagar remove o domínio da lista (pode voltar a adicionar mais tarde). Erros frequentes: TXT com aspas a mais ou valor truncado; CNAME em conflito com outros registos; certificado SSL ainda não emitido para o novo nome; virtual host a apontar para outra pasta; cache DNS antigo — aguarde ou baixe o TTL antes de testar de novo.
Adicionar domínio
Referência rápida (TXT / HTTP)
Após registar, use os valores exactos mostrados na caixa do token. Em geral:
- TXT — nome:
_sigma-verify.SEU_HOST - TXT — valor: o token (uma linha).
HTTP: https://SEU_HOST/panel_domain_verify.php deve devolver só o token em texto plano.
{{ panelDomainLastAdded.txt_record_name || ('_sigma-verify.' + panelDomainLastAdded.hostname) }}
{{ panelDomainLastAdded.verification_token }}
Domínios registados
| Hostname | Estado | Verificado em | Último erro | Acções |
|---|---|---|---|---|
{{ d.hostname }} |
{{ d.status }} | {{ d.verified_at || '—' }} | {{ d.last_check_error }}— |
Último erro de verificação: ver detalhe na lista (campo em base de dados) ou tente novamente após propagar DNS.
Autenticação em Duas Etapas (2FA)
Proteja sua conta adicionando uma camada extra de segurança.
Só entram aqui sessões cuja última atividade ou login caem neste período. A sessão actual aparece sempre.
{{ s.device_label || s.os || '—' }}
Histórico de Logins
| USUÁRIO | IP | CONEXÕES / MÁX | REVENDA | TIPO | ASSISTINDO | TEMPO | DISPOSITIVO |
|---|---|---|---|---|---|---|---|
|
|
{{ conn.ip || '—' }} | {{ conn.connections }} / {{ conn.max_connections }} | {{ conn.reseller }} | {{ connectionStreamTypeLabel(conn.stream_type) }} |
{{ conn.watching }}
|
{{ formatLiveConnectionDuration(conn) }} | {{ conn.device }} |
|
Nenhuma conexão ativa para os filtros selecionados.
{{ err }}
|
|||||||
| DATA / HORA | CLIENTE | IP | MOTIVO | SERVIDOR |
|---|---|---|---|---|
| {{ formatDate(log.created_at) }} |
{{ log.client_name || 'Desconhecido' }}
ID: {{ log.client_id }}
|
{{ log.ip_address }} | Limite Excedido {{ log.reason }} | {{ log.server_name }} |
| Nenhuma violação registrada até o momento. | ||||
| USUÁRIO | CONEXÕES | IP | TIPO | ASSISTINDO | SERVIDOR | AÇÕES |
|---|---|---|---|---|---|---|
|
{{ conn.username }}
|
{{ conn.connections }} / {{ conn.max_connections }} | {{ conn.ip || '—' }} | {{ connectionStreamTypeLabel(conn.stream_type) }} |
{{ conn.watching }}
|
{{ conn.server_name }} | |
| Nenhuma conexão ativa encontrada. | ||||||
| CÓDIGO | DESCONTO | USOS / LIMITE | STATUS | AÇÕES |
|---|---|---|---|---|
| {{ cupom.code }} | {{ cupom.discount }} | {{ cupom.uses }} / {{ cupom.max_uses }} | {{ cupom.active ? 'Ativo' : 'Inativo' }} |
|
| Nenhum cupom cadastrado. | ||||
| CRIADO EM | ATUALIZADO EM | SITUAÇÃO | AÇÕES |
|---|---|---|---|
| {{ formatMigrationDate(job.created_at) }} | {{ formatMigrationDate(job.updated_at) }} | {{ migrationStatusLabel(job.status) }} | |
| Nenhum dado para mostrar | |||
Você pode migrar até 100 clientes de uma vez. Cole uma URL m3u com usuário e senha por linha, ex:
https://server1.xyz/get.php?username=2003516816&password=0064930062&type=m3u_plus&output=ts
https://server2.com/get.php?username=yLpfWxsvdnACT3&password=aUQZokNE75aYLZ&type=m3u_plus&output=ts
|
USUÁRIO
|
SENHA | CRIADO EM | VENCIMENTO | CONEXÕES | CRÉDITOS | TIPO DE CONEXÃO | SITUAÇÃO | LOG | |
|---|---|---|---|---|---|---|---|---|---|
| {{ row.username }} | {{ row.rowStatus === 'completed' && row.finalPassword ? row.finalPassword : row.password }} | {{ row.createdDisplay }} | {{ row.expiryDisplay }} | {{ row.connections }} | {{ row.credits }} | IPTV | Completado Erro URL inválida Selecione para Migrar | {{ row.log || '—' }} | |
{{ migrationCreditsToDeduct }} crédito(s) será(ão) deduzido(s).
| ID | NOME DA FONTE | URL API | STATUS | VOD (TMDB) | EPG | AÇÕES |
|---|---|---|---|---|---|---|
| #{{ server.id }} | {{ server.name }} | {{ server.url }} |
Sincronizado
Canais: {{ server.channels }}
Filmes: {{ server.movies }} Séries: {{ server.series }} |
Ativo
{{ server.url }}/xmltv.php...
|
|
|
| Nenhum servidor fonte cadastrado no orquestrador. | ||||||
| ID | NOME DO PACOTE | CONTEÚDO | CONEXÕES | CRÉDITOS | STATUS | AÇÕES |
|---|---|---|---|---|---|---|
| #{{ pkg.id }} | {{ pkg.name }} |
Nenhum conteúdo
{{ packageContentStats(pkg).total }}
categorias
{{ Number(packageContentItemsTotals(pkg).live).toLocaleString('pt-BR') }}
{{ Number(packageContentItemsTotals(pkg).movie).toLocaleString('pt-BR') }}
{{ packageContentStats(pkg).live }}
{{ packageContentStats(pkg).movie }}
|
{{ pkg.connections != null ? pkg.connections : 1 }} | {{ pkg.credits_cost != null ? pkg.credits_cost : 1 }} / uso | {{ pkg.status ? 'Ativo' : 'Pausado' }} |
|
| Nenhum pacote cadastrado. | ||||||
{{ isEditingPackage ? 'Editar Pacote' : 'Novo Pacote' }}
Identidade Visual
Nome do sistema, logo, cores e aparência geral do seu painel.
Modelo de Playlist
Configure o modelo de mensagem que é enviado para os seus clientes.
Funções Avançadas
Provisionamento local, DNS global, WebPlayer e outras funções técnicas.
{{ configSubPage === 'identidade' ? 'Identidade Visual' : (configSubPage === 'playlist' ? 'Modelo de Playlist' : 'Funções Avançadas') }}
Campos vazios usam o nome, a logo e o tamanho definidos pelo administrador no painel global.
Este número abre o link api.whatsapp.com/send?phone=... no ícone verde do topo — todas as revendas usam o mesmo contato.
Link gerado: https://t.me/usuario — mesmo texto inicial opcional que no WhatsApp.
Rodapé do painel
Textos exibidos na barra inferior (estilo referência: copyright à esquerda, créditos e atalho à direita).
Pré-visualização na Barra Lateral
{{ brandingPreviewIdentidade.name }}
Aguardando dados...Deixe o modelo vazio para usar o texto padrão configurado pelo administrador.
Tags Disponíveis:
{usuario}, {senha}, {plano}, {preco}, {criado_em}, {vencimento}, {conexoes}, {dns}, {link_m3u}, {link_curto_m3u}, {link_hls}, {link_curto_hls}, {link_ssiptv}
Provisionamento
URLs e Redirecionamento
get.php.
{stb_dns} na mensagem mostrará texto neutro.
{webplayer} usa o mesmo base URL do painel (pode ajustar depois).
Como funciona
O DNS global vazio é o modo recomendado: links passam a usar o mesmo domínio onde o painel está instalado. Preencha um DNS diferente só se os clientes devem abrir listas noutro host (CDN, marca branca, etc.). STB e WebPlayer não são necessários para provisionamento local nem para M3U.
| SERVIDOR | PLANO | VALOR PLANO | MEU PREÇO | CRÉDITOS | DURAÇÃO | AÇÕES |
|---|---|---|---|---|---|---|
|
{{ row.server_name || '—' }}
|
{{ formatMoneyBRL(row.price) }} | {{ row.my_price != null && row.my_price !== '' ? formatMoneyBRL(row.my_price) : '-' }} | {{ row.credits_cost }} | {{ formatPlanDurationLabel(row.duration_days) }} |
|
|
| Nenhum plano cadastrado. | ||||||
| Créditos | Valor por unidade | Total | Meu valor mínimo por unidade | Meu total | Ações |
|---|---|---|---|---|---|
| {{ row.credits }} | {{ formatMoneyBRL(row.unit_price) }} | {{ formatMoneyBRL(creditPkgLineTotal(row)) }} | {{ row.my_min_unit_price != null && row.my_min_unit_price !== '' ? formatMoneyBRL(row.my_min_unit_price) : '' }} | {{ creditPkgMyLineTotal(row) != null ? formatMoneyBRL(creditPkgMyLineTotal(row)) : '' }} | |
| Nenhum pacote cadastrado. | |||||
Cadastrar pacote de créditos
Cadastrar plano
Editar Valor do Plano
Sub-revendas vinculadas à sua conta. Créditos iniciais e transferências são debitados do seu saldo.
| USUÁRIO | CRÉDITOS | DATAS | SITUAÇÃO | REVENDA | DETALHES | AÇÕES |
|---|---|---|---|---|---|---|
|
{{ r.username }}
Revenda Master
{{ resellerProfileLabel(r.reseller_profile || r.permission_level) }}
2FA Ativada
2FA Desativada
Nível {{ resellerNivelLabel() }}
|
{{ r.credits ?? 0 }} |
Última recarga em
{{ formatResellerDate(r.last_recharge_at) }}
Criado em
{{ formatResellerDate(r.created_at) }}
Último acesso em
{{ resellerLastAccessLabel(r) }}
|
{{ resellerStatusLabel(r.account_status) }} | {{ resellerProfileEmailTrim(r) }} Usuário {{ r.username || '—' }} |
{{ resellerStatsSafe(r).primary_server_name || '—' }}
Ativo: {{ resellerStatsSafe(r).active_clients }}
Ativos Subrevendas: {{ resellerStatsSafe(r).sub_active_clients }}
Total Ativo: {{ resellerStatsSafe(r).total_active_clients }}
Conexões: {{ resellerStatsSafe(r).active_connections }}
Conexões Subrevendas: {{ resellerStatsSafe(r).sub_connections }}
Total de Conexões: {{ resellerStatsSafe(r).total_connections }}
Teste: {{ resellerStatsSafe(r).test_clients }}
|
|
| Nenhum dado para mostrar | ||||||
{{ r.username }}
{{ resellerStatusLabel(r.account_status).toUpperCase() }}Apenas a parte inteira será transferida (o sistema trunca decimais).
Você tem {{ addCreditsFormattedBalance }} créditos
Créditos ilimitados: nada será debitado da sua conta.
Saldo após a operação: ∞ créditos
{{ addCreditsFormattedDeducted }} créditos serão debitados da sua conta
Você ficará com {{ addCreditsFormattedAfter }} créditos
Saldo insuficiente para este valor.
{{ addCreditsRow.username }} receberá {{ addCreditsEffectiveAmount }} créditos
- Usuário
- {{ resellerInfoRow.username }}
- Créditos
- {{ resellerInfoRow.credits ?? 0 }}
- Perfil
- {{ resellerProfileLabel(resellerInfoRow.reseller_profile || resellerInfoRow.permission_level) }}
- Situação
- {{ resellerStatusLabel(resellerInfoRow.account_status) }}
- Nome
- {{ resellerDetailName(resellerInfoRow) }}
- {{ resellerProfileEmailTrim(resellerInfoRow) || 'Não informado' }}
- Criado
- {{ formatResellerDate(resellerInfoRow.created_at) }}
- Últ. acesso
- {{ resellerLastAccessLabel(resellerInfoRow) }}
- Ativos (diretos): {{ resellerStatsSafe(resellerInfoRow).active_clients }}
- Conexões ativas: {{ resellerStatsSafe(resellerInfoRow).active_connections }}
- Sub-revendas — ativos: {{ resellerStatsSafe(resellerInfoRow).sub_active_clients }}
Você pode definir uma mensagem para ser exibida ao revenda quando ele criar uma conta usando seu link.
Se você tiver o BotBot ativado, uma mensagem também será enviada para o WhatsApp dele. Para configurar o BotBot, vá para Automação > Configurações do BotBot.
Se deseja configurar uma configuração padrão de mensalista para novos registros, selecione o tipo abaixo e preencha os campos obrigatórios.
Esse valor adicional será somado depois do cálculo do valor por cliente. Não é multiplicado. Exemplo: se o valor por cliente for 1,00 e o revenda tiver 100 clientes a vencer e você digitar 30,00 acima, o revenda pagará 100,00 dos ativos + 30,00 = 130,00.
Deixe 0 para não fazer nenhuma recarga quando a conta for criada. O número máximo de créditos para recarregar é 100000.
Se você definir para ser no dia 10 e hoje for dia 5, o dia da renovação será definido para o dia 10 do mês atual. Se você definir para o dia 10 e hoje for dia 10, o dia da renovação será o dia 10 do próximo mês. Se você definir para o dia 10 e hoje for dia 9, o dia da renovação será no dia seguinte, o dia 10 do mês atual. Com 0, o primeiro vencimento usa a data de hoje acrescida dos dias de recorrência abaixo.
Mínimo é 1 dia, máximo é 3650 dias. Se a recorrência é 30 dias, o sistema irá renovar a data de vencimento todo mês no mesmo dia. O primeiro vencimento de cadastros pelo link é calculado automaticamente (data de hoje + estes dias).
Mínimo é 1 dia, máximo é 3650 dias. Se a recorrência é 30 dias, o sistema irá renovar a data de vencimento todo mês no mesmo dia. Com «Dia da Renovação» diferente de 0, o primeiro vencimento segue o dia do mês configurado acima.
Você pode usar o BotBot para enviar notificações automáticas de renovação via WhatsApp — visite Lembrete de Mensalista ou a página ChatBot.
Deixe 0 para desativar essa opção. O máximo de créditos para recarregar é 100000.
Deixe 0 para não cobrar um mínimo de clientes.
Deixe 0 para permitir clientes ilimitados.
Você pode usar o link de indicação abaixo para convidar outros revendas a se juntarem à sua rede. Depois do cadastro criado, talvez eles precisem comprar créditos para usar o painel.
Enquanto a assinatura padrão estiver em Nenhum, novas contas pelo link entram como revenda comum (sem mensalista automático).
Novas contas pelo link usarão a assinatura e a permissão que você definiu acima (incluindo perfil, recorrência e limites quando aplicável).
Detalhes
{{ (client.name && client.name.trim()) ? client.name : (client.username || 'Cliente') }}
Nenhum cliente para exibir.
Nenhum cliente para os filtros selecionados.
| USUÁRIO | DATAS | SITUAÇÃO | DETALHES | AÇÕES |
|---|---|---|---|---|
|
{{ client.username }}
Vence: {{ formatDate(client.expiry_date) }}
Conexões: {{ client.connections }}
{{ client.server_name }}
· {{ client.name }}
{{ clientDisplayPlanLine(client) }}
18
{{ client.email }}
|
{{ formatDate(client.expiry_date) }}
Criado em
{{ formatDate(client.created_at) }}
|
{{ isExpired(client.expiry_date) ? 'Vencido' : 'Ativo' }}
IPTV
Trava ASN
Trava ISP
Teste
|
{{ client.name }}
Plano: R$ {{ parseFloat(client.plan_price).toFixed(2).replace('.', ',') }}
Conexões: {{ client.connections }}
|
|
Nenhum cliente para os filtros selecionados.
| USUÁRIO | DATAS |
|---|---|
|
{{ deletedListUsernameOrTitle(c) }}
{{ c.name }}
{{ deletedListServerLabel(c) || '—' }} | | {{ deletedListPlanLabel(c) }}
{{ c.email || '—' }}
|
{{ formatDate(c.expiry_date || c.created_at) }}
Excluído em
{{ formatDate(c.deleted_at) }}
|
Nenhum cliente excluído para estes filtros.
Nenhum cliente excluído para estes filtros.
Top 10
Desempenho
| Revenda | Criado | Excluído | Total |
|---|---|---|---|
|
{{ statsTop10RowLabel(item) }}
{{ item.level_label }}
|
{{ item.criado }} | {{ item.excluido }} | {{ item.total }} |
| Nenhum dado encontrado | |||
Clientes Criados
| Revenda | Criado |
|---|---|
|
{{ statsTop10RowLabel(item) }}
{{ item.level_label }}
|
{{ item.criado }} |
| Nenhum dado encontrado | |
Clientes Excluídos
| Revenda | Excluído |
|---|---|
|
{{ statsTop10RowLabel(item) }}
{{ item.level_label }}
|
{{ item.excluido }} |
| Nenhum dado encontrado | |
Estatísticas
Página em desenvolvimento
A interface base do dashboard já está pronta.