mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 09:25: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()
|
confInit()
|
||||||
|
|
||||||
// setup a log func
|
// 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...))
|
stdlog.Output(2, fmt.Sprintf(f, v...))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"net/textproto"
|
"net/textproto"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/nadoo/glider/common/conn"
|
"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())
|
log.F("[http] %s <-> %s [c] via %s", c.RemoteAddr(), r.uri, dialer.Addr())
|
||||||
|
|
||||||
if err = conn.Relay(c, rc); err != nil {
|
if err = conn.Relay(c, rc); err != nil {
|
||||||
log.F("[http] relay error: %v", err)
|
log.F("[http] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), r.uri, dialer.Addr(), err)
|
||||||
s.proxy.Record(dialer, false)
|
// record remote conn failure only
|
||||||
|
if !strings.Contains(err.Error(), s.addr) {
|
||||||
|
s.proxy.Record(dialer, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
@ -114,8 +115,11 @@ func (s *RedirProxy) Serve(c net.Conn) {
|
|||||||
log.F("[redir] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
log.F("[redir] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||||
|
|
||||||
if err = conn.Relay(c, rc); err != nil {
|
if err = conn.Relay(c, rc); err != nil {
|
||||||
log.F("[redir] relay error: %v", err)
|
log.F("[redir] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||||
s.proxy.Record(dialer, false)
|
// record remote conn failure only
|
||||||
|
if !strings.Contains(err.Error(), s.addr) {
|
||||||
|
s.proxy.Record(dialer, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -142,8 +143,11 @@ func (s *Socks5) Serve(c net.Conn) {
|
|||||||
log.F("[socks5] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
log.F("[socks5] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||||
|
|
||||||
if err = conn.Relay(c, rc); err != nil {
|
if err = conn.Relay(c, rc); err != nil {
|
||||||
log.F("[socks5] relay error: %v", err)
|
log.F("[socks5] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||||
s.proxy.Record(dialer, false)
|
// 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())
|
log.F("[ss] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr())
|
||||||
|
|
||||||
if err = conn.Relay(c, rc); err != nil {
|
if err = conn.Relay(c, rc); err != nil {
|
||||||
log.F("[ss] relay error: %v", err)
|
log.F("[ss] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), tgt, dialer.Addr(), err)
|
||||||
s.proxy.Record(dialer, false)
|
// 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())
|
log.F("[tcptun] %s <-> %s via %s", c.RemoteAddr(), s.raddr, dialer.Addr())
|
||||||
|
|
||||||
if err = conn.Relay(c, rc); err != nil {
|
if err = conn.Relay(c, rc); err != nil {
|
||||||
log.F("[tcptun] relay error: %v", err)
|
log.F("[tcptun] %s <-> %s via %s, relay error: %v", c.RemoteAddr(), s.raddr, dialer.Addr(), err)
|
||||||
s.proxy.Record(dialer, false)
|
// 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 {
|
type frameWriter struct {
|
||||||
io.Writer
|
io.Writer
|
||||||
buf []byte
|
buf []byte
|
||||||
maskKey []byte
|
maskKey [maskKeyLen]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// FrameWriter returns a frame writer.
|
// FrameWriter returns a frame writer.
|
||||||
@ -51,7 +51,7 @@ func FrameWriter(w io.Writer) io.Writer {
|
|||||||
return &frameWriter{
|
return &frameWriter{
|
||||||
Writer: w,
|
Writer: w,
|
||||||
buf: make([]byte, maxFrameHeaderSize+defaultFrameSize),
|
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
|
// maskkey
|
||||||
_, ew = w.Writer.Write(w.maskKey)
|
_, ew = w.Writer.Write(w.maskKey[:])
|
||||||
if ew != nil {
|
if ew != nil {
|
||||||
err = ew
|
err = ew
|
||||||
break
|
break
|
||||||
|
Loading…
Reference in New Issue
Block a user