diff --git a/.gitignore b/.gitignore index 1377554..bbd2e5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ *.swp + +*.gor diff --git a/listener/listener.go b/listener/listener.go index 5cf1e79..1e045c6 100644 --- a/listener/listener.go +++ b/listener/listener.go @@ -43,27 +43,29 @@ func Run() { os.Exit(1) } + Settings.Parse() + fmt.Println("Listening for HTTP traffic on", Settings.Address+":"+strconv.Itoa(Settings.Port)) var messageLogger *log.Logger if Settings.FileToReplyPath != "" { - file, err := os.OpenFile(Settings.FileToReplyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) - defer file.Close() + file, err := os.OpenFile(Settings.FileToReplyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) + defer file.Close() - if err != nil { - log.Fatal("Cannot open file %q. Error: %s", Settings.FileToReplyPath, err) - } + if err != nil { + log.Fatal("Cannot open file %q. Error: %s", Settings.FileToReplyPath, err) + } - messageLogger = log.New(file, "", 0) + messageLogger = log.New(file, "", 0) } - if messageLogger == nil { - fmt.Println("Forwarding requests to replay server:", Settings.ReplayAddress, "Limit:", Settings.ReplayLimit) - } else { - fmt.Println("Saving requests to file", Settings.FileToReplyPath) - } + if messageLogger == nil { + fmt.Println("Forwarding requests to replay server:", Settings.ReplayAddress, "Limit:", Settings.ReplayLimit) + } else { + fmt.Println("Saving requests to file", Settings.FileToReplyPath) + } // Sniffing traffic from given address listener := RAWTCPListen(Settings.Address, Settings.Port) @@ -71,7 +73,6 @@ func Run() { currentTime := time.Now().UnixNano() currentRPS := 0 - for { // Receiving TCPMessage object m := listener.Receive() @@ -100,8 +101,8 @@ func Run() { messageWriter.Flush() messageLogger.Println(messageBuffer.String()) }() - } else { - go sendMessage(m) + } else { + go sendMessage(m) } } } diff --git a/listener/settings.go b/listener/settings.go index 7961799..a1538ec 100644 --- a/listener/settings.go +++ b/listener/settings.go @@ -30,8 +30,8 @@ type ListenerSettings struct { var Settings ListenerSettings = ListenerSettings{} // ReplayServer generates ReplayLimit and ReplayAddress settings out of the replayAddress -func (s *ListenerSettings) ReplayServer(replayAddress string) { - host_info := strings.Split(replayAddress, "|") +func (s *ListenerSettings) Parse() { + host_info := strings.Split(s.ReplayAddress, "|") if len(host_info) > 1 { s.ReplayLimit, _ = strconv.Atoi(host_info[1]) @@ -48,8 +48,7 @@ func init() { flag.IntVar(&Settings.Port, "p", defaultPort, "Specify the http server port whose traffic you want to capture") flag.StringVar(&Settings.Address, "ip", defaultAddress, "Specify IP address to listen") - replayAddress := flag.String("r", defaultReplayAddress, "Address of replay server.") - Settings.ReplayServer(*replayAddress) + flag.StringVar(&Settings.ReplayAddress, "r", defaultReplayAddress, "Address of replay server.") flag.StringVar(&Settings.FileToReplyPath, "file", "", "File to store captured requests") diff --git a/listener/settings_test.go b/listener/settings_test.go new file mode 100644 index 0000000..dc7bca9 --- /dev/null +++ b/listener/settings_test.go @@ -0,0 +1,9 @@ +package listener + +import ( + "testing" +) + +func TestSettings(t *testing.T) { + +}