From 98bcdd16cfccafd7ef601067287012d8010a150f Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Fri, 16 Jul 2021 22:34:51 +0000 Subject: [PATCH 1/3] Support for GetSharedServers --- server.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index b0f3996c9..68053d9f7 100644 --- a/server.go +++ b/server.go @@ -21,7 +21,7 @@ func (c *Client) NewServer() (*Server, error) { return &Server{client: c}, nil } -type serverSharingResponse struct { +type Port struct { SourcePort int `json:"sourcePort"` DestinationPort int `json:"destinationPort"` SessionName string `json:"sessionName"` @@ -36,7 +36,7 @@ type serverSharingResponse struct { func (s *Server) StartSharing(ctx context.Context, protocol string, port int) error { s.port = port - var response serverSharingResponse + var response Port if err := s.client.rpc.do(ctx, "serverSharing.startSharing", []interface{}{ port, protocol, fmt.Sprintf("http://localhost:%s", strconv.Itoa(port)), }, &response); err != nil { @@ -48,3 +48,14 @@ func (s *Server) StartSharing(ctx context.Context, protocol string, port int) er return nil } + +type Ports []*Port + +func (s *Server) GetSharedServers(ctx context.Context) (Ports, error) { + var response Ports + if err := s.client.rpc.do(ctx, "serverSharing.getSharedServers", []string{}, &response); err != nil { + return nil, err + } + + return response, nil +} From e373c91f8b2121a25eacf2f70f040dab14bff730 Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Sun, 18 Jul 2021 00:05:13 +0000 Subject: [PATCH 2/3] UpdateSharedServerVisibility API for Server --- server.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server.go b/server.go index 68053d9f7..71ec9d4dd 100644 --- a/server.go +++ b/server.go @@ -59,3 +59,11 @@ func (s *Server) GetSharedServers(ctx context.Context) (Ports, error) { return response, nil } + +func (s *Server) UpdateSharedVisibility(ctx context.Context, port int, public bool) error { + if err := s.client.rpc.do(ctx, "serverSharing.updateSharedServerVisibility", []interface{}{port, public}, nil); err != nil { + return err + } + + return nil +} From 6d5726d78a665643f89514fc678d9ab1ccb1a138 Mon Sep 17 00:00:00 2001 From: Jose Garcia Date: Tue, 20 Jul 2021 11:59:14 +0000 Subject: [PATCH 3/3] Better way to discard requests & close channel/conn on disconnects --- client.go | 15 +-------------- port_forwarder.go | 4 ++-- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/client.go b/client.go index 0af904b92..456a2c321 100644 --- a/client.go +++ b/client.go @@ -96,7 +96,7 @@ func (c *Client) openStreamingChannel(ctx context.Context, streamName, condition if err != nil { return nil, fmt.Errorf("error opening ssh channel for transport: %v", err) } - go c.processChannelRequests(ctx, reqs) + go ssh.DiscardRequests(reqs) requestType := fmt.Sprintf("stream-transport-%s", streamID) _, err = channel.SendRequest(requestType, true, nil) @@ -106,16 +106,3 @@ func (c *Client) openStreamingChannel(ctx context.Context, streamName, condition return channel, nil } - -func (c *Client) processChannelRequests(ctx context.Context, reqs <-chan *ssh.Request) { - for { - select { - case req := <-reqs: - if req != nil { - // TODO(josebalius): Handle - } - case <-ctx.Done(): - break - } - } -} diff --git a/port_forwarder.go b/port_forwarder.go index 0ae5e1916..20382c208 100644 --- a/port_forwarder.go +++ b/port_forwarder.go @@ -53,8 +53,8 @@ func (l *LocalPortForwarder) handleConnection(ctx context.Context, conn net.Conn copyConn := func(writer io.Writer, reader io.Reader) { _, err := io.Copy(writer, reader) if err != nil { - log.Println("errrrr copyConn") - log.Println(err) //TODO(josebalius): handle this somehow + channel.Close() + conn.Close() } }