chore: rebuild InboundListener

This commit is contained in:
wwqgtxx
2022-12-04 21:53:13 +08:00
parent 8144373725
commit 62226e8b3d
14 changed files with 138 additions and 96 deletions

View File

@ -26,7 +26,7 @@ func NewBase(options *BaseOption) (*Base, error) {
return nil, err
}
return &Base{
name: options.Name,
name: options.Name(),
listenAddr: addr,
preferRulesName: options.PreferRulesName,
port: options.Port,
@ -34,44 +34,54 @@ func NewBase(options *BaseOption) (*Base, error) {
}, nil
}
// Config implements constant.NewListener
func (b *Base) Config() string {
return optionToString(b.config)
// Config implements constant.InboundListener
func (b *Base) Config() C.InboundConfig {
return b.config
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (b *Base) Address() string {
return b.RawAddress()
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (*Base) Close() error {
return nil
}
// Name implements constant.NewListener
// Name implements constant.InboundListener
func (b *Base) Name() string {
return b.name
}
// RawAddress implements constant.NewListener
// RawAddress implements constant.InboundListener
func (b *Base) RawAddress() string {
return net.JoinHostPort(b.listenAddr.String(), strconv.Itoa(int(b.port)))
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (*Base) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
return nil
}
var _ C.InboundListener = (*Base)(nil)
type BaseOption struct {
Name string `inbound:"name"`
NameStr string `inbound:"name"`
Listen string `inbound:"listen,omitempty"`
Port int `inbound:"port"`
PreferRulesName string `inbound:"rule,omitempty"`
}
var _ C.NewListener = (*Base)(nil)
func (o BaseOption) Name() string {
return o.NameStr
}
func (o BaseOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
var _ C.InboundConfig = (*BaseOption)(nil)
func optionToString(option any) string {
str, _ := json.Marshal(option)

View File

@ -9,6 +9,11 @@ import (
type HTTPOption struct {
BaseOption
}
func (o HTTPOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
type HTTP struct {
*Base
config *HTTPOption
@ -26,17 +31,17 @@ func NewHTTP(options *HTTPOption) (*HTTP, error) {
}, nil
}
// Config implements constant.NewListener
func (h *HTTP) Config() string {
return optionToString(h.config)
// Config implements constant.InboundListener
func (h *HTTP) Config() C.InboundConfig {
return h.config
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (h *HTTP) Address() string {
return h.l.Address()
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (h *HTTP) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
var err error
h.l, err = http.NewWithInfos(h.RawAddress(), h.name, h.preferRulesName, tcpIn)
@ -47,7 +52,7 @@ func (h *HTTP) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter)
return nil
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (h *HTTP) Close() error {
if h.l != nil {
return h.l.Close()
@ -55,4 +60,4 @@ func (h *HTTP) Close() error {
return nil
}
var _ C.NewListener = (*HTTP)(nil)
var _ C.InboundListener = (*HTTP)(nil)

View File

@ -12,7 +12,11 @@ import (
type MixedOption struct {
BaseOption
UDP *bool `inbound:"udp,omitempty"`
UDP bool `inbound:"udp,omitempty"`
}
func (o MixedOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
type Mixed struct {
@ -31,21 +35,21 @@ func NewMixed(options *MixedOption) (*Mixed, error) {
return &Mixed{
Base: base,
config: options,
udp: options.UDP == nil || *options.UDP,
udp: options.UDP,
}, nil
}
// Config implements constant.NewListener
func (m *Mixed) Config() string {
return optionToString(m.config)
// Config implements constant.InboundListener
func (m *Mixed) Config() C.InboundConfig {
return m.config
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (m *Mixed) Address() string {
return m.l.Address()
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (m *Mixed) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
var err error
m.l, err = mixed.NewWithInfos(m.RawAddress(), m.name, m.preferRulesName, tcpIn)
@ -62,7 +66,7 @@ func (m *Mixed) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter)
return nil
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (m *Mixed) Close() error {
var err error
if m.l != nil {
@ -82,4 +86,4 @@ func (m *Mixed) Close() error {
return err
}
var _ C.NewListener = (*Mixed)(nil)
var _ C.InboundListener = (*Mixed)(nil)

View File

@ -10,6 +10,10 @@ type RedirOption struct {
BaseOption
}
func (o RedirOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
type Redir struct {
*Base
config *RedirOption
@ -27,17 +31,17 @@ func NewRedir(options *RedirOption) (*Redir, error) {
}, nil
}
// Config implements constant.NewListener
func (r *Redir) Config() string {
return optionToString(r.config)
// Config implements constant.InboundListener
func (r *Redir) Config() C.InboundConfig {
return r.config
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (r *Redir) Address() string {
return r.l.Address()
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (r *Redir) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
var err error
r.l, err = redir.NewWithInfos(r.Address(), r.name, r.preferRulesName, tcpIn)
@ -48,7 +52,7 @@ func (r *Redir) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter)
return nil
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (r *Redir) Close() error {
if r.l != nil {
r.l.Close()
@ -56,4 +60,4 @@ func (r *Redir) Close() error {
return nil
}
var _ C.NewListener = (*Redir)(nil)
var _ C.InboundListener = (*Redir)(nil)

View File

@ -9,7 +9,11 @@ import (
type SocksOption struct {
BaseOption
UDP *bool `inbound:"udp,omitempty"`
UDP bool `inbound:"udp,omitempty"`
}
func (o SocksOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
type Socks struct {
@ -28,16 +32,16 @@ func NewSocks(options *SocksOption) (*Socks, error) {
return &Socks{
Base: base,
config: options,
udp: options.UDP == nil || *options.UDP,
udp: options.UDP,
}, nil
}
// Config implements constant.NewListener
func (s *Socks) Config() string {
return optionToString(s.config)
// Config implements constant.InboundListener
func (s *Socks) Config() C.InboundConfig {
return s.config
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (s *Socks) Close() error {
var err error
if s.stl != nil {
@ -58,12 +62,12 @@ func (s *Socks) Close() error {
return err
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (s *Socks) Address() string {
return s.stl.Address()
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (s *Socks) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
var err error
if s.stl, err = socks.NewWithInfos(s.RawAddress(), s.name, s.preferRulesName, tcpIn); err != nil {
@ -79,4 +83,4 @@ func (s *Socks) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter)
return nil
}
var _ C.NewListener = (*Socks)(nil)
var _ C.InboundListener = (*Socks)(nil)

View File

@ -10,7 +10,11 @@ import (
type TProxyOption struct {
BaseOption
UDP *bool `inbound:"udp,omitempty"`
UDP bool `inbound:"udp,omitempty"`
}
func (o TProxyOption) Equal(config C.InboundConfig) bool {
return optionToString(o) == optionToString(config)
}
type TProxy struct {
@ -29,22 +33,22 @@ func NewTProxy(options *TProxyOption) (*TProxy, error) {
return &TProxy{
Base: base,
config: options,
udp: options.UDP == nil || *options.UDP,
udp: options.UDP,
}, nil
}
// Config implements constant.NewListener
func (t *TProxy) Config() string {
return optionToString(t.config)
// Config implements constant.InboundListener
func (t *TProxy) Config() C.InboundConfig {
return t.config
}
// Address implements constant.NewListener
// Address implements constant.InboundListener
func (t *TProxy) Address() string {
return t.lTCP.Address()
}
// Listen implements constant.NewListener
// Listen implements constant.InboundListener
func (t *TProxy) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter) error {
var err error
t.lTCP, err = tproxy.NewWithInfos(t.RawAddress(), t.name, t.preferRulesName, tcpIn)
@ -64,7 +68,7 @@ func (t *TProxy) Listen(tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter
return nil
}
// Close implements constant.NewListener
// Close implements constant.InboundListener
func (t *TProxy) Close() error {
var tcpErr error
var udpErr error
@ -87,4 +91,4 @@ func (t *TProxy) Close() error {
return nil
}
var _ C.NewListener = (*TProxy)(nil)
var _ C.InboundListener = (*TProxy)(nil)