Skip to content

Commit

Permalink
Better logg, prepare for gui
Browse files Browse the repository at this point in the history
  • Loading branch information
coyove committed Oct 8, 2017
1 parent ae64e67 commit ba1757c
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cmd/goflyway/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func main() {
}

if *G_Upstream != "" {
if !lookup.LoadOrCreateChinaList() {
if !lookup.LoadOrCreateChinaList("") {
logg.W("cannot read chinalist.txt (but it's fine, you can ignore this msg)")
}
}
Expand Down
31 changes: 27 additions & 4 deletions pkg/logg/logg.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ import (
)

var ignoreLocalhost = true
var fatalAsError = false
var logLevel = 0
var logCallback func(ts int64, msg string)

func RecordLocalhostError(r bool) {
ignoreLocalhost = !r
Expand All @@ -33,6 +35,14 @@ func SetLevel(lv string) {
}
}

func SetCallback(f func(ts int64, msg string)) {
logCallback = f
}

func TreatFatalAsError(flag bool) {
fatalAsError = flag
}

func timestamp() string {
t := time.Now()
mil := t.UnixNano() % 1e9
Expand Down Expand Up @@ -73,13 +83,14 @@ func tryShortenWSAError(err interface{}) (ret string) {
type msg_t struct {
dst string
lead string
ts int64
message string
}

var msgQueue = make(chan msg_t)

func print(l string, params ...interface{}) {
m := msg_t{lead: lead(l)}
m := msg_t{lead: lead(l), ts: time.Now().UnixNano()}

for _, p := range params {
switch p.(type) {
Expand Down Expand Up @@ -137,11 +148,20 @@ func Start() {
}

if count > 0 {
fmt.Printf(strings.Repeat(" ", len(m.lead))+"... %d similar message(s)\n", count)
str := fmt.Sprintf(strings.Repeat(" ", len(m.lead))+"... %d similar message(s)", count)
if logCallback != nil {
logCallback(m.ts, str)
} else {
fmt.Println(str)
}
}
}

fmt.Println(m.lead + m.message)
if logCallback != nil {
logCallback(m.ts, m.lead+m.message)
} else {
fmt.Println(m.lead + m.message)
}
lastMsg, lastTime, count = &m, time.Now(), 0
default:
// nothing in queue to print, quit loop
Expand Down Expand Up @@ -180,5 +200,8 @@ func E(params ...interface{}) {

func F(params ...interface{}) {
print("X", params...)
os.Exit(1)

if !fatalAsError {
os.Exit(1)
}
}
14 changes: 9 additions & 5 deletions pkg/lookup/lookup.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,19 @@ func init() {
fill(&IPv4PrivateLookupTable, PRIVATE_IP)
}

func LoadOrCreateChinaList() bool {
buf, err := ioutil.ReadFile("./chinalist.txt")
if err != nil {
return false
func LoadOrCreateChinaList(raw string) bool {
if raw == "" {
buf, err := ioutil.ReadFile("./chinalist.txt")
if err != nil {
return false
}

raw = string(buf)
}

ChinaList = make(China_list_t)

for _, domain := range strings.Split(string(buf), "\n") {
for _, domain := range strings.Split(raw, "\n") {
subs := strings.Split(strings.Trim(domain, "\r "), ".")
if len(subs) == 0 || len(domain) == 0 || domain[0] == '#' {
continue
Expand Down
2 changes: 2 additions & 0 deletions proxy/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,7 @@ func NewClient(localaddr string, config *ClientConfig) *ProxyClient {
upstreamUrl, err := url.Parse("http://" + config.Upstream)
if err != nil {
logg.F(err)
return nil
}

word := genWord(config.GCipher)
Expand Down Expand Up @@ -477,6 +478,7 @@ func NewClient(localaddr string, config *ClientConfig) *ProxyClient {

if err != nil {
logg.F(err)
return nil
}

proxy.Listener = &listenerWrapper{Listener: mux, proxy: proxy, obpool: NewOneBytePool(1024)}
Expand Down
6 changes: 6 additions & 0 deletions proxy/multiplexer.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"errors"
"io"
"net"
"strings"
"time"
)

Expand Down Expand Up @@ -118,6 +119,11 @@ CONTINUE:
c, err := l.Listener.Accept()
if err != nil || c == nil {
logg.E("listener: ", err)

if strings.Contains(err.Error(), "use of closed network connection") {
return nil, err
}

goto CONTINUE
}

Expand Down

0 comments on commit ba1757c

Please sign in to comment.