mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-26 18:13:40 +01:00
c2e90a2a97
Configure via --hostname (or -n) flag in the `up` and `login` commands --------- Signed-off-by: Chinmay D. Pai <chinmay.pai@zerodha.com>
59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"google.golang.org/grpc/metadata"
|
|
|
|
"github.com/netbirdio/netbird/version"
|
|
)
|
|
|
|
// DeviceNameCtxKey context key for device name
|
|
const DeviceNameCtxKey = "deviceName"
|
|
|
|
// Info is an object that contains machine information
|
|
// Most of the code is taken from https://github.com/matishsiao/goInfo
|
|
type Info struct {
|
|
GoOS string
|
|
Kernel string
|
|
Core string
|
|
Platform string
|
|
OS string
|
|
OSVersion string
|
|
Hostname string
|
|
CPUs int
|
|
WiretrusteeVersion string
|
|
UIVersion string
|
|
}
|
|
|
|
// extractUserAgent extracts Netbird's agent (client) name and version from the outgoing context
|
|
func extractUserAgent(ctx context.Context) string {
|
|
md, hasMeta := metadata.FromOutgoingContext(ctx)
|
|
if hasMeta {
|
|
agent, ok := md["user-agent"]
|
|
if ok {
|
|
nbAgent := strings.Split(agent[0], " ")[0]
|
|
if strings.HasPrefix(nbAgent, "netbird") {
|
|
return nbAgent
|
|
}
|
|
return ""
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// extractDeviceName extracts device name from context or returns the default system name
|
|
func extractDeviceName(ctx context.Context, defaultName string) string {
|
|
v, ok := ctx.Value(DeviceNameCtxKey).(string)
|
|
if !ok {
|
|
return defaultName
|
|
}
|
|
return v
|
|
}
|
|
|
|
// GetDesktopUIUserAgent returns the Desktop ui user agent
|
|
func GetDesktopUIUserAgent() string {
|
|
return "netbird-desktop-ui/" + version.NetbirdVersion()
|
|
}
|