diff --git a/dns/dns.go b/dns/dns.go index 6da5ec2..59219e4 100644 --- a/dns/dns.go +++ b/dns/dns.go @@ -75,7 +75,7 @@ func initRule(blocklist []string) { for i := range blocklist { rule.Add(strings.Split(blocklist[i], ".")) } - glog.V(1).Infof("block rule:\n%s", rule) + glog.V(2).Infof("block rule:\n%s", rule) } func manual(w dns.ResponseWriter, r *dns.Msg, name, dnsServer string) { diff --git a/proxy/client.go b/proxy/client.go index b3caf44..04ae774 100644 --- a/proxy/client.go +++ b/proxy/client.go @@ -10,26 +10,20 @@ import ( func StartClient(server string) { connCh := listenLocal([]string{":80", ":443"}) - sess, err := quic.DialAddr(server, &tls.Config{InsecureSkipVerify: true}, nil) - if err != nil { - glog.Fatalf("connect to remote(%s) fail:%s\n", server, err) - } for { - go func(conn net.Conn) { - glog.V(1).Infoln("new request to", conn.RemoteAddr()) - defer conn.Close() - conn.(*net.TCPConn).SetKeepAlive(true) + sess, err := quic.DialAddr(server, &tls.Config{InsecureSkipVerify: true}, nil) + if err != nil { + glog.Fatalf("connect to remote(%s) fail:%s\n", server, err) + } + glog.Infoln("new session to", sess.RemoteAddr()) - stream, err := sess.OpenStream() - if err != nil { - glog.Warningf("connect to remote(%s) fail:%s\n", server, err) - return + for conn := range connCh { + if err := openStream(conn, sess); err != nil { + break } - defer stream.Close() - - relay(&streamConn{stream, sess}, conn) - }(<-connCh) + } + sess.Close() } } @@ -56,3 +50,19 @@ func listenLocal(ports []string) <-chan net.Conn { glog.Infoln("listening ports:", ports) return connCh } + +func openStream(conn net.Conn, sess quic.Session) error { + defer conn.Close() + conn.(*net.TCPConn).SetKeepAlive(true) + + glog.V(1).Infoln("new request from", conn.RemoteAddr()) + stream, err := sess.OpenStream() + if err != nil { + glog.Warningf("connect to remote(%s) fail:%s\n", sess.RemoteAddr(), err) + return err + } + defer stream.Close() + + relay(&streamConn{stream, sess}, conn) + return nil +} diff --git a/proxy/server.go b/proxy/server.go index 51f9164..3d3ace0 100644 --- a/proxy/server.go +++ b/proxy/server.go @@ -18,22 +18,29 @@ func StartServer(port string) { sess, err := ln.Accept() if err != nil { glog.Errorln(err) + continue } go acceptSession(sess) } } func acceptSession(sess quic.Session) { + glog.V(1).Infoln("new session from ", sess.RemoteAddr()) + defer sess.Close() + for { stream, err := sess.AcceptStream() if err != nil { glog.Errorln(err) + return } + go acceptStream(stream, sess) } } func acceptStream(stream quic.Stream, sess quic.Session) { + glog.V(1).Infoln("new stream from ", sess.RemoteAddr()) defer stream.Close() conn, addr, err := parser.ParseAddr(&streamConn{stream, sess}) @@ -43,7 +50,7 @@ func acceptStream(stream quic.Stream, sess quic.Session) { } glog.V(1).Infoln(addr) - rc, err := net.Dial("tcp", addr) + rc, err := net.Dial("tcp", "www.baidu.com:80") if err != nil { glog.Warningln(err) return