From 6eddcedb32a2c82a43220504dd212ec3d321d839 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Thu, 27 Jul 2023 14:17:41 -0400 Subject: [PATCH] minimum infrastructure for pastebin sdk example (#379) --- sdk/examples/pastebin/cmd/copyto/main.go | 60 +++++++++++++++++++++ sdk/examples/pastebin/cmd/pastefrom/main.go | 46 ++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 sdk/examples/pastebin/cmd/copyto/main.go create mode 100644 sdk/examples/pastebin/cmd/pastefrom/main.go diff --git a/sdk/examples/pastebin/cmd/copyto/main.go b/sdk/examples/pastebin/cmd/copyto/main.go new file mode 100644 index 00000000..e5640c9f --- /dev/null +++ b/sdk/examples/pastebin/cmd/copyto/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "fmt" + "github.com/openziti/zrok/environment" + "github.com/openziti/zrok/sdk" + "net" + "os" + "os/signal" + "syscall" +) + +func main() { + root, err := environment.LoadRoot() + if err != nil { + panic(err) + } + + shr, err := sdk.CreateShare(root, &sdk.ShareRequest{ + BackendMode: sdk.TcpTunnelBackendMode, + ShareMode: sdk.PrivateShareMode, + Target: "pastebin", + }) + if err != nil { + panic(err) + } + + fmt.Printf("access your pastebin with: 'pastefrom %v'\n", shr.Token) + + listener, err := sdk.NewListener(shr.Token, root) + if err != nil { + panic(err) + } + + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + go func() { + <-c + if err := sdk.DeleteShare(root, shr); err != nil { + panic(err) + } + _ = listener.Close() + os.Exit(0) + }() + + for { + if conn, err := listener.Accept(); err == nil { + go handle(conn) + } else { + panic(err) + } + } +} + +func handle(conn net.Conn) { + _, err := conn.Write([]byte("hello from pastebin")) + if err != nil { + fmt.Printf("error: %v\n", err) + } +} diff --git a/sdk/examples/pastebin/cmd/pastefrom/main.go b/sdk/examples/pastebin/cmd/pastefrom/main.go new file mode 100644 index 00000000..8cb79060 --- /dev/null +++ b/sdk/examples/pastebin/cmd/pastefrom/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + "github.com/openziti/zrok/environment" + "github.com/openziti/zrok/sdk" + "os" +) + +func main() { + if len(os.Args) < 2 { + panic("usage: pastefrom ") + } + shrToken := os.Args[1] + + root, err := environment.LoadRoot() + if err != nil { + panic(err) + } + + acc, err := sdk.CreateAccess(root, &sdk.AccessRequest{ShareToken: shrToken}) + if err != nil { + panic(err) + } + defer func() { + if err := sdk.DeleteAccess(root, acc); err != nil { + panic(err) + } + }() + + conn, err := sdk.NewDialer(shrToken, root) + if err != nil { + panic(err) + } + defer func() { + _ = conn.Close() + }() + + buf := make([]byte, 10240) + n, err := conn.Read(buf) + if err != nil { + panic(err) + } + + fmt.Println(string(buf[:n])) +}