Files
onvif-go/types.go
T
ProtoTess b4e4982876 Refactor XML response handling in device extended and security tests
- Adjusted formatting in XML response strings for consistency in device_extended_test.go and device_security_test.go.
- Improved readability by aligning XML declaration and body content.
- Updated mock server responses to ensure proper handling of various ONVIF operations.

Enhance device security and storage handling

- Refactored struct field declarations in device_security.go and device_storage_test.go for improved clarity.
- Ensured consistent formatting across struct definitions and XML tags.

Standardize whitespace and formatting across multiple files

- Removed unnecessary blank lines and adjusted indentation in discovery, imaging, media, and PTZ server files.
- Improved overall code readability and maintainability by ensuring consistent formatting.

Update example applications for better readability

- Cleaned up whitespace in example applications to enhance code clarity.
- Ensured consistent formatting in main.go files across various examples.

Refactor server and SOAP handler code for consistency

- Standardized struct field declarations and XML tag formatting in server and SOAP handler files.
- Improved readability by aligning struct fields and ensuring consistent use of whitespace.

General code cleanup and formatting adjustments

- Applied consistent formatting across various files, including types.go and test files.
- Enhanced readability by aligning struct fields and removing unnecessary blank lines.
2025-12-01 00:49:36 +00:00

1078 lines
25 KiB
Go

package onvif
import "time"
// DeviceInformation contains basic device information
type DeviceInformation struct {
Manufacturer string
Model string
FirmwareVersion string
SerialNumber string
HardwareID string
}
// Capabilities represents the device capabilities
type Capabilities struct {
Analytics *AnalyticsCapabilities
Device *DeviceCapabilities
Events *EventCapabilities
Imaging *ImagingCapabilities
Media *MediaCapabilities
PTZ *PTZCapabilities
Extension *CapabilitiesExtension
}
// AnalyticsCapabilities represents analytics service capabilities
type AnalyticsCapabilities struct {
XAddr string
RuleSupport bool
AnalyticsModuleSupport bool
}
// DeviceCapabilities represents device service capabilities
type DeviceCapabilities struct {
XAddr string
Network *NetworkCapabilities
System *SystemCapabilities
IO *IOCapabilities
Security *SecurityCapabilities
}
// EventCapabilities represents event service capabilities
type EventCapabilities struct {
XAddr string
WSSubscriptionPolicySupport bool
WSPullPointSupport bool
WSPausableSubscriptionSupport bool
}
// ImagingCapabilities represents imaging service capabilities
type ImagingCapabilities struct {
XAddr string
}
// MediaCapabilities represents media service capabilities
type MediaCapabilities struct {
XAddr string
StreamingCapabilities *StreamingCapabilities
}
// PTZCapabilities represents PTZ service capabilities
type PTZCapabilities struct {
XAddr string
}
// NetworkCapabilities represents network capabilities
type NetworkCapabilities struct {
IPFilter bool
ZeroConfiguration bool
IPVersion6 bool
DynDNS bool
Extension *NetworkCapabilitiesExtension
}
// SystemCapabilities represents system capabilities
type SystemCapabilities struct {
DiscoveryResolve bool
DiscoveryBye bool
RemoteDiscovery bool
SystemBackup bool
SystemLogging bool
FirmwareUpgrade bool
SupportedVersions []string
Extension *SystemCapabilitiesExtension
}
// IOCapabilities represents I/O capabilities
type IOCapabilities struct {
InputConnectors int
RelayOutputs int
Extension *IOCapabilitiesExtension
}
// SecurityCapabilities represents security capabilities
type SecurityCapabilities struct {
TLS11 bool
TLS12 bool
OnboardKeyGeneration bool
AccessPolicyConfig bool
X509Token bool
SAMLToken bool
KerberosToken bool
RELToken bool
Extension *SecurityCapabilitiesExtension
}
// StreamingCapabilities represents streaming capabilities
type StreamingCapabilities struct {
RTPMulticast bool
RTP_TCP bool
RTP_RTSP_TCP bool
Extension *StreamingCapabilitiesExtension
}
// Extension types
type CapabilitiesExtension struct{}
type NetworkCapabilitiesExtension struct{}
type SystemCapabilitiesExtension struct{}
type IOCapabilitiesExtension struct{}
type SecurityCapabilitiesExtension struct{}
type StreamingCapabilitiesExtension struct{}
// Profile represents a media profile
type Profile struct {
Token string
Name string
VideoSourceConfiguration *VideoSourceConfiguration
AudioSourceConfiguration *AudioSourceConfiguration
VideoEncoderConfiguration *VideoEncoderConfiguration
AudioEncoderConfiguration *AudioEncoderConfiguration
PTZConfiguration *PTZConfiguration
MetadataConfiguration *MetadataConfiguration
Extension *ProfileExtension
}
// VideoSourceConfiguration represents video source configuration
type VideoSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
Bounds *IntRectangle
}
// AudioSourceConfiguration represents audio source configuration
type AudioSourceConfiguration struct {
Token string
Name string
UseCount int
SourceToken string
}
// VideoEncoderConfiguration represents video encoder configuration
type VideoEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // JPEG, MPEG4, H264
Resolution *VideoResolution
Quality float64
RateControl *VideoRateControl
MPEG4 *MPEG4Configuration
H264 *H264Configuration
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// AudioEncoderConfiguration represents audio encoder configuration
type AudioEncoderConfiguration struct {
Token string
Name string
UseCount int
Encoding string // G711, G726, AAC
Bitrate int
SampleRate int
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// PTZConfiguration represents PTZ configuration
type PTZConfiguration struct {
Token string
Name string
UseCount int
NodeToken string
DefaultAbsolutePantTiltPositionSpace string
DefaultAbsoluteZoomPositionSpace string
DefaultRelativePanTiltTranslationSpace string
DefaultRelativeZoomTranslationSpace string
DefaultContinuousPanTiltVelocitySpace string
DefaultContinuousZoomVelocitySpace string
DefaultPTZSpeed *PTZSpeed
DefaultPTZTimeout time.Duration
PanTiltLimits *PanTiltLimits
ZoomLimits *ZoomLimits
}
// MetadataConfiguration represents metadata configuration
type MetadataConfiguration struct {
Token string
Name string
UseCount int
PTZStatus *PTZFilter
Events *EventSubscription
Analytics bool
Multicast *MulticastConfiguration
SessionTimeout time.Duration
}
// VideoResolution represents video resolution
type VideoResolution struct {
Width int
Height int
}
// VideoRateControl represents video rate control
type VideoRateControl struct {
FrameRateLimit int
EncodingInterval int
BitrateLimit int
}
// MPEG4Configuration represents MPEG4 configuration
type MPEG4Configuration struct {
GovLength int
MPEG4Profile string
}
// H264Configuration represents H264 configuration
type H264Configuration struct {
GovLength int
H264Profile string
}
// MulticastConfiguration represents multicast configuration
type MulticastConfiguration struct {
Address *IPAddress
Port int
TTL int
AutoStart bool
}
// IPAddress represents an IP address
type IPAddress struct {
Type string // IPv4 or IPv6
Address string
IPv4Address string
IPv6Address string
}
// IntRectangle represents a rectangle with integer coordinates
type IntRectangle struct {
X int
Y int
Width int
Height int
}
// PTZSpeed represents PTZ speed
type PTZSpeed struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// Vector2D represents a 2D vector
type Vector2D struct {
X float64
Y float64
Space string
}
// Vector1D represents a 1D vector
type Vector1D struct {
X float64
Space string
}
// PanTiltLimits represents pan/tilt limits
type PanTiltLimits struct {
Range *Space2DDescription
}
// ZoomLimits represents zoom limits
type ZoomLimits struct {
Range *Space1DDescription
}
// Space2DDescription represents 2D space description
type Space2DDescription struct {
URI string
XRange *FloatRange
YRange *FloatRange
}
// Space1DDescription represents 1D space description
type Space1DDescription struct {
URI string
XRange *FloatRange
}
// FloatRange represents a float range
type FloatRange struct {
Min float64
Max float64
}
// PTZFilter represents PTZ filter
type PTZFilter struct {
Status bool
Position bool
}
// EventSubscription represents event subscription
type EventSubscription struct {
Filter *FilterType
}
// FilterType represents filter type
type FilterType struct {
// Simplified for now
}
// ProfileExtension represents profile extension
type ProfileExtension struct{}
// StreamSetup represents stream setup parameters
type StreamSetup struct {
Stream string // RTP-Unicast, RTP-Multicast
Transport *Transport
}
// Transport represents transport parameters
type Transport struct {
Protocol string // UDP, TCP, RTSP, HTTP
Tunnel *Tunnel
}
// Tunnel represents tunnel parameters
type Tunnel struct{}
// MediaURI represents a media URI
type MediaURI struct {
URI string
InvalidAfterConnect bool
InvalidAfterReboot bool
Timeout time.Duration
}
// PTZStatus represents PTZ status
type PTZStatus struct {
Position *PTZVector
MoveStatus *PTZMoveStatus
Error string
UTCTime time.Time
}
// PTZVector represents PTZ position
type PTZVector struct {
PanTilt *Vector2D
Zoom *Vector1D
}
// PTZMoveStatus represents PTZ movement status
type PTZMoveStatus struct {
PanTilt string // IDLE, MOVING, UNKNOWN
Zoom string // IDLE, MOVING, UNKNOWN
}
// PTZPreset represents a PTZ preset
type PTZPreset struct {
Token string
Name string
PTZPosition *PTZVector
}
// ImagingSettings represents imaging settings
type ImagingSettings struct {
BacklightCompensation *BacklightCompensation
Brightness *float64
ColorSaturation *float64
Contrast *float64
Exposure *Exposure
Focus *FocusConfiguration
IrCutFilter *string
Sharpness *float64
WideDynamicRange *WideDynamicRange
WhiteBalance *WhiteBalance
Extension *ImagingSettingsExtension
}
// BacklightCompensation represents backlight compensation
type BacklightCompensation struct {
Mode string // OFF, ON
Level float64
}
// Exposure represents exposure settings
type Exposure struct {
Mode string // AUTO, MANUAL
Priority string // LowNoise, FrameRate
MinExposureTime float64
MaxExposureTime float64
MinGain float64
MaxGain float64
MinIris float64
MaxIris float64
ExposureTime float64
Gain float64
Iris float64
}
// FocusConfiguration represents focus configuration
type FocusConfiguration struct {
AutoFocusMode string // AUTO, MANUAL
DefaultSpeed float64
NearLimit float64
FarLimit float64
}
// WideDynamicRange represents WDR settings
type WideDynamicRange struct {
Mode string // OFF, ON
Level float64
}
// WhiteBalance represents white balance settings
type WhiteBalance struct {
Mode string // AUTO, MANUAL
CrGain float64
CbGain float64
}
// ImagingSettingsExtension represents imaging settings extension
type ImagingSettingsExtension struct{}
// HostnameInformation represents hostname configuration
type HostnameInformation struct {
FromDHCP bool
Name string
}
// DNSInformation represents DNS configuration
type DNSInformation struct {
FromDHCP bool
SearchDomain []string
DNSFromDHCP []IPAddress
DNSManual []IPAddress
}
// NTPInformation represents NTP configuration
type NTPInformation struct {
FromDHCP bool
NTPFromDHCP []NetworkHost
NTPManual []NetworkHost
}
// NetworkHost represents a network host
type NetworkHost struct {
Type string // IPv4, IPv6, DNS
IPv4Address string
IPv6Address string
DNSname string
}
// NetworkInterface represents a network interface
type NetworkInterface struct {
Token string
Enabled bool
Info NetworkInterfaceInfo
IPv4 *IPv4NetworkInterface
IPv6 *IPv6NetworkInterface
}
// NetworkInterfaceInfo represents network interface info
type NetworkInterfaceInfo struct {
Name string
HwAddress string
MTU int
}
// IPv4NetworkInterface represents IPv4 configuration
type IPv4NetworkInterface struct {
Enabled bool
Config IPv4Configuration
}
// IPv6NetworkInterface represents IPv6 configuration
type IPv6NetworkInterface struct {
Enabled bool
Config IPv6Configuration
}
// IPv4Configuration represents IPv4 configuration
type IPv4Configuration struct {
Manual []PrefixedIPv4Address
DHCP bool
}
// IPv6Configuration represents IPv6 configuration
type IPv6Configuration struct {
Manual []PrefixedIPv6Address
DHCP bool
}
// PrefixedIPv4Address represents an IPv4 address with prefix
type PrefixedIPv4Address struct {
Address string
PrefixLength int
}
// PrefixedIPv6Address represents an IPv6 address with prefix
type PrefixedIPv6Address struct {
Address string
PrefixLength int
}
// Scope represents a device scope
type Scope struct {
ScopeDef string
ScopeItem string
}
// User represents a user account
type User struct {
Username string
Password string
UserLevel string // Administrator, Operator, User
}
// VideoSource represents a video source
type VideoSource struct {
Token string
Framerate float64
Resolution *VideoResolution
Imaging *ImagingSettings
}
// AudioSource represents an audio source
type AudioSource struct {
Token string
Channels int
}
// AudioOutput represents an audio output
type AudioOutput struct {
Token string
}
// ImagingOptions represents available imaging options
type ImagingOptions struct {
BacklightCompensation *BacklightCompensationOptions
Brightness *FloatRange
ColorSaturation *FloatRange
Contrast *FloatRange
Exposure *ExposureOptions
Focus *FocusOptions
IrCutFilterModes []string
Sharpness *FloatRange
WideDynamicRange *WideDynamicRangeOptions
WhiteBalance *WhiteBalanceOptions
}
// BacklightCompensationOptions represents backlight compensation options
type BacklightCompensationOptions struct {
Mode []string
Level *FloatRange
}
// ExposureOptions represents exposure options
type ExposureOptions struct {
Mode []string
Priority []string
MinExposureTime *FloatRange
MaxExposureTime *FloatRange
MinGain *FloatRange
MaxGain *FloatRange
MinIris *FloatRange
MaxIris *FloatRange
ExposureTime *FloatRange
Gain *FloatRange
Iris *FloatRange
}
// FocusOptions represents focus options
type FocusOptions struct {
AutoFocusModes []string
DefaultSpeed *FloatRange
NearLimit *FloatRange
FarLimit *FloatRange
}
// WideDynamicRangeOptions represents WDR options
type WideDynamicRangeOptions struct {
Mode []string
Level *FloatRange
}
// WhiteBalanceOptions represents white balance options
type WhiteBalanceOptions struct {
Mode []string
YrGain *FloatRange
YbGain *FloatRange
}
// MoveOptions represents imaging move options
type MoveOptions struct {
Absolute *AbsoluteFocusOptions
Relative *RelativeFocusOptions
Continuous *ContinuousFocusOptions
}
// AbsoluteFocusOptions represents absolute focus options
type AbsoluteFocusOptions struct {
Position FloatRange
Speed FloatRange
}
// RelativeFocusOptions represents relative focus options
type RelativeFocusOptions struct {
Distance FloatRange
Speed FloatRange
}
// ContinuousFocusOptions represents continuous focus options
type ContinuousFocusOptions struct {
Speed FloatRange
}
// ImagingStatus represents imaging status
type ImagingStatus struct {
FocusStatus *FocusStatus
}
// FocusStatus represents focus status
type FocusStatus struct {
Position float64
MoveStatus string
Error string
}
// Service represents an ONVIF service
type Service struct {
Namespace string
XAddr string
Capabilities interface{}
Version OnvifVersion
}
// OnvifVersion represents ONVIF version
type OnvifVersion struct {
Major int
Minor int
}
// DeviceServiceCapabilities represents device service capabilities
type DeviceServiceCapabilities struct {
Network *NetworkCapabilities
Security *SecurityCapabilities
System *SystemCapabilities
Misc *MiscCapabilities
}
// MiscCapabilities represents miscellaneous capabilities
type MiscCapabilities struct {
AuxiliaryCommands []string
}
// DiscoveryMode represents discovery mode
type DiscoveryMode string
const (
DiscoveryModeDiscoverable DiscoveryMode = "Discoverable"
DiscoveryModeNonDiscoverable DiscoveryMode = "NonDiscoverable"
)
// NetworkProtocol represents network protocol configuration
type NetworkProtocol struct {
Name NetworkProtocolType
Enabled bool
Port []int
}
// NetworkProtocolType represents protocol type
type NetworkProtocolType string
const (
NetworkProtocolHTTP NetworkProtocolType = "HTTP"
NetworkProtocolHTTPS NetworkProtocolType = "HTTPS"
NetworkProtocolRTSP NetworkProtocolType = "RTSP"
)
// NetworkGateway represents default gateway
type NetworkGateway struct {
IPv4Address []string
IPv6Address []string
}
// SystemDateTime represents system date and time
type SystemDateTime struct {
DateTimeType SetDateTimeType
DaylightSavings bool
TimeZone *TimeZone
UTCDateTime *DateTime
LocalDateTime *DateTime
}
// SetDateTimeType represents date/time set method
type SetDateTimeType string
const (
SetDateTimeManual SetDateTimeType = "Manual"
SetDateTimeNTP SetDateTimeType = "NTP"
)
// TimeZone represents timezone
type TimeZone struct {
TZ string // POSIX format
}
// DateTime represents date and time
type DateTime struct {
Time Time
Date Date
}
// Time represents time
type Time struct {
Hour int
Minute int
Second int
}
// Date represents date
type Date struct {
Year int
Month int
Day int
}
// SystemLogType represents system log type
type SystemLogType string
const (
SystemLogTypeSystem SystemLogType = "System"
SystemLogTypeAccess SystemLogType = "Access"
)
// SystemLog represents system log data
type SystemLog struct {
Binary *AttachmentData
String string
}
// AttachmentData represents attachment/binary data
type AttachmentData struct {
ContentType string
Include *Include
}
// Include represents XOP include
type Include struct {
Href string
}
// BackupFile represents backup file
type BackupFile struct {
Name string
Data AttachmentData
}
// FactoryDefaultType represents factory default type
type FactoryDefaultType string
const (
FactoryDefaultHard FactoryDefaultType = "Hard"
FactoryDefaultSoft FactoryDefaultType = "Soft"
)
// RelayOutput represents relay output
type RelayOutput struct {
Token string
Properties RelayOutputSettings
}
// RelayOutputSettings represents relay output settings
type RelayOutputSettings struct {
Mode RelayMode
DelayTime time.Duration
IdleState RelayIdleState
}
// RelayMode represents relay mode
type RelayMode string
const (
RelayModeMonostable RelayMode = "Monostable"
RelayModeBistable RelayMode = "Bistable"
)
// RelayIdleState represents relay idle state
type RelayIdleState string
const (
RelayIdleStateClosed RelayIdleState = "closed"
RelayIdleStateOpen RelayIdleState = "open"
)
// RelayLogicalState represents relay logical state
type RelayLogicalState string
const (
RelayLogicalStateActive RelayLogicalState = "active"
RelayLogicalStateInactive RelayLogicalState = "inactive"
)
// AuxiliaryData represents auxiliary command data
type AuxiliaryData string
// SupportInformation represents support information
type SupportInformation struct {
Binary *AttachmentData
String string
}
// SystemLogUriList represents system log URIs
type SystemLogUriList struct {
SystemLog []SystemLogUri
}
// SystemLogUri represents system log URI
type SystemLogUri struct {
Type SystemLogType
Uri string
}
// NetworkZeroConfiguration represents zero-configuration
type NetworkZeroConfiguration struct {
InterfaceToken string
Enabled bool
Addresses []string
}
// DynamicDNSInformation represents dynamic DNS info
type DynamicDNSInformation struct {
Type DynamicDNSType
Name string
TTL time.Duration
}
// DynamicDNSType represents dynamic DNS type
type DynamicDNSType string
const (
DynamicDNSNoUpdate DynamicDNSType = "NoUpdate"
DynamicDNSClientUpdates DynamicDNSType = "ClientUpdates"
DynamicDNSServerUpdates DynamicDNSType = "ServerUpdates"
)
// IPAddressFilter represents IP address filter
type IPAddressFilter struct {
Type IPAddressFilterType
IPv4Address []PrefixedIPv4Address
IPv6Address []PrefixedIPv6Address
}
// IPAddressFilterType represents filter type
type IPAddressFilterType string
const (
IPAddressFilterAllow IPAddressFilterType = "Allow"
IPAddressFilterDeny IPAddressFilterType = "Deny"
)
// RemoteUser represents remote user configuration
type RemoteUser struct {
Username string
Password string
UseDerivedPassword bool
}
// Certificate represents a certificate
type Certificate struct {
CertificateID string
Certificate BinaryData
}
// BinaryData represents binary data
type BinaryData struct {
ContentType string
Data []byte
}
// CertificateStatus represents certificate status
type CertificateStatus struct {
CertificateID string
Status bool
}
// CertificateInformation represents certificate information
type CertificateInformation struct {
CertificateID string
IssuerDN string
SubjectDN string
KeyUsage *CertificateUsage
ExtendedKeyUsage *CertificateUsage
KeyLength int
Version string
SerialNum string
SignatureAlgorithm string
Validity *DateTimeRange
}
// CertificateUsage represents certificate usage
type CertificateUsage struct {
Critical bool
Value string
}
// DateTimeRange represents date/time range
type DateTimeRange struct {
From time.Time
Until time.Time
}
// Dot11Capabilities represents 802.11 capabilities
type Dot11Capabilities struct {
TKIP bool
ScanAvailableNetworks bool
MultipleConfiguration bool
AdHocStationMode bool
WEP bool
}
// Dot11Status represents 802.11 status
type Dot11Status struct {
SSID string
BSSID string
PairCipher Dot11Cipher
GroupCipher Dot11Cipher
SignalStrength Dot11SignalStrength
ActiveConfigAlias string
}
// Dot11Cipher represents 802.11 cipher
type Dot11Cipher string
const (
Dot11CipherCCMP Dot11Cipher = "CCMP"
Dot11CipherTKIP Dot11Cipher = "TKIP"
Dot11CipherAny Dot11Cipher = "Any"
Dot11CipherExtended Dot11Cipher = "Extended"
)
// Dot11SignalStrength represents signal strength
type Dot11SignalStrength string
const (
Dot11SignalNone Dot11SignalStrength = "None"
Dot11SignalVeryBad Dot11SignalStrength = "Very Bad"
Dot11SignalBad Dot11SignalStrength = "Bad"
Dot11SignalGood Dot11SignalStrength = "Good"
Dot11SignalVeryGood Dot11SignalStrength = "Very Good"
Dot11SignalExtended Dot11SignalStrength = "Extended"
)
// Dot1XConfiguration represents 802.1X configuration
type Dot1XConfiguration struct {
Dot1XConfigurationToken string
Identity string
AnonymousID string
EAPMethod int
CACertificateID []string
EAPMethodConfiguration *EAPMethodConfiguration
}
// EAPMethodConfiguration represents EAP method configuration
type EAPMethodConfiguration struct {
TLSConfiguration *TLSConfiguration
Password string
}
// TLSConfiguration represents TLS configuration
type TLSConfiguration struct {
CertificateID string
}
// Dot11AvailableNetworks represents available 802.11 networks
type Dot11AvailableNetworks struct {
SSID string
BSSID string
AuthAndMangementSuite []Dot11AuthAndMangementSuite
PairCipher []Dot11Cipher
GroupCipher []Dot11Cipher
SignalStrength Dot11SignalStrength
}
// Dot11AuthAndMangementSuite represents auth suite
type Dot11AuthAndMangementSuite string
const (
Dot11AuthNone Dot11AuthAndMangementSuite = "None"
Dot11AuthDot1X Dot11AuthAndMangementSuite = "Dot1X"
Dot11AuthPSK Dot11AuthAndMangementSuite = "PSK"
Dot11AuthExtended Dot11AuthAndMangementSuite = "Extended"
)
// StorageConfiguration represents storage configuration
type StorageConfiguration struct {
Token string
Data StorageConfigurationData
}
// StorageConfigurationData represents storage configuration data
type StorageConfigurationData struct {
Type string
LocalPath string
StorageUri string
User *UserCredential
CertPathValidationPolicyID string
}
// UserCredential represents user credentials
type UserCredential struct {
UserName string
Password string
Token string
}
// LocationEntity represents geo location
type LocationEntity struct {
Entity string `xml:"Entity"`
Token string `xml:"Token"`
Fixed bool `xml:"Fixed"`
Lon float64 `xml:"Lon,attr"`
Lat float64 `xml:"Lat,attr"`
Elevation float64 `xml:"Elevation,attr"`
}
// GeoLocation represents geographic location coordinates
type GeoLocation struct {
Lon float64 `xml:"lon,attr,omitempty"` // Longitude in degrees
Lat float64 `xml:"lat,attr,omitempty"` // Latitude in degrees
Elevation float64 `xml:"elevation,attr,omitempty"` // Elevation in meters
}
// AccessPolicy represents device access policy configuration
type AccessPolicy struct {
PolicyFile *BinaryData
}
// PasswordComplexityConfiguration represents password complexity config
type PasswordComplexityConfiguration struct {
MinLen int
Uppercase int
Number int
SpecialChars int
BlockUsernameOccurrence bool
PolicyConfigurationLocked bool
}
// PasswordHistoryConfiguration represents password history config
type PasswordHistoryConfiguration struct {
Enabled bool
Length int
}
// AuthFailureWarningConfiguration represents auth failure warning config
type AuthFailureWarningConfiguration struct {
Enabled bool
MonitorPeriod int
MaxAuthFailures int
}
// IntRange represents integer range
type IntRange struct {
Min int
Max int
}