1234567891011121314151617181920212223242526272829 |
- package proxy
- import (
- "fmt"
- "net"
- )
- type Proxy interface {
- // Start forwarding traffic back and forth the front and back-end
- // addresses.
- Run()
- // Stop forwarding traffic and close both ends of the Proxy.
- Close()
- // Return the address on which the proxy is listening.
- FrontendAddr() net.Addr
- // Return the proxied address.
- BackendAddr() net.Addr
- }
- func NewProxy(frontendAddr, backendAddr net.Addr) (Proxy, error) {
- switch frontendAddr.(type) {
- case *net.UDPAddr:
- return NewUDPProxy(frontendAddr.(*net.UDPAddr), backendAddr.(*net.UDPAddr))
- case *net.TCPAddr:
- return NewTCPProxy(frontendAddr.(*net.TCPAddr), backendAddr.(*net.TCPAddr))
- default:
- panic(fmt.Errorf("Unsupported protocol"))
- }
- }
|