diff --git a/redirect.go b/redirect.go index b2979b0b..5c83360e 100644 --- a/redirect.go +++ b/redirect.go @@ -1,4 +1,4 @@ -// +build !windows +// +build linux package gost diff --git a/redirect_other.go b/redirect_other.go new file mode 100644 index 00000000..d2a576a6 --- /dev/null +++ b/redirect_other.go @@ -0,0 +1,57 @@ +// +build !linux + +package gost + +import ( + "errors" + "net" + + "github.com/go-log/log" +) + +type tcpRedirectHandler struct { + options *HandlerOptions +} + +// TCPRedirectHandler creates a server Handler for TCP redirect server. +func TCPRedirectHandler(opts ...HandlerOption) Handler { + h := &tcpRedirectHandler{ + options: &HandlerOptions{ + Chain: new(Chain), + }, + } + for _, opt := range opts { + opt(h.options) + } + return h +} + +func (h *tcpRedirectHandler) Init(options ...HandlerOption) { + log.Log("[red-tcp] TCP redirect is not available on the Windows platform") +} + +func (h *tcpRedirectHandler) Handle(c net.Conn) { + log.Log("[red-tcp] TCP redirect is not available on the Windows platform") + c.Close() +} + +type udpRedirectHandler struct { +} + +// UDPRedirectHandler creates a server Handler for UDP transparent server. +func UDPRedirectHandler(opts ...HandlerOption) Handler { + return &udpRedirectHandler{} +} + +func (h *udpRedirectHandler) Init(options ...HandlerOption) { +} + +func (h *udpRedirectHandler) Handle(conn net.Conn) { + log.Log("[red-udp] UDP redirect is not available on the Windows platform") + conn.Close() +} + +// UDPRedirectListener creates a Listener for UDP transparent proxy server. +func UDPRedirectListener(addr string, cfg *UDPListenConfig) (Listener, error) { + return nil, errors.New("UDP redirect is not available on the Windows platform") +} diff --git a/redirect_win.go b/redirect_win.go deleted file mode 100644 index ab184b7f..00000000 --- a/redirect_win.go +++ /dev/null @@ -1,35 +0,0 @@ -// +build windows - -package gost - -import ( - "net" - - "github.com/go-log/log" -) - -type tcpRedirectHandler struct { - options *HandlerOptions -} - -// TCPRedirectHandler creates a server Handler for TCP redirect server. -func TCPRedirectHandler(opts ...HandlerOption) Handler { - h := &tcpRedirectHandler{ - options: &HandlerOptions{ - Chain: new(Chain), - }, - } - for _, opt := range opts { - opt(h.options) - } - return h -} - -func (h *tcpRedirectHandler) Init(options ...HandlerOption) { - log.Log("[red-tcp] TCP redirect is not available on the Windows platform") -} - -func (h *tcpRedirectHandler) Handle(c net.Conn) { - log.Log("[red-tcp] TCP redirect is not available on the Windows platform") - c.Close() -}