Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
12 changes: 4 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand All @@ -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=
Expand Down Expand Up @@ -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=
Expand Down
16 changes: 0 additions & 16 deletions lantern-core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,10 @@ package lanterncore
import (
"context"
"encoding/json"
"errors"
"fmt"
"log/slog"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
"sync"
Expand All @@ -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"
Expand Down Expand Up @@ -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
Expand Down
29 changes: 8 additions & 21 deletions lantern-core/ffi/ffi_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"time"

"github.com/getlantern/radiance/servers"
"github.com/getlantern/radiance/vpn"
"github.com/getlantern/radiance/vpn/ipc"
)

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -151,10 +152,7 @@ func startVPN(_logDir, _dataDir, _locale *C.char) *C.char {
return C.CString(err.Error())
}
Comment on lines 114 to 153
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@atavism since the status returned from the IPC now matches the VPN status' here, except all lower-case, should I just remove this function and capitalize the first character?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wtf..it grabbed the lines.. This is referring to mapIPCStateToUIStatus.


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 {
Expand Down Expand Up @@ -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)
Expand All @@ -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")
}

Expand Down
2 changes: 1 addition & 1 deletion linux/packaging/nfpm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ contents:

# lanternd service binary
- src: "${LANTERND_SRC}"
dst: /usr/sbin/lanternd
dst: "${LANTERND_DST}"
expand: true

# systemd unit
Expand Down
Loading