mirror of
				https://github.com/nadoo/glider.git
				synced 2025-10-31 13:55:52 +08:00 
			
		
		
		
	log: add a default implement of func F
This commit is contained in:
		
							parent
							
								
									3adf3b30b5
								
							
						
					
					
						commit
						36246d9d08
					
				| @ -9,29 +9,36 @@ import ( | |||||||
| 	"github.com/nadoo/glider/common/log" | 	"github.com/nadoo/glider/common/log" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // UDPBufSize is the size of udp buffer
 | ||||||
| const UDPBufSize = 65536 | const UDPBufSize = 65536 | ||||||
| 
 | 
 | ||||||
|  | // Conn struct
 | ||||||
| type Conn struct { | type Conn struct { | ||||||
| 	r *bufio.Reader | 	r *bufio.Reader | ||||||
| 	net.Conn | 	net.Conn | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // NewConn .
 | ||||||
| func NewConn(c net.Conn) Conn { | func NewConn(c net.Conn) Conn { | ||||||
| 	return Conn{bufio.NewReader(c), c} | 	return Conn{bufio.NewReader(c), c} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // NewConnSize .
 | ||||||
| func NewConnSize(c net.Conn, n int) Conn { | func NewConnSize(c net.Conn, n int) Conn { | ||||||
| 	return Conn{bufio.NewReaderSize(c, n), c} | 	return Conn{bufio.NewReaderSize(c, n), c} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Peek .
 | ||||||
| func (c Conn) Peek(n int) ([]byte, error) { | func (c Conn) Peek(n int) ([]byte, error) { | ||||||
| 	return c.r.Peek(n) | 	return c.r.Peek(n) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Read .
 | ||||||
| func (c Conn) Read(p []byte) (int, error) { | func (c Conn) Read(p []byte) (int, error) { | ||||||
| 	return c.r.Read(p) | 	return c.r.Read(p) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Relay .
 | ||||||
| func Relay(left, right net.Conn) (int64, int64, error) { | func Relay(left, right net.Conn) (int64, int64, error) { | ||||||
| 	type res struct { | 	type res struct { | ||||||
| 		N   int64 | 		N   int64 | ||||||
|  | |||||||
| @ -5,12 +5,16 @@ import "log" | |||||||
| // Func defines a simple log function
 | // Func defines a simple log function
 | ||||||
| type Func func(f string, v ...interface{}) | type Func func(f string, v ...interface{}) | ||||||
| 
 | 
 | ||||||
| var F Func | // F is the main log function
 | ||||||
|  | var F Func = func(f string, v ...interface{}) { | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|  | // Fatal log and exit
 | ||||||
| func Fatal(v ...interface{}) { | func Fatal(v ...interface{}) { | ||||||
| 	log.Fatal(v) | 	log.Fatal(v) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Fatalf log and exit
 | ||||||
| func Fatalf(f string, v ...interface{}) { | func Fatalf(f string, v ...interface{}) { | ||||||
| 	log.Fatalf(f, v) | 	log.Fatalf(f, v) | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import ( | |||||||
| 	"strconv" | 	"strconv" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // SOCKS auth type
 | ||||||
| const ( | const ( | ||||||
| 	AuthNone     = 0 | 	AuthNone     = 0 | ||||||
| 	AuthPassword = 2 | 	AuthPassword = 2 | ||||||
| @ -29,6 +30,7 @@ const ( | |||||||
| // MaxAddrLen is the maximum size of SOCKS address in bytes.
 | // MaxAddrLen is the maximum size of SOCKS address in bytes.
 | ||||||
| const MaxAddrLen = 1 + 1 + 255 + 2 | const MaxAddrLen = 1 + 1 + 255 + 2 | ||||||
| 
 | 
 | ||||||
|  | // Errors are socks5 errors
 | ||||||
| var Errors = []error{ | var Errors = []error{ | ||||||
| 	errors.New(""), | 	errors.New(""), | ||||||
| 	errors.New("general failure"), | 	errors.New("general failure"), | ||||||
| @ -42,6 +44,7 @@ var Errors = []error{ | |||||||
| 	errors.New("socks5UDPAssociate"), | 	errors.New("socks5UDPAssociate"), | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // Addr .
 | ||||||
| type Addr []byte | type Addr []byte | ||||||
| 
 | 
 | ||||||
| // String serializes SOCKS address a to string form.
 | // String serializes SOCKS address a to string form.
 | ||||||
| @ -73,6 +76,7 @@ func ATYP(b byte) int { | |||||||
| 	return int(b &^ 0x8) | 	return int(b &^ 0x8) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // ReadAddrBuf reads just enough bytes from r to get a valid Addr.
 | ||||||
| func ReadAddrBuf(r io.Reader, b []byte) (Addr, error) { | func ReadAddrBuf(r io.Reader, b []byte) (Addr, error) { | ||||||
| 	if len(b) < MaxAddrLen { | 	if len(b) < MaxAddrLen { | ||||||
| 		return nil, io.ErrShortBuffer | 		return nil, io.ErrShortBuffer | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								main.go
									
									
									
									
									
								
							| @ -1,7 +1,6 @@ | |||||||
| package main | package main | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	stdlog "log" |  | ||||||
| 	"os" | 	"os" | ||||||
| 	"os/signal" | 	"os/signal" | ||||||
| 	"strings" | 	"strings" | ||||||
| @ -36,11 +35,11 @@ func main() { | |||||||
| 
 | 
 | ||||||
| 	confInit() | 	confInit() | ||||||
| 
 | 
 | ||||||
| 	log.F = func(f string, v ...interface{}) { | 	// log.F = func(f string, v ...interface{}) {
 | ||||||
| 		if conf.Verbose { | 	// 	if conf.Verbose {
 | ||||||
| 			stdlog.Printf(f, v...) | 	// 		stdlog.Printf(f, v...)
 | ||||||
| 		} | 	// 	}
 | ||||||
| 	} | 	// }
 | ||||||
| 
 | 
 | ||||||
| 	sDialer := NewRuleDialer(conf.rules, dialerFromConf()) | 	sDialer := NewRuleDialer(conf.rules, dialerFromConf()) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import ( | |||||||
| 	"github.com/nadoo/glider/common/log" | 	"github.com/nadoo/glider/common/log" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // A proxy.Dialer means to establish a connection and relay it.
 | // Dialer means to establish a connection and relay it.
 | ||||||
| type Dialer interface { | type Dialer interface { | ||||||
| 	// Addr()
 | 	// Addr()
 | ||||||
| 	Addr() string | 	Addr() string | ||||||
| @ -24,16 +24,19 @@ type Dialer interface { | |||||||
| 	NextDialer(dstAddr string) Dialer | 	NextDialer(dstAddr string) Dialer | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // DialerCreator is a function to create dialers.
 | ||||||
| type DialerCreator func(s string, dialer Dialer) (Dialer, error) | type DialerCreator func(s string, dialer Dialer) (Dialer, error) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	dialerMap = make(map[string]DialerCreator) | 	dialerMap = make(map[string]DialerCreator) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // RegisterDialer is used to register a dialer
 | ||||||
| func RegisterDialer(name string, c DialerCreator) { | func RegisterDialer(name string, c DialerCreator) { | ||||||
| 	dialerMap[name] = c | 	dialerMap[name] = c | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // DialerFromURL calls the registered creator to create dialers.
 | ||||||
| func DialerFromURL(s string, dialer Dialer) (Dialer, error) { | func DialerFromURL(s string, dialer Dialer) (Dialer, error) { | ||||||
| 	u, err := url.Parse(s) | 	u, err := url.Parse(s) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | |||||||
| @ -14,16 +14,19 @@ type Server interface { | |||||||
| 	ListenAndServe() | 	ListenAndServe() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // ServerCreator is a function to create proxy servers.
 | ||||||
| type ServerCreator func(s string, dialer Dialer) (Server, error) | type ServerCreator func(s string, dialer Dialer) (Server, error) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	serverMap = make(map[string]ServerCreator) | 	serverMap = make(map[string]ServerCreator) | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // RegisterServer is used to register a proxy server
 | ||||||
| func RegisterServer(name string, c ServerCreator) { | func RegisterServer(name string, c ServerCreator) { | ||||||
| 	serverMap[name] = c | 	serverMap[name] = c | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // ServerFromURL calls the registered creator to create proxy servers.
 | ||||||
| func ServerFromURL(s string, dialer Dialer) (Server, error) { | func ServerFromURL(s string, dialer Dialer) (Server, error) { | ||||||
| 	if !strings.Contains(s, "://") { | 	if !strings.Contains(s, "://") { | ||||||
| 		s = "mixed://" + s | 		s = "mixed://" + s | ||||||
|  | |||||||
| @ -26,6 +26,7 @@ import ( | |||||||
| 	"github.com/nadoo/glider/proxy" | 	"github.com/nadoo/glider/proxy" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // Version: socks5 version
 | ||||||
| const Version = 5 | const Version = 5 | ||||||
| 
 | 
 | ||||||
| // SOCKS5 struct
 | // SOCKS5 struct
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 nadoo
						nadoo