foxcpp / foxcpp/maddy

IPC interface

Ouverte
#152 8 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
Go
Étoiles
6.1k
Forks
327
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Real use-cases:
- IMAP updates generated by maddyctl should be pushed to connected clients.

Potential use-cases:
- Introspection capabilities (such as listing enqueued messages, connected users, etc)
- It is easier to let server synchronize certain operations (take "remove message from queue" as an example) instead of breaking invariants and hoping server code will recover gracefully.

Non-use-cases:
- Moving to microservice-oriented architecture

Considerations:
- We don't intend to make IPC interface stable, thus it should be possible to detect version incompatibility between client and server to prevent problems (user accidentally having different maddyctl and maddy versions). Alternative solution is to merge maddy and maddyctl executable (having `maddy server` to run server and `maddy ctl` for various management).
- It should be possible to pass arbitrary structures (e.g. IMAP updates) and not just simple arguments.
- It should be possible to detect config mismatch between running server and filesystem, maddyctl should prefer requesting configuration from server over reading it on its own. This is important to prevent actions affecting wrong modules or not working at all.

- Access to IPC socket equals read-write access to state directory, socket should be inaccessible for untrusted programs and hence security is not considered.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par localiser les points d’entrée de maddy et maddyctl et examiner comment le serveur en cours d’exécution et la configuration du système de fichiers sont actuellement accessibles. Examinez ensuite les mécanismes existants de communication ou de gestion de l’état avant de définir la conception de l’IPC. La tâche est considérée comme terminée lorsqu’une approche approuvée couvrant les structures arbitraires, la compatibilité des versions entre le client et le serveur et la gestion des divergences de configuration a été définie.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
go
Domaine
api, backend
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
20/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.