All checks were successful
Docker Build and Push / build-and-push (push) Successful in 4m17s
47 lines
917 B
Go
47 lines
917 B
Go
package server
|
|
|
|
import (
|
|
"net"
|
|
)
|
|
|
|
type RequestMiddleware interface {
|
|
HandleRequest(header *RequestHeaderFactory) error
|
|
}
|
|
|
|
type ResponseMiddleware interface {
|
|
HandleResponse(header *ResponseHeaderFactory, body []byte) error
|
|
}
|
|
|
|
type TunnelFingerprint struct{}
|
|
|
|
func NewTunnelFingerprint() *TunnelFingerprint {
|
|
return &TunnelFingerprint{}
|
|
}
|
|
|
|
func (h *TunnelFingerprint) HandleResponse(header *ResponseHeaderFactory, body []byte) error {
|
|
header.Set("Server", "Tunnel Please")
|
|
return nil
|
|
}
|
|
|
|
type RequestLogger struct {
|
|
interaction Interaction
|
|
remoteAddr net.Addr
|
|
}
|
|
|
|
type ForwardedFor struct {
|
|
addr net.Addr
|
|
}
|
|
|
|
func NewForwardedFor(addr net.Addr) *ForwardedFor {
|
|
return &ForwardedFor{addr: addr}
|
|
}
|
|
|
|
func (ff *ForwardedFor) HandleRequest(header *RequestHeaderFactory) error {
|
|
host, _, err := net.SplitHostPort(ff.addr.String())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
header.Set("X-Forwarded-For", host)
|
|
return nil
|
|
}
|