pitiupi

Ferramenta P2P para práticas de Redes de Computadores: núcleo em Java com arquitetura de plugins (conversa na rede e compartilhamento de tela).

Documentação completa: docs/README.md · Quickstart: docs/documentation/00_quickstart.md


Início rápido (um comando)

Na raiz do repositório:

chmod +x scripts/pitiupi.sh   # só na primeira vez
./scripts/pitiupi.sh run --all

Compila o núcleo, os plugins do catálogo, cria symlinks em PITIUPI_HOME/plugins (padrão ~/pitiupi/plugins) e abre a aplicação.

  1. Login: nome e porta (ex.: 5000).
  2. Abra plugins na aba Plugins (galeria) ou pelas ações na lista Usuários nesta rede (peer actions).
  3. P2P no mesmo PC: segunda instância com porta diferente (ex.: 5001).
./scripts/pitiupi.sh list      # ids, categorias, JAR buildado?
./scripts/pitiupi.sh check     # ferramentas + catálogo

Catálogo de plugins (plugins.registry.json)

Novos módulos entram no repositório adicionando uma entrada no JSON (não é preciso editar o script):

Campo Significado
id Usado em --plugins chat,meuJogo
dir Pasta do módulo (ex.: plugins/xadrez)
build ant ou make
jar Caminho do JAR relativo a dir
menuCategory Social, Jogos ou Streaming — filtro CLI e documentação

Plugins de referência hoje:

id Uso didático Pasta
chat Sala geral, peer por IP, TCP privado plugins/chat
screencast Multicast ou unicast de tela plugins/screencast

Na interface, o texto das abas vem de getDisplayName() em cada plugin. O campo menuCategory no JSON alinha build/link com a documentação.

./scripts/pitiupi.sh run --all
./scripts/pitiupi.sh run --category Social
./scripts/pitiupi.sh run --plugins chat,screencast
./scripts/pitiupi.sh discover   # pastas em plugins/ com SPI ainda não no catálogo

Novo plugin (resumo)

  1. Copiar estrutura de plugins/chat → plugins/meuPlugin (tutorial).
  2. Em createPlugin, registrar painel com PluginWorkspace / bindShellWorkspaceContent e, se fizer sentido, peer actions na lista lateral.
  3. Adicionar entrada em plugins.registry.json.
  4. ./scripts/pitiupi.sh link --all e reiniciar o app.

O núcleo carrega todos os *.jar em PITIUPI_HOME/plugins. Detalhes: pitiupi/plugins/README.md.


Pré-requisitos

Ferramenta Uso
JDK com javac Compilação (OpenJDK 25 recomendado; núcleo Java 17)
Apache Ant Módulos NetBeans
python3 Script scripts/pitiupi.sh (ler o catálogo)
sudo apt install openjdk-25-jdk ant
./scripts/pitiupi.sh check
cd pitiupi && ant test    # testes JUnit do núcleo

GUI: Swing — WSLg / DISPLAY=:0.


Comandos do script

Comando Ação
run Build + link + app
build Build + link
link Só symlinks (JARs já existem)
list Catálogo e status do JAR
discover Sugestão de módulos com SPI
check PATH + JSON válido

Opções: --all (padrão), --plugins ids, --category Social|Jogos|Streaming.


Teste em rede

  • Mesmo PC: duas instâncias, portas distintas (ex. 5000 e 5001).
  • Dois PCs na mesma Wi‑Fi: mesma porta (ex. 5000), nomes diferentes, mesmos JARs em ~/pitiupi/plugins em cada máquina.

Ver docs/documentation/15_testes_e_gate.md e appendix_portas_e_multicast.md.


Origem

Projeto base UFSJ (Redes). GitHub: GabrielFSSantos/pitiupi.

S
Description
Ferramenta p2p para práticas em rede
Readme
752 KiB
1 Stars 1 Watchers 0 Forks
Languages
Java 96.3%
Shell 2.7%
Batchfile 0.5%
PowerShell 0.5%