Skip to content

Commit e0ad869

Browse files
committed
Change v functions
1 parent 63badd6 commit e0ad869

File tree

8 files changed

+48
-25
lines changed

8 files changed

+48
-25
lines changed

client.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func NewClient(localaddr string, config *ClientConfig) error {
7272
if config.Dynamic {
7373
dst, err := handleSOCKS5(downconn)
7474
if err != nil {
75-
v.Vprint("SOCKS5 server error: ", err)
75+
v.Eprint("SOCKS5 server error: ", err)
7676
return
7777
}
7878
bind = dst
@@ -86,20 +86,20 @@ func NewClient(localaddr string, config *ClientConfig) error {
8686
}
8787

8888
if err != nil {
89-
v.Vprint("dial server: ", err)
89+
v.Eprint("dial server: ", err)
9090
return
9191
}
9292
defer up.Close()
9393

9494
upconn := toh.NewBufConn(up)
9595
if _, err := upconn.Write([]byte(bind + "\n")); err != nil {
96-
v.Vprint("failed to req: ", err)
96+
v.Eprint("failed to req: ", err)
9797
return
9898
}
9999

100100
resp, err := upconn.ReadBytes('\n')
101101
if err != nil || string(resp) != "OK\n" {
102-
v.Vprint("server failed to ack: ", err, ", resp: ", string(resp))
102+
v.Eprint("server failed to ack: ", err, ", resp: ", string(resp))
103103
return
104104
}
105105

@@ -152,6 +152,7 @@ func handleSOCKS5(conn net.Conn) (string, error) {
152152
case 0x04:
153153
addrsize = net.IPv6len + 2
154154
case 0x03:
155+
// read one extra byte that indicates the length of the domain
155156
if _, err := io.ReadFull(conn, buf[:1]); err != nil {
156157
return "", fmt.Errorf("failed to read domain destination: %v", err)
157158
}

cmd/goflyway/main.go

+19-8
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func printHelp(a ...interface{}) {
2727
fmt.Printf("goflyway: ")
2828
fmt.Println(a...)
2929
}
30-
fmt.Println("usage: goflyway -LhuUvVkKpPtTwW address:port")
30+
fmt.Println("usage: goflyway -DLhuUvVkKqpPtTwW address:port")
3131
os.Exit(0)
3232
}
3333

@@ -47,6 +47,8 @@ func main() {
4747
last = c
4848
case 'v':
4949
v.Verbose++
50+
case 'q':
51+
v.Verbose = -1
5052
case 'w':
5153
cconfig.WebSocket = true
5254
case 'K':
@@ -111,7 +113,12 @@ func main() {
111113
}
112114

113115
if addr == "" {
114-
printHelp("missing address:port")
116+
if localAddr == "" {
117+
v.Vprint("assume you want a default server at :8100")
118+
addr = ":8100"
119+
} else {
120+
printHelp("missing address:port to listen/connect")
121+
}
115122
}
116123

117124
if localAddr != "" && remoteAddr == "" {
@@ -150,18 +157,22 @@ func main() {
150157
}
151158
}()
152159

153-
fmt.Println("goflyway client binds", remoteAddr, "at", addr, "to", localAddr, with)
160+
if cconfig.Dynamic {
161+
v.Vprint("forward dynamically (SOCKS5) at local:", localAddr, "to remote:", addr, with)
162+
} else {
163+
v.Vprint("bind", remoteAddr, "at remote:", addr, "to local:", localAddr, with)
164+
}
154165

155166
if a := os.Getenv("http_proxy") + os.Getenv("HTTP_PROXY"); a != "" {
156-
fmt.Println("note: system HTTP proxy is set to:", a)
167+
v.Vprint("note: system HTTP proxy is set to:", a)
157168
}
158169
if a := os.Getenv("https_proxy") + os.Getenv("HTTPS_PROXY"); a != "" {
159-
fmt.Println("note: system HTTPS proxy is set to:", a)
170+
v.Vprint("note: system HTTPS proxy is set to:", a)
160171
}
161172

162-
panic(goflyway.NewClient(localAddr, cconfig))
173+
v.Eprint(goflyway.NewClient(localAddr, cconfig))
163174
} else {
164-
fmt.Println("goflyway server listens on", addr, with)
165-
panic(goflyway.NewServer(addr, sconfig))
175+
v.Vprint("server listens on", addr, with)
176+
v.Eprint(goflyway.NewServer(addr, sconfig))
166177
}
167178
}

io.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import (
1111
func Bridge(target, source net.Conn, timeout *TokenBucket, stat *Traffic) {
1212
go func() {
1313
if err := ioCopy(target, source, timeout, stat.Sent()); err != nil {
14-
Vprint("Bridge: ", err)
14+
Eprint("bridge: ", err)
1515
}
1616
target.Close()
1717
source.Close()
1818
}()
1919

2020
if err := ioCopy(source, target, timeout, stat.Recv()); err != nil {
21-
Vprint("Bridge: ", err)
21+
Eprint("bridge: ", err)
2222
}
2323

2424
// Multiple closes, but for tohConn they are just fine

toh/client_conn.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ REWRITE:
123123
}
124124

125125
if len(c.write.buf) > c.dialer.MaxWriteBuffer {
126-
v.Vprint(c, " write buffer is full")
126+
v.Eprint(c, " write buffer is full")
127127
time.Sleep(time.Second)
128128
goto REWRITE
129129
}

toh/frame.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func parseframe(r io.ReadCloser, blk cipher.Block) (f frame, ok bool) {
6969
if err == io.EOF {
7070
ok = true
7171
} else {
72-
v.Vprint(err)
72+
v.Eprint(err)
7373
}
7474
return
7575
}
@@ -86,14 +86,14 @@ func parseframe(r io.ReadCloser, blk cipher.Block) (f frame, ok bool) {
8686
datalen := int(binary.LittleEndian.Uint32(header[12:]))
8787
data := make([]byte, datalen)
8888
if n, err := io.ReadAtLeast(r, data, datalen); err != nil || n != datalen {
89-
v.Vprint(err)
89+
v.Eprint(err)
9090
return
9191
}
9292

9393
gcm, err := cipher.NewGCM(blk)
9494
data, err = gcm.Open(nil, header[:12], data, nil)
9595
if err != nil {
96-
v.Vprint(err)
96+
v.Eprint(err)
9797
return
9898
}
9999

toh/orch.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (d *Dialer) startOrch() {
8585
go func(pingframe frame, lastconn *ClientConn, conns map[uint64]*ClientConn) {
8686
resp, err := lastconn.send(pingframe)
8787
if err != nil {
88-
v.Vprint("send error: ", err)
88+
v.Eprint("send error: ", err)
8989
return
9090
}
9191
defer resp.Body.Close()

toh/server_conn.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func (l *Listener) handler(w http.ResponseWriter, r *http.Request) {
6666
conn, err := l.wsHandShake(w, r)
6767
if err != nil {
6868
w.WriteHeader(http.StatusBadRequest)
69-
v.Vprint("websocket handshake error: ", err)
69+
v.Eprint("websocket handshake error: ", err)
7070
} else {
7171
l.pendingConns <- conn
7272
}
@@ -149,7 +149,7 @@ func (l *Listener) handler(w http.ResponseWriter, r *http.Request) {
149149
}
150150

151151
if datalen, err := conn.read.feedframes(r.Body); err != nil {
152-
v.Vprint("listener feed frames, error: ", err, ", ", conn, " will be deleted")
152+
v.Eprint("listener feed frames, error: ", err, ", ", conn, " will be deleted")
153153
conn.Close()
154154
return
155155
} else if datalen == 0 && len(conn.write.buf) == 0 {
@@ -203,7 +203,7 @@ func (conn *ServerConn) writeTo(w io.Writer) {
203203
if time.Now().Before(deadline) {
204204
goto AGAIN
205205
}
206-
v.Vprint(conn, " failed to response, error: ", err)
206+
v.Eprint(conn, " failed to response, error: ", err)
207207
conn.read.feedError(err)
208208
conn.Close()
209209
return

v/vprint.go

+14-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ var (
1919
FloatPrec = 3
2020
)
2121

22+
func Eprint(v ...interface{}) { vprint(0, v...) }
23+
2224
func Vprint(v ...interface{}) { vprint(1, v...) }
2325

2426
func VVprint(v ...interface{}) { vprint(2, v...) }
@@ -74,9 +76,18 @@ func vprint(b int, v ...interface{}) {
7476
}
7577
}
7678

77-
_, fn, line, _ := runtime.Caller(2)
78-
str, now := fmt.Sprint(v...), time.Now()
79-
fmt.Fprintf(os.Stdout, "dbg%d %s%02d %02d:%02d:%02d %s:%-3d ] %s\n", b,
79+
var (
80+
_, fn, line, _ = runtime.Caller(2)
81+
str = strings.TrimRightFunc(fmt.Sprint(v...), func(r rune) bool { return r == '\r' || r == '\n' })
82+
now = time.Now()
83+
lead = "dbg" + strconv.Itoa(b)
84+
)
85+
86+
if b == 0 {
87+
lead = "error"
88+
}
89+
90+
fmt.Fprintf(os.Stdout, lead+" %s%02d %02d:%02d:%02d %s:%-3d ] %s\n",
8091
"123456789OXZ"[now.Month()-1:now.Month()], now.Day(), now.Hour(), now.Minute(), now.Second(),
8192
filepath.Base(fn), line, str)
8293
}

0 commit comments

Comments
 (0)