mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
package openamt
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	portainer "github.com/portainer/portainer/api"
 | 
						|
 | 
						|
	"github.com/segmentio/encoding/json"
 | 
						|
)
 | 
						|
 | 
						|
type (
 | 
						|
	Domain struct {
 | 
						|
		DomainName                    string `json:"profileName"`
 | 
						|
		DomainSuffix                  string `json:"domainSuffix"`
 | 
						|
		ProvisioningCert              string `json:"provisioningCert"`
 | 
						|
		ProvisioningCertPassword      string `json:"provisioningCertPassword"`
 | 
						|
		ProvisioningCertStorageFormat string `json:"provisioningCertStorageFormat"`
 | 
						|
	}
 | 
						|
)
 | 
						|
 | 
						|
func (service *Service) createOrUpdateDomain(configuration portainer.OpenAMTConfiguration) (*Domain, error) {
 | 
						|
	domain, err := service.getDomain(configuration)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	method := http.MethodPost
 | 
						|
	if domain != nil {
 | 
						|
		method = http.MethodPatch
 | 
						|
	}
 | 
						|
 | 
						|
	domain, err = service.saveDomain(method, configuration)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return domain, nil
 | 
						|
}
 | 
						|
 | 
						|
func (service *Service) getDomain(configuration portainer.OpenAMTConfiguration) (*Domain, error) {
 | 
						|
	url := fmt.Sprintf("https://%s/rps/api/v1/admin/domains/%s", configuration.MPSServer, configuration.DomainName)
 | 
						|
 | 
						|
	responseBody, err := service.executeGetRequest(url, configuration.MPSToken)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if responseBody == nil {
 | 
						|
		return nil, nil
 | 
						|
	}
 | 
						|
 | 
						|
	var result Domain
 | 
						|
	err = json.Unmarshal(responseBody, &result)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &result, nil
 | 
						|
}
 | 
						|
 | 
						|
func (service *Service) saveDomain(method string, configuration portainer.OpenAMTConfiguration) (*Domain, error) {
 | 
						|
	url := fmt.Sprintf("https://%s/rps/api/v1/admin/domains", configuration.MPSServer)
 | 
						|
 | 
						|
	profile := Domain{
 | 
						|
		DomainName:                    configuration.DomainName,
 | 
						|
		DomainSuffix:                  configuration.DomainName,
 | 
						|
		ProvisioningCert:              configuration.CertFileContent,
 | 
						|
		ProvisioningCertPassword:      configuration.CertFilePassword,
 | 
						|
		ProvisioningCertStorageFormat: "string",
 | 
						|
	}
 | 
						|
	payload, _ := json.Marshal(profile)
 | 
						|
 | 
						|
	responseBody, err := service.executeSaveRequest(method, url, configuration.MPSToken, payload)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	var result Domain
 | 
						|
	err = json.Unmarshal(responseBody, &result)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &result, nil
 | 
						|
}
 |