client

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EncryptionMethodMD5    = "MD5"
	EncryptionMethodSHA512 = "SHA512"
)

Variables

View Source
var (
	ErrRequestNoError    = &xmoError{Code: 16777216, Description: "XMO_REQUEST_NO_ERR"}
	ErrInvalidSession    = &xmoError{Code: 16777219, Description: "XMO_INVALID_SESSION_ERR"}
	ErrAuthentication    = &xmoError{Code: 16777223, Description: "XMO_AUTHENTICATION_ERR"}
	ErrRequestAction     = &xmoError{Code: 16777236, Description: "XMO_REQUEST_ACTION_ERR"}
	ErrNoError           = &xmoError{Code: 16777238, Description: "XMO_NO_ERR"}
	ErrAccessRestriction = &xmoError{Code: 1, Description: "XMO_ACCESS_RESTRICTION_ERR"}
	ErrNonWritableParam  = &xmoError{Code: 3, Description: "XMO_NON_WRITABLE_PARAMETER_ERR"}
	ErrUnknownPath       = &xmoError{Code: 7, Description: "XMO_UNKNOWN_PATH_ERR"}
	ErrMaxSessionCount   = &xmoError{Code: 8, Description: "XMO_MAX_SESSION_COUNT_ERR"}
)

Functions

This section is empty.

Types

type CrashHistory

type CrashHistory struct {
	LastCrashDate        time.Time `json:"LastCrashDate,omitempty"`
	MonthlyNumberOfCrash int       `json:"MonthlyNumberOfCrash,omitempty"`
	NumberOfCrash        int       `json:"NumberOfCrash,omitempty"`
}

func (*CrashHistory) UnmarshalJSON

func (c *CrashHistory) UnmarshalJSON(b []byte) error

type Device

type Device struct {
	ARP         struct{} `json:"ARP,omitempty"`
	GatewayInfo struct {
		ManufacturerOUI string `json:"ManufacturerOUI,omitempty"`
		ProductClass    string `json:"ProductClass,omitempty"`
	} `json:"GatewayInfo,omitempty"`
	SelfTestDiagnostics struct {
		DiagnosticsState string `json:"DiagnosticsState,omitempty"`
		Results          string `json:"Results,omitempty"`
	} `json:"SelfTestDiagnostics,omitempty"`
	RootDataModelVersion string `json:"RootDataModelVersion,omitempty"`
	DeviceSummary        string `json:"DeviceSummary,omitempty"`
	LANConfigSecurity    struct {
		ConfigPassword string `json:"ConfigPassword,omitempty"`
	} `json:"LANConfigSecurity,omitempty"`
	RestoreInfo struct {
		FileFieldName  string `json:"FileFieldName,omitempty"`
		LastRestore    string `json:"LastRestore,omitempty"`
		URLKOFieldName string `json:"UrlKOFieldName,omitempty"`
		URLOKFieldName string `json:"UrlOKFieldName,omitempty"`
		URLRestore     string `json:"UrlRestore,omitempty"`
		BackupInfo     struct {
			LastDailyBackup   string `json:"LastDailyBackup,omitempty"`
			LastManualBackup  string `json:"LastManualBackup,omitempty"`
			LastMonthlyBackup string `json:"LastMonthlyBackup,omitempty"`
			LastWeeklyBackup  string `json:"LastWeeklyBackup,omitempty"`
		} `json:"BackupInfo,omitempty"`
		AvailableBackups []any `json:"AvailableBackups,omitempty"`
	} `json:"RestoreInfo,omitempty"`
	DLNA struct {
		Capabilities struct {
			AVClassProfileID         string `json:"AVClassProfileID,omitempty"`
			AudioClassProfileID      string `json:"AudioClassProfileID,omitempty"`
			DeviceCapability         string `json:"DeviceCapability,omitempty"`
			HIDDeviceClass           string `json:"HIDDeviceClass,omitempty"`
			HNDDeviceClass           string `json:"HNDDeviceClass,omitempty"`
			ImageClassProfileIDs     string `json:"ImageClassProfileIDs,omitempty"`
			MediaCollectionProfileID string `json:"MediaCollectionProfileID,omitempty"`
			PrinterClassProfileID    string `json:"PrinterClassProfileID,omitempty"`
		} `json:"Capabilities,omitempty"`
		Device struct {
			Enable bool `json:"Enable,omitempty"`
		} `json:"Device,omitempty"`
	} `json:"DLNA,omitempty"`
	GRE struct {
		Filters []any `json:"Filters,omitempty"`
		Tunnels []any `json:"Tunnels,omitempty"`
		Vlans   []any `json:"Vlans,omitempty"`
	} `json:"GRE,omitempty"`
	ISMv2 struct {
		DeviceInets []struct {
			Alias     string `json:"Alias,omitempty"`
			Interface string `json:"Interface,omitempty"`
			Name      string `json:"Name,omitempty"`
			TLS       struct {
				PKIClient string `json:"PKIClient,omitempty"`
				PKIServer string `json:"PKIServer,omitempty"`
				Enable    bool   `json:"Enable,omitempty"`
			} `json:"TLS,omitempty"`
			Dscp                 int  `json:"DSCP,omitempty"`
			PortListen           int  `json:"PortListen,omitempty"`
			PortNotice           int  `json:"PortNotice,omitempty"`
			TimerNoticeCheckRecv int  `json:"TimerNoticeCheckRecv,omitempty"`
			TimerNoticeSend      int  `json:"TimerNoticeSend,omitempty"`
			UID                  int  `json:"uid,omitempty"`
			Enable               bool `json:"Enable,omitempty"`
			Start                bool `json:"Start,omitempty"`
		} `json:"DeviceInets,omitempty"`
		PKIClients []any `json:"PKIClients,omitempty"`
		PKIServers []any `json:"PKIServers,omitempty"`
	} `json:"ISMv2,omitempty"`
	UserAccounts struct {
		LANInterface string `json:"LANInterface,omitempty"`
		WANInterface string `json:"WANInterface,omitempty"`
		MNGInterface string `json:"MNGInterface,omitempty"`
		Users        []struct {
			Address           string `json:"Address,omitempty"`
			Alias             string `json:"Alias,omitempty"`
			Category          string `json:"Category,omitempty"`
			City              string `json:"City,omitempty"`
			ClearTextPassword string `json:"ClearTextPassword,omitempty"`
			Company           string `json:"Company,omitempty"`
			Country           string `json:"Country,omitempty"`
			Email             string `json:"Email,omitempty"`
			FirstName         string `json:"FirstName,omitempty"`
			Language          string `json:"Language,omitempty"`
			LastName          string `json:"LastName,omitempty"`
			Login             string `json:"Login,omitempty"`
			MobilePhoneNumber string `json:"MobilePhoneNumber,omitempty"`
			Password          string `json:"Password,omitempty"`
			Role              string `json:"Role,omitempty"`
			SecretAnswer      string `json:"SecretAnswer,omitempty"`
			SecretQuery       string `json:"SecretQuery,omitempty"`
			Zip               string `json:"ZIP,omitempty"`
			CurrentSessions   []struct {
				ConnectionType  string `json:"ConnectionType,omitempty"`
				InterfaceType   string `json:"InterfaceType,omitempty"`
				LastRequestDate string `json:"LastRequestDate,omitempty"`
				LocalAddress    string `json:"LocalAddress,omitempty"`
				LoginDate       string `json:"LoginDate,omitempty"`
				RemoteAddress   string `json:"RemoteAddress,omitempty"`
				Service         string `json:"Service,omitempty"`
				Status          string `json:"Status,omitempty"`
				LocalPort       int    `json:"LocalPort,omitempty"`
				RemotePort      int    `json:"RemotePort,omitempty"`
				RequestCount    int    `json:"RequestCount,omitempty"`
				SessionID       int    `json:"SessionId,omitempty"`
				Timeout         int    `json:"Timeout,omitempty"`
				UID             int    `json:"uid,omitempty"`
				HostExclusive   bool   `json:"HostExclusive,omitempty"`
			} `json:"CurrentSessions,omitempty"`
			PhoneNumbers               []any `json:"PhoneNumbers,omitempty"`
			MaxSessionCount            int   `json:"MaxSessionCount,omitempty"`
			UID                        int   `json:"uid,omitempty"`
			BasicAuthenticationEnabled bool  `json:"BasicAuthenticationEnabled,omitempty"`
			ConsoleAccess              bool  `json:"ConsoleAccess,omitempty"`
			CurrentlyRemoteAccess      bool  `json:"CurrentlyRemoteAccess,omitempty"`
			Enable                     bool  `json:"Enable,omitempty"`
			ForcePasswordChange        bool  `json:"ForcePasswordChange,omitempty"`
			LocalAccess                bool  `json:"LocalAccess,omitempty"`
			OwnPass                    bool  `json:"OwnPass,omitempty"`
		} `json:"Users,omitempty"`
	} `json:"UserAccounts,omitempty"`
	WebAccesses struct {
		PortTrigger    []any `json:"PortTrigger,omitempty"`
		WebRestriction []any `json:"WebRestriction,omitempty"`
	} `json:"WebAccesses,omitempty"`
	PPP       ppp `json:"PPP,omitempty"`
	Tunneling struct {
		TunnelsL2 []any `json:"TunnelsL2,omitempty"`
	} `json:"Tunneling,omitempty"`
	Optical struct {
		Interfaces []OpticalInterface `json:"Interfaces,omitempty"`
		G988       struct {
			GponState       string `json:"GponState,omitempty"`
			OnuMode         string `json:"OnuMode,omitempty"`
			RegID           string `json:"RegId,omitempty"`
			Software0UbiDev string `json:"Software0UbiDev,omitempty"`
			Software1UbiDev string `json:"Software1UbiDev,omitempty"`
			Logging         struct {
				Destination string `json:"Destination,omitempty"`
				Level       string `json:"Level,omitempty"`
			} `json:"Logging,omitempty"`
			General struct {
				OltG struct {
					EquipmentID string `json:"EquipmentId,omitempty"`
					OltVendorID string `json:"OltVendorId,omitempty"`
					Version     string `json:"Version,omitempty"`
				} `json:"OltG,omitempty"`
			} `json:"General,omitempty"`
			EquipmentManagement struct {
				Onu2G struct {
					EquipmentID       string `json:"EquipmentId,omitempty"`
					VendorProductCode int    `json:"VendorProductCode,omitempty"`
				} `json:"Onu2G,omitempty"`
				OnuG struct {
					SerialNumber            string `json:"SerialNumber,omitempty"`
					VendorID                string `json:"VendorId,omitempty"`
					Version                 string `json:"Version,omitempty"`
					TrafficManagementOption int    `json:"TrafficManagementOption,omitempty"`
				} `json:"OnuG,omitempty"`
				SoftwareImages []struct {
					Version         string `json:"Version,omitempty"`
					ManagedEntityID int    `json:"ManagedEntityId,omitempty"`
					UID             int    `json:"uid,omitempty"`
					IsActive        bool   `json:"IsActive,omitempty"`
					IsCommitted     bool   `json:"IsCommitted,omitempty"`
					IsValid         bool   `json:"IsValid,omitempty"`
				} `json:"SoftwareImages,omitempty"`
			} `json:"EquipmentManagement,omitempty"`
			OperatorConf bool `json:"OperatorConf,omitempty"`
			QosModeRG    bool `json:"QosModeRG,omitempty"`
			Debug        bool `json:"Debug,omitempty"`
		} `json:"G988,omitempty"`
	} `json:"Optical,omitempty"`
	Time struct {
		CurrentLocalTime      string `json:"CurrentLocalTime,omitempty"`
		DaylightSavingTime    string `json:"DaylightSavingTime,omitempty"`
		Interfaces            string `json:"Interfaces,omitempty"`
		LocalTimeZone         string `json:"LocalTimeZone,omitempty"`
		LocalTimeZoneName     string `json:"LocalTimeZoneName,omitempty"`
		LocalTimeZoneNameReal string `json:"LocalTimeZoneNameReal,omitempty"`
		NTPRetryInterval      string `json:"NTPRetryInterval,omitempty"`
		NTPServer1            string `json:"NTPServer1,omitempty"`
		NTPServer2            string `json:"NTPServer2,omitempty"`
		NTPServer3            string `json:"NTPServer3,omitempty"`
		NTPServer4            string `json:"NTPServer4,omitempty"`
		NTPServer5            string `json:"NTPServer5,omitempty"`
		Status                string `json:"Status,omitempty"`
		NTPSyncInterval       int    `json:"NTPSyncInterval,omitempty"`
		Enable                bool   `json:"Enable,omitempty"`
	} `json:"Time,omitempty"`
	Firewall firewall `json:"Firewall,omitempty"`
	UPA      struct {
		Interfaces  []any `json:"Interfaces,omitempty"`
		Diagnostics struct {
			InterfaceMeasurement struct {
				DiagnosticsState string `json:"DiagnosticsState,omitempty"`
				Interface        string `json:"Interface,omitempty"`
				Measurements     string `json:"Measurements,omitempty"`
				Type             string `json:"Type,omitempty"`
				Port             int    `json:"Port,omitempty"`
				RxGain           int    `json:"RxGain,omitempty"`
			} `json:"InterfaceMeasurement,omitempty"`
		} `json:"Diagnostics,omitempty"`
	} `json:"UPA,omitempty"`
	HomePlug struct {
		LastDetectionDate string `json:"LastDetectionDate,omitempty"`
		NetworkInterfaces string `json:"NetworkInterfaces,omitempty"`
		Status            string `json:"Status,omitempty"`
		Interfaces        []any  `json:"Interfaces,omitempty"`
		Enable            bool   `json:"Enable,omitempty"`
	} `json:"HomePlug,omitempty"`
	USB struct {
		USBHosts struct {
			Hosts []struct {
				Alias                 string `json:"Alias,omitempty"`
				Name                  string `json:"Name,omitempty"`
				Type                  string `json:"Type,omitempty"`
				USBVersion            string `json:"USBVersion,omitempty"`
				Devices               []any  `json:"Devices,omitempty"`
				UID                   int    `json:"uid,omitempty"`
				Enable                bool   `json:"Enable,omitempty"`
				PowerManagementEnable bool   `json:"PowerManagementEnable,omitempty"`
				Reset                 bool   `json:"Reset,omitempty"`
			} `json:"Hosts,omitempty"`
		} `json:"USBHosts,omitempty"`
		Interfaces []any `json:"Interfaces,omitempty"`
		Ports      []struct {
			Alias      string `json:"Alias,omitempty"`
			Name       string `json:"Name,omitempty"`
			Power      string `json:"Power,omitempty"`
			Rate       string `json:"Rate,omitempty"`
			Receptacle string `json:"Receptacle,omitempty"`
			Standard   string `json:"Standard,omitempty"`
			SysfsID    string `json:"SysfsId,omitempty"`
			Type       string `json:"Type,omitempty"`
			UID        int    `json:"uid,omitempty"`
		} `json:"Ports,omitempty"`
		Enable bool `json:"Enable,omitempty"`
	} `json:"USB,omitempty"`
	NAT               nat `json:"NAT,omitempty"`
	NeighborDiscovery struct {
		InterfaceSettings []struct {
			Alias                   string `json:"Alias,omitempty"`
			Interface               string `json:"Interface,omitempty"`
			Status                  string `json:"Status,omitempty"`
			MaxRtrSolicitations     int    `json:"MaxRtrSolicitations,omitempty"`
			RetransTimer            int    `json:"RetransTimer,omitempty"`
			RtrSolicitationInterval int    `json:"RtrSolicitationInterval,omitempty"`
			UID                     int    `json:"uid,omitempty"`
			NUDEnable               bool   `json:"NUDEnable,omitempty"`
			RSEnable                bool   `json:"RSEnable,omitempty"`
			Enable                  bool   `json:"Enable,omitempty"`
		} `json:"InterfaceSettings,omitempty"`
		Enable bool `json:"Enable,omitempty"`
	} `json:"NeighborDiscovery,omitempty"`
	RouterAdvertisement struct {
		InterfaceSettings []struct {
			AdvPreferredRouterFlag string `json:"AdvPreferredRouterFlag,omitempty"`
			Alias                  string `json:"Alias,omitempty"`
			Interface              string `json:"Interface,omitempty"`
			ManualPrefixes         string `json:"ManualPrefixes,omitempty"`
			Prefixes               string `json:"Prefixes,omitempty"`
			Status                 string `json:"Status,omitempty"`
			Options                []struct {
				Alias  string `json:"Alias,omitempty"`
				Value  string `json:"Value,omitempty"`
				Tag    int    `json:"Tag,omitempty"`
				UID    int    `json:"uid,omitempty"`
				Enable bool   `json:"Enable,omitempty"`
			} `json:"Options,omitempty"`
			AdvCurHopLimit             int  `json:"AdvCurHopLimit,omitempty"`
			AdvDefaultLifetime         int  `json:"AdvDefaultLifetime,omitempty"`
			AdvLinkMTU                 int  `json:"AdvLinkMTU,omitempty"`
			AdvReachableTime           int  `json:"AdvReachableTime,omitempty"`
			AdvRetransTimer            int  `json:"AdvRetransTimer,omitempty"`
			MaxRtrAdvInterval          int  `json:"MaxRtrAdvInterval,omitempty"`
			MinRtrAdvInterval          int  `json:"MinRtrAdvInterval,omitempty"`
			NeighAdvertisementInterval int  `json:"NeighAdvertisementInterval,omitempty"`
			UID                        int  `json:"uid,omitempty"`
			AdvManagedFlag             bool `json:"AdvManagedFlag,omitempty"`
			AdvMobileAgentFlag         bool `json:"AdvMobileAgentFlag,omitempty"`
			AdvNDProxyFlag             bool `json:"AdvNDProxyFlag,omitempty"`
			AdvOtherConfigFlag         bool `json:"AdvOtherConfigFlag,omitempty"`
			Enable                     bool `json:"Enable,omitempty"`
		} `json:"InterfaceSettings,omitempty"`
		Enable bool `json:"Enable,omitempty"`
	} `json:"RouterAdvertisement,omitempty"`
	Routing struct {
		RouteInformation struct {
			InterfaceSettings []any `json:"InterfaceSettings,omitempty"`
			Enable            bool  `json:"Enable,omitempty"`
		} `json:"RouteInformation,omitempty"`
		Routers []struct {
			Alias           string `json:"Alias,omitempty"`
			Status          string `json:"Status,omitempty"`
			IPv4Forwardings []struct {
				Alias            string `json:"Alias,omitempty"`
				DestIPAddress    string `json:"DestIPAddress,omitempty"`
				DestSubnetMask   string `json:"DestSubnetMask,omitempty"`
				DeviceName       string `json:"DeviceName,omitempty"`
				GatewayIPAddress string `json:"GatewayIPAddress,omitempty"`
				Interface        string `json:"Interface,omitempty"`
				Origin           string `json:"Origin,omitempty"`
				Source           string `json:"Source,omitempty"`
				Status           string `json:"Status,omitempty"`
				ForwardingMetric int    `json:"ForwardingMetric,omitempty"`
				ForwardingPolicy int    `json:"ForwardingPolicy,omitempty"`
				NbRef            int    `json:"NbRef,omitempty"`
				UID              int    `json:"uid,omitempty"`
				Enable           bool   `json:"Enable,omitempty"`
				StaticRoute      bool   `json:"StaticRoute,omitempty"`
			} `json:"IPv4Forwardings,omitempty"`
			IPv6Forwardings []any `json:"IPv6Forwardings,omitempty"`
			UID             int   `json:"uid,omitempty"`
			DefaultRouter   bool  `json:"DefaultRouter,omitempty"`
			Enable          bool  `json:"Enable,omitempty"`
		} `json:"Routers,omitempty"`
		Rip struct {
			Redistribute                      string `json:"Redistribute,omitempty"`
			SupportedModes                    string `json:"SupportedModes,omitempty"`
			InterfaceSettings                 []any  `json:"InterfaceSettings,omitempty"`
			XSAGEMCOMRIPIPPrefix              []any  `json:"X_SAGEMCOM_RIPIPPrefix,omitempty"`
			XSAGEMCOMAdvertisementInterval    int    `json:"X_SAGEMCOM_AdvertisementInterval,omitempty"`
			XSAGEMCOMRIPNATRoutedSubnetEnable bool   `json:"X_SAGEMCOM_RIPNATRoutedSubnetEnable,omitempty"`
			Enable                            bool   `json:"Enable,omitempty"`
		} `json:"RIP,omitempty"`
	} `json:"Routing,omitempty"`
	Hosts struct {
		STBVendorClassIDList      string `json:"STBVendorClassIDList,omitempty"`
		VAPVendorClassIDList      string `json:"VAPVendorClassIDList,omitempty"`
		WiFiPODSVendorClassIDList string `json:"WiFiPODSVendorClassIDList,omitempty"`
		Hosts                     []Host `json:"Hosts,omitempty"`
		MaxHosts                  int    `json:"MaxHosts,omitempty"`
		SweepARP                  int    `json:"SweepARP,omitempty"`
	} `json:"Hosts,omitempty"`
	PeriodicStatistics struct {
		SampleSets        []any `json:"SampleSets,omitempty"`
		MaxReportSamples  int   `json:"MaxReportSamples,omitempty"`
		MinSampleInterval int   `json:"MinSampleInterval,omitempty"`
	} `json:"PeriodicStatistics,omitempty"`
	DHCPv4          dhcpv4 `json:"DHCPv4,omitempty"`
	DeviceDiscovery struct {
		USBEntity struct {
			Name      string `json:"Name,omitempty"`
			Connected bool   `json:"Connected,omitempty"`
		} `json:"USBEntity,omitempty"`
		AccessPoints []struct {
			Name      string `json:"Name,omitempty"`
			UID       int    `json:"uid,omitempty"`
			Connected bool   `json:"Connected,omitempty"`
		} `json:"AccessPoints,omitempty"`
		DHCPPools  []any `json:"DHCPPools,omitempty"`
		Interfaces []struct {
			Path string `json:"Path,omitempty"`
			UID  int    `json:"uid,omitempty"`
			Arp  bool   `json:"Arp,omitempty"`
		} `json:"Interfaces,omitempty"`
		DeviceIdentification struct {
			DeviceTypes             []any `json:"DeviceTypes,omitempty"`
			DHCPFingerprintDatabase struct {
				Entries    []any `json:"Entries,omitempty"`
				MaxEntries int   `json:"MaxEntries,omitempty"`
			} `json:"DHCPFingerprintDatabase,omitempty"`
		} `j2son:"DeviceIdentification,omitempty"`
		MaxHosts int  `json:"MaxHosts,omitempty"`
		Enable   bool `json:"Enable,omitempty"`
	} `json:"DeviceDiscovery,omitempty"`
	MQTT struct {
		Clients []struct {
			Alias                  string `json:"Alias,omitempty"`
			BrokerAddress          string `json:"BrokerAddress,omitempty"`
			CaFile                 string `json:"CaFile,omitempty"`
			CaPath                 string `json:"CaPath,omitempty"`
			CertFile               string `json:"CertFile,omitempty"`
			ClientID               string `json:"ClientID,omitempty"`
			Interface              string `json:"Interface,omitempty"`
			KeyFile                string `json:"KeyFile,omitempty"`
			Name                   string `json:"Name,omitempty"`
			Password               string `json:"Password,omitempty"`
			ProtocolVersion        string `json:"ProtocolVersion,omitempty"`
			Status                 string `json:"Status,omitempty"`
			SubscriptionFileConfig string `json:"SubscriptionFileConfig,omitempty"`
			TransportProtocol      string `json:"TransportProtocol,omitempty"`
			Username               string `json:"Username,omitempty"`
			WillTopic              string `json:"WillTopic,omitempty"`
			WillValue              string `json:"WillValue,omitempty"`
			Subscriptions          []any  `json:"Subscriptions,omitempty"`
			Stats                  struct {
				BrokerConnectionEstablished string `json:"BrokerConnectionEstablished,omitempty"`
				LastPublishMessageReceived  string `json:"LastPublishMessageReceived,omitempty"`
				LastPublishMessageSent      string `json:"LastPublishMessageSent,omitempty"`
				MQTTMessagesReceived        string `json:"MQTTMessagesReceived,omitempty"`
				MQTTMessagesSent            string `json:"MQTTMessagesSent,omitempty"`
				PublishReceived             string `json:"PublishReceived,omitempty"`
				PublishSent                 string `json:"PublishSent,omitempty"`
				SubscribeSent               string `json:"SubscribeSent,omitempty"`
				UnSubscribeSent             string `json:"UnSubscribeSent,omitempty"`
				ConnectionErrors            int    `json:"ConnectionErrors,omitempty"`
				PublishErrors               int    `json:"PublishErrors,omitempty"`
			} `json:"Stats,omitempty"`
			BrokerPort       int  `json:"BrokerPort,omitempty"`
			ConnectRetryTime int  `json:"ConnectRetryTime,omitempty"`
			KeepAliveTime    int  `json:"KeepAliveTime,omitempty"`
			MessageRetryTime int  `json:"MessageRetryTime,omitempty"`
			WillQoS          int  `json:"WillQoS,omitempty"`
			UID              int  `json:"uid,omitempty"`
			CleanSession     bool `json:"CleanSession,omitempty"`
			Enable           bool `json:"Enable,omitempty"`
			ForceReconnect   bool `json:"ForceReconnect,omitempty"`
			TLSInsecure      bool `json:"TlsInsecure,omitempty"`
			WillEnable       bool `json:"WillEnable,omitempty"`
			WillRetain       bool `json:"WillRetain,omitempty"`
		} `json:"Clients,omitempty"`
		Capabilities struct {
			ProtocolVersionsSupported            string `json:"ProtocolVersionsSupported,omitempty"`
			TransportProtocolSupported           string `json:"TransportProtocolSupported,omitempty"`
			MaxNumberOfBrokerBridgeSubscriptions int    `json:"MaxNumberOfBrokerBridgeSubscriptions,omitempty"`
			MaxNumberOfBrokerBridges             int    `json:"MaxNumberOfBrokerBridges,omitempty"`
			MaxNumberOfClientSubscriptions       int    `json:"MaxNumberOfClientSubscriptions,omitempty"`
		} `json:"Capabilities,omitempty"`
		Enable bool `json:"Enable,omitempty"`
	} `json:"MQTT,omitempty"`
	Ethernet      ethernet   `json:"Ethernet,omitempty"`
	WiFi          wifi       `json:"WiFi,omitempty"`
	DeviceInfo    DeviceInfo `json:"DeviceInfo,omitempty"`
	Services      services   `json:"Services,omitempty"`
	DNS           dns        `json:"DNS,omitempty"`
	IP            ip         `json:"IP,omitempty"`
	UserInterface struct {
		WarrantyDate       string `json:"WarrantyDate,omitempty"`
		ISPNewsServer      string `json:"ISPNewsServer,omitempty"`
		BackgroundColor    string `json:"BackgroundColor,omitempty"`
		AutoUpdateServer   string `json:"AutoUpdateServer,omitempty"`
		ButtonColor        string `json:"ButtonColor,omitempty"`
		ButtonTextColor    string `json:"ButtonTextColor,omitempty"`
		CurrentLanguage    string `json:"CurrentLanguage,omitempty"`
		ISPHelpDesk        string `json:"ISPHelpDesk,omitempty"`
		ISPHelpPage        string `json:"ISPHelpPage,omitempty"`
		ISPHomePage        string `json:"ISPHomePage,omitempty"`
		ISPLogo            string `json:"ISPLogo,omitempty"`
		ISPMailServer      string `json:"ISPMailServer,omitempty"`
		ISPName            string `json:"ISPName,omitempty"`
		AvailableLanguages string `json:"AvailableLanguages,omitempty"`
		Market             string `json:"Market,omitempty"`
		Password           string `json:"Password,omitempty"`
		TextColor          string `json:"TextColor,omitempty"`
		UserUpdateServer   string `json:"UserUpdateServer,omitempty"`
		Brand              string `json:"Brand,omitempty"`
		RedirectionReason  string `json:"RedirectionReason,omitempty"`
		RouterRedirectURL  string `json:"RouterRedirectURL,omitempty"`
		BackupDatas        []struct {
			Alias string `json:"Alias,omitempty"`
			Tag   string `json:"Tag,omitempty"`
			Value string `json:"Value,omitempty"`
			UID   int    `json:"uid,omitempty"`
		} `json:"BackupDatas,omitempty"`
		HideTables []any `json:"HideTables,omitempty"`
		BaseUrls   []any `json:"baseUrls,omitempty"`
		Httpd      struct {
			Redirection          string `json:"Redirection,omitempty"`
			MaxSessions          int    `json:"MaxSessions,omitempty"`
			SessionTimeout       int    `json:"SessionTimeout,omitempty"`
			HostAttackProtection bool   `json:"HostAttackProtection,omitempty"`
		} `json:"Httpd,omitempty"`
		RemoteAccess struct {
			GeneralCodeRemoteApplication string `json:"GeneralCodeRemoteApplication,omitempty"`
			Protocol                     string `json:"Protocol,omitempty"`
			RemoteAccessHost             string `json:"RemoteAccessHost,omitempty"`
			SupportedProtocols           string `json:"SupportedProtocols,omitempty"`
			Port                         int    `json:"Port,omitempty"`
			RemoteApplicationHTTPSPort   int    `json:"RemoteApplicationHTTPSPort,omitempty"`
			Timeout                      int    `json:"Timeout,omitempty"`
			Enable                       bool   `json:"Enable,omitempty"`
			RemoteApplicationEnable      bool   `json:"RemoteApplicationEnable,omitempty"`
		} `json:"RemoteAccess,omitempty"`
		Screen struct {
			DisplayState string `json:"DisplayState,omitempty"`
			Lines        []struct {
				TextToDisplay string `json:"TextToDisplay,omitempty"`
				UID           int    `json:"uid,omitempty"`
			} `json:"Lines,omitempty"`
			DisplayTime    int  `json:"DisplayTime,omitempty"`
			PixelLeap      int  `json:"PixelLeap,omitempty"`
			Priority       int  `json:"Priority,omitempty"`
			ScrollingSpeed int  `json:"ScrollingSpeed,omitempty"`
			ClearOnOk      bool `json:"ClearOnOk,omitempty"`
		} `json:"Screen,omitempty"`
		LocalDisplay struct {
			DisplayHeight int  `json:"DisplayHeight,omitempty"`
			DisplayWidth  int  `json:"DisplayWidth,omitempty"`
			Height        int  `json:"Height,omitempty"`
			PosX          int  `json:"PosX,omitempty"`
			PosY          int  `json:"PosY,omitempty"`
			Width         int  `json:"Width,omitempty"`
			GuiFlag       bool `json:"GuiFlag,omitempty"`
			Movable       bool `json:"Movable,omitempty"`
			Resizable     bool `json:"Resizable,omitempty"`
		} `json:"LocalDisplay,omitempty"`
		GuiLockTime             int  `json:"GuiLockTime,omitempty"`
		ISPLogoSize             int  `json:"ISPLogoSize,omitempty"`
		LoginRetryNumber        int  `json:"LoginRetryNumber,omitempty"`
		PasswordMinLength       int  `json:"PasswordMinLength,omitempty"`
		PasswordRequired        bool `json:"PasswordRequired,omitempty"`
		PasswordReset           bool `json:"PasswordReset,omitempty"`
		PasswordUserSelectable  bool `json:"PasswordUserSelectable,omitempty"`
		RouterRedirectURLEnable bool `json:"RouterRedirectURLEnable,omitempty"`
		UpgradeAvailable        bool `json:"UpgradeAvailable,omitempty"`
	} `json:"UserInterface,omitempty"`
	UPnP upnp `json:"UPnP,omitempty"`
}

type DeviceInfo

type DeviceInfo struct {
	BuildDate       time.Time `json:"BuildDate,omitempty"`
	FirstUseDate    time.Time `json:"FirstUseDate,omitempty"`
	BackupTimeStamp time.Time `json:"BackupTimeStamp,omitempty"`
	ProxierInfo     struct {
		ManufacturerOUI string `json:"ManufacturerOUI,omitempty"`
		ProductClass    string `json:"ProductClass,omitempty"`
		ProxyProtocol   string `json:"ProxyProtocol,omitempty"`
		SerialNumber    string `json:"SerialNumber,omitempty"`
	} `json:"ProxierInfo,omitempty"`
	SimpleLogs struct {
		CallLog     string `json:"CallLog,omitempty"`
		FirewallLog string `json:"FirewallLog,omitempty"`
		SystemLog   string `json:"SystemLog,omitempty"`
	} `json:"SimpleLogs,omitempty"`
	ProductClass              string       `json:"ProductClass,omitempty"`
	Country                   string       `json:"Country,omitempty"`
	ManufacturerOUI           string       `json:"ManufacturerOUI,omitempty"`
	SpecVersion               string       `json:"SpecVersion,omitempty"`
	SoftwareVersion           string       `json:"SoftwareVersion,omitempty"`
	AdditionalHardwareVersion string       `json:"AdditionalHardwareVersion,omitempty"`
	CustomerModelName         string       `json:"CustomerModelName,omitempty"`
	Description               string       `json:"Description,omitempty"`
	DeviceCategory            string       `json:"DeviceCategory,omitempty"`
	DeviceLog                 string       `json:"DeviceLog,omitempty"`
	EventLog                  string       `json:"EventLog,omitempty"`
	ExternalFirmwareVersion   string       `json:"ExternalFirmwareVersion,omitempty"`
	RouterName                string       `json:"RouterName,omitempty"`
	BackupSoftwareVersion     string       `json:"BackupSoftwareVersion,omitempty"`
	AdditionalSoftwareVersion string       `json:"AdditionalSoftwareVersion,omitempty"`
	Mode                      string       `json:"Mode,omitempty"`
	GUIAPIVersion             string       `json:"GUIAPIVersion,omitempty"`
	GUIFirmwareVersion        string       `json:"GUIFirmwareVersion,omitempty"`
	HardwareVersion           string       `json:"HardwareVersion,omitempty"`
	InternalFirmwareVersion   string       `json:"InternalFirmwareVersion,omitempty"`
	ProvisioningCode          string       `json:"ProvisioningCode,omitempty"`
	APIVersion                string       `json:"APIVersion,omitempty"`
	MACAddress                string       `json:"MACAddress,omitempty"`
	Manufacturer              string       `json:"Manufacturer,omitempty"`
	Clid                      string       `json:"CLID,omitempty"`
	BootloaderVersion         string       `json:"BootloaderVersion,omitempty"`
	ONTSerialNumber           string       `json:"ONTSerialNumber,omitempty"`
	ModelName                 string       `json:"ModelName,omitempty"`
	ModelNumber               string       `json:"ModelNumber,omitempty"`
	NodesToRestore            string       `json:"NodesToRestore,omitempty"`
	CrashHistory              CrashHistory `json:"CrashHistory,omitempty"`
	VendorLogFiles            []struct {
		Alias           string `json:"Alias,omitempty"`
		DiagnosticState string `json:"DiagnosticState,omitempty"`
		LogData         string `json:"LogData,omitempty"`
		Name            string `json:"Name,omitempty"`
		MaximumSize     int    `json:"MaximumSize,omitempty"`
		UID             int    `json:"uid,omitempty"`
		Persistent      bool   `json:"Persistent,omitempty"`
	} `json:"VendorLogFiles,omitempty"`
	VendorConfigFiles []struct {
		Alias               string `json:"Alias,omitempty"`
		Date                string `json:"Date,omitempty"`
		Description         string `json:"Description,omitempty"`
		Name                string `json:"Name,omitempty"`
		Version             string `json:"Version,omitempty"`
		UID                 int    `json:"uid,omitempty"`
		UseForBackupRestore bool   `json:"UseForBackupRestore,omitempty"`
	} `json:"VendorConfigFiles,omitempty"`
	Locations         []any `json:"Locations,omitempty"`
	NetworkProperties struct {
		TCPImplementation string `json:"TCPImplementation,omitempty"`
		MaxTCPWindowSize  int    `json:"MaxTCPWindowSize,omitempty"`
	} `json:"NetworkProperties,omitempty"`
	UserConfigFiles   []any `json:"UserConfigFiles,omitempty"`
	TemperatureStatus struct {
		TemperatureSensors []struct {
			Alias           string `json:"Alias,omitempty"`
			HighAlarmTime   string `json:"HighAlarmTime,omitempty"`
			LastUpdate      string `json:"LastUpdate,omitempty"`
			LowAlarmTime    string `json:"LowAlarmTime,omitempty"`
			MaxTime         string `json:"MaxTime,omitempty"`
			MinTime         string `json:"MinTime,omitempty"`
			Name            string `json:"Name,omitempty"`
			ResetTime       string `json:"ResetTime,omitempty"`
			Status          string `json:"Status,omitempty"`
			HighAlarmValue  int    `json:"HighAlarmValue,omitempty"`
			LowAlarmValue   int    `json:"LowAlarmValue,omitempty"`
			MaxValue        int    `json:"MaxValue,omitempty"`
			MinValue        int    `json:"MinValue,omitempty"`
			PollingInterval int    `json:"PollingInterval,omitempty"`
			Value           int    `json:"Value,omitempty"`
			UID             int    `json:"uid,omitempty"`
			Enable          bool   `json:"Enable,omitempty"`
			Reset           bool   `json:"Reset,omitempty"`
		} `json:"TemperatureSensors,omitempty"`
	} `json:"TemperatureStatus,omitempty"`
	Processors []struct {
		Alias        string `json:"Alias,omitempty"`
		Architecture string `json:"Architecture,omitempty"`
		UID          int    `json:"uid,omitempty"`
	} `json:"Processors,omitempty"`
	Logging struct {
		LogLevel string `json:"LogLevel,omitempty"`
		Syslog   struct {
			FileStorageLocation string `json:"FileStorageLocation,omitempty"`
			LogStorage          string `json:"LogStorage,omitempty"`
			Destinations        []struct {
				Alias               string `json:"Alias,omitempty"`
				FileStorageLocation string `json:"FileStorageLocation,omitempty"`
				LoggerCategories    string `json:"LoggerCategories,omitempty"`
				Status              string `json:"Status,omitempty"`
				SyslogConfig        string `json:"SyslogConfig,omitempty"`
				LogSize             int    `json:"LogSize,omitempty"`
				SourceIndex         int    `json:"SourceIndex,omitempty"`
				UID                 int    `json:"uid,omitempty"`
				Enable              bool   `json:"Enable,omitempty"`
			} `json:"Destinations,omitempty"`
			Sources []struct {
				Alias              string `json:"Alias,omitempty"`
				FileSourceLocation string `json:"FileSourceLocation,omitempty"`
				Network            struct {
					Protocol string `json:"Protocol,omitempty"`
					Port     int    `json:"Port,omitempty"`
					Enable   bool   `json:"Enable,omitempty"`
				} `json:"Network,omitempty"`
				Enable         bool `json:"Enable,omitempty"`
				InternalSource bool `json:"InternalSource,omitempty"`
				KernelSource   bool `json:"KernelSource,omitempty"`
				UnixStream     bool `json:"UnixStream,omitempty"`
				UID            int  `json:"uid,omitempty"`
			} `json:"Sources,omitempty"`
			DisplayKernelLogs bool `json:"DisplayKernelLogs,omitempty"`
			Enable            bool `json:"Enable,omitempty"`
		} `json:"Syslog,omitempty"`
		ResetLogOper bool `json:"ResetLogOper,omitempty"`
	} `json:"Logging,omitempty"`
	FlashMemoryStatus struct {
		Free  int `json:"Free,omitempty"`
		Total int `json:"Total,omitempty"`
	} `json:"FlashMemoryStatus,omitempty"`
	MemoryStatus struct {
		Free  int `json:"Free,omitempty"`
		Total int `json:"Total,omitempty"`
	} `json:"MemoryStatus,omitempty"`
	ResetStatus               int  `json:"ResetStatus,omitempty"`
	RebootStatus              int  `json:"RebootStatus,omitempty"`
	UpTime                    int  `json:"UpTime,omitempty"`
	UpdateStatus              int  `json:"UpdateStatus,omitempty"`
	RebootCount               int  `json:"RebootCount,omitempty"`
	FlushDeviceLog            bool `json:"FlushDeviceLog,omitempty"`
	ConfigBackupRestoreEnable bool `json:"ConfigBackupRestoreEnable,omitempty"`
	SNMP                      bool `json:"SNMP,omitempty"`
	FirstConnection           bool `json:"FirstConnection,omitempty"`
}

func (*DeviceInfo) UnmarshalJSON

func (d *DeviceInfo) UnmarshalJSON(b []byte) error

type EthernetInterface

type EthernetInterface struct {
	Alias             string               `json:"Alias,omitempty"`
	DuplexMode        string               `json:"DuplexMode,omitempty"`
	IfcName           string               `json:"IfcName,omitempty"`
	LowerLayers       string               `json:"LowerLayers,omitempty"`
	MACAddress        string               `json:"MACAddress,omitempty"`
	Name              string               `json:"Name,omitempty"`
	Role              string               `json:"Role,omitempty"`
	Status            string               `json:"Status,omitempty"`
	StoppedBy         string               `json:"StoppedBy,omitempty"`
	Diagnostics       InterfaceDiagnostics `json:"Diagnostics,omitempty"`
	AssociatedDevices []any                `json:"AssociatedDevices,omitempty"`
	CurrentBitRate    int64                `json:"CurrentBitRate,omitempty"`
	Stats             InterfaceStats       `json:"Stats,omitempty"`
	LastChange        int                  `json:"LastChange,omitempty"`
	LastStatsReset    int                  `json:"LastStatsReset,omitempty"`
	MTUSize           int                  `json:"MTUSize,omitempty"`
	MaxBitRate        int                  `json:"MaxBitRate,omitempty"`
	PhyNum            int                  `json:"PhyNum,omitempty"`
	UID               int                  `json:"uid,omitempty"`
	EEECapability     bool                 `json:"EEECapability,omitempty"`
	EEEEnable         bool                 `json:"EEEEnable,omitempty"`
	Enable            bool                 `json:"Enable,omitempty"`
	ResetStats        bool                 `json:"ResetStats,omitempty"`
	Upstream          bool                 `json:"Upstream,omitempty"`
}

type Host

type Host struct {
	InterfaceType         string `json:"InterfaceType,omitempty"`
	UserDeviceType        string `json:"UserDeviceType,omitempty"`
	ActiveLastChange      string `json:"ActiveLastChange,omitempty"`
	AddressSource         string `json:"AddressSource,omitempty"`
	Alias                 string `json:"Alias,omitempty"`
	AssociatedDevice      string `json:"AssociatedDevice,omitempty"`
	VendorClassID         string `json:"VendorClassID,omitempty"`
	ClientID              string `json:"ClientID,omitempty"`
	DHCPClient            string `json:"DHCPClient,omitempty"`
	DetectedDeviceType    string `json:"DetectedDeviceType,omitempty"`
	SysfsID               string `json:"SysfsId,omitempty"`
	VendorClassIDv6       string `json:"VendorClassIDv6,omitempty"`
	IPAddress             string `json:"IPAddress,omitempty"`
	HostName              string `json:"HostName,omitempty"`
	DeviceTypeAssociation string `json:"DeviceTypeAssociation,omitempty"`
	UserFriendlyName      string `json:"UserFriendlyName,omitempty"`
	AccessPoint           string `json:"AccessPoint,omitempty"`
	Icon                  string `json:"Icon,omitempty"`
	PhysAddress           string `json:"PhysAddress,omitempty"`
	Layer1Interface       string `json:"Layer1Interface,omitempty"`
	Layer3Interface       string `json:"Layer3Interface,omitempty"`
	UserHostName          string `json:"UserHostName,omitempty"`
	UserClassID           string `json:"UserClassID,omitempty"`
	History               struct {
		AddressSource   string `json:"AddressSource,omitempty"`
		ClientID        string `json:"ClientID,omitempty"`
		HostName        string `json:"HostName,omitempty"`
		IPAddress       string `json:"IPAddress,omitempty"`
		IPv6Address     string `json:"IPv6Address,omitempty"`
		Layer1Interface string `json:"Layer1Interface,omitempty"`
		Layer3Interface string `json:"Layer3Interface,omitempty"`
		UserClassID     string `json:"UserClassID,omitempty"`
		VendorClassID   string `json:"VendorClassID,omitempty"`
		VendorClassIDv6 string `json:"VendorClassIDv6,omitempty"`
		Options         []struct {
			OptionValue string `json:"OptionValue,omitempty"`
			OptionTag   int    `json:"OptionTag,omitempty"`
			UID         int    `json:"uid,omitempty"`
		} `json:"Options,omitempty"`
	} `json:"History,omitempty"`
	IPv6Addresses []json.RawMessage `json:"IPv6Addresses,omitempty"`
	Options       []json.RawMessage `json:"Options,omitempty"`
	IPv4Addresses []struct {
		IPAddress string `json:"IPAddress,omitempty"`
		UID       int    `json:"uid,omitempty"`
		Active    bool   `json:"Active,omitempty"`
	} `json:"IPv4Addresses,omitempty"`
	LeaseTimeRemaining int  `json:"LeaseTimeRemaining,omitempty"`
	UnblockHoursCount  int  `json:"UnblockHoursCount,omitempty"`
	LeaseStart         int  `json:"LeaseStart,omitempty"`
	LeaseDuration      int  `json:"LeaseDuration,omitempty"`
	UID                int  `json:"uid,omitempty"`
	Hidden             bool `json:"Hidden,omitempty"`
	BlacklistStatus    bool `json:"BlacklistStatus,omitempty"`
	Active             bool `json:"Active,omitempty"`
}

type InterfaceDiagnostics

type InterfaceDiagnostics struct {
	CableStatus       string `json:"CableStatus,omitempty"`
	CurrentDuplexMode string `json:"CurrentDuplexMode,omitempty"`
	CableLength       int    `json:"CableLength,omitempty"`
}

type InterfaceStats

type InterfaceStats struct {
	BroadcastPacketsReceived    int64 `json:"BroadcastPacketsReceived,omitempty,string"`
	BroadcastPacketsSent        int64 `json:"BroadcastPacketsSent,omitempty,string"`
	BytesReceived               int64 `json:"BytesReceived,omitempty,string"`
	BytesSent                   int64 `json:"BytesSent,omitempty,string"`
	CollisionsPackets           int64 `json:"CollisionsPackets,omitempty"`
	DiscardPacketsReceived      int64 `json:"DiscardPacketsReceived,omitempty"`
	DiscardPacketsSent          int64 `json:"DiscardPacketsSent,omitempty"`
	ErrorsReceived              int64 `json:"ErrorsReceived,omitempty"`
	ErrorsSent                  int64 `json:"ErrorsSent,omitempty"`
	MulticastPacketsReceived    int64 `json:"MulticastPacketsReceived,omitempty,string"`
	MulticastPacketsSent        int64 `json:"MulticastPacketsSent,omitempty,string"`
	PacketsReceived             int64 `json:"PacketsReceived,omitempty,string"`
	PacketsSent                 int64 `json:"PacketsSent,omitempty,string"`
	RetransCount                int64 `json:"RetransCount,omitempty"`
	UnicastPacketsReceived      int64 `json:"UnicastPacketsReceived,omitempty,string"`
	UnicastPacketsSent          int64 `json:"UnicastPacketsSent,omitempty,string"`
	UnknownProtoPacketsReceived int64 `json:"UnknownProtoPacketsReceived,omitempty"`
}

type LogLine

type LogLine struct {
	TS      time.Time
	Level   string
	Module  string
	Message string
}

type OpticalInterface

type OpticalInterface struct {
	Name              string `json:"Name,omitempty"`
	Alias             string `json:"Alias,omitempty"`
	Alarm             string `json:"Alarm,omitempty"`
	StoppedBy         string `json:"StoppedBy,omitempty"`
	Status            string `json:"Status,omitempty"`
	IfcName           string `json:"IfcName,omitempty"`
	OpticalVendorName string `json:"OpticalVendorName,omitempty"`
	OpticalPartNumber string `json:"OpticalPartNumber,omitempty"`
	LowerLayers       string `json:"LowerLayers,omitempty"`
	SupportedSFPs     []struct {
		PartNumber string `json:"PartNumber,omitempty"`
		Type       string `json:"Type,omitempty"`
		VendorName string `json:"VendorName,omitempty"`
		UID        int    `json:"uid,omitempty"`
	} `json:"SupportedSFPs,omitempty"`
	PonStats struct {
		GemPorts []struct {
			BytesReceived            string `json:"BytesReceived,omitempty"`
			BytesSent                string `json:"BytesSent,omitempty"`
			Direction                string `json:"Direction,omitempty"`
			FlowType                 string `json:"FlowType,omitempty"`
			DiscardedPacketsReceived int    `json:"DiscardedPacketsReceived,omitempty"`
			DiscardedPacketsSent     int    `json:"DiscardedPacketsSent,omitempty"`
			ID                       int    `json:"Id,omitempty"`
			Index                    int    `json:"Index,omitempty"`
			PacketsReceived          int    `json:"PacketsReceived,omitempty"`
			PacketsSent              int    `json:"PacketsSent,omitempty"`
			TcontIndex               int    `json:"TcontIndex,omitempty"`
			UID                      int    `json:"uid,omitempty"`
		} `json:"GemPorts,omitempty"`
		Tconts []struct {
			AllocID        int `json:"AllocId,omitempty"`
			GemPacketsSent int `json:"GemPacketsSent,omitempty"`
			Index          int `json:"Index,omitempty"`
			UID            int `json:"uid,omitempty"`
		} `json:"Tconts,omitempty"`
		Reset bool `json:"Reset,omitempty"`
	} `json:"PonStats,omitempty"`
	CATV struct {
		Alarm            string `json:"Alarm,omitempty"`
		Status           string `json:"Status,omitempty"`
		RfRxOpticalPower int    `json:"RfRxOpticalPower,omitempty"`
		RfVoltage        int    `json:"RfVoltage,omitempty"`
	} `json:"CATV,omitempty"`
	RogueOnu struct {
		RogueOnuStatus          string `json:"RogueOnuStatus,omitempty"`
		RogueOnuOccurrences     []any  `json:"RogueOnuOccurrences,omitempty"`
		RogueOnuCount           int    `json:"RogueOnuCount,omitempty"`
		RogueOnuDetectionEnable bool   `json:"RogueOnuDetectionEnable,omitempty"`
	} `json:"RogueOnu,omitempty"`
	Stats struct {
		BroadcastPacketsReceived      int64 `json:"BroadcastPacketsReceived,omitempty"`
		BroadcastPacketsSent          int64 `json:"BroadcastPacketsSent,omitempty"`
		BytesReceived                 int64 `json:"BytesReceived,omitempty,string"`
		BytesSent                     int64 `json:"BytesSent,omitempty,string"`
		DiscardChecksumReceived       int64 `json:"DiscardChecksumReceived,omitempty"`
		DiscardSequenceNumberReceived int64 `json:"DiscardSequenceNumberReceived,omitempty"`
		ErrorsReceived                int64 `json:"ErrorsReceived,omitempty"`
		ErrorsSent                    int64 `json:"ErrorsSent,omitempty"`
		MulticastPacketsReceived      int64 `json:"MulticastPacketsReceived,omitempty"`
		MulticastPacketsSent          int64 `json:"MulticastPacketsSent,omitempty"`
		PacketsReceived               int64 `json:"PacketsReceived,omitempty"`
		PacketsSent                   int64 `json:"PacketsSent,omitempty"`
		UnicastPacketsReceived        int64 `json:"UnicastPacketsReceived,omitempty"`
		UnicastPacketsSent            int64 `json:"UnicastPacketsSent,omitempty"`
	} `json:"Stats,omitempty"`
	LastChange                  int64 `json:"LastChange,omitempty"`
	BIASCurrent                 int64 `json:"BIASCurrent,omitempty"`
	UID                         int   `json:"uid,omitempty"`
	OpticalSignalLevel          int64 `json:"OpticalSignalLevel,omitempty"`
	LastStatsReset              int   `json:"LastStatsReset,omitempty"`
	Voltage                     int64 `json:"Voltage,omitempty"`
	LowerOpticalThreshold       int64 `json:"LowerOpticalThreshold,omitempty"`
	LowerTransmitPowerThreshold int64 `json:"LowerTransmitPowerThreshold,omitempty"`
	Temperature                 int64 `json:"Temperature,omitempty"`
	TransmitOpticalLevel        int64 `json:"TransmitOpticalLevel,omitempty"`
	UpperOpticalThreshold       int64 `json:"UpperOpticalThreshold,omitempty"`
	UpperTransmitPowerThreshold int64 `json:"UpperTransmitPowerThreshold,omitempty"`
	Upstream                    bool  `json:"Upstream,omitempty"`
	Enable                      bool  `json:"Enable,omitempty"`
	ResetStats                  bool  `json:"ResetStats,omitempty"`
}

type ProcessStatus

type ProcessStatus struct {
	ProcessName string `json:"ProcessName"`
	State       string `json:"State"`
	Size        int64  `json:"Size,string"`
	CPUTime     int64  `json:"CPUTime,string"`
	PID         int    `json:"PID,string"`
	Priority    int    `json:"Priority,string"`
}

type ProcessStatuses

type ProcessStatuses []ProcessStatus

func (*ProcessStatuses) UnmarshalJSON

func (p *ProcessStatuses) UnmarshalJSON(data []byte) error

type Radio

type Radio struct {
	CSADeauth                      string `json:"CSADeauth,omitempty"`
	SplittedOperatingFrequencyBand string `json:"SplittedOperatingFrequencyBand,omitempty"`
	GuardInterval                  string `json:"GuardInterval,omitempty"`
	RegulatoryRegionSubRegion      string `json:"RegulatoryRegionSubRegion,omitempty"`
	InitiateACS                    string `json:"InitiateACS,omitempty"`
	Alias                          string `json:"Alias,omitempty"`
	TxSTBC                         string `json:"TxSTBC,omitempty"`
	TxLDPC                         string `json:"TxLDPC,omitempty"`
	AutoChannelList                string `json:"AutoChannelList,omitempty"`
	TransmitPowerSupported         string `json:"TransmitPowerSupported,omitempty"`
	CCARequest                     string `json:"CCARequest,omitempty"`
	SupportedFrequencyBands        string `json:"SupportedFrequencyBands,omitempty"`
	IfcName                        string `json:"IfcName,omitempty"`
	SupportedChannelBandwidth      string `json:"SupportedChannelBandwidth,omitempty"`
	BasicDataTransmitRates         string `json:"BasicDataTransmitRates,omitempty"`
	StoppedBy                      string `json:"StoppedBy,omitempty"`
	BlackListedChannels            string `json:"BlackListedChannels,omitempty"`
	Status                         string `json:"Status,omitempty"`
	RxSTBC                         string `json:"RxSTBC,omitempty"`
	CCAReport                      string `json:"CCAReport,omitempty"`
	SupportedStandards             string `json:"SupportedStandards,omitempty"`
	Interference                   string `json:"Interference,omitempty"`
	SupportedDataTransmitRates     string `json:"SupportedDataTransmitRates,omitempty"`
	RegulatoryDomain               string `json:"RegulatoryDomain,omitempty"`
	RPIHistogramRequest            string `json:"RPIHistogramRequest,omitempty"`
	RPIHistogramReport             string `json:"RPIHistogramReport,omitempty"`
	LocationDescription            string `json:"LocationDescription,omitempty"`
	PreambleType                   string `json:"PreambleType,omitempty"`
	ChannelsInUse                  string `json:"ChannelsInUse,omitempty"`
	PossibleChannels               string `json:"PossibleChannels,omitempty"`
	DFSChannel                     string `json:"DFSChannel,omitempty"`
	OperationalDataTransmitRates   string `json:"OperationalDataTransmitRates,omitempty"`
	OperatingStandards             string `json:"OperatingStandards,omitempty"`
	DeviceOperationMode            string `json:"DeviceOperationMode,omitempty"`
	OperatingMCSSet                string `json:"OperatingMCSSet,omitempty"`
	OperatingFrequencyBand         string `json:"OperatingFrequencyBand,omitempty"`
	OperatingChannelBandwidth      string `json:"OperatingChannelBandwidth,omitempty"`
	Name                           string `json:"Name,omitempty"`
	ExtensionChannel               string `json:"ExtensionChannel,omitempty"`
	LowerLayers                    string `json:"LowerLayers,omitempty"`
	ChannelHoppingHistory          struct {
		Channels  string `json:"Channels,omitempty"`
		Reason    string `json:"Reason,omitempty"`
		Timestamp string `json:"Timestamp,omitempty"`
		Count     int    `json:"Count,omitempty"`
	} `json:"ChannelHoppingHistory,omitempty"`
	WirelessScan struct {
		ChannelsToTest string `json:"ChannelsToTest,omitempty"`
		State          string `json:"State,omitempty"`
		SSIDs          []any  `json:"SSIDs,omitempty"`
	} `json:"WirelessScan,omitempty"`
	SiteSurvey struct {
		ChannelsToTest string `json:"ChannelsToTest,omitempty"`
		ScanMode       string `json:"ScanMode,omitempty"`
		State          string `json:"State,omitempty"`
		ChannelSurveys []any  `json:"ChannelSurveys,omitempty"`
		MaxDwellTime   int    `json:"MaxDwellTime,omitempty"`
		MinDwellTime   int    `json:"MinDwellTime,omitempty"`
		NbEntries      int    `json:"NbEntries,omitempty"`
		SamplePeriod   int    `json:"SamplePeriod,omitempty"`
	} `json:"SiteSurvey,omitempty"`
	Stats struct {
		Active                 string `json:"Active,omitempty"`
		BKCount                string `json:"BK_count,omitempty"`
		BcnCount               string `json:"Bcn_count,omitempty"`
		BeCount                string `json:"Be_count,omitempty"`
		BytesReceived          string `json:"BytesReceived,omitempty"`
		BytesSent              string `json:"BytesSent,omitempty"`
		CabCount               string `json:"Cab_count,omitempty"`
		PacketsReceived        string `json:"PacketsReceived,omitempty"`
		PacketsSent            string `json:"PacketsSent,omitempty"`
		ViCount                string `json:"Vi_count,omitempty"`
		VoCount                string `json:"Vo_count,omitempty"`
		CollisionsPackets      int    `json:"CollisionsPackets,omitempty"`
		DiscardPacketsReceived int    `json:"DiscardPacketsReceived,omitempty"`
		DiscardPacketsSent     int    `json:"DiscardPacketsSent,omitempty"`
		ErrorsReceived         int    `json:"ErrorsReceived,omitempty"`
		ErrorsSent             int    `json:"ErrorsSent,omitempty"`
		FCSErrorCount          int    `json:"FCSErrorCount,omitempty"`
		InvalidMACCount        int    `json:"InvalidMACCount,omitempty"`
		Noise                  int    `json:"Noise,omitempty"`
		Opertxpower            int    `json:"Opertxpower,omitempty"`
		PLCPErrorCount         int    `json:"PLCPErrorCount,omitempty"`
		PacketsOtherReceived   int    `json:"PacketsOtherReceived,omitempty"`
		SampleCount            int    `json:"SampleCount,omitempty"`
	} `json:"Stats,omitempty"`
	Channel                          int     `json:"Channel,omitempty"`
	RTSThreshold                     int     `json:"RTSThreshold,omitempty"`
	UID                              int     `json:"uid,omitempty"`
	Ampdumpdu                        int     `json:"AMPDUMPDU,omitempty"`
	Amsdu                            int     `json:"AMSDU,omitempty"`
	AutoChannelAcsTriggerVar         int     `json:"AutoChannelAcsTriggerVar,omitempty"`
	AutoChannelLockoutPeriod         int     `json:"AutoChannelLockoutPeriod,omitempty"`
	GreenAPDelay                     int     `json:"GreenAPDelay,omitempty"`
	LastChange                       int     `json:"LastChange,omitempty"`
	LastStatsReset                   int     `json:"LastStatsReset,omitempty"`
	TransmitPowerMax                 float64 `json:"TransmitPowerMax,omitempty"`
	LongRetryLimit                   int     `json:"LongRetryLimit,omitempty"`
	FragmentationThreshold           int     `json:"FragmentationThreshold,omitempty"`
	Mcs                              int     `json:"MCS,omitempty"`
	MaxBitRate                       int64   `json:"MaxBitRate,omitempty"`
	TransmitPower                    float64
	AutoChannelMaxAcs                int `json:"AutoChannelMaxAcs,omitempty"`
	AutoChannelRefreshPeriod         int `json:"AutoChannelRefreshPeriod,omitempty"`
	BeaconPeriod                     int `json:"BeaconPeriod,omitempty"`
	BoardSpecificChipIndex           int `json:"BoardSpecificChipIndex,omitempty"`
	DTIMPeriod                       int `json:"DTIMPeriod,omitempty"`
	RetryLimit                       int `json:"RetryLimit,omitempty"`
	CSACount                         int `json:"CSACount,omitempty"`
	CurrentOperatingChannelBandwidth int64
	RadarDetections                  int  `json:"RadarDetections,omitempty"`
	Ampdu                            int  `json:"AMPDU,omitempty"`
	NewChannelsEnable                bool `json:"NewChannelsEnable,omitempty"`
	ChannelHoppingStatus             bool `json:"ChannelHoppingStatus,omitempty"`
	Enable11Ac2G                     bool `json:"Enable11ac2G,omitempty"`
	CSAEnable                        bool `json:"CSAEnable,omitempty"`
	PacketAggregationEnable          bool `json:"PacketAggregationEnable,omitempty"`
	ResetStats                       bool `json:"ResetStats,omitempty"`
	DLMUMIMOEnabled                  bool `json:"DLMUMIMOEnabled,omitempty"`
	BurstModeEnable                  bool `json:"BurstModeEnable,omitempty"`
	SingleTxCCK                      bool `json:"SingleTxCCK,omitempty"`
	Diversity11B                     bool `json:"Diversity11b,omitempty"`
	DownlinkOFDMAEnable              bool `json:"DownlinkOFDMAEnable,omitempty"`
	AutoChannelTrigger               bool `json:"AutoChannelTrigger,omitempty"`
	AutoChannelSupported             bool `json:"AutoChannelSupported,omitempty"`
	Enable                           bool `json:"Enable,omitempty"`
	GModeProtectionEnabled           bool `json:"gModeProtectionEnabled,omitempty"`
	HybridScanMode                   bool `json:"HybridScanMode,omitempty"`
	FrameBurstEnabled                bool `json:"FrameBurstEnabled,omitempty"`
	GreenAPEnabled                   bool `json:"GreenAPEnabled,omitempty"`
	AutoChannelEnable                bool `json:"AutoChannelEnable,omitempty"`
	IncreasedPowerEnable             bool `json:"IncreasedPowerEnable,omitempty"`
	AdminStatus                      bool `json:"AdminStatus,omitempty"`
	ATFEnable                        bool `json:"ATFEnable,omitempty"`
	HostBasedScbEnable               bool `json:"HostBasedScbEnable,omitempty"`
	IEEE80211HSupported              bool `json:"IEEE80211hSupported,omitempty"`
	TransmitBeamForming              bool `json:"TransmitBeamForming,omitempty"`
	UplinkOFDMAEnable                bool `json:"UplinkOFDMAEnable,omitempty"`
	Upstream                         bool `json:"Upstream,omitempty"`
	VoWEnable                        bool `json:"VoWEnable,omitempty"`
	IEEE80211HEnabled                bool `json:"IEEE80211hEnabled,omitempty"`
	ChannelHoppingEnable             bool `json:"ChannelHoppingEnable,omitempty"`
}

func (*Radio) UnmarshalJSON

func (r *Radio) UnmarshalJSON(data []byte) error

type ResourceUsage

type ResourceUsage struct {
	ProcessStatus        ProcessStatuses `json:"ProcessStatus,omitempty"`
	TotalMemory          int64           `json:"TotalMemory,omitempty"`
	FreeMemory           int64           `json:"FreeMemory,omitempty"`
	AvailableFlashMemory int64           `json:"AvailableFlashMemory,omitempty"`
	UsedFlashMemory      int64           `json:"UsedFlashMemory,omitempty"`
	CPUUsage             int64           `json:"CPUUsage,omitempty"`
	LoadAverage          float64         `json:"LoadAverage,omitempty"`
	LoadAverage5         float64         `json:"LoadAverage5,omitempty"`
	LoadAverage15        float64         `json:"LoadAverage15,omitempty"`
}

type SSID

type SSID struct {
	Alias       string `json:"Alias,omitempty"`
	Bssid       string `json:"BSSID,omitempty"`
	IfcName     string `json:"IfcName,omitempty"`
	LowerLayers string `json:"LowerLayers,omitempty"`
	MACAddress  string `json:"MACAddress,omitempty"`
	Name        string `json:"Name,omitempty"`
	SSID        string `json:"SSID,omitempty"`
	Status      string `json:"Status,omitempty"`
	StoppedBy   string `json:"StoppedBy,omitempty"`
	Stats       struct {
		ACKFailureCount             int64 `json:"ACKFailureCount"`
		AggregatedPacketCount       int64 `json:"AggregatedPacketCount"`
		BroadcastPacketsReceived    int64 `json:"BroadcastPacketsReceived,string"`
		BroadcastPacketsSent        int64 `json:"BroadcastPacketsSent,string"`
		BytesReceived               int64 `json:"BytesReceived,string"`
		BytesSent                   int64 `json:"BytesSent,string"`
		CollisionsPackets           int64 `json:"CollisionsPackets"`
		DiscardPacketsReceived      int64 `json:"DiscardPacketsReceived"`
		DiscardPacketsSent          int64 `json:"DiscardPacketsSent"`
		ErrorsReceived              int64 `json:"ErrorsReceived"`
		ErrorsSent                  int64 `json:"ErrorsSent"`
		FailedRetransCount          int64 `json:"FailedRetransCount"`
		MulticastPacketsReceived    int64 `json:"MulticastPacketsReceived,string"`
		MulticastPacketsSent        int64 `json:"MulticastPacketsSent,string"`
		MultipleRetryCount          int64 `json:"MultipleRetryCount"`
		PacketsReceived             int64 `json:"PacketsReceived,string"`
		PacketsSent                 int64 `json:"PacketsSent,string"`
		RetransCount                int64 `json:"RetransCount"`
		RetryCount                  int64 `json:"RetryCount"`
		RxRetryCount                int64 `json:"RxRetryCount"`
		UnicastPacketsReceived      int64 `json:"UnicastPacketsReceived,string"`
		UnicastPacketsSent          int64 `json:"UnicastPacketsSent,string"`
		UnknownProtoPacketsReceived int64 `json:"UnknownProtoPacketsReceived"`
	} `json:"Stats,omitempty"`
	LastChange     int  `json:"LastChange,omitempty"`
	LastStatsReset int  `json:"LastStatsReset,omitempty"`
	UID            int  `json:"uid,omitempty"`
	Enable         bool `json:"Enable,omitempty"`
	ResetStats     bool `json:"ResetStats,omitempty"`
}

type Scraper

type Scraper interface {
	// GetValue retrieves a value from the device using a given XPath.
	GetValue(ctx context.Context, xpath string) (*ValueResponse, error)
	// GetResourceUsage retrieves resource usage from the device.
	GetResourceUsage(ctx context.Context) (*ResourceUsage, error)
}

Scraper is an interface for scraping data from a Sagemcom F@st device

func New

func New(host, username, password, authMethod string, hc *http.Client, refresh time.Duration) Scraper

type ValueResponse

type ValueResponse struct {
	Device Device `json:"Device,omitempty"`
}

ValueResponse represents the full response from the router from the getValue method

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL