func()

in app/registry/create.go [499:575]


func (a *App) prepareDNSConfig(ginContext *gin.Context, r *registry, _values *Values,
	secretData map[string]map[string]interface{}, mrActions *[]string) (bool, error) {
	//TODO: add something to mrActions
	valuesChanged := false

	if r.DNSNameOfficerEnabled == "" && _values.Portals.Officer.CustomDNS.Enabled {
		_values.Portals.Officer.CustomDNS.Enabled = false
		valuesChanged = true
	} else if r.DNSNameOfficerEnabled != "" && r.DNSNameOfficer != "" {
		_values.Portals.Officer.CustomDNS = CustomDNS{Enabled: true, Host: r.DNSNameOfficer}
		valuesChanged = true

		certFile, _, err := ginContext.Request.FormFile("officer-ssl")
		if err == nil {
			certData, err := ioutil.ReadAll(certFile)
			if err != nil {
				return false, errors.Wrap(err, "unable to read officer ssl data")
			}

			pemInfo, err := DecodePEM(certData)
			if err != nil {
				return false, validator.ValidationErrors([]validator.FieldError{
					router.MakeFieldError("DNSNameOfficer", "pem-decode-error")})
			}

			secretPath := strings.ReplaceAll(a.Config.VaultOfficerSSLPath, "{registry}", r.Name)
			secretPath = strings.ReplaceAll(secretPath, "{host}", r.DNSNameOfficer)

			if _, ok := secretData[secretPath]; !ok {
				secretData[secretPath] = make(map[string]interface{})
			}

			secretData[secretPath][VaultKeyCACert] = pemInfo.CACert
			secretData[secretPath][VaultKeyCert] = pemInfo.Cert
			secretData[secretPath][VaultKeyPK] = pemInfo.PrivateKey
		}
	}

	if r.DNSNameCitizenEnabled == "" && _values.Portals.Citizen.CustomDNS.Enabled {
		_values.Portals.Citizen.CustomDNS.Enabled = false
		valuesChanged = true
	} else if r.DNSNameCitizenEnabled != "" && r.DNSNameCitizen != "" {
		_values.Portals.Citizen.CustomDNS = CustomDNS{Host: r.DNSNameCitizen, Enabled: true}
		valuesChanged = true

		certFile, _, err := ginContext.Request.FormFile("citizen-ssl")
		if err == nil {
			certData, err := ioutil.ReadAll(certFile)
			if err != nil {
				return false, errors.Wrap(err, "unable to read citizen ssl data")
			}

			pemInfo, err := DecodePEM(certData)
			if err != nil {
				return false, validator.ValidationErrors([]validator.FieldError{
					router.MakeFieldError("DNSNameCitizen", "pem-decode-error")})
			}

			secretPath := strings.ReplaceAll(a.Config.VaultCitizenSSLPath, "{registry}", r.Name)
			secretPath = strings.ReplaceAll(secretPath, "{host}", r.DNSNameCitizen)

			if _, ok := secretData[secretPath]; !ok {
				secretData[secretPath] = make(map[string]interface{})
			}

			secretData[secretPath][VaultKeyCACert] = pemInfo.CACert
			secretData[secretPath][VaultKeyCert] = pemInfo.Cert
			secretData[secretPath][VaultKeyPK] = pemInfo.PrivateKey
		}
	}

	if valuesChanged {
		_values.OriginalYaml[PortalsIndex] = _values.Portals
	}

	return valuesChanged, nil
}