66 "bytes"
77 "context"
88 "crypto/tls"
9+ "fmt"
910 "io"
1011 "net"
1112 "net/url"
@@ -95,14 +96,14 @@ func (s *Server) start() error {
9596
9697 // 初始化隧道监听器
9798 if err := s .initTunnelListener (); err != nil {
98- return err
99+ return fmt . Errorf ( "start: initTunnelListener failed: %w" , err )
99100 }
100101
101102 // 运行模式判断
102103 switch s .runMode {
103104 case "1" : // 反向模式
104105 if err := s .initTargetListener (); err != nil {
105- return err
106+ return fmt . Errorf ( "start: initTargetListener failed: %w" , err )
106107 }
107108 s .dataFlow = "-"
108109 case "2" : // 正向模式
@@ -119,7 +120,7 @@ func (s *Server) start() error {
119120
120121 // 与客户端进行握手
121122 if err := s .tunnelHandshake (); err != nil {
122- return err
123+ return fmt . Errorf ( "start: tunnelHandshake failed: %w" , err )
123124 }
124125
125126 // 握手之后把UDP监听关掉
@@ -139,23 +140,26 @@ func (s *Server) start() error {
139140 if s .dataFlow == "-" {
140141 go s .commonLoop ()
141142 }
142- return s .commonControl ()
143+ if err := s .commonControl (); err != nil {
144+ return fmt .Errorf ("start: commonControl failed: %w" , err )
145+ }
146+ return nil
143147}
144148
145149// tunnelHandshake 与客户端进行握手
146150func (s * Server ) tunnelHandshake () error {
147151 // 接受隧道连接
148152 for {
149153 if s .ctx .Err () != nil {
150- return s .ctx .Err ()
154+ return fmt . Errorf ( "tunnelHandshake: context error: %w" , s .ctx .Err () )
151155 }
152156
153157 tunnelTCPConn , err := s .tunnelListener .Accept ()
154158 if err != nil {
155- s .logger .Error ("Accept error: %v" , err )
159+ s .logger .Error ("tunnelHandshake: accept error: %v" , err )
156160 select {
157161 case <- s .ctx .Done ():
158- return s .ctx .Err ()
162+ return fmt . Errorf ( "tunnelHandshake: context error: %w" , s .ctx .Err () )
159163 case <- time .After (serviceCooldown ):
160164 }
161165 continue
@@ -166,11 +170,11 @@ func (s *Server) tunnelHandshake() error {
166170 bufReader := bufio .NewReader (tunnelTCPConn )
167171 rawTunnelKey , err := bufReader .ReadString ('\n' )
168172 if err != nil {
169- s .logger .Warn ("Handshake timeout: %v" , tunnelTCPConn .RemoteAddr ())
173+ s .logger .Warn ("tunnelHandshake: handshake timeout: %v" , tunnelTCPConn .RemoteAddr ())
170174 tunnelTCPConn .Close ()
171175 select {
172176 case <- s .ctx .Done ():
173- return s .ctx .Err ()
177+ return fmt . Errorf ( "tunnelHandshake: context error: %w" , s .ctx .Err () )
174178 case <- time .After (serviceCooldown ):
175179 }
176180 continue
@@ -180,11 +184,11 @@ func (s *Server) tunnelHandshake() error {
180184 tunnelKey := string (s .xor (bytes .TrimSuffix ([]byte (rawTunnelKey ), []byte {'\n' })))
181185
182186 if tunnelKey != s .tunnelKey {
183- s .logger .Warn ("Access denied: %v" , tunnelTCPConn .RemoteAddr ())
187+ s .logger .Warn ("tunnelHandshake: access denied: %v" , tunnelTCPConn .RemoteAddr ())
184188 tunnelTCPConn .Close ()
185189 select {
186190 case <- s .ctx .Done ():
187- return s .ctx .Err ()
191+ return fmt . Errorf ( "tunnelHandshake: context error: %w" , s .ctx .Err () )
188192 case <- time .After (serviceCooldown ):
189193 }
190194 continue
@@ -210,7 +214,7 @@ func (s *Server) tunnelHandshake() error {
210214
211215 _ , err := s .tunnelTCPConn .Write (append (s .xor ([]byte (tunnelURL .String ())), '\n' ))
212216 if err != nil {
213- return err
217+ return fmt . Errorf ( "tunnelHandshake: write tunnel config failed: %w" , err )
214218 }
215219
216220 s .logger .Info ("Tunnel signal -> : %v -> %v" , tunnelURL .String (), s .tunnelTCPConn .RemoteAddr ())
0 commit comments