diff --git a/Dockerfile b/Dockerfile index 61be78f82..7a5e36f54 100644 --- a/Dockerfile +++ b/Dockerfile @@ -74,9 +74,6 @@ RUN go build -ldflags="-extldflags=-static \ -X 'mizuserver/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \ -X 'mizuserver/pkg/version.SemVer=${SEM_VER}'" -o mizuagent . -COPY devops/build_extensions.sh .. -RUN cd .. && /bin/bash build_extensions.sh - ### The shipped image diff --git a/Makefile b/Makefile index 99fc714a5..53415c702 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ SHELL=/bin/bash # HELP # This will output the help for each task # thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html -.PHONY: help ui extensions extensions-debug agent agent-debug cli tap docker +.PHONY: help ui agent agent-debug cli tap docker help: ## This help. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -37,13 +37,11 @@ build-cli-ci: ## Build CLI for CI. agent: ## Build agent. @(echo "building mizu agent .." ) @(cd agent; go build -o build/mizuagent main.go) - ${MAKE} extensions @ls -l agent/build agent-debug: ## Build agent for debug. @(echo "building mizu agent for debug.." ) @(cd agent; go build -gcflags="all=-N -l" -o build/mizuagent main.go) - ${MAKE} extensions-debug @ls -l agent/build docker: ## Build and publish agent docker image. @@ -71,7 +69,7 @@ push-cli: ## Build and publish CLI. gsutil cp -r ./cli/bin/* gs://${BUCKET_PATH}/ gsutil setmeta -r -h "Cache-Control:public, max-age=30" gs://${BUCKET_PATH}/\* -clean: clean-ui clean-agent clean-cli clean-docker clean-extensions ## Clean all build artifacts. +clean: clean-ui clean-agent clean-cli clean-docker ## Clean all build artifacts. clean-ui: ## Clean UI. @(rm -rf ui/build ; echo "UI cleanup done" ) @@ -82,18 +80,9 @@ clean-agent: ## Clean agent. clean-cli: ## Clean CLI. @(cd cli; make clean ; echo "CLI cleanup done" ) -clean-extensions: ## Clean extensions - @(rm -rf tap/extensions/*.so ; echo "Extensions cleanup done" ) - clean-docker: @(echo "DOCKER cleanup - NOT IMPLEMENTED YET " ) -extensions-debug: - devops/build_extensions_debug.sh - -extensions: - devops/build_extensions.sh - test-cli: @echo "running cli tests"; cd cli && $(MAKE) test diff --git a/agent/go.mod b/agent/go.mod index 846114a12..05f6b1071 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -24,8 +24,11 @@ require ( github.com/up9inc/mizu/shared v0.0.0 github.com/up9inc/mizu/tap v0.0.0 github.com/up9inc/mizu/tap/api v0.0.0 + github.com/up9inc/mizu/tap/extensions/amqp v0.0.0 + github.com/up9inc/mizu/tap/extensions/http v0.0.0 + github.com/up9inc/mizu/tap/extensions/kafka v0.0.0 + github.com/up9inc/mizu/tap/extensions/redis v0.0.0 github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 - golang.org/x/text v0.3.5 // indirect k8s.io/api v0.21.2 k8s.io/apimachinery v0.21.2 k8s.io/client-go v0.21.2 @@ -36,3 +39,11 @@ replace github.com/up9inc/mizu/shared v0.0.0 => ../shared replace github.com/up9inc/mizu/tap v0.0.0 => ../tap replace github.com/up9inc/mizu/tap/api v0.0.0 => ../tap/api + +replace github.com/up9inc/mizu/tap/extensions/amqp v0.0.0 => ../tap/extensions/amqp + +replace github.com/up9inc/mizu/tap/extensions/http v0.0.0 => ../tap/extensions/http + +replace github.com/up9inc/mizu/tap/extensions/kafka v0.0.0 => ../tap/extensions/kafka + +replace github.com/up9inc/mizu/tap/extensions/redis v0.0.0 => ../tap/extensions/redis diff --git a/agent/go.sum b/agent/go.sum index e0be2e3d1..c854dce92 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -70,6 +70,8 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs= +github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -115,6 +117,8 @@ github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -129,10 +133,13 @@ github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= @@ -251,6 +258,8 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -340,10 +349,15 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.14.1 h1:hLQYb23E8/fO+1u53d02A97a8UnsddcvYzq4ERRU4ds= +github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -395,6 +409,8 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/ohler55/ojg v1.12.12 h1:hepbQFn7GHAecTPmwS3j5dCiOLsOpzPLvhiqnlAVAoE= +github.com/ohler55/ojg v1.12.12/go.mod h1:LBbIVRAgoFbYBXQhRhuEpaJIqq+goSO63/FQ+nyJU88= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -415,6 +431,8 @@ github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTK github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= +github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -448,6 +466,8 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/kafka-go v0.4.27 h1:sIhEozeL/TLN2mZ5dkG462vcGEWYKS+u31sXPjKhAM4= +github.com/segmentio/kafka-go v0.4.27/go.mod h1:XzMcoMjSzDGHcIwpWUI7GB43iKZ2fTVmryPSGLf/MPg= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -503,6 +523,8 @@ github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvV github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/wI2L/jsondiff v0.1.1 h1:r2TkoEet7E4JMO5+s1RCY2R0LrNPNHY6hbDeow2hRHw= github.com/wI2L/jsondiff v0.1.1/go.mod h1:bAbJSAJXZtfOCZ5y3v7Mfb6UQa3DGdGFjQj1cNv8EcM= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -529,6 +551,7 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/agent/main.go b/agent/main.go index 608d61c15..9c293b388 100644 --- a/agent/main.go +++ b/agent/main.go @@ -19,9 +19,6 @@ import ( "net/http" "os" "os/signal" - "path" - "path/filepath" - "plugin" "sort" "strconv" "strings" @@ -40,6 +37,11 @@ import ( "github.com/up9inc/mizu/shared/logger" "github.com/up9inc/mizu/tap" tapApi "github.com/up9inc/mizu/tap/api" + + amqpExt "github.com/up9inc/mizu/tap/extensions/amqp" + httpExt "github.com/up9inc/mizu/tap/extensions/http" + kafkaExt "github.com/up9inc/mizu/tap/extensions/kafka" + redisExt "github.com/up9inc/mizu/tap/extensions/redis" ) var tapperMode = flag.Bool("tap", false, "Run in tapper mode without API") @@ -189,36 +191,36 @@ func configureBasenineServer(host string, port string) { } func loadExtensions() { - dir, _ := filepath.Abs(filepath.Dir(os.Args[0])) - extensionsDir := path.Join(dir, "./extensions/") - - files, err := ioutil.ReadDir(extensionsDir) - if err != nil { - logger.Log.Fatal(err) - } - extensions = make([]*tapApi.Extension, len(files)) + extensions = make([]*tapApi.Extension, 4) extensionsMap = make(map[string]*tapApi.Extension) - for i, file := range files { - filename := file.Name() - logger.Log.Infof("Loading extension: %s", filename) - extension := &tapApi.Extension{ - Path: path.Join(extensionsDir, filename), - } - plug, _ := plugin.Open(extension.Path) - extension.Plug = plug - symDissector, err := plug.Lookup("Dissector") - var dissector tapApi.Dissector - var ok bool - dissector, ok = symDissector.(tapApi.Dissector) - if err != nil || !ok { - panic(fmt.Sprintf("Failed to load the extension: %s", extension.Path)) - } - dissector.Register(extension) - extension.Dissector = dissector - extensions[i] = extension - extensionsMap[extension.Protocol.Name] = extension - } + extensionAmqp := &tapApi.Extension{} + dissectorAmqp := amqpExt.NewDissector() + dissectorAmqp.Register(extensionAmqp) + extensionAmqp.Dissector = dissectorAmqp + extensions[0] = extensionAmqp + extensionsMap[extensionAmqp.Protocol.Name] = extensionAmqp + + extensionHttp := &tapApi.Extension{} + dissectorHttp := httpExt.NewDissector() + dissectorHttp.Register(extensionHttp) + extensionHttp.Dissector = dissectorHttp + extensions[1] = extensionHttp + extensionsMap[extensionHttp.Protocol.Name] = extensionHttp + + extensionKafka := &tapApi.Extension{} + dissectorKafka := kafkaExt.NewDissector() + dissectorKafka.Register(extensionKafka) + extensionKafka.Dissector = dissectorKafka + extensions[2] = extensionKafka + extensionsMap[extensionKafka.Protocol.Name] = extensionKafka + + extensionRedis := &tapApi.Extension{} + dissectorRedis := redisExt.NewDissector() + dissectorRedis.Register(extensionRedis) + extensionRedis.Dissector = dissectorRedis + extensions[3] = extensionRedis + extensionsMap[extensionRedis.Protocol.Name] = extensionRedis sort.Slice(extensions, func(i, j int) bool { return extensions[i].Protocol.Priority < extensions[j].Protocol.Priority diff --git a/devops/build_extensions.sh b/devops/build_extensions.sh deleted file mode 100755 index 6ac6791ca..000000000 --- a/devops/build_extensions.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -for f in tap/extensions/*; do - if [ -d "$f" ]; then - echo Building extension: $f - extension=$(basename $f) && \ - cd tap/extensions/${extension} && \ - go build -buildmode=plugin -o ../${extension}.so . && \ - cd ../../.. && \ - mkdir -p agent/build/extensions && \ - cp tap/extensions/${extension}.so agent/build/extensions - fi -done diff --git a/tap/api/api.go b/tap/api/api.go index c90405f3b..eda989caf 100644 --- a/tap/api/api.go +++ b/tap/api/api.go @@ -8,7 +8,6 @@ import ( "fmt" "io/ioutil" "net/http" - "plugin" "sync" "time" @@ -38,7 +37,6 @@ type TCP struct { type Extension struct { Protocol *Protocol Path string - Plug *plugin.Plugin Dissector Dissector MatcherMap *sync.Map } diff --git a/tap/extensions/amqp/helpers.go b/tap/extensions/amqp/helpers.go index 2c3a8b571..976e5106a 100644 --- a/tap/extensions/amqp/helpers.go +++ b/tap/extensions/amqp/helpers.go @@ -1,4 +1,4 @@ -package main +package amqp import ( "encoding/json" diff --git a/tap/extensions/amqp/main.go b/tap/extensions/amqp/main.go index 8de968b3c..93fd8bd7e 100644 --- a/tap/extensions/amqp/main.go +++ b/tap/extensions/amqp/main.go @@ -1,4 +1,4 @@ -package main +package amqp import ( "bufio" @@ -328,3 +328,7 @@ func (d dissecting) Macros() map[string]string { } var Dissector dissecting + +func NewDissector() api.Dissector { + return Dissector +} diff --git a/tap/extensions/amqp/read.go b/tap/extensions/amqp/read.go index 961ce0897..8a912d799 100644 --- a/tap/extensions/amqp/read.go +++ b/tap/extensions/amqp/read.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // Source code and contact info at http://github.com/streadway/amqp -package main +package amqp import ( "bytes" diff --git a/tap/extensions/amqp/spec091.go b/tap/extensions/amqp/spec091.go index 0af77a26c..4a4af07c6 100644 --- a/tap/extensions/amqp/spec091.go +++ b/tap/extensions/amqp/spec091.go @@ -6,7 +6,7 @@ /* GENERATED FILE - DO NOT EDIT */ /* Rebuild from the spec/gen.go tool */ -package main +package amqp import ( "encoding/binary" diff --git a/tap/extensions/amqp/structs.go b/tap/extensions/amqp/structs.go index 4f7bb93df..4a2d3c788 100644 --- a/tap/extensions/amqp/structs.go +++ b/tap/extensions/amqp/structs.go @@ -1,4 +1,4 @@ -package main +package amqp import ( "encoding/json" diff --git a/tap/extensions/amqp/types.go b/tap/extensions/amqp/types.go index 1adee51c6..22078d17e 100644 --- a/tap/extensions/amqp/types.go +++ b/tap/extensions/amqp/types.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // Source code and contact info at http://github.com/streadway/amqp -package main +package amqp import ( "fmt" diff --git a/tap/extensions/amqp/write.go b/tap/extensions/amqp/write.go index 89432fdb2..003f9964b 100644 --- a/tap/extensions/amqp/write.go +++ b/tap/extensions/amqp/write.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // Source code and contact info at http://github.com/streadway/amqp -package main +package amqp import ( "bufio" diff --git a/tap/extensions/http/handlers.go b/tap/extensions/http/handlers.go index 3c701e530..094f07951 100644 --- a/tap/extensions/http/handlers.go +++ b/tap/extensions/http/handlers.go @@ -1,4 +1,4 @@ -package main +package http import ( "bufio" diff --git a/tap/extensions/http/helpers.go b/tap/extensions/http/helpers.go index c40c1d738..312dcf1fe 100644 --- a/tap/extensions/http/helpers.go +++ b/tap/extensions/http/helpers.go @@ -1,4 +1,4 @@ -package main +package http import ( "encoding/json" diff --git a/tap/extensions/http/http2_assembler.go b/tap/extensions/http/http2_assembler.go index eeec5a273..5a5cb0d85 100644 --- a/tap/extensions/http/http2_assembler.go +++ b/tap/extensions/http/http2_assembler.go @@ -1,4 +1,4 @@ -package main +package http import ( "bufio" diff --git a/tap/extensions/http/main.go b/tap/extensions/http/main.go index 00365b9f2..bb15d85b4 100644 --- a/tap/extensions/http/main.go +++ b/tap/extensions/http/main.go @@ -1,4 +1,4 @@ -package main +package http import ( "bufio" @@ -464,3 +464,7 @@ func (d dissecting) Macros() map[string]string { } var Dissector dissecting + +func NewDissector() api.Dissector { + return Dissector +} diff --git a/tap/extensions/http/matcher.go b/tap/extensions/http/matcher.go index 047cde06c..0138b9b7d 100644 --- a/tap/extensions/http/matcher.go +++ b/tap/extensions/http/matcher.go @@ -1,4 +1,4 @@ -package main +package http import ( "fmt" diff --git a/tap/extensions/http/sensitive_data_cleaner.go b/tap/extensions/http/sensitive_data_cleaner.go index 8dcf3c2cc..17747bb4f 100644 --- a/tap/extensions/http/sensitive_data_cleaner.go +++ b/tap/extensions/http/sensitive_data_cleaner.go @@ -1,4 +1,4 @@ -package main +package http import ( "bytes" diff --git a/tap/extensions/kafka/buffer.go b/tap/extensions/kafka/buffer.go index d57d2c96c..2c1190273 100644 --- a/tap/extensions/kafka/buffer.go +++ b/tap/extensions/kafka/buffer.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "bytes" diff --git a/tap/extensions/kafka/cluster.go b/tap/extensions/kafka/cluster.go index a1e693581..4bbbb5844 100644 --- a/tap/extensions/kafka/cluster.go +++ b/tap/extensions/kafka/cluster.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "fmt" diff --git a/tap/extensions/kafka/compression.go b/tap/extensions/kafka/compression.go index e5b0485b8..eb1453a56 100644 --- a/tap/extensions/kafka/compression.go +++ b/tap/extensions/kafka/compression.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "errors" diff --git a/tap/extensions/kafka/decode.go b/tap/extensions/kafka/decode.go index 04a083a03..914fe475b 100644 --- a/tap/extensions/kafka/decode.go +++ b/tap/extensions/kafka/decode.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "bytes" diff --git a/tap/extensions/kafka/discard.go b/tap/extensions/kafka/discard.go index cff70c9b9..c92d53035 100644 --- a/tap/extensions/kafka/discard.go +++ b/tap/extensions/kafka/discard.go @@ -1,4 +1,4 @@ -package main +package kafka import "bufio" diff --git a/tap/extensions/kafka/encode.go b/tap/extensions/kafka/encode.go index 10d126994..f1b05b6a2 100644 --- a/tap/extensions/kafka/encode.go +++ b/tap/extensions/kafka/encode.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "bytes" diff --git a/tap/extensions/kafka/error.go b/tap/extensions/kafka/error.go index b5f53d8fb..706b7a7f3 100644 --- a/tap/extensions/kafka/error.go +++ b/tap/extensions/kafka/error.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "fmt" diff --git a/tap/extensions/kafka/helpers.go b/tap/extensions/kafka/helpers.go index 68264c077..c8f88f87a 100644 --- a/tap/extensions/kafka/helpers.go +++ b/tap/extensions/kafka/helpers.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "encoding/json" diff --git a/tap/extensions/kafka/main.go b/tap/extensions/kafka/main.go index 5a09dd979..e25341d99 100644 --- a/tap/extensions/kafka/main.go +++ b/tap/extensions/kafka/main.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "bufio" @@ -223,3 +223,7 @@ func (d dissecting) Macros() map[string]string { } var Dissector dissecting + +func NewDissector() api.Dissector { + return Dissector +} diff --git a/tap/extensions/kafka/matcher.go b/tap/extensions/kafka/matcher.go index 4b150f28b..67fb183b7 100644 --- a/tap/extensions/kafka/matcher.go +++ b/tap/extensions/kafka/matcher.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "sync" diff --git a/tap/extensions/kafka/protocol.go b/tap/extensions/kafka/protocol.go index ec8af3298..42ddc6f78 100644 --- a/tap/extensions/kafka/protocol.go +++ b/tap/extensions/kafka/protocol.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "fmt" diff --git a/tap/extensions/kafka/protocol_make.go b/tap/extensions/kafka/protocol_make.go index 2fc71a254..b036fb619 100644 --- a/tap/extensions/kafka/protocol_make.go +++ b/tap/extensions/kafka/protocol_make.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "encoding/binary" diff --git a/tap/extensions/kafka/read.go b/tap/extensions/kafka/read.go index 965891c30..9ba1291ef 100644 --- a/tap/extensions/kafka/read.go +++ b/tap/extensions/kafka/read.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "bufio" diff --git a/tap/extensions/kafka/record.go b/tap/extensions/kafka/record.go index 55a634175..917412b28 100644 --- a/tap/extensions/kafka/record.go +++ b/tap/extensions/kafka/record.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "encoding/binary" diff --git a/tap/extensions/kafka/record_bytes.go b/tap/extensions/kafka/record_bytes.go index cd142f405..acc5a76fc 100644 --- a/tap/extensions/kafka/record_bytes.go +++ b/tap/extensions/kafka/record_bytes.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "github.com/segmentio/kafka-go/protocol" diff --git a/tap/extensions/kafka/reflect.go b/tap/extensions/kafka/reflect.go index 65b59ab13..bc39ca83e 100644 --- a/tap/extensions/kafka/reflect.go +++ b/tap/extensions/kafka/reflect.go @@ -1,6 +1,6 @@ // +build !unsafe -package main +package kafka import ( "reflect" diff --git a/tap/extensions/kafka/request.go b/tap/extensions/kafka/request.go index 263755892..dcc1500b2 100644 --- a/tap/extensions/kafka/request.go +++ b/tap/extensions/kafka/request.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "fmt" diff --git a/tap/extensions/kafka/response.go b/tap/extensions/kafka/response.go index 5441e784d..46233eed9 100644 --- a/tap/extensions/kafka/response.go +++ b/tap/extensions/kafka/response.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "fmt" diff --git a/tap/extensions/kafka/structs.go b/tap/extensions/kafka/structs.go index 67064d85e..21a905295 100644 --- a/tap/extensions/kafka/structs.go +++ b/tap/extensions/kafka/structs.go @@ -1,4 +1,4 @@ -package main +package kafka import ( "time" diff --git a/tap/extensions/redis/errors.go b/tap/extensions/redis/errors.go index 25cb3bf54..cbcbc6587 100644 --- a/tap/extensions/redis/errors.go +++ b/tap/extensions/redis/errors.go @@ -1,4 +1,4 @@ -package main +package redis //ConnectError redis connection error,such as io timeout type ConnectError struct { diff --git a/tap/extensions/redis/handlers.go b/tap/extensions/redis/handlers.go index d135054b1..76785e1a0 100644 --- a/tap/extensions/redis/handlers.go +++ b/tap/extensions/redis/handlers.go @@ -1,4 +1,4 @@ -package main +package redis import ( "fmt" diff --git a/tap/extensions/redis/helpers.go b/tap/extensions/redis/helpers.go index 1661d1e0b..71a14b90b 100644 --- a/tap/extensions/redis/helpers.go +++ b/tap/extensions/redis/helpers.go @@ -1,4 +1,4 @@ -package main +package redis import ( "encoding/json" diff --git a/tap/extensions/redis/main.go b/tap/extensions/redis/main.go index 360ecc32a..af9ab4d49 100644 --- a/tap/extensions/redis/main.go +++ b/tap/extensions/redis/main.go @@ -1,4 +1,4 @@ -package main +package redis import ( "bufio" @@ -124,3 +124,7 @@ func (d dissecting) Macros() map[string]string { } var Dissector dissecting + +func NewDissector() api.Dissector { + return Dissector +} diff --git a/tap/extensions/redis/matcher.go b/tap/extensions/redis/matcher.go index 71d5770d4..4d1f3d86c 100644 --- a/tap/extensions/redis/matcher.go +++ b/tap/extensions/redis/matcher.go @@ -1,4 +1,4 @@ -package main +package redis import ( "fmt" diff --git a/tap/extensions/redis/read.go b/tap/extensions/redis/read.go index f93fa5a7e..315942bc5 100644 --- a/tap/extensions/redis/read.go +++ b/tap/extensions/redis/read.go @@ -1,4 +1,4 @@ -package main +package redis import ( "bufio" diff --git a/tap/extensions/redis/structs.go b/tap/extensions/redis/structs.go index 921c1f029..cd314b6eb 100644 --- a/tap/extensions/redis/structs.go +++ b/tap/extensions/redis/structs.go @@ -1,4 +1,4 @@ -package main +package redis type RedisType string type RedisCommand string