| 151 | } |
| 152 | |
| 153 | func parseForwardedHeaders(h getLastFromMD) (forwardedFor, forwardedScheme, forwardedHost string) { |
| 154 | forwardedFor = h.Get(headerXForwardedFor) |
| 155 | forwardedScheme = h.Get(headerXForwardedProto) |
| 156 | forwardedHost = h.Get(headerXForwardedHost) |
| 157 | if forwarded := h.Get(headerForwarded); forwarded != "" { |
| 158 | if match := forwardedForRegex.FindStringSubmatch(forwarded); len(match) > 1 { |
| 159 | forwardedFor = strings.ToLower(match[1]) |
| 160 | } |
| 161 | if match := forwardedProtoRegex.FindStringSubmatch(forwarded); len(match) > 1 { |
| 162 | forwardedScheme = strings.ToLower(match[1]) |
| 163 | } |
| 164 | if match := forwardedHostRegex.FindStringSubmatch(forwarded); len(match) > 1 { |
| 165 | forwardedHost = strings.ToLower(match[1]) |
| 166 | } |
| 167 | } |
| 168 | return forwardedFor, forwardedScheme, forwardedHost |
| 169 | } |