move StartSSHServer to Session
This commit is contained in:
parent
497b45e4e2
commit
8abff2af97
3 changed files with 29 additions and 38 deletions
|
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/opentracing/opentracing-go"
|
||||
)
|
||||
|
||||
// A PortForwarder forwards TCP traffic over a LiveShare session from a port on a remote
|
||||
// A PortForwarder forwards TCP traffic over a Live Share session from a port on a remote
|
||||
// container to a local destination such as a network port or Go reader/writer.
|
||||
type PortForwarder struct {
|
||||
session *Session
|
||||
|
|
|
|||
28
session.go
28
session.go
|
|
@ -3,6 +3,7 @@ package liveshare
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// A Session represents the session between a connected Live Share client and server.
|
||||
|
|
@ -59,3 +60,30 @@ func (s *Session) UpdateSharedVisibility(ctx context.Context, port int, public b
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
// StartSSHServer starts the SSHD server and returns the user and port for which to authenticate with.
|
||||
// If there is no SSHD server installed on the server, it will attempt to install it. The installation
|
||||
// process can take upwards of 20+ seconds.
|
||||
func (s *Session) StartSSHServer(ctx context.Context) (string, int64, error) {
|
||||
var response struct {
|
||||
Result bool `json:"result"`
|
||||
ServerPort string `json:"serverPort"`
|
||||
User string `json:"user"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
if err := s.rpc.do(ctx, "ISshServerHostService.startRemoteServer", []string{}, &response); err != nil {
|
||||
return "", 0, err
|
||||
}
|
||||
|
||||
if !response.Result {
|
||||
return "", 0, fmt.Errorf("failed to start server: %s", response.Message)
|
||||
}
|
||||
|
||||
port, err := strconv.ParseInt(response.ServerPort, 10, 64)
|
||||
if err != nil {
|
||||
return "", 0, fmt.Errorf("failed to parse port: %w", err)
|
||||
}
|
||||
|
||||
return response.User, port, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
package liveshare
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// A SSHServer handles starting the remote SSH server.
|
||||
// If there is no SSH server available it installs one.
|
||||
type SSHServer struct {
|
||||
session *Session
|
||||
}
|
||||
|
||||
// SSHServer returns a new SSHServer from the LiveShare Session.
|
||||
func (session *Session) SSHServer() *SSHServer {
|
||||
return &SSHServer{session: session}
|
||||
}
|
||||
|
||||
// SSHServerStartResult contains whether or not the start of the SSH server was
|
||||
// successful. If it succeeded the server port and user is included. If it failed,
|
||||
// it contains an explanation message.
|
||||
type SSHServerStartResult struct {
|
||||
Result bool `json:"result"`
|
||||
ServerPort string `json:"serverPort"`
|
||||
User string `json:"user"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
// StartRemoteServer starts or install the remote SSH server and returns the result.
|
||||
func (s *SSHServer) StartRemoteServer(ctx context.Context) (*SSHServerStartResult, error) {
|
||||
var response SSHServerStartResult
|
||||
|
||||
if err := s.session.rpc.do(ctx, "ISshServerHostService.startRemoteServer", []string{}, &response); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &response, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue