summaryrefslogtreecommitdiff
path: root/internal/gitlabnet/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/gitlabnet/client.go')
-rw-r--r--internal/gitlabnet/client.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/internal/gitlabnet/client.go b/internal/gitlabnet/client.go
index 39c3320..9bcf6db 100644
--- a/internal/gitlabnet/client.go
+++ b/internal/gitlabnet/client.go
@@ -3,6 +3,7 @@ package gitlabnet
import (
"encoding/json"
"fmt"
+ "net"
"net/http"
"gitlab.com/gitlab-org/gitlab-shell/client"
@@ -34,3 +35,18 @@ func ParseJSON(hr *http.Response, response interface{}) error {
return nil
}
+
+func ParseIP(remoteAddr string) string {
+ // The remoteAddr field can be filled by:
+ // 1. An IP address via the SSH_CONNECTION environment variable
+ // 2. A host:port combination via the PROXY protocol
+ ip, _, err := net.SplitHostPort(remoteAddr)
+
+ // If we don't have a port or can't parse this address for some reason,
+ // just return the original string.
+ if err != nil {
+ return remoteAddr
+ }
+
+ return ip
+}