Skip to content

Commit 069cfc6

Browse files
committed
add ip header annotation
1 parent ac02060 commit 069cfc6

2 files changed

Lines changed: 41 additions & 3 deletions

File tree

internal/service/annotations/service.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ const (
1717
AppHealthcheckChecksToPass = "servers.com/app-healthcheck-checks-to-pass"
1818
AppHealthcheckInterval = "servers.com/app-healthcheck-interval"
1919
AppHealthcheckJitter = "servers.com/app-healthcheck-jitter"
20+
LBIPHeader = "servers.com/load-balancer-ip-header"
21+
LBIPSubnets = "servers.com/load-balancer-ip-subnets"
2022
)
2123

2224
// FillLBVHostZoneWithServiceAnnotations prepares the LB vhost zone input based on annotations.
@@ -28,6 +30,16 @@ func FillLBVHostZoneWithServiceAnnotations(vZInput *serverscom.L7VHostZoneInput,
2830
}
2931
}
3032

33+
// LBIPHeader & LBIPSubnets annotations
34+
if value, ok := annotations[LBIPHeader]; ok {
35+
vZInput.RealIPHeader = new(serverscom.RealIPHeader)
36+
vZInput.RealIPHeader.Name = ParseRealIPHeaderName(value)
37+
if subnets, ok := annotations[LBIPSubnets]; ok {
38+
s := strings.Split(strings.ReplaceAll(subnets, " ", ""), ",")
39+
vZInput.RealIPHeader.Networks = s
40+
}
41+
}
42+
3143
return vZInput
3244
}
3345

@@ -83,3 +95,15 @@ func FillLBUpstreamZoneWithServiceAnnotations(uZInput *serverscom.L7UpstreamZone
8395

8496
return uZInput
8597
}
98+
99+
// ParseRealIPHeaderName parses the Real IP Header Name from annotation
100+
func ParseRealIPHeaderName(input string) serverscom.RealIPHeaderName {
101+
switch input {
102+
case string(serverscom.RealIP):
103+
return serverscom.RealIP
104+
case string(serverscom.ForwardedFor):
105+
return serverscom.ForwardedFor
106+
default:
107+
return ""
108+
}
109+
}

internal/service/tls/manager.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,13 @@ func (m *Manager) SyncCertificate(fingerprint, name string, cert, key, chain []b
103103
return nil, err
104104
}
105105

106-
sslCertificate.state = (*serverscom.SSLCertificate)(state)
106+
sslCert := CustomToSSLCertificate(state)
107+
sslCertificate.state = sslCert
107108
sslCertificate.lastRefresh = time.Now()
108109

109110
m.resources[fingerprint] = &sslCertificate
110111

111-
return (*serverscom.SSLCertificate)(state), nil
112+
return sslCert, nil
112113
}
113114

114115
// Get gets an ssl from manager
@@ -136,5 +137,18 @@ func (m *Manager) GetByID(id string) (*serverscom.SSLCertificate, error) {
136137
return nil, err
137138
}
138139

139-
return (*serverscom.SSLCertificate)(customCert), nil
140+
return CustomToSSLCertificate(customCert), nil
141+
}
142+
143+
// CustomToSSLCertificate converts a serverscom SSLCertificateCustom to serverscom SSLCertificate
144+
func CustomToSSLCertificate(custom *serverscom.SSLCertificateCustom) *serverscom.SSLCertificate {
145+
return &serverscom.SSLCertificate{
146+
ID: custom.ID,
147+
Name: custom.Name,
148+
Sha1Fingerprint: custom.Sha1Fingerprint,
149+
Labels: custom.Labels,
150+
Expires: custom.Expires,
151+
Created: custom.Created,
152+
Updated: custom.Updated,
153+
}
140154
}

0 commit comments

Comments
 (0)