diff --git a/Makefile b/Makefile index 0b82deb..cae4bc0 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,17 @@ run: go run src/main.go -p 5053 -d "127.0.0.1:5059" +test-ip: + go run src/main.go -p 5053 -d "127.0.0.1:5059,localhost:5059" + +test-port: + go run src/main.go -p 5053 -d "127.0.0.1:5059,127.0.0.1:as" + +test-port-max: + go run src/main.go -p 5053 -d "127.0.0.1:5059,127.0.0.1:65537" + +test-port-endpoint: + go run src/main.go -p 5053 -d "127.0.0.1:9001/bid_request" + build: go build -o bin/simple-choose-ad src/main.go diff --git a/src/client_server/validators.go b/src/client_server/validators.go index d1befd0..a5f9077 100644 --- a/src/client_server/validators.go +++ b/src/client_server/validators.go @@ -10,6 +10,8 @@ import ( "strings" ) +const MAX_PORT_NUM = 65535 + // Returns false if ipv4 `correct`. func wrongIPAddresFormat(ipv4 string) bool { re, err := regexp.Compile(`^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$`) @@ -24,6 +26,8 @@ func throwHTTPError(err_text string, code int, w *http.ResponseWriter) { log.Printf("Error: %d %v\n", code, err_text) } +// Wait string in format "10.10.10.10:8080", where `10.10.10.10` IPv4, +// and `8080` port. If ip or port has wrong format, returns error. func ParsePartnersAddress(ipAndPort string) (string, int64, error) { var err error iap := strings.Split(ipAndPort, ":") @@ -33,6 +37,14 @@ func ParsePartnersAddress(ipAndPort string) (string, int64, error) { err = errors.New(fmt.Sprintf("Wrong ip address format in partner ip: %v", ip)) } - port, _ := strconv.ParseInt(iap[1], 10, 32) + port, e := strconv.ParseInt(iap[1], 10, 32) + if e != nil { + err = errors.New(fmt.Sprintf("Wrong port format in partner ip: %v", e)) + } + + if port > MAX_PORT_NUM { + err = errors.New(fmt.Sprintf("Wrong port in partner ip: grater than %v", MAX_PORT_NUM)) + } + return ip, port, err } diff --git a/src/main.go b/src/main.go index 70652d8..a0dbd6b 100644 --- a/src/main.go +++ b/src/main.go @@ -1,16 +1,14 @@ /* Usage: - sample-choose-ad [flags] + sample-choose-ad [flags] The flags are: - -p - Listening port - -d - Adversment partners list in format ip_p1:port,ip_p2:port2...ip_p10:port - - + -p + Listening port + -d + Adversment partners list in format ip_p1:port,ip_p2:port2...ip_p10:port */ package main @@ -49,8 +47,7 @@ func main() { ip, port, err := clientserver.ParsePartnersAddress(p) if err != nil { - log.Println(err) - continue + log.Fatalln(err) } partners = append(partners, customtypes.PartnersAddress{