mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-06 01:07:03 +08:00
55 lines
1.8 KiB
Go
55 lines
1.8 KiB
Go
package proxy
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"net"
|
|
"time"
|
|
|
|
M "github.com/xjasonlyu/tun2socks/v2/constant"
|
|
"github.com/xjasonlyu/tun2socks/v2/proxy/proto"
|
|
)
|
|
|
|
var _ Proxy = (*Reject)(nil)
|
|
|
|
type Reject struct {
|
|
*Base
|
|
}
|
|
|
|
func NewReject() *Reject {
|
|
return &Reject{
|
|
Base: &Base{
|
|
proto: proto.Reject,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (r *Reject) DialContext(context.Context, *M.Metadata) (net.Conn, error) {
|
|
return &nopConn{}, nil
|
|
}
|
|
|
|
func (r *Reject) DialUDP(*M.Metadata) (net.PacketConn, error) {
|
|
return &nopPacketConn{}, nil
|
|
}
|
|
|
|
type nopConn struct{}
|
|
|
|
func (rw *nopConn) Read([]byte) (int, error) { return 0, io.EOF }
|
|
func (rw *nopConn) Write([]byte) (int, error) { return 0, io.EOF }
|
|
func (rw *nopConn) Close() error { return nil }
|
|
func (rw *nopConn) LocalAddr() net.Addr { return nil }
|
|
func (rw *nopConn) RemoteAddr() net.Addr { return nil }
|
|
func (rw *nopConn) SetDeadline(time.Time) error { return nil }
|
|
func (rw *nopConn) SetReadDeadline(time.Time) error { return nil }
|
|
func (rw *nopConn) SetWriteDeadline(time.Time) error { return nil }
|
|
|
|
type nopPacketConn struct{}
|
|
|
|
func (npc *nopPacketConn) WriteTo(b []byte, _ net.Addr) (n int, err error) { return len(b), nil }
|
|
func (npc *nopPacketConn) ReadFrom([]byte) (int, net.Addr, error) { return 0, nil, io.EOF }
|
|
func (npc *nopPacketConn) Close() error { return nil }
|
|
func (npc *nopPacketConn) LocalAddr() net.Addr { return &net.UDPAddr{IP: net.IPv4zero, Port: 0} }
|
|
func (npc *nopPacketConn) SetDeadline(time.Time) error { return nil }
|
|
func (npc *nopPacketConn) SetReadDeadline(time.Time) error { return nil }
|
|
func (npc *nopPacketConn) SetWriteDeadline(time.Time) error { return nil }
|