RP

RangePorts

Painel Premium · Sistema IPTV

⚖ Balances 🎬 Criador de canais 🔒 Acesso protegido
RP

Bem-vindo de volta

Entre com suas credenciais para acessar o painel

RP

RangePorts

Painel Premium

Painel

Sistema IPTV

Administração

A
… Sessão ativa

Dashboard

Visão geral do seu sistema IPTV premium

📄 Documentos mais recentes

FuncionalidadeNomeCanaisAtualizado

Canais D1

FuncionalidadeCanalCategoriaURLDocumento de origemAções

Criador de canais

Crie canais com várias fontes — se uma cair, troca automaticamente · opção de excluir sozinho se ficar offline

CanalFontesFonte ativaConsumoCriadoAções

Nenhum canal criado ainda. Clique em + Novo canal.

Categorias

Crie categorias e arraste os canais criados para dentro delas

🎬 Canais criados

Arraste para uma categoria ou use + (categoria ativa)

Nenhum canal criado. Crie canais no Criador de canais.

Pacotes

Agrupe categorias e distribua para os clientes

PacoteCategoriasCanaisCriadoAções

Nenhum pacote ainda.

Clientes

Cada cliente tem uma URL registrada · 0 conexões = ilimitado · o link da lista usa o domínio atual do painel

ClienteURL registradaPacotesConexões ValidadeStatusLista M3UAções

Nenhum cliente ainda.

Usuários Online

Quem está assistindo agora — cliente, IP, canal e início da sessão · atualiza a cada 5s

ClienteIPProvedor / PaísCanal assistindoInício da sessãoDuraçãoDispositivo

Bitrate por canal

Consumo real de cada canal servido pelo painel ou pelos balances · atualiza a cada 5s

CanalOrigemAssistindoBitrateConsumoÚltima atividade

Balance

Servidores que executam os streams · sem balance, tudo roda no painel principal · fan-out por balance

Nenhum balance ainda. Clique em + Novo balance para cadastrar o IP, usuário (root) e senha — o sistema instala o agente e os canais passam a ser servidos por ele.

Logs de acesso

Quem consultou as listas e quem foi bloqueado (URL, validade, limite de conexões)

QuandoClienteTipoStatusIPHost usadoCanal

Guia de Programação (EPG)

Adicione fontes XMLTV — o sistema baixa, junta e gera o XML por cliente · a lista M3U já vem com o link embutido

➕ Adicionar fonte EPG

✨ Sugestões brasileiras (funcionando) — clique para preencher:

📺 Fontes cadastradas

Link do XML gerado (o mesmo que a lista embute): …

FonteURLStatusCanais no XMLUsado porAtualizadoAções

Nenhuma fonte adicionada ainda. Adicione o link de um XMLTV acima (ou use uma sugestão) e depois, no Criador de canais, escolha a fonte EPG de cada canal e selecione o canal da grade.

Filmes e Séries

Adicione a URL da sua lista — o painel NÃO baixa nada · os links do cliente redirecionam para o servidor de filmes

➕ Adicionar lista de filmes e séries

🎬 Como funciona (100% leve): o painel guarda só a URL e lê a lista (texto, poucos KB) para montar a M3U do cliente. Na lista que o cliente baixa, os filmes/séries aparecem com link deste sistema (/vod/{{token}}/{{lista}}/{{nº}}) e o sistema faz redirect (302) para o servidor de filmes — sem proxy: o vídeo e a capa são carregados direto do servidor de filmes. Nada pesa onde o painel roda.

🎬 Listas cadastradas

ListaURLStatusItensAtivaAtualizadoAções

Nenhuma lista adicionada. Cole a URL da sua lista de filmes/séries (M3U) acima — o painel lê o índice e os clientes veem tudo na M3U deles.

API Xtream

Conversor para apps com suporte a Xtream Codes · hospede os arquivos PHP em qualquer host · nada muda nas listas e canais atuais

🔑 Token da API

O token é embutido nos arquivos baixados — só quem tem os arquivos consegue falar com o painel. Se você regenerar, os arquivos baixados antes param de funcionar (baixe de novo).

…

🔐 Acesso ao painel externo (API Master)

Escolha qual grupo de usuários tem acesso à API Master — o painel externo (ex.: PainelMaster) que gerencia revendas, clientes e pacotes por URL + token. Com um grupo escolhido, as chamadas da API Master passam a exigir também as credenciais de um usuário do painel desse grupo (via ?usuario=&senha= ou headers X-Revenda-Usuario/X-Revenda-Senha) — sem elas, 401. “Todos os grupos” mantém o comportamento atual (só o token).

📦 Arquivos para download

Baixe os 4 arquivos e hospede juntos em qualquer lugar com PHP (cPanel, Hostinger, XAMPP, VPS…). Eles já vêm com a URL atual do painel e o token embutidos.

player_api.phpAPI completa Xtream (auth, categorias, canais, EPG, VOD/séries vazios, stream)
get.phpPlaylist M3U (m3u_plus) com os canais do cliente
xmltv.phpEPG (XMLTV) do cliente — o url-tvg da playlist
.htaccessConverte live/{user}/{pass}/{id}.m3u8 → stream real

🚀 Como usar

  1. Baixe os 4 arquivos acima e envie para o mesmo diretório do seu host PHP (ex.: public_html/ ou htdocs/).
  2. No app com suporte a Xtream (TiviMate, Smarters, IBO Player, XCIPTV…), adicione a conta:
  3. URL: o endereço de onde você hospedou (ex.: https://seusite.com)
  4. Usuário/Senha: as credenciais do cliente (aba ◉ Clientes — cada cliente tem usuário e senha, automáticos ou manuais)
  5. Pronto — o app conversa com o seu painel como se fosse um Xtream UI, mas a lista e os canais continuam no formato atual (/playlist/{token}.m3u e /stream/{token}/{canal}), com failover, fan-out, EPG, bloqueio por domínio e validade valendo normalmente.

💡 Se o host não tiver mod_rewrite (Apache), os streams ainda funcionam pelo app chamando a URL completa player_api.php?username=U&password=P&action=stream&stream_id=N — mas a maioria dos apps usa o padrão live/…, então prefira Apache com mod_rewrite.

Documento

Painel de revenda — todas as chamadas da API usando o conversor Xtream · validação por token + DNS do site onde o PHP fica

🏷️ Como funciona a revenda

Você baixa os 4 arquivos PHP (aba 🔌 API Xtream) e hospeda no site do revendedor. A validação tem duas partes:

  • 🔑 Token — embutido nos arquivos baixados. Só quem tem os arquivos consegue falar com o seu painel. Se regenerar, os arquivos antigos param de funcionar.
  • 🌐 DNS — o endereço do site onde o PHP está hospedado (ex.: revenda.com). É essa URL que o revendedor passa para os clientes: revenda.com/player_api.php?username=…&password=…

O cliente usa as credenciais dele (aba ◉ Clientes) com a URL do site da revenda. A lista e os canais continuam no formato atual do painel — failover, fan-out, EPG, bloqueio por domínio e validade valendo normalmente.

🧩 Integrar outro painel (tipo Master — URL + token)

Um painel de revenda (ex.: PainelMaster, CloudPanel etc.) pode se conectar a este sistema como um servidor do tipo Master usando apenas URL + token — sem access code, sem credenciais XUI.

  1. Na aba 🔌 API Xtream deste painel, copie o token da API (ou regenere um novo).
  2. No outro painel, crie um servidor do tipo Master e informe: URL = endereço deste painel (ex.: https://meusistema.com) e Token = o token copiado.
  3. O outro painel valida a conexão chamando {URL}/api/xtream/{token}/autenticar: 200 = token válido, 401 = token inválido (ou URL errada).
  4. Depois de conectado, o outro painel pode testar a conexão, ver o status (online/offline) e acompanhar que o RangePorts responde.

Importante: as listas e os canais continuam saindo deste painel (/playlist/{token}.m3u e /stream/{token}/{id}), sempre com o domínio de quem acessa. O outro painel não substitui este sistema — ele só valida a conexão (URL + token) e usa a API de ponte Xtream para apps. Para funcionar de verdade, o domínio do cliente continua precisando estar cadastrado aqui (ou ser o domínio deste painel).

🔄 Integração real (API Master) — revendas, clientes e pacotes

Além de validar a conexão, um painel externo (ex.: PainelMaster) pode gerenciar de verdade este sistema com o mesmo token — usuário do RangePorts (função revenda) = revenda no PainelMaster, cliente do RangePorts = cliente do PainelMaster, e os pacotes são puxados daqui. A duração dos pacotes e os testes são definidos no PainelMaster (admin) — este painel apenas registra o cliente com a validade/limite que o outro painel calculou.

  • Pacotes — GET {URL}/api/xtream/{token}/pacotes → lista com id, nome, categorias e listas de filmes/séries. O PainelMaster importa e o admin ajusta duração/teste/valor lá.
  • Clientes — GET/POST /api/xtream/{token}/clientes (lista/cria), PUT /api/xtream/{token}/clientes/{id} (edita parcial), POST /api/xtream/{token}/clientes/{id}/bloqueio (bloqueia/desbloqueia) e DELETE /api/xtream/{token}/clientes/{id} (exclui). Ao criar, devolve id, token (a playlist do cliente é /playlist/{token}.m3u), username e senha.
  • Revendas — POST /api/xtream/{token}/usuarios cria (ou devolve existente) o usuário revenda; GET /api/xtream/{token}/usuarios lista. O PainelMaster cria a revenda aqui e passa o revendaId ao criar clientes — assim os clientes da revenda do PainelMaster ficam vinculados à revenda do RangePorts.
  • Regras valendo — bloqueio, validade, limite de conexões, domínio cadastrado e vídeos (informativo/vencido/limite) continuam funcionando normalmente, pois o cliente é registrado neste painel.

🗂️ Grupos de usuários e acesso ao painel externo

Como os usuários do painel são revendas, você pode organizá-los em grupos (aba ♛ Usuários — criar/renomear/excluir grupos e encaixar cada usuário em um) e escolher qual grupo tem acesso ao painel externo (aba 🔌 API Xtream → “Acesso ao painel externo”).

  • Sem restrição (padrão) — “Todos os grupos”: a API Master funciona só com o token, como sempre.
  • Com um grupo escolhido — além do token, cada chamada da API Master exige as credenciais de um usuário do painel do grupo escolhido (função revenda): ?usuario=REV&senha=SENHA ou headers X-Revenda-Usuario/X-Revenda-Senha. Sem as credenciais → 401; usuário de outro grupo → 403.
  • Revendas criadas pelo painel externo — POST /api/xtream/{token}/usuarios aceita grupoId no body; sem ele, a revenda entra automaticamente no grupo com acesso ao painel externo (se houver um configurado).
  • Grupos na resposta — GET /api/xtream/{token}/usuarios devolve grupo_id e grupo (nome) em cada usuário.

👁 Usuários online — endpoint de monitoramento

Consulte em tempo real quem está assistindo agora (sessões de stream no painel e nos balances, atualizadas a cada 5s na aba 👁 Usuários Online). Requer sessão autenticada do painel.

GET {painel}/api/sistema/online?search={nome_ou_canal}&page=1&pageSize=50
Parâmetros: search (filtra por nome do cliente ou canal), page e pageSize (paginação). Resposta:
{
  "items": [
    { "clienteId": 37, "nome": "João Silva", "ip": "189.10.20.30",
      "provedor": "Vivo Fibra", "pais": "Brazil",
      "canalId": 12, "canal": "CANAL X",
      "userAgent": "VLC/3.0.20 LibVLC/3.0.20",
      "iniciadoEm": "2026-08-12T14:03:22.000Z" }
  ],
  "total": 1, "page": 1, "pageSize": 50
}

O mesmo dado aparece na aba 👁 Usuários Online com nome, IP (IPv4), provedor e país (GeoIP via ip-api.com, cache de 24h por IP — preenche em 2º plano nas atualizações seguintes), canal assistido, início/duração da sessão e o dispositivo (User-Agent do player). Canais servidos por balances entram na lista via heartbeat do agente (o balance precisa ter sido instalado/reinstalado com esta versão do agente).

📊 Bitrate por canal — endpoint de consumo real

Consumo real (kbps suavizado) de cada canal sendo assistido — servido pelo painel ou por um balance (chega via heartbeat do agente). Requer sessão autenticada do painel.

GET {painel}/api/sistema/bitrates?search={canal_ou_balance}&page=1&pageSize=20
Parâmetros: search (filtra por nome do canal ou do balance), page e pageSize (paginação). Resposta:
{
  "items": [
    { "canalId": 12, "canal": "CANAL X", "onde": "balance",
      "ondeNome": "Balance SP 10G", "viewers": 8,
      "kbps": 4320, "updatedAt": "2026-08-12T14:03:22.000Z" }
  ],
  "total": 1, "page": 1, "pageSize": 20,
  "totalKbps": 4320, "viewersTotal": 8
}

kbps é a média suavizada dos últimos ~5s (para converter em Mbps, divida por 1000). O mesmo dado aparece na aba 📊 Bitrate, com barra visual, viewers e origem (◈ painel ou ⚖ balance). Sem dados por 45s o canal some da lista (ninguém assistindo).

📘 Manual da revenda — passo a passo detalhado

1 · Criar o usuário da revenda

  1. Entre como administrador e abra a aba ♛ Usuários (Administração).
  2. Preencha o nome de usuário e a senha (mín. 6) e escolha a função “🔁 Revenda — cria e gerencia os clientes dela”.
  3. Clique em + Adicionar. Pronto — está criado o login do revendedor.
  4. O revendedor entra no painel com esse usuário e vê apenas a gestão de clientes (◉ Clientes e ⌘ Minha conta): ele cria, edita, bloqueia e exclui os clientes dele, mas não vê canais, pacotes, configurações nem os clientes de outros revendedores.
  5. O administrador continua vendo e gerenciando todos os clientes (os da revenda inclusive).

💡 Se a revenda precisar limitar quantos clientes ela pode criar, o controle é feito pelo pacote/validade de cada cliente — o admin acompanha tudo nos logs e nas conexões.

2 · Criar clientes (campo a campo)

Na aba ◉ Clientes, clique em + Novo cliente. O formulário em 2 colunas tem tudo:

  • Nome — identificação (ex.: “João Silva”).
  • URL registrada — o domínio do cliente (ex.: minhadns.com). A lista só funciona nesse domínio (ou nos domínios adicionais); domínio de fora → vídeo.
  • Usuário / Senha — credenciais usadas nos apps Xtream (aba 🔌 API Xtream). Vazio = automático (usuário do nome + senha aleatória); botão 🎲 gera na hora; na edição, senha vazia mantém a atual.
  • Conexões — quantos streams simultâneos; 0 = ilimitado.
  • Validade — data final (vazio = sem validade). Vencido → vídeo de vencido + link de renovação no texto da playlist.
  • Bloqueado — trava o cliente na hora (vídeo informativo).
  • Pacotes — o que o cliente recebe (categorias de canais + listas de filmes/séries); pode marcar mais de um.
  • Domínios adicionais — franquias/domínios extras do cliente (a lista funciona em todos).
  • IPs permitidos — anti-roubo: se preencher, só aceita de IPs/CIDR cadastrados; vazio = aceita qualquer IP.
  • Vídeos — pré-visualização de qual vídeo o cliente recebe quando bloqueado/vencido/sem URL (definidos em ⚙ Configurações).

Depois de salvar, aparecem o link da lista ({painel}/playlist/{token}.m3u) e os botões 📋 copiar / ⬇ baixar / ↗ abrir. Troque o token do cliente pelo link de cada um.

3 · Como os pacotes aparecem

O cliente recebe a união do que estiver marcado nos pacotes dele:

Marcado no pacoteO cliente recebe
Categoria de canais + lista de filmes/sériesCanais + Filmes e Séries
Só categorias de canaisSó canais
Só listas de filmes/sériesSó filmes e séries
Nada marcadoNada (cliente vazio)

Com vários pacotes, é a união de todos (ex.: pacote A só canais + pacote B só filmes → o cliente tem canais e filmes). Onde aparece:

  • Playlist M3U (/playlist/{token}.m3u) — os canais das categorias + os filmes/séries das listas marcadas, com links do painel.
  • Ponte Xtream (PHP na revenda) — get_live_categories/streams mostram os canais e get_vod/series mostram filmes/séries; live/…, movie/… e series/… redirecionam para o stream real.
  • EPG — se o canal tiver fonte EPG, a playlist já vem com url-tvg e o XML gerado aparece no player.

Valem as regras de sempre: domínio cadastrado ou do painel funciona; domínio de fora, cliente bloqueado, vencido ou acima do limite de conexões → o vídeo correspondente (informativo / vencido / limite, conforme ⚙ Configurações).

🌐 Dados da revenda

Deixe vazio para usar o endereço atual do painel. As chamadas abaixo são geradas com esse DNS.

URL do painel:
Token da API:

☎️ Todas as chamadas da API

Cada chamada com botão de copiar. Troque {usuario}/{senha} pelas credenciais do cliente e os ids pelos valores reais.

🛠️ Exemplo de resposta (autenticação)


        

🚀 Passo a passo da revenda

  1. Na aba 🔌 API Xtream, baixe os 4 arquivos (player_api.php, get.php, xmltv.php, .htaccess).
  2. Envie os 4 para o mesmo diretório do site do revendedor (ex.: public_html/ ou htdocs/).
  3. Anote o DNS do site (ex.: https://revenda.com) — é a URL que você informa aqui em cima.
  4. Crie o cliente na aba ◉ Clientes (usuário e senha automáticos ou manuais, com pacote, validade e conexões).
  5. Passe para o revendedor: URL = DNS do site, Usuário/Senha = credenciais do cliente.
  6. No app com suporte a Xtream (TiviMate, Smarters, IBO, XCIPTV…), o cliente entra e vê exatamente os canais/filmes do pacote dele — com failover, fan-out e EPG.

Configurações

Vídeo informativo exibido para acesso não autorizado

🏷️ Identidade do painel

🎬 Vídeo informativo

Quando alguém usa a lista com uma URL não cadastrada, com o cliente bloqueado, expirado ou acima do limite de conexões, recebe este vídeo no lugar dos canais.

Quando um cliente está com a validade vencida, recebe este vídeo no lugar do vídeo informativo. Se deixar vazio, usa o vídeo informativo padrão.

Quando o cliente atinge o limite de conexões simultâneas, recebe este vídeo no lugar do informativo. Se deixar vazio, usa o vídeo informativo padrão.

Quando o cliente está vencido, este link entra no texto da playlist (comentário + nome do canal de aviso), além do vídeo — o cliente vê onde renovar.

Com fan-out, quem assiste o mesmo canal divide uma busca na origem (economiza banda de entrada). A banda de saída para cada cliente continua individual. Clientes muito lentos são desconectados para não travar o grupo.

Quando uma fonte falha 3 vezes seguidas (erro de conexão, HTTP 4xx/5xx ou sem dados por 10s), ela é removida automaticamente do canal — sobram só as online. O cliente nem percebe: o failover já trocou para a próxima fonte antes da remoção. A última fonte nunca é removida (o canal precisa de pelo menos uma).

Documentos M3U

Backup na nuvem (Cloudflare D1)

FuncionalidadeNomeCanaisAtualizadoAções

Nenhum documento encontrado.

Documento

#Nome do canalCategoriaURL do canalAções

Usuários do painel

Gerencie quem acessa este painel · os usuários são as revendas — organize-as em grupos

🗂️ Grupos de usuários

Como os usuários do painel são revendas, os grupos organizam as revendas (ex.: Bronze, Ouro, VIP) e controlam qual grupo tem acesso ao painel externo (a API Master — aba 🔌 API Xtream). Um usuário pertence a um grupo; sem grupo = “Sem grupo”.

IDUsuárioNívelGrupoCriadoAções

Minha conta

Troque sua senha de acesso

Trocar minha senha

Todo usuário do painel pode trocar a própria senha — só precisa informar a senha atual. (Os clientes da lista IPTV não entram aqui: eles usam o token da lista, não têm login no painel.)