41 lines
499 B
Go
41 lines
499 B
Go
package proxy
|
|
|
|
import "net"
|
|
|
|
type Proxy struct {
|
|
backend *net.TCPAddr
|
|
listener *net.TCPListener
|
|
}
|
|
|
|
func NewProxy(backend *net.TCPAddr) (*Proxy, error) {
|
|
var err error
|
|
|
|
p := &Proxy{
|
|
backend: backend,
|
|
}
|
|
|
|
p.listener, err = net.ListenTCP("tcp", nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
go p.accept()
|
|
|
|
return p, nil
|
|
}
|
|
|
|
func (p *Proxy) Close() {
|
|
p.listener.Close()
|
|
}
|
|
|
|
func (p *Proxy) accept() {
|
|
for {
|
|
conn, err := p.listener.Accept()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
conn.Close()
|
|
}
|
|
}
|