Keep a persistent connection between GUI and interface management daemon
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
- Domínio
- backend-api-design, desktop, networking
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
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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de DefGuard/client
-
"Disconnect others and connect" button wraps textTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 53/100
Mantenedores costumam responder em até 1 dia
-
Dependency DashboardAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 1/100
Mantenedores costumam responder em até 1 dia
Todas as issues de DefGuard/client
Issues semelhantes
-
nn::linear: weight initialization depends on `bias` because the bias is created before the weightTalvez já em andamento @monfortema assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
LaurentMazare/tch-rs#1067 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
FavioVazquez/mollify#62 ·
-
C-enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
obi1kenobi/cargo-semver-checks#1785 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 61/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
fendouai/awesome-deepseek-harness#125 ·
Mantenedores costumam responder em até 4 dias