diff --git a/internal/routemgr/route_darwin.go b/internal/routemgr/route_darwin.go index b2c4620..209dc3e 100644 --- a/internal/routemgr/route_darwin.go +++ b/internal/routemgr/route_darwin.go @@ -11,7 +11,7 @@ import ( ) func discoverGateway() (string, error) { - cmd := exec.Command("route", "-n", "get", "default") + cmd := exec.Command("route", "-n", "get", "default") //nolint:gosec,noctx out, err := cmd.Output() if err != nil { return "", fmt.Errorf("failed to run route get default: %w", err) @@ -38,7 +38,7 @@ func addRoute(ip, gateway string) error { // Пытаемся удалить перед добавлением, игнорируем ошибку _ = delRoute(ip) - cmd := exec.Command("route", "-n", "add", "-host", ip, gateway) + cmd := exec.Command("route", "-n", "add", "-host", ip, gateway) //nolint:gosec,noctx if err := cmd.Run(); err != nil { return fmt.Errorf("failed to add route for %s via %s: %w", ip, gateway, err) } @@ -46,7 +46,7 @@ func addRoute(ip, gateway string) error { } func delRoute(ip string) error { - cmd := exec.Command("route", "-n", "delete", "-host", ip) + cmd := exec.Command("route", "-n", "delete", "-host", ip) //nolint:gosec,noctx out, err := cmd.CombinedOutput() if err != nil { if bytes.Contains(out, []byte("not in table")) { diff --git a/internal/routemgr/route_linux.go b/internal/routemgr/route_linux.go index 5cf83a4..9acf5e7 100644 --- a/internal/routemgr/route_linux.go +++ b/internal/routemgr/route_linux.go @@ -17,7 +17,7 @@ func discoverGateway() (string, error) { return "", nil } - cmd := exec.Command("ip", "-o", "-4", "route", "show", "to", "default") + cmd := exec.Command("ip", "-o", "-4", "route", "show", "to", "default") //nolint:gosec,noctx out, err := cmd.Output() if err != nil { return "", fmt.Errorf("failed to get default route: %w", err) @@ -35,7 +35,7 @@ func discoverGateway() (string, error) { } func addRoute(ip, gateway string) error { - cmd := exec.Command("ip", "route", "replace", fmt.Sprintf("%s/32", ip), "via", gateway) + cmd := exec.Command("ip", "route", "replace", fmt.Sprintf("%s/32", ip), "via", gateway) //nolint:gosec,noctx if err := cmd.Run(); err != nil { return fmt.Errorf("failed to add route for %s via %s: %w", ip, gateway, err) } @@ -43,7 +43,7 @@ func addRoute(ip, gateway string) error { } func delRoute(ip string) error { - cmd := exec.Command("ip", "route", "del", fmt.Sprintf("%s/32", ip)) + cmd := exec.Command("ip", "route", "del", fmt.Sprintf("%s/32", ip)) //nolint:gosec,noctx out, err := cmd.CombinedOutput() if err != nil { if bytes.Contains(out, []byte("No such process")) { diff --git a/internal/routemgr/route_windows.go b/internal/routemgr/route_windows.go index 73ce7f1..30425f1 100644 --- a/internal/routemgr/route_windows.go +++ b/internal/routemgr/route_windows.go @@ -11,7 +11,7 @@ import ( ) func discoverGateway() (string, error) { - cmd := exec.Command("cmd", "/c", "route", "print", "0.0.0.0") + cmd := exec.Command("cmd", "/c", "route", "print", "0.0.0.0") //nolint:gosec,noctx out, err := cmd.Output() if err != nil { return "", fmt.Errorf("failed to run route print: %w", err) @@ -38,7 +38,7 @@ func discoverGateway() (string, error) { } func addRoute(ip, gateway string) error { - cmd := exec.Command("cmd", "/c", "route", "add", ip, "mask", "255.255.255.255", gateway) + cmd := exec.Command("cmd", "/c", "route", "add", ip, "mask", "255.255.255.255", gateway) //nolint:gosec,noctx if err := cmd.Run(); err != nil { return fmt.Errorf("failed to add route for %s via %s: %w", ip, gateway, err) } @@ -46,7 +46,7 @@ func addRoute(ip, gateway string) error { } func delRoute(ip string) error { - cmd := exec.Command("cmd", "/c", "route", "delete", ip) + cmd := exec.Command("cmd", "/c", "route", "delete", ip) //nolint:gosec,noctx // Игнорируем ошибки (например, если маршрут уже удалён) _ = cmd.Run() return nil diff --git a/internal/session/session.go b/internal/session/session.go index 38310a9..4d47073 100644 --- a/internal/session/session.go +++ b/internal/session/session.go @@ -352,7 +352,9 @@ func (s *Session) relay(ctx context.Context, prov provider.Provider, peer *net.U if rmErr != nil { log.Warnf("route manager disabled: %v", rmErr) } else if rm != nil { - defer rm.Close() + defer func() { + _ = rm.Close() + }() routeCallback = rm.Callback() log.Infof("route manager: gateway=%s", rm.Gateway()) }