ssh

package
v0.6.226 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package ssh exists to provide an api to configure and read from an ssh file

brev ssh host file entry format:

Host <workspace-dns-name>
	Hostname 0.0.0.0
	IdentityFile /home//.brev/brev.pem
	User brev
	Port <some-available-port>

also think that file stuff should probably live in files package TODO migrate to using dns name for hostname

Index

Constants

View Source
const SSHConfigEntryTemplateServiceMesh = `` /* 140-byte string literal not displayed */
View Source
const SSHConfigEntryTemplateV2 = `` /* 327-byte string literal not displayed */
View Source
const SSHConfigEntryTemplateV3 = `` /* 338-byte string literal not displayed */

Variables

This section is empty.

Functions

func AddIncludeToUserConfig added in v0.6.35

func AddIncludeToUserConfig(conf string, brevConfigPath string) (string, error)

func MakeSSHEntry

func MakeSSHEntry(workspaceIdentifier entity.WorkspaceLocalID, port string, privateKeyPath string, dir string) (string, error)

func MapContainsKey added in v0.6.112

func MapContainsKey[K comparable, V any](m map[K]V, key K) bool

func WSLAddIncludeToUserConfig added in v0.6.169

func WSLAddIncludeToUserConfig(conf string, brevConfigPath string) string

Types

type BrevHostValuesSet

type BrevHostValuesSet map[entity.WorkspaceLocalID]bool

type BrevPorts

type BrevPorts map[string]bool

type Config added in v0.6.0

type Config interface {
	Update(workspaces []entity.Workspace) error
}

func GetSSHConfigs added in v0.6.43

func GetSSHConfigs(store SSHConfigurerTaskStore) ([]Config, error)

type ConfigUpaterFactoryStore added in v0.6.32

type ConfigUpaterFactoryStore interface {
	ConfigUpdaterStore
	SSHConfigurerV2Store
}

ConfigUpaterFactoryStore prob a better way to do this

type ConfigUpdater added in v0.6.0

type ConfigUpdater struct {
	Store      ConfigUpdaterStore
	Configs    []Config
	PrivateKey string
}

func NewConfigUpdater added in v0.6.96

func NewConfigUpdater(store ConfigUpdaterStore, configs []Config, privateKey string) *ConfigUpdater

func (ConfigUpdater) Configure added in v0.6.24

func (c ConfigUpdater) Configure() error

func (ConfigUpdater) GetTaskSpec added in v0.6.0

func (c ConfigUpdater) GetTaskSpec() tasks.TaskSpec

func (ConfigUpdater) Run added in v0.6.0

func (c ConfigUpdater) Run() error

type ConfigUpdaterStore added in v0.6.0

type ConfigUpdaterStore interface {
	autostartconf.AutoStartStore
	GetContextWorkspaces() ([]entity.Workspace, error)
	WritePrivateKey(pem string) error
}

type IdentityPortMap

type IdentityPortMap map[entity.WorkspaceLocalID]string

type JetBrainsGatewayConfig

type JetBrainsGatewayConfig struct {
	Reader
	Writer
	// contains filtered or unexported fields
}

func (*JetBrainsGatewayConfig) GetBrevHostValueSet

func (jbgc *JetBrainsGatewayConfig) GetBrevHostValueSet() BrevHostValuesSet

func (*JetBrainsGatewayConfig) GetBrevPorts

func (jbgc *JetBrainsGatewayConfig) GetBrevPorts() (BrevPorts, error)

func (*JetBrainsGatewayConfig) GetConfiguredWorkspacePort

func (jbgc *JetBrainsGatewayConfig) GetConfiguredWorkspacePort(workspaceIdentifier entity.WorkspaceLocalID) (string, error)

func (*JetBrainsGatewayConfig) Sync

func (jbgc *JetBrainsGatewayConfig) Sync(identifierPortMapping IdentityPortMap) error

type JetBrainsGatewayConfigStore

type JetBrainsGatewayConfigStore interface {
	GetJetBrainsConfigPath() (string, error)
	GetJetBrainsConfig() (string, error)
	WriteJetBrainsConfig(config string) error
	GetPrivateKeyPath() (string, error)
}

type JetbrainsGatewayConfigXML

type JetbrainsGatewayConfigXML struct {
	XMLName   xml.Name                           `xml:"application"`
	Component JetbrainsGatewayConfigXMLComponent `xml:"component"`
}

func ParseJetbrainsGatewayXML added in v0.6.35

func ParseJetbrainsGatewayXML(config string) (*JetbrainsGatewayConfigXML, error)

type JetbrainsGatewayConfigXMLComponent

type JetbrainsGatewayConfigXMLComponent struct {
	Configs JetbrainsGatewayConfigXMLConfigs `xml:"configs"`
	Name    string                           `xml:"name,attr,omitempty"`
}

type JetbrainsGatewayConfigXMLConfigs

type JetbrainsGatewayConfigXMLConfigs struct {
	SSHConfigs []JetbrainsGatewayConfigXMLSSHConfig `xml:"sshConfig"`
}

type JetbrainsGatewayConfigXMLSSHConfig

type JetbrainsGatewayConfigXMLSSHConfig struct {
	ID               string                               `xml:"id,attr,omitempty"`
	CustomName       entity.WorkspaceLocalID              `xml:"customName,attr,omitempty"`
	NameFormat       string                               `xml:"nameFormat,attr,omitempty"`
	UseOpenSSHConfig string                               `xml:"useOpenSSHConfig,attr,omitempty"`
	Host             string                               `xml:"host,attr,omitempty"`
	Port             string                               `xml:"port,attr,omitempty"`
	KeyPath          string                               `xml:"keyPath,attr,omitempty"`
	Username         string                               `xml:"username,attr,omitempty"`
	ConnectionConfig string                               `xml:"connectionConfig,attr,omitempty"`
	Options          []JetbrainsGatewayConfigXMLSSHOption `xml:"option,omitempty"`
}

type JetbrainsGatewayConfigXMLSSHOption

type JetbrainsGatewayConfigXMLSSHOption struct {
	Name  string `xml:"name,attr,omitempty"`
	Value string `xml:"value,attr,omitempty"`
}

type Reader

type Reader interface {
	GetBrevPorts() (BrevPorts, error)
	GetBrevHostValueSet() BrevHostValuesSet
	GetConfiguredWorkspacePort(workspaceIdentifier entity.WorkspaceLocalID) (string, error)
}

type SSHConfig

type SSHConfig struct {
	// contains filtered or unexported fields
}

func NewSSHConfig

func NewSSHConfig(store SSHStore) (*SSHConfig, error)

func (SSHConfig) GetBrevHostValueSet

func (s SSHConfig) GetBrevHostValueSet() BrevHostValuesSet

func (SSHConfig) GetBrevHostValues

func (s SSHConfig) GetBrevHostValues() []entity.WorkspaceLocalID

Hostname is a loaded term so using values

func (SSHConfig) GetBrevPorts

func (s SSHConfig) GetBrevPorts() (BrevPorts, error)

func (SSHConfig) GetConfiguredWorkspacePort

func (s SSHConfig) GetConfiguredWorkspacePort(workspaceIdentifier entity.WorkspaceLocalID) (string, error)

func (SSHConfig) GetPrivateKeyFilePath

func (s SSHConfig) GetPrivateKeyFilePath() string

func (*SSHConfig) PruneInactiveWorkspaces

func (s *SSHConfig) PruneInactiveWorkspaces(identityPortMap IdentityPortMap) error

func (*SSHConfig) Sync

func (s *SSHConfig) Sync(identifierPortMapping IdentityPortMap) error

type SSHConfigEntryServiceMesh added in v0.6.35

type SSHConfigEntryServiceMesh struct {
	Alias        string
	Host         string
	IdentityFile string
	User         string
	Port         string
}

type SSHConfigEntryV2 added in v0.6.0

type SSHConfigEntryV2 struct {
	Alias        string
	IdentityFile string
	User         string
	ProxyCommand string
	Dir          string
	RunRemoteCMD bool
	HostName     string
	Port         int
}

type SSHConfigurer

type SSHConfigurer struct {
	Reader  Reader
	Writers []Writer
	// contains filtered or unexported fields
}

func NewSSHConfigurer

func NewSSHConfigurer(workspaces []entity.WorkspaceWithMeta, reader Reader, writers []Writer, store SSHConfigurerStore, privateKey string) *SSHConfigurer

func (*SSHConfigurer) GetActiveWorkspaceIdentifiers

func (sshConfigurer *SSHConfigurer) GetActiveWorkspaceIdentifiers() []entity.WorkspaceLocalID

func (SSHConfigurer) GetConfiguredWorkspacePort

func (sshConfigurer SSHConfigurer) GetConfiguredWorkspacePort(workspaceIdentifier entity.WorkspaceLocalID) (string, error)

func (*SSHConfigurer) GetIdentityPortMap

func (sshConfigurer *SSHConfigurer) GetIdentityPortMap() (IdentityPortMap, error)

func (SSHConfigurer) GetPrivateKeyPath added in v0.6.24

func (sshConfigurer SSHConfigurer) GetPrivateKeyPath() (string, error)

func (*SSHConfigurer) Sync

func (sshConfigurer *SSHConfigurer) Sync() error

type SSHConfigurerJetBrains added in v0.6.32

type SSHConfigurerJetBrains struct {
	// contains filtered or unexported fields
}

func NewSSHConfigurerJetBrains added in v0.6.32

func NewSSHConfigurerJetBrains(store SSHConfigurerV2Store) (*SSHConfigurerJetBrains, error)

func (SSHConfigurerJetBrains) CreateNewSSHConfig added in v0.6.32

func (s SSHConfigurerJetBrains) CreateNewSSHConfig(workspaces []entity.Workspace) (string, error)

func (SSHConfigurerJetBrains) Update added in v0.6.32

func (s SSHConfigurerJetBrains) Update(workspaces []entity.Workspace) error

type SSHConfigurerServiceMesh added in v0.6.32

type SSHConfigurerServiceMesh struct {
	// contains filtered or unexported fields
}

func NewSSHConfigurerServiceMesh added in v0.6.32

func NewSSHConfigurerServiceMesh(store SSHConfigurerV2Store) *SSHConfigurerServiceMesh

func (SSHConfigurerServiceMesh) CreateNewSSHConfig added in v0.6.32

func (s SSHConfigurerServiceMesh) CreateNewSSHConfig(workspaces []entity.Workspace) (string, error)

func (SSHConfigurerServiceMesh) EnsureConfigHasInclude added in v0.6.35

func (s SSHConfigurerServiceMesh) EnsureConfigHasInclude() error

func (SSHConfigurerServiceMesh) Update added in v0.6.32

func (s SSHConfigurerServiceMesh) Update(workspaces []entity.Workspace) error

type SSHConfigurerStore added in v0.6.2

type SSHConfigurerStore interface {
	WritePrivateKey(pem string) error
}

type SSHConfigurerTask added in v0.6.35

type SSHConfigurerTask struct {
	Store SSHConfigurerTaskStore
}

func NewSSHConfigurerTask added in v0.6.35

func NewSSHConfigurerTask(store SSHConfigurerTaskStore) SSHConfigurerTask

func (SSHConfigurerTask) Configure added in v0.6.35

func (sct SSHConfigurerTask) Configure() error

func (SSHConfigurerTask) GetTaskSpec added in v0.6.35

func (sct SSHConfigurerTask) GetTaskSpec() tasks.TaskSpec

func (SSHConfigurerTask) Run added in v0.6.35

func (sct SSHConfigurerTask) Run() error

type SSHConfigurerTaskStore added in v0.6.35

type SSHConfigurerTaskStore interface {
	ConfigUpdaterStore
	SSHConfigurerV2Store
	GetCurrentUserKeys() (*entity.UserKeys, error)
}

type SSHConfigurerV2 added in v0.6.0

type SSHConfigurerV2 struct {
	// contains filtered or unexported fields
}

SSHConfigurerV2 speciallizes in configuring ssh config with ProxyCommand

func NewSSHConfigurerV2 added in v0.6.0

func NewSSHConfigurerV2(store SSHConfigurerV2Store) *SSHConfigurerV2

func (SSHConfigurerV2) CreateNewSSHConfig added in v0.6.0

func (s SSHConfigurerV2) CreateNewSSHConfig(workspaces []entity.Workspace) (string, error)

func (SSHConfigurerV2) CreateWSLConfig added in v0.6.162

func (s SSHConfigurerV2) CreateWSLConfig(workspaces []entity.Workspace) (string, error)

func (SSHConfigurerV2) EnsureConfigHasInclude added in v0.6.0

func (s SSHConfigurerV2) EnsureConfigHasInclude() error

func (SSHConfigurerV2) EnsureWSLConfigHasInclude added in v0.6.169

func (s SSHConfigurerV2) EnsureWSLConfigHasInclude() error

func (SSHConfigurerV2) Update added in v0.6.0

func (s SSHConfigurerV2) Update(workspaces []entity.Workspace) error

type SSHConfigurerV2Store added in v0.6.0

type SSHConfigurerV2Store interface {
	WriteBrevSSHConfig(config string) error
	GetUserSSHConfig() (string, error)
	WriteUserSSHConfig(config string) error
	GetPrivateKeyPath() (string, error)
	GetUserSSHConfigPath() (string, error)
	GetBrevSSHConfigPath() (string, error)
	GetJetBrainsConfigPath() (string, error)
	GetJetBrainsConfig() (string, error)
	WriteJetBrainsConfig(config string) error
	DoesJetbrainsFilePathExist() (bool, error)
	GetWSLHostUserSSHConfigPath() (string, error)
	GetWindowsDir() (string, error)
	WriteBrevSSHConfigWSL(config string) error
	GetFileAsString(path string) (string, error)
	FileExists(path string) (bool, error)
	GetWSLHostBrevSSHConfigPath() (string, error)
	GetWSLUserSSHConfig() (string, error)
	WriteWSLUserSSHConfig(config string) error
}

type SSHStore

type SSHStore interface {
	GetUserSSHConfig() (string, error)
	WriteUserSSHConfig(config string) error
	CreateNewSSHConfigBackup() error
	GetPrivateKeyPath() (string, error)
}

type Writer

type Writer interface {
	Sync(IdentityPortMap) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL