app/registry/registry.go (136 lines of code) (raw):

package registry import ( "fmt" ) const ( ScenarioKeyRequired = "key-required" ScenarioKeyNotRequired = "key-not-required" KeyDeviceTypeFile = "file" KeyDeviceTypeHardware = "hardware" SMTPTypePlatform = "platform-mail-server" SMTPTypeExternal = "external-mail-server" ) type registry struct { Name string `form:"name" binding:"required,min=3,max=12,registry-name" json:"name"` Description string `form:"description" valid:"max=250" json:"description"` Admins string `form:"admins" json:"admins"` AdminsChanged string `form:"admins-changed"` SignKeyIssuer string `form:"sign-key-issuer" binding:"required_if=KeyDeviceType file Scenario key-required"` SignKeyPwd string `form:"sign-key-pwd" binding:"required_if=KeyDeviceType file Scenario key-required"` RegistryGitBranch string `form:"registry-git-branch" binding:"required"` KeyDeviceType string `form:"key-device-type" binding:"oneof=file hardware"` RemoteType string `form:"remote-type" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteKeyPassword string `form:"remote-key-pwd" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteCAName string `form:"remote-ca-name" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteCAHost string `form:"remote-ca-host" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteCAPort string `form:"remote-ca-port" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteSerialNumber string `form:"remote-serial-number" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteKeyPort string `form:"remote-key-port" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteKeyHost string `form:"remote-key-host" binding:"required_if=KeyDeviceType hardware Scenario key-required"` RemoteKeyMask string `form:"remote-key-mask" binding:"required_if=KeyDeviceType hardware Scenario key-required"` Scenario string `binding:"oneof=key-required key-not-required"` INIConfig string `form:"remote-ini-config" binding:"required_if=KeyDeviceType hardware Scenario key-required"` AllowedKeysSerial []string `form:"allowed-keys-serial[]" binding:"required_if=Scenario key-required"` AllowedKeysIssuer []string `form:"allowed-keys-issuer[]" binding:"required_if=Scenario key-required"` MailServerType string `form:"smtp-server-type"` MailServerOpts string `form:"mail-server-opts"` DNSNameOfficer string `form:"officer-dns"` DNSNameOfficerEnabled string `form:"officer-dns-enabled"` DNSNameCitizen string `form:"citizen-dns"` DNSNameCitizenEnabled string `form:"citizen-dns-enabled"` DNSNameKeycloak string `form:"keycloak-dns"` CIDROfficer string `form:"officer-cidr"` CIDRCitizen string `form:"citizen-cidr"` CIDRAdmin string `form:"admin-cidr"` CIDRChanged string `form:"cidr-changed"` Resources string `form:"resources"` SupAuthBrowserFlow string `form:"sup-auth-browser-flow"` SupAuthURL string `form:"sup-auth-url"` SupAuthWidgetHeight string `form:"sup-auth-widget-height"` SupAuthClientID string `form:"sup-auth-client-id"` SupAuthClientSecret string `form:"sup-auth-client-secret"` BackupScheduleEnabled string `form:"backup-schedule-enabled"` SelfRegistration string `form:"self-registration-enabled"` RecIndividualAccessEnabled string `form:"rec-individual-access-enabled"` CronSchedule string `form:"cron-schedule"` CronScheduleDays string `form:"cron-schedule-days"` KeycloakCustomHostname string `form:"keycloak-custom-hostname"` TrembitaIPList string `form:"trembita-ip-list"` CrunchyPostgresMaxConnections string `form:"crunchy-postgres-max-connections"` CrunchyPostgresStorageSize string `form:"crunchy-postgres-storage-size"` OBCCronExpression string `form:"registry-backup-obc-cron-expression"` OBCBackupBucket string `form:"registry-backup-obc-backup-bucket"` OBCEndpoint string `form:"registry-backup-obc-endpoint"` OBCLogin string `form:"registry-backup-obc-login"` OBCPassword string `form:"registry-backup-obc-password"` DigitalDocuments string `form:"digital-documents"` KeyDataChanged string `form:"key-data-changed"` KeyVerificationChanged string `form:"key-verification-changed"` RegistryCitizenAuth string `form:"registry-citizen-auth"` DeploymentMode string `form:"deployment-mode" json:"deploymentMode"` ComputeResources string `form:"compute-resources" json:"computeResources"` ExcludePortals []string `form:"excludePortals[]" json:"excludePortals"` GeoServerEnabled string `form:"geoServerEnabled" json:"geoServerEnabled"` } func (r *registry) KeysRequired() bool { return r.Scenario == ScenarioKeyRequired } type allowedKeysConfig struct { AllowedKeys []allowedKey `yaml:"allowed-keys"` } type allowedKey struct { Issuer string `yaml:"issuer"` Serial string `yaml:"serial"` } type keyManagement struct { r *registry vaultSecretPath string } func (k keyManagement) VaultSecretPath() string { return k.vaultSecretPath } func (k keyManagement) KeyDeviceType() string { return k.r.KeyDeviceType } func (k keyManagement) AllowedKeysIssuer() []string { return k.r.AllowedKeysIssuer } func (k keyManagement) AllowedKeysSerial() []string { return k.r.AllowedKeysSerial } func (k keyManagement) SignKeyIssuer() string { return k.r.SignKeyIssuer } func (k keyManagement) SignKeyPwd() string { return k.r.SignKeyPwd } func (k keyManagement) RemoteType() string { return k.r.RemoteType } func (k keyManagement) RemoteSerialNumber() string { return k.r.RemoteSerialNumber } func (k keyManagement) RemoteKeyPort() string { return k.r.RemoteKeyPort } func (k keyManagement) RemoteKeyHost() string { return k.r.RemoteKeyHost } func (k keyManagement) RemoteKeyPassword() string { return k.r.RemoteKeyPassword } func (k keyManagement) INIConfig() string { return k.r.INIConfig } func (k keyManagement) FilesSecretName() string { return fmt.Sprintf("digital-signature-ops-%s-data", k.r.Name) } func (k keyManagement) EnvVarsSecretName() string { return fmt.Sprintf("digital-signature-ops-%s-env-vars", k.r.Name) } func (k keyManagement) KeyDataChanged() bool { return k.r.KeyDataChanged == "on" } func (k keyManagement) KeyVerificationChanged() bool { return k.r.KeyVerificationChanged == "on" }