mirror of
https://github.com/openziti/zrok.git
synced 2024-12-22 23:02:52 +01:00
rudimentary implementation of 'zrok share reserved' using dual-pathed approach (#751)
This commit is contained in:
parent
5af4aa6a8c
commit
e5ed1247ed
@ -3,18 +3,20 @@ package agentClient
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/openziti/zrok/agent/agentGrpc"
|
"github.com/openziti/zrok/agent/agentGrpc"
|
||||||
|
"github.com/openziti/zrok/build"
|
||||||
"github.com/openziti/zrok/environment/env_core"
|
"github.com/openziti/zrok/environment/env_core"
|
||||||
"github.com/openziti/zrok/tui"
|
"github.com/pkg/errors"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
"google.golang.org/grpc/resolver"
|
"google.golang.org/grpc/resolver"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewClient(root env_core.Root) (client agentGrpc.AgentClient, conn *grpc.ClientConn, err error) {
|
func NewClient(root env_core.Root) (client agentGrpc.AgentClient, conn *grpc.ClientConn, err error) {
|
||||||
agentSocket, err := root.AgentSocket()
|
agentSocket, err := root.AgentSocket()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tui.Error("error getting agent socket", err)
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
opts := []grpc.DialOption{
|
opts := []grpc.DialOption{
|
||||||
@ -26,8 +28,24 @@ func NewClient(root env_core.Root) (client agentGrpc.AgentClient, conn *grpc.Cli
|
|||||||
resolver.SetDefaultScheme("passthrough")
|
resolver.SetDefaultScheme("passthrough")
|
||||||
conn, err = grpc.NewClient(agentSocket, opts...)
|
conn, err = grpc.NewClient(agentSocket, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tui.Error("error connecting to agent socket", err)
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return agentGrpc.NewAgentClient(conn), conn, nil
|
return agentGrpc.NewAgentClient(conn), conn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsAgentRunning(root env_core.Root) (bool, error) {
|
||||||
|
client, conn, err := NewClient(root)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
defer func() { _ = conn.Close() }()
|
||||||
|
resp, err := client.Version(context.Background(), &agentGrpc.VersionRequest{})
|
||||||
|
if err != nil {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
if !strings.HasPrefix(resp.GetV(), build.Series) {
|
||||||
|
return false, errors.Errorf("agent reported version '%v'; we expected version '%v'", resp.GetV(), build.Series)
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
httptransport "github.com/go-openapi/runtime/client"
|
httptransport "github.com/go-openapi/runtime/client"
|
||||||
|
"github.com/openziti/zrok/agent/agentClient"
|
||||||
|
"github.com/openziti/zrok/agent/agentGrpc"
|
||||||
"github.com/openziti/zrok/endpoints"
|
"github.com/openziti/zrok/endpoints"
|
||||||
"github.com/openziti/zrok/endpoints/drive"
|
"github.com/openziti/zrok/endpoints/drive"
|
||||||
"github.com/openziti/zrok/endpoints/proxy"
|
"github.com/openziti/zrok/endpoints/proxy"
|
||||||
@ -13,6 +16,7 @@ import (
|
|||||||
"github.com/openziti/zrok/endpoints/udpTunnel"
|
"github.com/openziti/zrok/endpoints/udpTunnel"
|
||||||
"github.com/openziti/zrok/endpoints/vpn"
|
"github.com/openziti/zrok/endpoints/vpn"
|
||||||
"github.com/openziti/zrok/environment"
|
"github.com/openziti/zrok/environment"
|
||||||
|
"github.com/openziti/zrok/environment/env_core"
|
||||||
"github.com/openziti/zrok/rest_client_zrok/metadata"
|
"github.com/openziti/zrok/rest_client_zrok/metadata"
|
||||||
"github.com/openziti/zrok/rest_client_zrok/share"
|
"github.com/openziti/zrok/rest_client_zrok/share"
|
||||||
"github.com/openziti/zrok/rest_model_zrok"
|
"github.com/openziti/zrok/rest_model_zrok"
|
||||||
@ -51,9 +55,6 @@ func newShareReservedCommand() *shareReservedCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
||||||
shrToken := args[0]
|
|
||||||
var target string
|
|
||||||
|
|
||||||
root, err := environment.LoadRoot()
|
root, err := environment.LoadRoot()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !panicInstead {
|
if !panicInstead {
|
||||||
@ -66,6 +67,25 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
|||||||
tui.Error("unable to load environment; did you 'zrok enable'?", nil)
|
tui.Error("unable to load environment; did you 'zrok enable'?", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !cmd.agent {
|
||||||
|
agent, err := agentClient.IsAgentRunning(root)
|
||||||
|
if err != nil {
|
||||||
|
tui.Error("error checking if agent is running", err)
|
||||||
|
}
|
||||||
|
if agent {
|
||||||
|
cmd.agentShareReserved(args, root)
|
||||||
|
} else {
|
||||||
|
cmd.shareReserved(args, root)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cmd.shareReserved(args, root)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cmd *shareReservedCommand) shareReserved(args []string, root env_core.Root) {
|
||||||
|
shrToken := args[0]
|
||||||
|
var target string
|
||||||
|
|
||||||
zrok, err := root.Client()
|
zrok, err := root.Client()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !panicInstead {
|
if !panicInstead {
|
||||||
@ -390,3 +410,24 @@ func (cmd *shareReservedCommand) run(_ *cobra.Command, args []string) {
|
|||||||
close(requests)
|
close(requests)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cmd *shareReservedCommand) agentShareReserved(args []string, root env_core.Root) {
|
||||||
|
logrus.Info("starting")
|
||||||
|
|
||||||
|
client, conn, err := agentClient.NewClient(root)
|
||||||
|
if err != nil {
|
||||||
|
tui.Error("error connecting to agent", err)
|
||||||
|
}
|
||||||
|
defer conn.Close()
|
||||||
|
|
||||||
|
shr, err := client.ShareReserved(context.Background(), &agentGrpc.ShareReservedRequest{
|
||||||
|
Token: args[0],
|
||||||
|
OverrideEndpoint: cmd.overrideEndpoint,
|
||||||
|
Insecure: cmd.insecure,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
tui.Error("error sharing reserved share", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(shr)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user