diff --git a/Makefile b/Makefile index dabc4e9e03..f0d844e9c1 100644 --- a/Makefile +++ b/Makefile @@ -313,12 +313,15 @@ linux-release-ci: linux pubget gen patchelf --set-rpath '$$ORIGIN/lib' build/linux/x64/release/bundle/lantern || true @echo "Packaging deb, rpm, and archlinux with nfpm..." - VERSION=$(APP_VERSION) LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ + VERSION=$(APP_VERSION) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ + LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) LANTERND_DST=/usr/sbin/$(LINUX_SERVICE_NAME) \ nfpm package -f $(LINUX_PKG_ROOT)/nfpm.yaml -p deb -t $(LINUX_INSTALLER_DEB) - VERSION=$(APP_VERSION) LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ + VERSION=$(APP_VERSION) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ + LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) LANTERND_DST=/usr/sbin/$(LINUX_SERVICE_NAME) \ nfpm package -f $(LINUX_PKG_ROOT)/nfpm.yaml -p rpm -t $(LINUX_INSTALLER_RPM) - VERSION=$(APP_VERSION) LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ - nfpm package -f $(LINUX_PKG_ROOT)/nfpm.yaml -p archlinux -t $(LINUX_INSTALLER_ARCH) + VERSION=$(APP_VERSION) SYSTEMD_UNIT_SRC=$(LINUX_SYSTEMD_UNIT_DST) \ + LANTERND_SRC=$(LINUX_SERVICE_DST)/$(LINUX_SERVICE_NAME) LANTERND_DST=/usr/bin/$(LINUX_SERVICE_NAME) \ + nfpm package -f $(LINUX_PKG_ROOT)/nfpm.yaml -p archlinux -t $(LINUX_INSTALLER_ARCH) .PHONY: verify-linux-package verify-linux-package: diff --git a/go.mod b/go.mod index d1f30b7d4e..c1524941b8 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 github.com/alecthomas/assert/v2 v2.3.0 github.com/getlantern/lantern-server-provisioner v0.0.0-20251031121934-8ea031fccfa9 - github.com/getlantern/radiance v0.0.0-20260226125355-6a8df831d557 + github.com/getlantern/radiance v0.0.0-20260227010202-aaebc26205fc github.com/sagernet/sing-box v1.12.22 golang.org/x/mobile v0.0.0-20250711185624-d5bb5ecc55c0 golang.org/x/sys v0.40.0 @@ -164,7 +164,7 @@ require ( github.com/getlantern/algeneva v0.0.0-20250307163401-1824e7b54f52 // indirect github.com/getlantern/amp v0.0.0-20260113204224-600f8e8dfe5f // indirect github.com/getlantern/appdir v0.0.0-20250324200952-507a0625eb01 // indirect - github.com/getlantern/common v1.2.1-0.20260121160752-d8ee5791108f // indirect + github.com/getlantern/common v1.2.1-0.20260224184656-5aefb9c21c85 // indirect github.com/getlantern/dnstt v0.0.0-20260112160750-05100563bd0d // indirect github.com/getlantern/fronted v0.0.0-20260225205111-41c9e534027a // indirect github.com/getlantern/golog v0.0.0-20230503153817-8e72de7e0a65 // indirect diff --git a/go.sum b/go.sum index 4a52d00aa8..136c10293b 100644 --- a/go.sum +++ b/go.sum @@ -193,8 +193,8 @@ github.com/getlantern/amp v0.0.0-20260113204224-600f8e8dfe5f h1:NLGftemDrbGf7Wce github.com/getlantern/amp v0.0.0-20260113204224-600f8e8dfe5f/go.mod h1:qnMv9szb8JK3kA9W4N2FlYUMj1GkA0x7QEUEPD7tk4o= github.com/getlantern/appdir v0.0.0-20250324200952-507a0625eb01 h1:Mmeh4/DA1OKN9tVWRAvTL5efFx4c7v9/55hoK17NclA= github.com/getlantern/appdir v0.0.0-20250324200952-507a0625eb01/go.mod h1:3vR6+jQdWfWojZ77w+htCqEF5MO/Y2twJOpAvFuM9po= -github.com/getlantern/common v1.2.1-0.20260121160752-d8ee5791108f h1:EqRKCaOBuvVkFsIjeWUYluE4s4TZtVQSClfIWFqcSks= -github.com/getlantern/common v1.2.1-0.20260121160752-d8ee5791108f/go.mod h1:eSSuV4bMPgQJnczBw+KWWqWNo1itzmVxC++qUBPRTt0= +github.com/getlantern/common v1.2.1-0.20260224184656-5aefb9c21c85 h1:jj2Qv6drsceI4v3krNHXSn805QDRqy7w4XMqW359Z18= +github.com/getlantern/common v1.2.1-0.20260224184656-5aefb9c21c85/go.mod h1:eSSuV4bMPgQJnczBw+KWWqWNo1itzmVxC++qUBPRTt0= github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY= github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201 h1:oEZYEpZo28Wdx+5FZo4aU7JFXu0WG/4wJWese5reQSA= github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201/go.mod h1:Y9WZUHEb+mpra02CbQ/QczLUe6f0Dezxaw5DCJlJQGo= @@ -205,8 +205,6 @@ github.com/getlantern/errors v1.0.4 h1:i2iR1M9GKj4WuingpNqJ+XQEw6i6dnAgKAmLj6ZB3 github.com/getlantern/errors v1.0.4/go.mod h1:/Foq8jtSDGP8GOXzAjeslsC4Ar/3kB+UiQH+WyV4pzY= github.com/getlantern/fdcount v0.0.0-20210503151800-5decd65b3731 h1:v+vJ3LgV4nW4xRPZo+xkADDflXLpRbG+Lv69XKWFjTQ= github.com/getlantern/fdcount v0.0.0-20210503151800-5decd65b3731/go.mod h1:XZwE+iIlAgr64OFbXKFNCllBwV4wEipPx8Hlo2gZdbM= -github.com/getlantern/fronted v0.0.0-20260219001615-7eabaa834efe h1:Q4fwCDDqgw21GGitBPXol68wbAJGBNBolNsa8MS5wXk= -github.com/getlantern/fronted v0.0.0-20260219001615-7eabaa834efe/go.mod h1:1a+iv1xzGxZWj/vCHzr8Z3dF9H1sNTuMSPHUqRsgbl0= github.com/getlantern/fronted v0.0.0-20260225205111-41c9e534027a h1:mZVn1e2boHzKk4JgKwQ4Eqhn+omowFWzPduxGHCmYRs= github.com/getlantern/fronted v0.0.0-20260225205111-41c9e534027a/go.mod h1:1a+iv1xzGxZWj/vCHzr8Z3dF9H1sNTuMSPHUqRsgbl0= github.com/getlantern/golog v0.0.0-20210606115803-bce9f9fe5a5f/go.mod h1:ZyIjgH/1wTCl+B+7yH1DqrWp6MPJqESmwmEQ89ZfhvA= @@ -244,10 +242,8 @@ github.com/getlantern/osversion v0.0.0-20240418205916-2e84a4a4e175 h1:JWH5BB2o0e github.com/getlantern/osversion v0.0.0-20240418205916-2e84a4a4e175/go.mod h1:h3S9LBmmzN/xM+lwYZHE4abzTtCTtidKtG+nxZcCZX0= github.com/getlantern/pluriconfig v0.0.0-20251126214241-8cc8bc561535 h1:rtDmW8YLAuT8r51ApR5z0d8/qjhHu3TW+divQ2C98Ac= github.com/getlantern/pluriconfig v0.0.0-20251126214241-8cc8bc561535/go.mod h1:WKJEdjMOD4IuTRYwjQHjT4bmqDl5J82RShMLxPAvi0Q= -github.com/getlantern/radiance v0.0.0-20260221215045-6049f134d863 h1:nlx+23+ieMbmXA12ZY3IMuedCsAKgp/s2Fauf8M10mk= -github.com/getlantern/radiance v0.0.0-20260221215045-6049f134d863/go.mod h1:JwM46TRAnU3PCmdhj7gar3bpHH5SQTufj7d2LSdi2tk= -github.com/getlantern/radiance v0.0.0-20260226125355-6a8df831d557 h1:Av8eCs4KU9PFdiUkn+jwd6Hb1HLX5juDIT9fzPuanWk= -github.com/getlantern/radiance v0.0.0-20260226125355-6a8df831d557/go.mod h1:KrVcQYh39cZCsKPX6Bp+m76+bRjS0VX11q4XHZeBPP4= +github.com/getlantern/radiance v0.0.0-20260227010202-aaebc26205fc h1:HkDYo2wT0zIggUZIsXYaxc++4eprJOARRPe5aEILDOw= +github.com/getlantern/radiance v0.0.0-20260227010202-aaebc26205fc/go.mod h1:nkeBEjB0/Kfh02W8LAHnLhzSHfu0Aj2ID83EZBe2Jiw= github.com/getlantern/samizdat v0.0.2 h1:PkMu6jsfUz7DLZUH2xh548XfzgPASmq5CajZyUKj/9Y= github.com/getlantern/samizdat v0.0.2/go.mod h1:uEeykQSW2/6rTjfPlj3MTTo59poSHXfAHTGgzYDkbr0= github.com/getlantern/sing v0.7.18-lantern h1:QKGgIUA3LwmKYP/7JlQTRkxj9jnP4cX2Q/B+nd8XEjo= diff --git a/lantern-core/core.go b/lantern-core/core.go index dea4f2de1e..442c53dfe5 100644 --- a/lantern-core/core.go +++ b/lantern-core/core.go @@ -3,12 +3,10 @@ package lanterncore import ( "context" "encoding/json" - "errors" "fmt" "log/slog" "os" "path/filepath" - "runtime" "strconv" "strings" "sync" @@ -24,7 +22,6 @@ import ( "github.com/getlantern/radiance/issue" "github.com/getlantern/radiance/servers" "github.com/getlantern/radiance/vpn" - "github.com/getlantern/radiance/vpn/ipc" "github.com/getlantern/lantern/lantern-core/apps" privateserver "github.com/getlantern/lantern/lantern-core/private-server" @@ -199,19 +196,6 @@ func (lc *LanternCore) initialize(opts *utils.Opts, eventEmitter utils.FlutterEv return fmt.Errorf("unable to create split tunnel handler: %v", sthErr) } - if runtime.GOOS == "linux" { - slog.Debug("Setting IPC settings path for Linux", "path", settings.GetString(settings.DataPathKey)) - if err := ipc.SetSettingsPath(context.Background(), settings.GetString(settings.DataPathKey)); err != nil { - // lanternd may not be ready yet during app startup; defer this until daemon is reachable. - if errors.Is(err, ipc.ErrIPCNotRunning) || errors.Is(err, ipc.ErrServiceIsNotReady) { - slog.Warn("Skipping IPC settings path update because lanternd is not ready", "error", err) - } else { - slog.Error("Failed to set IPC settings path", "error", err) - return fmt.Errorf("failed to set IPC settings path: %w", err) - } - } - } - lc.serverManager = lc.rad.ServerManager() lc.apiClient = lc.rad.APIHandler() lc.eventEmitter = eventEmitter diff --git a/lantern-core/ffi/ffi_linux.go b/lantern-core/ffi/ffi_linux.go index 23cd25ce35..9c3089270b 100644 --- a/lantern-core/ffi/ffi_linux.go +++ b/lantern-core/ffi/ffi_linux.go @@ -19,6 +19,7 @@ import ( "time" "github.com/getlantern/radiance/servers" + "github.com/getlantern/radiance/vpn" "github.com/getlantern/radiance/vpn/ipc" ) @@ -110,18 +111,18 @@ func startLinuxStatusPoller() { }) } -func mapIPCStateToUIStatus(state string, err error) string { +func mapIPCStateToUIStatus(state ipc.VPNStatus, err error) string { if err != nil { return string(Disconnected) } switch state { - case ipc.StatusRunning: + case ipc.Connected: return string(Connected) - case ipc.StatusConnecting, ipc.StatusInitializing: + case ipc.Connecting: return string(Connecting) - case ipc.StatusClosing: + case ipc.Disconnecting: return string(Disconnecting) - case ipc.StatusClosed: + case ipc.Disconnected: return string(Disconnected) default: return string(Disconnected) @@ -151,10 +152,7 @@ func startVPN(_logDir, _dataDir, _locale *C.char) *C.char { return C.CString(err.Error()) } - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - if err := ipc.StartService(ctx, "", ""); err != nil && !errors.Is(err, ipc.ErrServiceIsNotReady) { + if err := vpn.AutoConnect(""); err != nil && !errors.Is(err, ipc.ErrServiceIsNotReady) { sendStatusToPort(Error) if errors.Is(err, ipc.ErrIPCNotRunning) { if diagErr := requireLanternServiceAvailable(); diagErr != nil { @@ -196,10 +194,7 @@ func connectToServer(_location, _tag, _logDir, _dataDir, _locale *C.char) *C.cha return SendError(err) } - ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) - defer cancel() - - if err := ipc.StartService(ctx, group, tag); err != nil && !errors.Is(err, ipc.ErrServiceIsNotReady) { + if err := vpn.Connect(group, tag); err != nil && !errors.Is(err, ipc.ErrServiceIsNotReady) { if errors.Is(err, ipc.ErrIPCNotRunning) { if diagErr := requireLanternServiceAvailable(); diagErr != nil { return SendError(diagErr) @@ -208,14 +203,6 @@ func connectToServer(_location, _tag, _logDir, _dataDir, _locale *C.char) *C.cha return SendError(fmt.Errorf("start service failed: %w", err)) } - if tag == "" { - return C.CString("ok") - } - - if err := ipc.SelectOutbound(ctx, group, tag); err != nil { - return SendError(fmt.Errorf("select outbound failed: %w", err)) - } - return C.CString("ok") } diff --git a/linux/packaging/nfpm.yaml b/linux/packaging/nfpm.yaml index d2c41e0102..d8ba32080e 100644 --- a/linux/packaging/nfpm.yaml +++ b/linux/packaging/nfpm.yaml @@ -18,7 +18,7 @@ contents: # lanternd service binary - src: "${LANTERND_SRC}" - dst: /usr/sbin/lanternd + dst: "${LANTERND_DST}" expand: true # systemd unit