diff --git a/fields/main.go b/fields/main.go index 6bc162b..494849a 100644 --- a/fields/main.go +++ b/fields/main.go @@ -306,6 +306,24 @@ func main() { f.OmitEmpty = true return nil } + case "SettingMgmt": + sshKeyField := NewFieldInfo(resource.StructName+"XSshKeys", "x_ssh_keys", "struct", "", false, false) + sshKeyField.Fields = map[string]*FieldInfo{ + "name": NewFieldInfo("name", "name", "string", "", false, false), + "keyType": NewFieldInfo("keyType", "type", "string", "", false, false), + "key": NewFieldInfo("key", "key", "string", "", false, false), + "comment": NewFieldInfo("comment", "comment", "string", "", false, false), + "date": NewFieldInfo("date", "date", "string", "", false, false), + "fingerprint": NewFieldInfo("fingerprint", "fingerprint", "string", "", false, false), + } + resource.Types[sshKeyField.FieldName] = sshKeyField + + resource.FieldProcessor = func(name string, f *FieldInfo) error { + if name == "XSshKeys" { + f.FieldType = sshKeyField.FieldName + } + return nil + } case "SettingUsg": resource.FieldProcessor = func(name string, f *FieldInfo) error { if strings.HasSuffix(name, "Timeout") && name != "ArpCacheTimeout" { diff --git a/unifi/setting_mgmt.generated.go b/unifi/setting_mgmt.generated.go index acfc8eb..00607b7 100644 --- a/unifi/setting_mgmt.generated.go +++ b/unifi/setting_mgmt.generated.go @@ -27,23 +27,23 @@ type SettingMgmt struct { Key string `json:"key"` - AdvancedFeatureEnabled bool `json:"advanced_feature_enabled"` - AlertEnabled bool `json:"alert_enabled"` - AutoUpgrade bool `json:"auto_upgrade"` - BootSound bool `json:"boot_sound"` - LedEnabled bool `json:"led_enabled"` - OutdoorModeEnabled bool `json:"outdoor_mode_enabled"` - UnifiIDpEnabled bool `json:"unifi_idp_enabled"` - WifimanEnabled bool `json:"wifiman_enabled"` - XMgmtKey string `json:"x_mgmt_key,omitempty"` // [0-9a-f]{32} - XSshAuthPasswordEnabled bool `json:"x_ssh_auth_password_enabled"` - XSshBindWildcard bool `json:"x_ssh_bind_wildcard"` - XSshEnabled bool `json:"x_ssh_enabled"` - XSshKeys []string `json:"x_ssh_keys,omitempty"` - XSshMd5Passwd string `json:"x_ssh_md5passwd,omitempty"` - XSshPassword string `json:"x_ssh_password,omitempty"` // .{1,128} - XSshSha512Passwd string `json:"x_ssh_sha512passwd,omitempty"` - XSshUsername string `json:"x_ssh_username,omitempty"` // ^[_A-Za-z0-9][-_.A-Za-z0-9]{0,29}$ + AdvancedFeatureEnabled bool `json:"advanced_feature_enabled"` + AlertEnabled bool `json:"alert_enabled"` + AutoUpgrade bool `json:"auto_upgrade"` + BootSound bool `json:"boot_sound"` + LedEnabled bool `json:"led_enabled"` + OutdoorModeEnabled bool `json:"outdoor_mode_enabled"` + UnifiIDpEnabled bool `json:"unifi_idp_enabled"` + WifimanEnabled bool `json:"wifiman_enabled"` + XMgmtKey string `json:"x_mgmt_key,omitempty"` // [0-9a-f]{32} + XSshAuthPasswordEnabled bool `json:"x_ssh_auth_password_enabled"` + XSshBindWildcard bool `json:"x_ssh_bind_wildcard"` + XSshEnabled bool `json:"x_ssh_enabled"` + XSshKeys []SettingMgmtXSshKeys `json:"x_ssh_keys,omitempty"` + XSshMd5Passwd string `json:"x_ssh_md5passwd,omitempty"` + XSshPassword string `json:"x_ssh_password,omitempty"` // .{1,128} + XSshSha512Passwd string `json:"x_ssh_sha512passwd,omitempty"` + XSshUsername string `json:"x_ssh_username,omitempty"` // ^[_A-Za-z0-9][-_.A-Za-z0-9]{0,29}$ } func (dst *SettingMgmt) UnmarshalJSON(b []byte) error { @@ -62,6 +62,31 @@ func (dst *SettingMgmt) UnmarshalJSON(b []byte) error { return nil } +type SettingMgmtXSshKeys struct { + comment string `json:"comment"` + date string `json:"date"` + fingerprint string `json:"fingerprint"` + key string `json:"key"` + keyType string `json:"type"` + name string `json:"name"` +} + +func (dst *SettingMgmtXSshKeys) UnmarshalJSON(b []byte) error { + type Alias SettingMgmtXSshKeys + aux := &struct { + *Alias + }{ + Alias: (*Alias)(dst), + } + + err := json.Unmarshal(b, &aux) + if err != nil { + return fmt.Errorf("unable to unmarshal alias: %w", err) + } + + return nil +} + func (c *Client) getSettingMgmt(ctx context.Context, site string) (*SettingMgmt, error) { var respBody struct { Meta meta `json:"meta"`