From ec8fcb1dcd3b5c232a3278c0f5fdaee89f3e2d74 Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Wed, 8 Jan 2020 15:23:31 +0100 Subject: [PATCH 1/3] chg [gitignore] use d4-golang-utils --- d4-goclient.go | 87 +++----------------------------------------------- 1 file changed, 4 insertions(+), 83 deletions(-) diff --git a/d4-goclient.go b/d4-goclient.go index e636d75..0b9e698 100644 --- a/d4-goclient.go +++ b/d4-goclient.go @@ -16,13 +16,13 @@ import ( "net" "os" "os/signal" - "regexp" "strconv" "strings" "time" //BSD 3 - uuid "github.com/satori/go.uuid" + config "github.com/D4-project/d4-golang-utils/config" + uuid "github.com/D4-project/d4-golang-utils/crypto/hash" ) const ( @@ -234,25 +234,7 @@ func d4Copy(d4 *d4S, c chan string, k chan string) { } func readConfFile(d4 *d4S, fileName string) []byte { - f, err := os.OpenFile((*d4).confdir+"/"+fileName, os.O_RDWR|os.O_CREATE, 0666) - defer f.Close() - if err != nil { - log.Fatal(err) - } - data := make([]byte, 100) - count, err := f.Read(data) - if err != nil { - if err != io.EOF { - log.Fatal(err) - } - } - infof(fmt.Sprintf("read %d bytes: %q\n", count, data[:count])) - if err := f.Close(); err != nil { - log.Fatal(err) - } - // trim \r and \n if present - r := bytes.TrimSuffix(data[:count], []byte("\n")) - return bytes.TrimSuffix(r, []byte("\r")) + return config.ReadConfigFile((*d4).confdir, fileName) } func d4loadConfig(d4 *d4S) bool { @@ -369,7 +351,6 @@ func newD4Writer(writer io.Writer, key []byte) d4Writer { // TODO QUICK IMPLEM, REVISE func setReaderWriters(d4 *d4S) bool { - //TODO implement other destination file, fifo unix_socket ... switch (*d4).conf.source { case "stdin": @@ -378,7 +359,7 @@ func setReaderWriters(d4 *d4S) bool { f, _ := os.Open("capture.pcap") (*d4).src = f } - isn, dstnet := isNet((*d4).conf.destination) + isn, dstnet := config.IsNet((*d4).conf.destination) if isn { dial := net.Dialer{ Timeout: (*d4).ct, @@ -427,66 +408,6 @@ func setReaderWriters(d4 *d4S) bool { return true } -func isNet(host string) (bool, string) { - // DNS regex - validDNS := regexp.MustCompile(`^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z - ]{2,3})$`) - // Check ipv6 - if strings.HasPrefix(host, "[") { - // Parse an IP-Literal in RFC 3986 and RFC 6874. - // E.g., "[fe80::1]:80". - i := strings.LastIndex(host, "]") - if i < 0 { - infof("Unmatched [ in destination config") - return false, "" - } - if !validPort(host[i+1:]) { - infof("No valid port specified") - return false, "" - } - // trim brackets - if net.ParseIP(strings.Trim(host[:i+1], "[]")) != nil { - infof(fmt.Sprintf("Server IP: %s, Server Port: %s\n", host[:i+1], host[i+1:])) - return true, host - } - } else { - // Ipv4 or DNS name - ss := strings.Split(string(host), ":") - if len(ss) > 1 { - if !validPort(":" + ss[1]) { - infof("No valid port specified") - return false, "" - } - if net.ParseIP(ss[0]) != nil { - infof(fmt.Sprintf("Server IP: %s, Server Port: %s\n", ss[0], ss[1])) - return true, host - } else if validDNS.MatchString(ss[0]) { - infof(fmt.Sprintf("DNS: %s, Server Port: %s\n", ss[0], ss[1])) - return true, host - } - } - } - return false, host -} - -// Reusing code from net.url -// validOptionalPort reports whether port is either an empty string -// or matches /^:\d*$/ -func validPort(port string) bool { - if port == "" { - return false - } - if port[0] != ':' { - return false - } - for _, b := range port[1:] { - if b < '0' || b > '9' { - return false - } - } - return true -} - func generateUUIDv4() []byte { uuid, err := uuid.NewV4() if err != nil { From 0cfa4697a9d0caaf9a296a58a33df9ff36df39dd Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Wed, 8 Jan 2020 15:27:13 +0100 Subject: [PATCH 2/3] chg [module] going modular --- go.mod | 5 +++++ go.sum | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 go.mod create mode 100644 go.sum diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..ac2e4c7 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/D4-project/d4-goclient + +go 1.13 + +require github.com/D4-project/d4-golang-utils v0.0.0-20190603131519-c10ee092655c diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..63b19ab --- /dev/null +++ b/go.sum @@ -0,0 +1,4 @@ +github.com/D4-project/d4-golang-utils v0.0.0-20190603131519-c10ee092655c h1:NfASgeIzH3ULEOYgDZwZCmq+C+LgrcSBOzNLsWT+RAc= +github.com/D4-project/d4-golang-utils v0.0.0-20190603131519-c10ee092655c/go.mod h1:2rq8KBQnNNDocwc/49cnpaqoQA/komoSHKom7ynvqJc= +github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= From 2db3aeb5cac5f0522374f5fa37af8effa0e7860a Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Wed, 8 Jan 2020 15:47:46 +0100 Subject: [PATCH 3/3] chg [comments] remove --- d4-goclient.go | 1 - 1 file changed, 1 deletion(-) diff --git a/d4-goclient.go b/d4-goclient.go index 0b9e698..96645cd 100644 --- a/d4-goclient.go +++ b/d4-goclient.go @@ -20,7 +20,6 @@ import ( "strings" "time" - //BSD 3 config "github.com/D4-project/d4-golang-utils/config" uuid "github.com/D4-project/d4-golang-utils/crypto/hash" )