mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 01:15:41 +08:00
proxy: record failures of remote connection only
This commit is contained in:
parent
b3b11b4188
commit
89114e678b
4
main.go
4
main.go
@ -41,8 +41,8 @@ func main() {
|
||||
confInit()
|
||||
|
||||
// setup a log func
|
||||
log.F = func(f string, v ...interface{}) {
|
||||
if conf.Verbose {
|
||||
if conf.Verbose {
|
||||
log.F = func(f string, v ...interface{}) {
|
||||
stdlog.Output(2, fmt.Sprintf(f, v...))
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"io"
|
||||
"net"
|
||||
"net/textproto"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/nadoo/glider/common/conn"
|
||||
@ -103,8 +104,11 @@ func (s *HTTP) servHTTPS(r *request, c net.Conn) {
|
||||
log.F("[http] %s <-> %s [c] via %s", c.RemoteAddr(), r.uri, dialer.Addr())
|
||||
|
||||
if err = conn.Relay(c, rc); err != nil {
|
||||
log.F("[http] relay error: %v", err)
|
||||
s.proxy.Record(dialer, false)
|
||||
log.F("[http] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), r.uri, dialer.Addr(), err)
|
||||
// record remote conn failure only
|
||||
if !strings.Contains(err.Error(), s.addr) {
|
||||
s.proxy.Record(dialer, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
"net/url"
|
||||
"strings"
|
||||
"syscall"
|
||||
"unsafe"
|
||||
|
||||
@ -114,8 +115,11 @@ func (s *RedirProxy) Serve(c net.Conn) {
|
||||
log.F("[redir] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||
|
||||
if err = conn.Relay(c, rc); err != nil {
|
||||
log.F("[redir] relay error: %v", err)
|
||||
s.proxy.Record(dialer, false)
|
||||
log.F("[redir] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||
// record remote conn failure only
|
||||
if !strings.Contains(err.Error(), s.addr) {
|
||||
s.proxy.Record(dialer, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"net"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@ -142,8 +143,11 @@ func (s *Socks5) Serve(c net.Conn) {
|
||||
log.F("[socks5] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||
|
||||
if err = conn.Relay(c, rc); err != nil {
|
||||
log.F("[socks5] relay error: %v", err)
|
||||
s.proxy.Record(dialer, false)
|
||||
log.F("[socks5] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||
// record remote conn failure only
|
||||
if !strings.Contains(err.Error(), s.addr) {
|
||||
s.proxy.Record(dialer, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,8 +161,11 @@ func (s *SS) Serve(c net.Conn) {
|
||||
log.F("[ss] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||
|
||||
if err = conn.Relay(c, rc); err != nil {
|
||||
log.F("[ss] relay error: %v", err)
|
||||
s.proxy.Record(dialer, false)
|
||||
log.F("[ss] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||
// record remote conn failure only
|
||||
if !strings.Contains(err.Error(), s.addr) {
|
||||
s.proxy.Record(dialer, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,10 @@ func (s *TCPTun) Serve(c net.Conn) {
|
||||
log.F("[tcptun] %s <-> %s via %s", c.RemoteAddr(), s.raddr, dialer.Addr())
|
||||
|
||||
if err = conn.Relay(c, rc); err != nil {
|
||||
log.F("[tcptun] relay error: %v", err)
|
||||
s.proxy.Record(dialer, false)
|
||||
log.F("[tcptun] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), s.raddr, dialer.Addr(), err)
|
||||
// record remote conn failure only
|
||||
if !strings.Contains(err.Error(), s.addr) {
|
||||
s.proxy.Record(dialer, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ const (
|
||||
type frameWriter struct {
|
||||
io.Writer
|
||||
buf []byte
|
||||
maskKey []byte
|
||||
maskKey [maskKeyLen]byte
|
||||
}
|
||||
|
||||
// FrameWriter returns a frame writer.
|
||||
@ -51,7 +51,7 @@ func FrameWriter(w io.Writer) io.Writer {
|
||||
return &frameWriter{
|
||||
Writer: w,
|
||||
buf: make([]byte, maxFrameHeaderSize+defaultFrameSize),
|
||||
maskKey: []byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)},
|
||||
maskKey: [...]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)},
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ func (w *frameWriter) ReadFrom(r io.Reader) (n int64, err error) {
|
||||
}
|
||||
|
||||
// maskkey
|
||||
_, ew = w.Writer.Write(w.maskKey)
|
||||
_, ew = w.Writer.Write(w.maskKey[:])
|
||||
if ew != nil {
|
||||
err = ew
|
||||
break
|
||||
|
Loading…
Reference in New Issue
Block a user