mirror of
https://github.com/netbirdio/netbird.git
synced 2026-05-30 04:29:57 +00:00
Thread cacheDir through NewClient -> RunOniOS -> MobileDependency.TempDir so the iOS client can pass its sandbox-writable cache directory for debug bundle zip file creation instead of os.TempDir(). Move log collection into platform-dispatched addPlatformLog(): - iOS: adds the file-based Go client log (with rotation, stderr/stdout companions and anonymization handled by addLogfile) plus the Swift app log (swift-log.log) written by the iOS app into the same log directory - Other non-Android platforms: existing file-based log + systemd fallback Narrow the debug_nonandroid.go build tag to !android && !ios so iOS no longer attempts the systemd journal fallback. Add a DebugBundle() entry point to the iOS Go client that generates a bundle, uploads it and returns the upload key. It works with or without a running engine: when the engine is up it reuses the live config, sync response and client metrics; otherwise it loads the config from disk (or the preloaded tvOS config). Guard the live config/ConnectClient behind a state mutex since DebugBundle may run on a different thread.
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
//go:build ios
|
|
|
|
package debug
|
|
|
|
import (
|
|
"path/filepath"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// swiftLogFile is the Swift app log written by the iOS app into the same log
|
|
// directory as the Go client log, so it can be collected into the bundle.
|
|
const swiftLogFile = "swift-log.log"
|
|
|
|
// addPlatformLog collects logs for the iOS debug bundle. iOS has no logcat or
|
|
// systemd journal, so we rely on file-based logs. addLogfile handles the Go
|
|
// client log (logPath) with rotation, the stderr/stdout companions and
|
|
// anonymization. The iOS app writes its own Swift log into the same directory,
|
|
// so we add it alongside the Go log.
|
|
func (g *BundleGenerator) addPlatformLog() error {
|
|
if err := g.addLogfile(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if g.logPath == "" {
|
|
return nil
|
|
}
|
|
|
|
swiftLogPath := filepath.Join(filepath.Dir(g.logPath), swiftLogFile)
|
|
if err := g.addSingleLogfile(swiftLogPath, swiftLogFile); err != nil {
|
|
// The Swift log is best-effort: the app may not have written it yet.
|
|
log.Warnf("failed to add %s to debug bundle: %v", swiftLogFile, err)
|
|
}
|
|
|
|
return nil
|
|
}
|