mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-07-31 16:25:22 +00:00
Add a build script to automatically build extensions from a known path and load them
This commit is contained in:
parent
e1167c4065
commit
95a9ee7571
10
Makefile
10
Makefile
@ -66,11 +66,5 @@ clean-cli: ## Clean CLI.
|
||||
clean-docker:
|
||||
@(echo "DOCKER cleanup - NOT IMPLEMENTED YET " )
|
||||
|
||||
extensions: extension-http
|
||||
|
||||
extension-http:
|
||||
cd tap/extensions/http && \
|
||||
go build -buildmode=plugin -o ../http.so .
|
||||
cd ../../..
|
||||
mkdir -p agent/build/extensions
|
||||
cp tap/extensions/http.so agent/build/extensions
|
||||
extensions:
|
||||
./build_extensions.sh
|
||||
|
12
build_extensions.sh
Executable file
12
build_extensions.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
for f in tap/extensions/*; do
|
||||
if [ -d "$f" ]; then
|
||||
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
|
3
tap/extensions/amqp/go.mod
Normal file
3
tap/extensions/amqp/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module github.com/up9inc/mizu/tap/extensions/amqp
|
||||
|
||||
go 1.16
|
18
tap/extensions/amqp/main.go
Normal file
18
tap/extensions/amqp/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.Println("Initializing AMQP extension.")
|
||||
}
|
||||
|
||||
type greeting string
|
||||
|
||||
func (g greeting) Greet() {
|
||||
log.Println("Hello from AMQP extension.")
|
||||
}
|
||||
|
||||
// exported as symbol named "Greeter"
|
||||
var Greeter greeting
|
@ -1,20 +0,0 @@
|
||||
github.com/bradleyfalzon/tlsx v0.0.0-20170624122154-28fd0e59bac4 h1:NJOOlc6ZJjix0A1rAU+nxruZtR8KboG1848yqpIUo4M=
|
||||
github.com/bradleyfalzon/tlsx v0.0.0-20170624122154-28fd0e59bac4/go.mod h1:DQPxZS994Ld1Y8uwnJT+dRL04XPD0cElP/pHH/zEBHM=
|
||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/orcaman/concurrent-map v0.0.0-20210501183033-44dafcb38ecc h1:Ak86L+yDSOzKFa7WM5bf5itSOo1e3Xh8bm5YCMUXIjQ=
|
||||
github.com/orcaman/concurrent-map v0.0.0-20210501183033-44dafcb38ecc/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI=
|
||||
github.com/romana/rlog v0.0.0-20171115192701-f018bc92e7d7 h1:jkvpcEatpwuMF5O5LVxTnehj6YZ/aEZN4NWD/Xml4pI=
|
||||
github.com/romana/rlog v0.0.0-20171115192701-f018bc92e7d7/go.mod h1:KTrHyWpO1sevuXPZwyeZc72ddWRFqNSKDFl7uVWKpg0=
|
||||
golang.org/x/net v0.0.0-20210421230115-4e50805a0758 h1:aEpZnXcAmXkd6AvLb2OPt+EN1Zu/8Ne3pCqPjja5PXY=
|
||||
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
@ -1,13 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.Println("Initializing HTTP extension.")
|
||||
}
|
||||
|
||||
type greeting string
|
||||
|
||||
func (g greeting) Greet() {
|
||||
fmt.Println("Hello HTTP")
|
||||
log.Println("Hello from HTTP extension.")
|
||||
}
|
||||
|
||||
// exported as symbol named "Greeter"
|
||||
|
3
tap/extensions/kafka/go.mod
Normal file
3
tap/extensions/kafka/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module github.com/up9inc/mizu/tap/extensions/kafka
|
||||
|
||||
go 1.16
|
18
tap/extensions/kafka/main.go
Normal file
18
tap/extensions/kafka/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
)
|
||||
|
||||
func init() {
|
||||
log.Println("Initializing Kafka extension.")
|
||||
}
|
||||
|
||||
type greeting string
|
||||
|
||||
func (g greeting) Greet() {
|
||||
log.Println("Hello from Kafka extension.")
|
||||
}
|
||||
|
||||
// exported as symbol named "Greeter"
|
||||
var Greeter greeting
|
@ -12,6 +12,7 @@ import (
|
||||
"encoding/hex"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
@ -253,19 +254,27 @@ func startMemoryProfiler() {
|
||||
|
||||
func loadExtensions() {
|
||||
dir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
|
||||
abspath := path.Join(dir, "./extensions/http.so")
|
||||
fmt.Printf("abspath: %v\n", abspath)
|
||||
extension := &Extension{
|
||||
Name: "http",
|
||||
Path: abspath,
|
||||
}
|
||||
plug, _ := plugin.Open(extension.Path)
|
||||
extension.Plug = plug
|
||||
symGreeter, _ := plug.Lookup("Greeter")
|
||||
extensionsDir := path.Join(dir, "./extensions/")
|
||||
|
||||
var greeter Greeter
|
||||
greeter, _ = symGreeter.(Greeter)
|
||||
greeter.Greet()
|
||||
files, err := ioutil.ReadDir(extensionsDir)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, file := range files {
|
||||
filename := file.Name()
|
||||
log.Printf("Loading extension: %s\n", filename)
|
||||
extension := &Extension{
|
||||
Name: strings.TrimSuffix(filename, filepath.Ext(filename)),
|
||||
Path: path.Join(extensionsDir, filename),
|
||||
}
|
||||
plug, _ := plugin.Open(extension.Path)
|
||||
extension.Plug = plug
|
||||
symGreeter, _ := plug.Lookup("Greeter")
|
||||
|
||||
var greeter Greeter
|
||||
greeter, _ = symGreeter.(Greeter)
|
||||
greeter.Greet()
|
||||
}
|
||||
}
|
||||
|
||||
func startPassiveTapper(outboundLinkWriter *OutboundLinkWriter) {
|
||||
|
Loading…
Reference in New Issue
Block a user