ssh

package
v0.6.13 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2022 License: MIT Imports: 12 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 SSHConfigEntryTemplateV2 = `` /* 133-byte string literal not displayed */

Variables

This section is empty.

Functions

func MakeSSHEntry

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

func WorkspacesFromWorkspaceWithMeta added in v0.6.2

func WorkspacesFromWorkspaceWithMeta(wwm []entity.WorkspaceWithMeta) []entity.Workspace

NADER IS SO FUCKING SORRY FOR DOING THIS TWICE BUT I HAVE NO CLUE WHERE THIS HELPER FUNCTION SHOULD GO SO ITS COPY/PASTED ELSEWHERE IF YOU MODIFY IT MODIFY IT EVERYWHERE OR PLEASE PUT IT IN ITS PROPER PLACE. thank you you're the best <3

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
}

type ConfigUpdater added in v0.6.0

type ConfigUpdater struct {
	Store   ConfigUpdaterStore
	Configs []Config
}

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 {
	GetContextWorkspaces() ([]entity.Workspace, 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
}

type JetbrainsGatewayConfigXML

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

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"`
	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 SSHConfigEntryV2 added in v0.6.0

type SSHConfigEntryV2 struct {
	Alias        string
	IdentityFile string
	User         string
	ProxyCommand string
}

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) Sync

func (sshConfigurer *SSHConfigurer) Sync() error

type SSHConfigurerStore added in v0.6.2

type SSHConfigurerStore interface {
	WritePrivateKey(pem string) 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) AddIncludeToUserConfig added in v0.6.0

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

func (SSHConfigurerV2) CreateNewSSHConfig added in v0.6.0

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

func (SSHConfigurerV2) EnsureConfigHasInclude added in v0.6.0

func (s SSHConfigurerV2) EnsureConfigHasInclude() 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
	GetUserSSHConfigPath() (string, error)
	GetBrevSSHConfigPath() (string, error)
}

type SSHStore

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

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