// Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause package com.tailscale.ipn.ui.model import kotlinx.serialization.Serializable class Tailcfg { @Serializable data class ClientVersion( var RunningLatest: Boolean? = null, var LatestVersion: String? = null, var UrgentSecurityUpdate: Boolean? = null, var Notify: Boolean? = null, var NotifyURL: String? = null, var NotifyText: String? = null ) @Serializable data class UserProfile( val ID: Long, val DisplayName: String, val LoginName: String, val ProfilePicURL: String? = null, ) { fun isTaggedDevice(): Boolean { return LoginName == "tagged-devices" } } @Serializable data class Hostinfo( var IPNVersion: String? = null, var FrontendLogID: String? = null, var BackendLogID: String? = null, var OS: String? = null, var OSVersion: String? = null, var Env: String? = null, var Distro: String? = null, var DistroVersion: String? = null, var DistroCodeName: String? = null, var Desktop: Boolean? = null, var Package: String? = null, var DeviceModel: String? = null, var ShareeNode: Boolean? = null, var Hostname: String? = null, var ShieldsUp: Boolean? = null, var NoLogsNoSupport: Boolean? = null, var Machine: String? = null, var RoutableIPs: List? = null, var Services: List? = null, ) @Serializable data class Node( var ID: NodeID, var StableID: StableNodeID, var Name: String, var User: UserID, var Sharer: UserID? = null, var Key: KeyNodePublic, var KeyExpiry: String, var Machine: MachineKey, var Addresses: List? = null, var AllowedIPs: List? = null, var Endpoints: List? = null, var Hostinfo: Hostinfo, var Created: Time, var LastSeen: Time? = null, var Online: Boolean? = null, var Capabilities: List? = null, var ComputedName: String, var ComputedNameWithHost: String ) @Serializable data class Service(var Proto: String, var Port: Int, var Description: String? = null) @Serializable data class NetworkProfile(var MagicDNSName: String? = null, var DomainName: String? = null) @Serializable data class Location( var Country: String? = null, var CountryCode: String? = null, var City: String? = null, var CityCode: String? = null, var Priority: Int? = null ) @Serializable data class DNSConfig( var Resolvers: List? = null, var Routes: Map?>? = null, var FallbackResolvers: List? = null, var Domains: List? = null, var Nameservers: List? = null ) }