Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Keep a persistent connection between GUI and interface management daemon

Aberta
#505 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
30/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
grpc, rust

Direção de pesquisa

Comece rastreando a fronteira gRPC de GUI-to-daemon e os request handlers do daemon relacionados à configuração da interface wireguard-rs e ao streaming de estatísticas. Compare o comportamento atual de conexão e ciclo de vida com os requisitos de streaming bidirecional; considera-se concluído quando ambos os componentes observarem as desconexões um do outro, a criação da interface estiver vinculada a uma conexão GUI ativa e o streaming de estatísticas não deixar mais threads pendentes.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

optional for release refactoring

Context

The desktop client is split into a GUI and a separate service that runs in the background with elevated privileges to manage network interfaces.

At the moment the daemon is "dumb" and mostly stateless. It just listens for incoming gRPC requests and exposes basic functions from our wireguard-rs library.

When a request to configure a wireguard interface is received there is no notion of this request being related to any previously created interface. Each time we start with a blank slate (that's why we must provide the interface name for each request).
The daemon also has no knowledge of the state of the GUI client.

Proposal

My proposal is to leverage the bidirectional streaming functionality of gRPC to establish a persistent connection between the GUI and interface management daemon.

This would have the following advantages:

  • make both components immediately aware of any issues with the other side
  • prevent any possibility of the background service creating any interfaces unless the GUI is active (no network interface without a Defguard icon in the tray bar)
  • simplify interface stats streaming (no additional issues with dangling threads)
  • prevent constant errors in the background service caused by stats streaming thread not being aware that an interface has been disconnected
Linguagem predominante
Rust
Estrelas
370
Forks
41
Merge médio
15h 30min
PRs com merge (30d)
48

Preparar o ambiente

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de DefGuard/client

Todas as issues de DefGuard/client

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.