Allow Diplonat to automatically detect it's private IP #12

Merged
adrien merged 2 commits from autodetect-private-ip into main 2021-12-28 10:56:12 +00:00
Owner

DIPLONAT_PRIVATE_IP environment variable is made optional. If it is present, it is used as the private IP announced to the IGD gateway. Otherwise Diplonat looks for an IP on the same subnet as the gateway

By the way, this also bumps Tokio to v1.0 and updates a few dependencies as well

`DIPLONAT_PRIVATE_IP` environment variable is made optional. If it is present, it is used as the private IP announced to the IGD gateway. Otherwise Diplonat looks for an IP on the same subnet as the gateway By the way, this also bumps Tokio to v1.0 and updates a few dependencies as well
lx force-pushed autodetect-private-ip from be67da3dc5 to 3b9e75634a 2021-12-25 18:23:23 +00:00 Compare
Owner

Le code est ok - je sais pas pourquoi t'as rajouté autant de ; - j'imagine que c'est ton linter qui aime pas cette syntaxe - balek, je suis juste curieux.

Par contre, il est dommage que tu attendes IgdActor::new pour résoudre l'IP privée possiblement non renseignée :

Le design pattern utilisé pour la conf, avec d'une part ConfigOpts (options de config effectivement lues) et RuntimeConfig, c'est qu'on résoud les options de conf non renseignées dans RuntimeConfig. L'objet résultant est certifié correct, ya pas de code de défense à faire dans les acteurs. L'autre intérêt, c'est qu'en cas de conf invalide, on crashe avant de spawn les acteurs.

Donc, simplement, ton code dans igd_actor.rs : if let Some(ip) = priv_ip { ... } else { ... }, il aurait plutôt sa place dans RuntimeConfigIgd::new.

Si tu veux ceriser ce gateau avec un test, ça serait cool - mais on peut merge d'abord et voir ça après.

Le code est ok - je sais pas pourquoi t'as rajouté autant de `;` - j'imagine que c'est ton linter qui aime pas cette syntaxe - balek, je suis juste curieux. Par contre, il est dommage que tu attendes `IgdActor::new` pour résoudre l'IP privée possiblement non renseignée : Le design pattern utilisé pour la conf, avec d'une part `ConfigOpts` (options de config effectivement lues) et `RuntimeConfig`, c'est qu'on résoud les options de conf non renseignées dans `RuntimeConfig`. L'objet résultant est certifié correct, ya pas de code de défense à faire dans les acteurs. L'autre intérêt, c'est qu'en cas de conf invalide, on crashe avant de spawn les acteurs. Donc, simplement, ton code dans `igd_actor.rs` : `if let Some(ip) = priv_ip { ... } else { ... }`, il aurait plutôt sa place dans `RuntimeConfigIgd::new`. Si tu veux ceriser ce gateau avec un test, ça serait cool - mais on peut merge d'abord et voir ça après.
Author
Owner

En fait j'ai pas le choix de où je cherche l'ip privée, j'ai besoin de connaître l'IP de la gateway pour sélectionner la bonne ip privée à utiliser donc je peux pas le faire avant le moment où on cherche la gateway.

Pour le test j'ai pas trop compris ce qu'il y aurait à tester ^^

Pour les ; oui c'est cargo fmt qui a rajouté ça, mais niveau lint il y a des warnings à la compilation et tout donc il y aurait encore du taf ^^'

En fait j'ai pas le choix de où je cherche l'ip privée, j'ai besoin de connaître l'IP de la gateway pour sélectionner la bonne ip privée à utiliser donc je peux pas le faire avant le moment où on cherche la gateway. Pour le test j'ai pas trop compris ce qu'il y aurait à tester ^^ Pour les `;` oui c'est cargo fmt qui a rajouté ça, mais niveau lint il y a des warnings à la compilation et tout donc il y aurait encore du taf ^^'
adrien force-pushed autodetect-private-ip from e40fcab47d to 7760b9c58f 2021-12-28 09:43:18 +00:00 Compare
Owner

Tu avais cassé "cargo test", en changeant les RuntimeOptions sans changer options_test.rs, ce qui fut réparé.

Sans ça, je suis d'accord avec toi sur le fait qu'on ne peut pas faire la recherche de l'IP privée avant l'instanciation de IGD, finalement.

Moi ça me va comme ça !

Tu avais cassé "cargo test", en changeant les RuntimeOptions sans changer `options_test.rs`, ce qui fut réparé. Sans ça, je suis d'accord avec toi sur le fait qu'on ne peut pas faire la recherche de l'IP privée avant l'instanciation de IGD, finalement. Moi ça me va comme ça !
adrien merged commit 4560622fa1 into main 2021-12-28 10:56:12 +00:00
adrien deleted branch autodetect-private-ip 2021-12-28 10:56:13 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Deuxfleurs/diplonat#12
No description provided.