2021-08-27 11:34:38 +02:00
|
|
|
package system
|
|
|
|
|
2022-05-25 23:25:02 +02:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"strings"
|
|
|
|
|
2023-03-15 07:54:51 +01:00
|
|
|
"google.golang.org/grpc/metadata"
|
2022-02-03 18:35:54 +01:00
|
|
|
|
2023-03-15 07:54:51 +01:00
|
|
|
"github.com/netbirdio/netbird/version"
|
|
|
|
)
|
|
|
|
|
2023-03-17 10:37:27 +01:00
|
|
|
// DeviceNameCtxKey context key for device name
|
|
|
|
const DeviceNameCtxKey = "deviceName"
|
|
|
|
|
2023-03-15 07:54:51 +01:00
|
|
|
// Info is an object that contains machine information
|
2021-08-27 11:34:38 +02:00
|
|
|
// Most of the code is taken from https://github.com/matishsiao/goInfo
|
|
|
|
type Info struct {
|
2022-02-03 18:35:54 +01:00
|
|
|
GoOS string
|
|
|
|
Kernel string
|
|
|
|
Core string
|
|
|
|
Platform string
|
|
|
|
OS string
|
|
|
|
OSVersion string
|
|
|
|
Hostname string
|
|
|
|
CPUs int
|
|
|
|
WiretrusteeVersion string
|
2022-05-25 23:25:02 +02:00
|
|
|
UIVersion string
|
2022-02-03 18:35:54 +01:00
|
|
|
}
|
|
|
|
|
2022-05-25 23:25:02 +02:00
|
|
|
// 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 ""
|
|
|
|
}
|
|
|
|
|
2023-04-20 16:00:22 +02:00
|
|
|
// 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
|
|
|
|
}
|
|
|
|
|
2022-05-25 23:25:02 +02:00
|
|
|
// GetDesktopUIUserAgent returns the Desktop ui user agent
|
|
|
|
func GetDesktopUIUserAgent() string {
|
2023-03-15 07:54:51 +01:00
|
|
|
return "netbird-desktop-ui/" + version.NetbirdVersion()
|
2022-05-25 23:25:02 +02:00
|
|
|
}
|