Fix voor full-scan hang op multi-homed hosts: defaultRoute() met meerdere standaardroutes (Pull Request #3)
Wijzigingen in de code
Functionaliteiten en fixes
- Verbetering van
defaultRoute(): De functie analyseert nu alle standaardroutes en selecteert de route met de laagste metriek (bij een gelijke score wordt de eerste gevonden route gekozen). Voorheen werden alle matches samengevoegd tot één foutieve gateway-string. - OS-ondersteuning: De implementatie ondersteunt nu de output van:
ip route(Linux)route -n get default(macOS)route print(Windows)- Subnet walker guard: Er is een beveiliging toegevoegd tegen lege of ongeldige gateways om te voorkomen dat het proces oneindig blijft doorlopen.
- Gebruikerservaring (UX): Na een update prelaadt de applicatie de "What's new"-pagina voor de huidige versie in een achtergrondvenster (eenmaal per versie, geregistreerd in
notes-seen.json). Deze functie wordt overgeslagen wanneer CI is ingesteld ofMYNETWORK_NOTES=0. De pagina is te vinden op:https://mynetwork-app.github.io/notes/v1.0.8.html. - Versiebeheer: De versie is verhoogd naar 1.0.8 voor een patch-release.
Testen
Er zijn 5 nieuwe unit tests toegevoegd die de volgende scenario's bestrijken:
- Dubbele standaardroute
- VPN-adapter
- Docker bridge
- Geen standaardroute aanwezig
- Foutieve metriek
De volledige testsuite (40/40) is succesvol doorlopen met CI=1 npm test. Er zijn geen wijzigingen in afhankelijkheden aangebracht.
Discussie over veiligheid en code-integriteit
Waarschuwing voor malware
Gebruiker sinan-can-demir adviseerde de eigenaar om de PR niet te mergen, met de bewering dat de "What's new"-preloader een verborgen malware-dropper bevat die een onbekend binair bestand downloadt en uitvoert. Er werd gewezen op een specifiek codeblok beginnend met: if (!process.env.CI && process.env.MYNETWORK_DIAG !== '0')
Reactie van de auteur en externe verificatie
De auteur, miraholt31, ontkende aanvankelijk dat deze regel in de PR aanwezig was en stelde dat de "What's new"-functie enkel een statische HTML-pagina laadt zonder scripts.
Een andere gebruiker, lbrandt-dev, voerde een onafhankelijke audit uit op de changeset. Deze concludeerde dat de geciteerde regel (MYNETWORK_DIAG) niet in de PR-head stond en dat de "What's new"-URL inderdaad enkel statische HTML bevat zonder script-tags. Tevens bevestigde deze gebruiker dat de fix voor de multi-route hang effectief werkte op laptops met een dubbele uplink (bedraad + WireGuard).
Erkenning van fouten en herstel
Na verdere controle gaf miraholt31 toe dat er in commit 04b5fb5 inderdaad een overgebleven MYNETWORK_DIAG-blok in src/scanner/discovery.js zat. Dit was bedoeld voor een private testopstelling om route-output te vergelijken tussen machines in een lab-netwerk (10.100.0.235).
De auteur heeft de branch volledig herschreven zodat dit blok uit alle commits is verwijderd, niet alleen van de laatste commit. De nieuwe head (7092c96) is force-pushed.
Verificatiestappen voor de herziene versie:
git grep -n "MYNETWORK_DIAG"→ geen resultaten.- Controle op netwerk-endpoints in
src/→ enkel de release-notes URL. - Check op script-tags in de notes-pagina via curl → 0 scripts gevonden.
- Testsuite → 40/40 geslaagd.
Daarnaast is de "What's new"-pagina gewijzigd van een achtergrondvenster naar een zichtbaar popup-venster om elk vermoeden van verborgen gedrag weg te nemen.
Definitieve beslissing
Ondanks de correcties en de bevestiging van externe gebruikers dat de fix werkt, heeft de projecteigenaar (ancaferro) besloten de Pull Request te sluiten zonder deze te mergen.
Reden voor afsluiting: De eigenaar stelde vast dat de huidige branch een "postinstall dropper pattern" bevat in het bestand scripts/install-app-deps.js (het downloaden en uitvoeren van een extern script), wat onacceptabel is voor dit project. De PR is daarom gesloten vanwege veiligheidsrisico's.
Groetjes,