Documentation
¶
Index ¶
- type Certificate
- type Haip
- type IPSetup
- type LoadBalancingMode
- type PortConfiguration
- type PortConfigurationMode
- type Repository
- func (r *Repository) AddCertificate(haipName string, sslCertificateID int64) error
- func (r *Repository) AddLetsEncryptCertificate(haipName string, commonName string) error
- func (r *Repository) AddPortConfiguration(haipName string, configuration PortConfiguration) error
- func (r *Repository) Cancel(haipName string, endTime gotransip.CancellationTime) error
- func (r *Repository) DetachCertificate(haipName string, certificateID int64) error
- func (r *Repository) DetachIPAddresses(haipName string) error
- func (r *Repository) GetAll() ([]Haip, error)
- func (r *Repository) GetAllCertificates(haipName string) ([]Certificate, error)
- func (r *Repository) GetAttachedIPAddresses(haipName string) ([]net.IP, error)
- func (r *Repository) GetByName(haipName string) (Haip, error)
- func (r *Repository) GetPortConfiguration(haipName string, portConfigurationID int64) (PortConfiguration, error)
- func (r *Repository) GetPortConfigurations(haipName string) ([]PortConfiguration, error)
- func (r *Repository) GetSelection(page int, itemsPerPage int) ([]Haip, error)
- func (r *Repository) GetStatusReport(haipName string) ([]StatusReport, error)
- func (r *Repository) Order(productName string, description string) error
- func (r *Repository) OrderWithResponse(productName string, description string) (rest.Response, error)
- func (r *Repository) RemovePortConfiguration(haipName string, portConfigurationID int64) error
- func (r *Repository) SetAttachedIPAddresses(haipName string, ipAddresses []net.IP) error
- func (r *Repository) Update(haip Haip) error
- func (r *Repository) UpdatePortConfiguration(haipName string, configuration PortConfiguration) error
- type Status
- type StatusReport
- type TLSMode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Certificate ¶
type Certificate struct {
// The common name of the certificate, usually a domain name
CommonName string `json:"commonName,omitempty"`
// The expiration date of the certificate in 'Y-m-d' format
ExpirationDate string `json:"expirationDate,omitempty"`
// The domain ssl certificate id
ID int64 `json:"id,omitempty"`
}
Certificate struct for haip certificates it contains an ID, expiration date and common name
type Haip ¶
type Haip struct {
// HA-IP name
Name string `json:"name"`
// The description that can be set by the customer
Description string `json:"description"`
// HA-IP status, either 'active', 'inactive', 'creating'
Status Status `json:"status"`
// Whether load balancing is enabled for this HA-IP
IsLoadBalancingEnabled bool `json:"isLoadBalancingEnabled"`
// HA-IP load balancing mode: 'roundrobin', 'cookie', 'source'
LoadBalancingMode LoadBalancingMode `json:"loadBalancingMode,omitempty"`
// Cookie name to pin sessions on when using cookie balancing mode
StickyCookieName string `json:"stickyCookieName,omitempty"`
// The interval in milliseconds at which health checks are performed. The interval may not be smaller than 2000ms.
HealthCheckInterval int64 `json:"healthCheckInterval,omitempty"`
// The path (URI) of the page to check HTTP status code on
HTTPHealthCheckPath string `json:"httpHealthCheckPath,omitempty"`
// The port to perform the HTTP check on
HTTPHealthCheckPort int `json:"httpHealthCheckPort,omitempty"`
// Whether to use SSL when performing the HTTP check
HTTPHealthCheckSsl bool `json:"httpHealthCheckSsl"`
// HA-IP IPv4 address
IPv4Address net.IP `json:"ipv4Address,omitempty"`
// HA-IP IPv6 address
IPv6Address net.IP `json:"ipv6Address,omitempty"`
// HA-IP IP setup: 'both', 'noipv6', 'ipv6to4', 'ipv4to6'
IPSetup IPSetup `json:"ipSetup"`
// The PTR record for the HA-IP
PtrRecord string `json:"ptrRecord,omitempty"`
// The IPs attached to this haip
IPAddresses []net.IP `json:"ipAddresses,omitempty"`
// HA-IP TLS Mode: 'tls10_11_12', 'tls11_12', 'tls12'
TLSMode TLSMode `json:"tlsMode"`
// Whether or not another process is already doing stuff with this HA-IP
IsLocked bool `json:"isLocked,omitempty"`
}
Haip struct for a Haip
type IPSetup ¶
type IPSetup string
IPSetup is one of the following strings 'both', 'noipv6', 'ipv6to4', 'ipv4to6'
const ( // IPSetupBoth accept ipv4 and ipv6 and forward them to separate ipv4 and ipv6 addresses IPSetupBoth IPSetup = "both" // IPSetupNoIPv6 do not accept ipv6 traffic IPSetupNoIPv6 IPSetup = "noipv6" // IPSetupIPv6to4 forward ipv6 traffic to ipv4 IPSetupIPv6to4 IPSetup = "ipv6to4" // IPSetupIPv4to6 forward ipv4 traffic to ipv6 IPSetupIPv4to6 IPSetup = "ipv4to6" )
Definition of all of the possible ip setup options
type LoadBalancingMode ¶
type LoadBalancingMode string
LoadBalancingMode is one of the following strings 'roundrobin', 'cookie', 'source'
const ( // LoadBalancingModeRoundRobin is the LoadBalancing mode roundrobin for a Haip, forward to next address everytime LoadBalancingModeRoundRobin LoadBalancingMode = "roundrobin" // LoadBalancingModeCookie is the LoadBalancing mode cookie for a Haip, forward to a fixed server, based on the cookie LoadBalancingModeCookie LoadBalancingMode = "cookie" // LoadBalancingModeSource is the LoadBalancing mode source for a Haip, choose a server to forward based on the source address LoadBalancingModeSource LoadBalancingMode = "source" )
Definition of all of the possible load balancing modes
type PortConfiguration ¶
type PortConfiguration struct {
// The port configuration ID
ID int64 `json:"id,omitempty"`
// A name describing the port
Name string `json:"name"`
// The port at which traffic arrives on your HA-IP
SourcePort int `json:"sourcePort"`
// The port at which traffic arrives on your attached IP address(es)
TargetPort int `json:"targetPort"`
// The mode determining how traffic is processed and forwarded: 'tcp', 'http', 'https', 'proxy', 'http2_https'
Mode PortConfigurationMode `json:"mode"`
// The mode determining how traffic between our load balancers and your attached IP address(es) is encrypted: 'off', 'on', 'strict'
EndpointSslMode string `json:"endpointSslMode"`
}
PortConfiguration struct for a PortConfiguration
type PortConfigurationMode ¶
type PortConfigurationMode string
PortConfigurationMode is one of the following strings 'tcp', 'http', 'https', 'proxy', 'http2_https'
const ( // PortConfigurationModeTCP plain TCP forward to your VPS PortConfigurationModeTCP PortConfigurationMode = "tcp" // PortConfigurationModeHTTP appends a X-Forwarded-For header to HTTP requests with the original remote IP PortConfigurationModeHTTP PortConfigurationMode = "http" // PortConfigurationModeHTTPS same as HTTP, with SSL Certificate offloading PortConfigurationModeHTTPS PortConfigurationMode = "https" // PortConfigurationModePROXY proxy protocol is also a way to retain the original remote IP, // but also works for non HTTP traffic (note: the receiving application has to support this) PortConfigurationModePROXY PortConfigurationMode = "proxy" // PortConfigurationModeHTTP2HTTPS same as HTTPS, with http/2 support PortConfigurationModeHTTP2HTTPS PortConfigurationMode = "http2_https" )
Definition of all of the possible port configuration modes
type Repository ¶
type Repository repository.RestRepository
Repository can be used to get a list of your Haips order new ones, changing specific Haip properties Updating the attached ssl certificates and attaching/detaching IP addresses to the HAIP
func (*Repository) AddCertificate ¶
func (r *Repository) AddCertificate(haipName string, sslCertificateID int64) error
AddCertificate allows you to add a DV, OV or EV Certificate to Haip for SSL offloading Enable HTTPS mode in Configuration to use these certificates
func (*Repository) AddLetsEncryptCertificate ¶
func (r *Repository) AddLetsEncryptCertificate(haipName string, commonName string) error
AddLetsEncryptCertificate allows you to add a LetsEncrypt certificate to your HA-IP. We will take care of all the validation and renewals.
In order to provide free LetsEncrypt certificates for the domains on your HA-IP, some requirements must be met in order to complete the certificate request:
- DNS: the given CommonName must resolve to the HA-IP IP. IPv6 is not required, but when set, it must resolve to the HA-IP IPv6;
- Configuration: LetsEncrypt verifies domains with a HTTP call to /.well-know. When requesting a LetsEncrypt certificate, our proxies will handle all ACME requests to automatically verify the certificate. To achieve this, the HA-IP must have a HTTP portConfiguration on port 80. When using this, you will also no longer be able to verify your own LetsEncrypt certificates via HA-IP.
For more information, see: https://api.transip.nl/rest/docs.html#ha-ip-ha-ip-certificates-post-1
func (*Repository) AddPortConfiguration ¶
func (r *Repository) AddPortConfiguration(haipName string, configuration PortConfiguration) error
AddPortConfiguration allows you to Add PortConfigurations to your HA-IP to route traffic to your attached IP address(es)
Mode options:
- http: appends a X-Forwarded-For header to HTTP requests with the original remote IP;
- https: same as HTTP, with SSL Certificate offloading;
- http2_https: same as HTTPS, with http/2 support;
- tcp: plain TCP forward to your attached IP address(es);
- proxy: proxy protocol is also a way to retain the original remote IP, but also works for non HTTP traffic (note: the receiving application has to support this).
Endpoint SSL mode options:
- off: no SSL connection is established between our load balancers and your attached IP address(es);
- on: an SSL connection is established between our load balancers your attached IP address(es), but the certificate is not validated;
- strict: an SSL connection is established between our load balancers your attached IP address(es), and the certificate must signed by a trusted Certificate Authority.
For more information, see https://api.transip.nl/rest/docs.html#ha-ip-ha-ip-port-configurations-post
func (*Repository) Cancel ¶
func (r *Repository) Cancel(haipName string, endTime gotransip.CancellationTime) error
Cancel will cancel the Haip, thus deleting it
func (*Repository) DetachCertificate ¶
func (r *Repository) DetachCertificate(haipName string, certificateID int64) error
DetachCertificate detaches a certificate from a Haip by certificateId
func (*Repository) DetachIPAddresses ¶
func (r *Repository) DetachIPAddresses(haipName string) error
DetachIPAddresses allows you to detach all IP Addresses from a Haip
func (*Repository) GetAll ¶
func (r *Repository) GetAll() ([]Haip, error)
GetAll returns an array of all Haips in your account
func (*Repository) GetAllCertificates ¶
func (r *Repository) GetAllCertificates(haipName string) ([]Certificate, error)
GetAllCertificates will return a list of certificates currently attached to the given Haip
func (*Repository) GetAttachedIPAddresses ¶
func (r *Repository) GetAttachedIPAddresses(haipName string) ([]net.IP, error)
GetAttachedIPAddresses returns a list of currently attached IP address(es) to your Haip
func (*Repository) GetByName ¶
func (r *Repository) GetByName(haipName string) (Haip, error)
GetByName returns information on a specific Haip by name
func (*Repository) GetPortConfiguration ¶
func (r *Repository) GetPortConfiguration(haipName string, portConfigurationID int64) (PortConfiguration, error)
GetPortConfiguration returns the Configuration struct for a given Configuration by id
func (*Repository) GetPortConfigurations ¶
func (r *Repository) GetPortConfigurations(haipName string) ([]PortConfiguration, error)
GetPortConfigurations returns a list of all PortConfigurations on the given Haip
func (*Repository) GetSelection ¶
func (r *Repository) GetSelection(page int, itemsPerPage int) ([]Haip, error)
GetSelection returns a limited list of your Haips, specify how many and which page/chunk of Haips you want to retrieve
func (*Repository) GetStatusReport ¶
func (r *Repository) GetStatusReport(haipName string) ([]StatusReport, error)
GetStatusReport returns a StatusReport per attached IP address, IP version, port and load balancer. You can use this method to monitor / verify the status of your HA-IP and attached IP addresses
func (*Repository) Order ¶
func (r *Repository) Order(productName string, description string) error
Order allows you to order a new Haip
func (*Repository) OrderWithResponse ¶ added in v6.25.0
func (r *Repository) OrderWithResponse(productName string, description string) (rest.Response, error)
OrderWithResponse allows you to order a new Haip and returns a response
func (*Repository) RemovePortConfiguration ¶
func (r *Repository) RemovePortConfiguration(haipName string, portConfigurationID int64) error
RemovePortConfiguration allows you to remove a port configuration
func (*Repository) SetAttachedIPAddresses ¶
func (r *Repository) SetAttachedIPAddresses(haipName string, ipAddresses []net.IP) error
SetAttachedIPAddresses allows you to replace the IP address(es) attached your Haip
func (*Repository) Update ¶
func (r *Repository) Update(haip Haip) error
Update allows you to alter your Haip in several ways outlined below:
- Set the description of a HA-IP;
- Set the PTR record;
- Set the httpHealthCheckPath, must start with a /;
- Set the httpHealthCheckPort, the port must be configured on the HA-IP PortConfigurations.
Load balancing options (loadBalancingMode):
- roundrobin: forward to next address everytime;
- cookie: forward to a fixed server, based on the cookie;
- source: choose a server to forward to based on the source address.
IP setup options (ipSetup):
- both: accept ipv4 and ipv6 and forward them to separate ipv4 and ipv6 addresses;
- noipv6: do not accept ipv6 traffic;
- ipv6to4: forward ipv6 traffic to ipv4.
- ipv4to6: forward ipv4 traffic to ipv6.
TLS options (tlsMode):
- tls10_11_12: only allow incoming tls traffic with versions 1.0, 1.1 and 1.2;
- tls11_12: only allow incoming tls traffic with version 1.1 or 1.2;
- tls12: only allow incoming traffic with tls version 1.2.
For more information see: https://api.transip.nl/rest/docs.html#ha-ip-ha-ip-put
func (*Repository) UpdatePortConfiguration ¶
func (r *Repository) UpdatePortConfiguration(haipName string, configuration PortConfiguration) error
UpdatePortConfiguration allows you to update:
Name, SourcePort, TargetPort, Mode, or EndpointSslMode of a Configuration
For more information on these fields see the AddPortConfiguration method and: https://api.transip.nl/rest/docs.html#ha-ip-ha-ip-port-configurations-put
type Status ¶
type Status string
Status is one of the following strings 'active', 'inactive', 'creating'
const ( // HaipStatusActive is the status field for an active Haip, ready to use HaipStatusActive Status = "active" // HaipStatusInactive is the status field for an inactive Haip, not usable, please contact support HaipStatusInactive Status = "inactive" // HaipStatusCreating is the status field for a Haip that is being created HaipStatusCreating Status = "creating" )
Definition of all of the possible haip statuses
type StatusReport ¶
type StatusReport struct {
// Attached IP address this status report is for
IPAddress net.IP `json:"ipAddress,omitempty"`
// IP Version 4,6
IPVersion int `json:"ipVersion,omitempty"`
// Last change in the state in Europe/Amsterdam timezone
LastChange rest.Time `json:"lastChange,omitempty"`
// The IP address of the HA-IP load balancer
LoadBalancerIP net.IP `json:"loadBalancerIp,omitempty"`
// The name of the load balancer
LoadBalancerName string `json:"loadBalancerName,omitempty"`
// HA-IP Configuration port
Port int `json:"port,omitempty"`
// The state of the load balancer, either 'up' or 'down'
State string `json:"state,omitempty"`
}
StatusReport struct for a StatusReport
type TLSMode ¶
type TLSMode string
TLSMode is one of the following strings 'tls10_11_12', 'tls11_12', 'tls12'
const ( // TLSModeMinTLS10 only allow incoming tls traffic with versions 1.0, 1.1 and 1.2 TLSModeMinTLS10 TLSMode = "tls10_11_12" // TLSModeMinTLS11 only allow incoming tls traffic with version 1.1 or 1.2 TLSModeMinTLS11 TLSMode = "tls11_12" // TLSModeMinTLS12 only allow incoming traffic with tls version 1.2 TLSModeMinTLS12 TLSMode = "tls12" )
Definition of all of the possible tls mode options