cmd/cli: fix reset DNS when doing self-uninstall

While at it, also using "ctrld uninstall" on unix platform, ensuring
everything is cleanup properly.
This commit is contained in:
Cuong Manh Le
2024-07-25 22:23:01 +07:00
committed by Cuong Manh Le
parent 04947b4d87
commit 905f2d08c5
4 changed files with 79 additions and 18 deletions
+5 -15
View File
@@ -1157,7 +1157,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) {
}
cdLogger := mainLog.Load().With().Str("mode", "cd").Logger()
_ = uninstallIfInvalidCdUID(err, cdLogger)
_ = uninstallIfInvalidCdUID(err, p, cdLogger)
cdLogger.Fatal().Err(err).Msg("failed to fetch resolver config")
}
}
@@ -2617,26 +2617,16 @@ func doValidateCdRemoteConfig(cdUID string) {
}
// uninstallIfInvalidCdUID performs self-uninstallation if the ControlD device does not exist.
func uninstallIfInvalidCdUID(err error, logger zerolog.Logger) bool {
func uninstallIfInvalidCdUID(err error, p *prog, logger zerolog.Logger) bool {
var uer *controld.UtilityErrorResponse
if errors.As(err, &uer) && uer.ErrorField.Code == controld.InvalidConfigCode {
s, err := newService(&prog{}, svcConfig)
s, err := newService(p, svcConfig)
if err != nil {
logger.Warn().Err(err).Msg("failed to create new service")
return false
}
if netIface, _ := netInterface(iface); netIface != nil {
if err := restoreNetworkManager(); err != nil {
logger.Error().Err(err).Msg("could not restore NetworkManager")
return false
}
logger.Debug().Str("iface", netIface.Name).Msg("Restoring DNS for interface")
if err := resetDNS(netIface); err != nil {
logger.Warn().Err(err).Msg("something went wrong while restoring DNS")
} else {
logger.Debug().Str("iface", netIface.Name).Msg("Restoring DNS successfully")
}
}
p.resetDNS()
tasks := []task{{s.Uninstall, true}}
if doTasks(tasks) {