SYMBOL INDEX (911 symbols across 92 files) FILE: cmd/gendoc/main.go function main (line 12) | func main() { FILE: cmd/upterm/command/config.go function configCmd (line 14) | func configCmd() *cobra.Command { function configPathCmd (line 39) | func configPathCmd() *cobra.Command { function configViewCmd (line 60) | func configViewCmd() *cobra.Command { function configEditCmd (line 82) | func configEditCmd() *cobra.Command { function configPathRunE (line 107) | func configPathRunE(c *cobra.Command, args []string) error { function configViewRunE (line 113) | func configViewRunE(c *cobra.Command, args []string) error { function configEditRunE (line 135) | func configEditRunE(c *cobra.Command, args []string) error { function getEditor (line 174) | func getEditor() string { function validateConfig (line 199) | func validateConfig(path string) error { function exampleConfig (line 206) | func exampleConfig() string { FILE: cmd/upterm/command/host.go type UserDiscardedError (line 29) | type UserDiscardedError struct method Error (line 31) | func (e UserDiscardedError) Error() string { type UserInterruptedError (line 36) | type UserInterruptedError struct method Error (line 38) | func (e UserInterruptedError) Error() string { type SilentError (line 44) | type SilentError struct method Error (line 48) | func (e SilentError) Error() string { method Unwrap (line 52) | func (e SilentError) Unwrap() error { function hostCmd (line 73) | func hostCmd() *cobra.Command { function validateShareRequiredFlags (line 136) | func validateShareRequiredFlags(c *cobra.Command, args []string) error { function shareRunE (line 178) | func shareRunE(c *cobra.Command, args []string) error { function clientJoinedCallback (line 319) | func clientJoinedCallback(c *api.Client) { function clientLeftCallback (line 323) | func clientLeftCallback(c *api.Client) { function notifyBody (line 327) | func notifyBody(c *api.Client) string { function displaySessionCallback (line 331) | func displaySessionCallback(ctx context.Context, session *api.GetSession... function defaultPrivateKeys (line 372) | func defaultPrivateKeys(homeDir string) []string { function defaultKnownHost (line 393) | func defaultKnownHost(homeDir string) string { FILE: cmd/upterm/command/host_test.go function Test_validateShareRequiredFlags_readOnlyAndLocalTCPForwarding (line 10) | func Test_validateShareRequiredFlags_readOnlyAndLocalTCPForwarding(t *te... function Test_parseURL (line 55) | func Test_parseURL(t *testing.T) { FILE: cmd/upterm/command/host_unix.go function getDefaultShell (line 10) | func getDefaultShell() string { FILE: cmd/upterm/command/host_windows.go function getDefaultShell (line 11) | func getDefaultShell() string { FILE: cmd/upterm/command/internal/tui/host_session.go type HostSessionConfirmResult (line 10) | type HostSessionConfirmResult constant HostSessionConfirmAccepted (line 14) | HostSessionConfirmAccepted HostSessionConfirmResult = iota constant HostSessionConfirmRejected (line 16) | HostSessionConfirmRejected constant HostSessionConfirmInterrupted (line 18) | HostSessionConfirmInterrupted type HostSessionModel (line 24) | type HostSessionModel struct method Init (line 58) | func (m HostSessionModel) Init() tea.Cmd { method Update (line 66) | func (m HostSessionModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 96) | func (m HostSessionModel) View() string { method Result (line 131) | func (m HostSessionModel) Result() HostSessionConfirmResult { type sessionState (line 33) | type sessionState constant stateWaitingForConfirm (line 37) | stateWaitingForConfirm sessionState = iota constant stateDone (line 39) | stateDone function NewHostSessionModel (line 43) | func NewHostSessionModel(detail SessionDetail, autoAccept bool) HostSess... FILE: cmd/upterm/command/internal/tui/session_detail.go function IsTTY (line 15) | func IsTTY() bool { function getTermWidth (line 20) | func getTermWidth() int { function RunModel (line 30) | func RunModel(model tea.Model) (tea.Model, error) { type SessionDetail (line 41) | type SessionDetail struct function FormatSessionDetail (line 58) | func FormatSessionDetail(detail SessionDetail) string { function PrintSessionDetail (line 63) | func PrintSessionDetail(detail SessionDetail) { function wrapLines (line 70) | func wrapLines(text string, width int) []string { function renderWrappedRow (line 82) | func renderWrappedRow(b *strings.Builder, label string, value string, la... function renderSessionDetail (line 99) | func renderSessionDetail(detail SessionDetail, width int) string { FILE: cmd/upterm/command/internal/tui/session_detail_test.go function Test_wrapLines (line 11) | func Test_wrapLines(t *testing.T) { function Test_renderWrappedRow_multiline (line 54) | func Test_renderWrappedRow_multiline(t *testing.T) { function Test_FormatSessionDetail_authorizedKeys (line 78) | func Test_FormatSessionDetail_authorizedKeys(t *testing.T) { FILE: cmd/upterm/command/internal/tui/session_list.go type SessionListModel (line 12) | type SessionListModel struct method Init (line 97) | func (m SessionListModel) Init() tea.Cmd { method Update (line 101) | func (m SessionListModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 145) | func (m SessionListModel) View() string { function calculateColumns (line 27) | func calculateColumns(width int) []table.Column { function NewSessionListModel (line 52) | func NewSessionListModel(sessions []SessionDetail) SessionListModel { FILE: cmd/upterm/command/privacy.go function shouldHideClientIP (line 24) | func shouldHideClientIP() bool { function isCI (line 36) | func isCI() bool { FILE: cmd/upterm/command/proxy.go function proxyCmd (line 16) | func proxyCmd() *cobra.Command { function proxyRunE (line 32) | func proxyRunE(c *cobra.Command, args []string) error { FILE: cmd/upterm/command/root.go function Root (line 16) | func Root() *cobra.Command { function bindFlagsToEnv (line 116) | func bindFlagsToEnv(cmd *cobra.Command) error { function toString (line 165) | func toString(val any) string { FILE: cmd/upterm/command/session.go type sessionTemplateData (line 29) | type sessionTemplateData struct function sessionCmd (line 37) | func sessionCmd() *cobra.Command { function list (line 50) | func list() *cobra.Command { function show (line 70) | func show() *cobra.Command { function current (line 86) | func current() *cobra.Command { function listRunE (line 129) | func listRunE(c *cobra.Command, args []string) error { function fetchSessionDetail (line 141) | func fetchSessionDetail(ctx context.Context, adminSocket string) (tui.Se... function infoRunE (line 149) | func infoRunE(c *cobra.Command, args []string) error { function currentRunE (line 164) | func currentRunE(c *cobra.Command, args []string) error { function outputSession (line 180) | func outputSession(ctx context.Context, adminSocket, format string) error { function listSessions (line 226) | func listSessions(ctx context.Context, dir string) ([]tui.SessionDetail,... function parseURL (line 260) | func parseURL(str string) (u *url.URL, scheme string, host string, port ... function buildSessionDetail (line 289) | func buildSessionDetail(sess *api.GetSessionResponse) (tui.SessionDetail... function clientDesc (line 354) | func clientDesc(addr, clientVer, fingerprint string) string { function currentAdminSocketFile (line 361) | func currentAdminSocketFile() string { function session (line 365) | func session(ctx context.Context, adminSocket string) (*api.GetSessionRe... function validateCurrentRequiredFlags (line 374) | func validateCurrentRequiredFlags(c *cobra.Command, args []string) error { function displayAuthorizedKeys (line 387) | func displayAuthorizedKeys(keys []*api.AuthorizedKey) string { FILE: cmd/upterm/command/sftp_permission.go type DialogPermissionChecker (line 14) | type DialogPermissionChecker struct method CheckPermission (line 27) | func (d *DialogPermissionChecker) CheckPermission(op sftp.Operation, c... method allowSession (line 66) | func (d *DialogPermissionChecker) allowSession(sessionID string) { method isSessionAllowed (line 70) | func (d *DialogPermissionChecker) isSessionAllowed(sessionID string) b... method allowFile (line 75) | func (d *DialogPermissionChecker) allowFile(sessionID, path string) { method isFileAllowed (line 80) | func (d *DialogPermissionChecker) isFileAllowed(sessionID, path string... method ClearSession (line 87) | func (d *DialogPermissionChecker) ClearSession(sessionID string) { method showDialog (line 101) | func (d *DialogPermissionChecker) showDialog(op sftp.Operation, client... type AutoAllowPermissionChecker (line 174) | type AutoAllowPermissionChecker struct method CheckPermission (line 177) | func (a *AutoAllowPermissionChecker) CheckPermission(op sftp.Operation... method ClearSession (line 182) | func (a *AutoAllowPermissionChecker) ClearSession(sessionID string) {} FILE: cmd/upterm/command/upgrade.go function upgradeCmd (line 20) | func upgradeCmd() *cobra.Command { function upgradeRunE (line 35) | func upgradeRunE(c *cobra.Command, args []string) error { function trimVPrefix (line 104) | func trimVPrefix(s string) string { type release (line 108) | type release struct method FindTarballWithVersion (line 112) | func (r *release) FindTarballWithVersion(os, arch string) *update.Asset { type store (line 124) | type store struct method GetRelease (line 130) | func (s *store) GetRelease(version string) (*update.Release, error) { method LatestReleases (line 149) | func (s *store) LatestReleases() ([]*update.Release, error) { function githubRelease (line 165) | func githubRelease(r *ggh.RepositoryRelease) *update.Release { FILE: cmd/upterm/command/version.go function versionCmd (line 8) | func versionCmd() *cobra.Command { FILE: cmd/upterm/main.go function main (line 11) | func main() { FILE: cmd/uptermd-fly/main.go function main (line 11) | func main() { FILE: cmd/uptermd/command/root.go function Root (line 18) | func Root() *cobra.Command { type rootCmd (line 53) | type rootCmd struct method RunE (line 56) | func (cmd *rootCmd) RunE(c *cobra.Command, args []string) error { function unmarshalFlags (line 88) | func unmarshalFlags(cmd *cobra.Command, opts interface{}) error { FILE: cmd/uptermd/command/version.go function versionCmd (line 8) | func versionCmd() *cobra.Command { FILE: cmd/uptermd/main.go function main (line 10) | func main() { FILE: ftests/client_test.go function testHostNoAuthorizedKeyAnyClientJoin (line 20) | func testHostNoAuthorizedKeyAnyClientJoin(t *testing.T, hostShareURL, ho... function testClientAuthorizedKeyNotMatching (line 46) | func testClientAuthorizedKeyNotMatching(t *testing.T, hostShareURL, host... function testClientNonExistingSession (line 77) | func testClientNonExistingSession(t *testing.T, hostShareURL, hostNodeAd... function testClientAttachHostWithSameCommand (line 115) | func testClientAttachHostWithSameCommand(t *testing.T, hostShareURL, hos... function testClientAttachHostWithDifferentCommand (line 168) | func testClientAttachHostWithDifferentCommand(t *testing.T, hostShareURL... function testClientAttachReadOnly (line 223) | func testClientAttachReadOnly(t *testing.T, hostShareURL, hostNodeAddr, ... function testClientLocalPortForward (line 300) | func testClientLocalPortForward(t *testing.T, hostShareURL, hostNodeAddr... function testClientLocalPortForwardDisabled (line 404) | func testClientLocalPortForwardDisabled(t *testing.T, hostShareURL, host... function getAndVerifySession (line 438) | func getAndVerifySession(t *testing.T, adminSocketFile string, wantHostU... function checkSessionPayload (line 452) | func checkSessionPayload(t *testing.T, sess *api.GetSessionResponse, wan... function testOldClientToNewConsulServer (line 462) | func testOldClientToNewConsulServer(t *testing.T, hostShareURL, hostNode... function setupAdminSocket (line 512) | func setupAdminSocket(t *testing.T) string { FILE: ftests/ftests_test.go function getTestShell (line 47) | func getTestShell() []string { constant serverStartupTimeout (line 63) | serverStartupTimeout = 3 * time.Second constant unixSocketWaitTimeout (line 64) | unixSocketWaitTimeout = 3 * time.Second constant keepAliveDuration (line 65) | keepAliveDuration = 2 * time.Second constant sshAttachTimeout (line 66) | sshAttachTimeout = 500 * time.Millisecond constant ServerPublicKeyContent (line 69) | ServerPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA7wM3URd... constant ServerPrivateKeyContent (line 70) | ServerPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- constant HostPublicKeyContent (line 77) | HostPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOA+rMcwWFP... constant HostPrivateKeyContent (line 78) | HostPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- constant ClientPublicKeyContent (line 85) | ClientPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN0EWrjdc... constant ClientPrivateKeyContent (line 86) | ClientPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- type FtestCase (line 101) | type FtestCase type FtestSuite (line 136) | type FtestSuite struct method SetupSuite (line 143) | func (suite *FtestSuite) SetupSuite() { method TearDownSuite (line 157) | func (suite *FtestSuite) TearDownSuite() { method TestAuth (line 166) | func (suite *FtestSuite) TestAuth() { method TestSession (line 170) | func (suite *FtestSuite) TestSession() { method TestConnection (line 174) | func (suite *FtestSuite) TestConnection() { method TestCallbacks (line 178) | func (suite *FtestSuite) TestCallbacks() { method TestBackwardCompatibility (line 182) | func (suite *FtestSuite) TestBackwardCompatibility() { method runTestCategory (line 192) | func (suite *FtestSuite) runTestCategory(testCases []FtestCase) { method runTestsForProtocol (line 202) | func (suite *FtestSuite) runTestsForProtocol(protocol string, testCase... method getServerAddr (line 233) | func (suite *FtestSuite) getServerAddr(protocol string, server TestSer... function TestEmbedded (line 241) | func TestEmbedded(t *testing.T) { function TestConsul (line 245) | func TestConsul(t *testing.T) { function mustParseURL (line 253) | func mustParseURL(urlStr string) *url.URL { function funcName (line 261) | func funcName(i interface{}) string { type TestServer (line 268) | type TestServer interface function NewServerWithMode (line 275) | func NewServerWithMode(hostKey string, mode routing.Mode) (TestServer, e... type Server (line 330) | type Server struct method start (line 343) | func (s *Server) start() error { method SSHAddr (line 413) | func (s *Server) SSHAddr() string { method WSAddr (line 417) | func (s *Server) WSAddr() string { method NodeAddr (line 421) | func (s *Server) NodeAddr() string { method Shutdown (line 430) | func (s *Server) Shutdown() error { type Host (line 444) | type Host struct method Close (line 465) | func (c *Host) Close() { method init (line 490) | func (c *Host) init() { method Share (line 496) | func (c *Host) Share(url string) error { method InputOutput (line 617) | func (c *Host) InputOutput() (chan string, chan string) { type Client (line 621) | type Client struct method init (line 633) | func (c *Client) init() { method InputOutput (line 638) | func (c *Client) InputOutput() (chan string, chan string) { method SFTP (line 644) | func (c *Client) SFTP() (*sftp.Client, error) { method Close (line 651) | func (c *Client) Close() { method JoinWithContext (line 686) | func (c *Client) JoinWithContext(ctx context.Context, session *api.Get... method Join (line 810) | func (c *Client) Join(session *api.GetSessionResponse, clientJoinURL s... function scanner (line 814) | func scanner(ch chan string) *bufio.Scanner { function stripShellPrompt (line 830) | func stripShellPrompt(s string) string { function scan (line 847) | func scan(s *bufio.Scanner) string { function waitForUnixSocket (line 860) | func waitForUnixSocket(socket string, errCh chan error) error { type writeFunc (line 882) | type writeFunc method Write (line 884) | func (rf writeFunc) Write(p []byte) (n int, err error) { return rf(p) } function authMethodsFromFiles (line 886) | func authMethodsFromFiles(privateKeys []string) ([]ssh.AuthMethod, error) { function setupKeyPairs (line 900) | func setupKeyPairs() (func(), error) { function writeTempFile (line 921) | func writeTempFile(name, content string) (string, error) { FILE: ftests/host_test.go function testHostClientCallback (line 16) | func testHostClientCallback(t *testing.T, hostShareURL, hostNodeAddr, cl... function testHostSessionCreatedCallback (line 93) | func testHostSessionCreatedCallback(t *testing.T, hostShareURL, hostNode... function testHostFailToShareWithoutPrivateKey (line 119) | func testHostFailToShareWithoutPrivateKey(t *testing.T, hostShareURL, ho... FILE: ftests/sftp_test.go method TestSFTP (line 25) | func (suite *FtestSuite) TestSFTP() { function testSFTPDownload (line 32) | func testSFTPDownload(t *testing.T, hostShareURL, hostNodeAddr, clientJo... function testSFTPUpload (line 87) | func testSFTPUpload(t *testing.T, hostShareURL, hostNodeAddr, clientJoin... function testSFTPReadOnly (line 141) | func testSFTPReadOnly(t *testing.T, hostShareURL, hostNodeAddr, clientJo... function testSFTPDisabled (line 199) | func testSFTPDisabled(t *testing.T, hostShareURL, hostNodeAddr, clientJo... function testSFTPDirectoryListing (line 234) | func testSFTPDirectoryListing(t *testing.T, hostShareURL, hostNodeAddr, ... function testSFTPSetstat (line 303) | func testSFTPSetstat(t *testing.T, hostShareURL, hostNodeAddr, clientJoi... FILE: host/adminclient.go constant AdminSockExt (line 14) | AdminSockExt = ".sock" function AdminSocketFile (line 17) | func AdminSocketFile(sessionID string) string { function AdminClient (line 21) | func AdminClient(socket string) (api.AdminServiceClient, error) { FILE: host/api/api.pb.go constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type Identifier_Type (line 23) | type Identifier_Type method Enum (line 42) | func (x Identifier_Type) Enum() *Identifier_Type { method String (line 48) | func (x Identifier_Type) String() string { method Descriptor (line 52) | func (Identifier_Type) Descriptor() protoreflect.EnumDescriptor { method Type (line 56) | func (Identifier_Type) Type() protoreflect.EnumType { method Number (line 60) | func (x Identifier_Type) Number() protoreflect.EnumNumber { method EnumDescriptor (line 65) | func (Identifier_Type) EnumDescriptor() ([]byte, []int) { constant Identifier_HOST (line 26) | Identifier_HOST Identifier_Type = 0 constant Identifier_CLIENT (line 27) | Identifier_CLIENT Identifier_Type = 1 type GetSessionRequest (line 69) | type GetSessionRequest struct method Reset (line 75) | func (x *GetSessionRequest) Reset() { method String (line 84) | func (x *GetSessionRequest) String() string { method ProtoMessage (line 88) | func (*GetSessionRequest) ProtoMessage() {} method ProtoReflect (line 90) | func (x *GetSessionRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 103) | func (*GetSessionRequest) Descriptor() ([]byte, []int) { type GetSessionResponse (line 107) | type GetSessionResponse struct method Reset (line 123) | func (x *GetSessionResponse) Reset() { method String (line 132) | func (x *GetSessionResponse) String() string { method ProtoMessage (line 136) | func (*GetSessionResponse) ProtoMessage() {} method ProtoReflect (line 138) | func (x *GetSessionResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 151) | func (*GetSessionResponse) Descriptor() ([]byte, []int) { method GetSessionId (line 155) | func (x *GetSessionResponse) GetSessionId() string { method GetCommand (line 162) | func (x *GetSessionResponse) GetCommand() []string { method GetForceCommand (line 169) | func (x *GetSessionResponse) GetForceCommand() []string { method GetHost (line 176) | func (x *GetSessionResponse) GetHost() string { method GetNodeAddr (line 183) | func (x *GetSessionResponse) GetNodeAddr() string { method GetConnectedClients (line 190) | func (x *GetSessionResponse) GetConnectedClients() []*Client { method GetAuthorizedKeys (line 197) | func (x *GetSessionResponse) GetAuthorizedKeys() []*AuthorizedKey { method GetSshUser (line 204) | func (x *GetSessionResponse) GetSshUser() string { method GetSftpDisabled (line 211) | func (x *GetSessionResponse) GetSftpDisabled() bool { type AuthorizedKey (line 218) | type AuthorizedKey struct method Reset (line 227) | func (x *AuthorizedKey) Reset() { method String (line 236) | func (x *AuthorizedKey) String() string { method ProtoMessage (line 240) | func (*AuthorizedKey) ProtoMessage() {} method ProtoReflect (line 242) | func (x *AuthorizedKey) ProtoReflect() protoreflect.Message { method Descriptor (line 255) | func (*AuthorizedKey) Descriptor() ([]byte, []int) { method GetPublicKeyFingerprints (line 259) | func (x *AuthorizedKey) GetPublicKeyFingerprints() []string { method GetComment (line 266) | func (x *AuthorizedKey) GetComment() string { type Client (line 273) | type Client struct method Reset (line 284) | func (x *Client) Reset() { method String (line 293) | func (x *Client) String() string { method ProtoMessage (line 297) | func (*Client) ProtoMessage() {} method ProtoReflect (line 299) | func (x *Client) ProtoReflect() protoreflect.Message { method Descriptor (line 312) | func (*Client) Descriptor() ([]byte, []int) { method GetId (line 316) | func (x *Client) GetId() string { method GetVersion (line 323) | func (x *Client) GetVersion() string { method GetAddr (line 330) | func (x *Client) GetAddr() string { method GetPublicKeyFingerprint (line 337) | func (x *Client) GetPublicKeyFingerprint() string { type Identifier (line 344) | type Identifier struct method Reset (line 354) | func (x *Identifier) Reset() { method String (line 363) | func (x *Identifier) String() string { method ProtoMessage (line 367) | func (*Identifier) ProtoMessage() {} method ProtoReflect (line 369) | func (x *Identifier) ProtoReflect() protoreflect.Message { method Descriptor (line 382) | func (*Identifier) Descriptor() ([]byte, []int) { method GetId (line 386) | func (x *Identifier) GetId() string { method GetType (line 393) | func (x *Identifier) GetType() Identifier_Type { method GetNodeAddr (line 400) | func (x *Identifier) GetNodeAddr() string { function file_api_proto_rawDescGZIP (line 472) | func file_api_proto_rawDescGZIP() []byte { function init (line 502) | func init() { file_api_proto_init() } function file_api_proto_init (line 503) | func file_api_proto_init() { FILE: host/api/api_grpc.pb.go constant _ (line 19) | _ = grpc.SupportPackageIsVersion7 type AdminServiceClient (line 24) | type AdminServiceClient interface type adminServiceClient (line 28) | type adminServiceClient struct method GetSession (line 36) | func (c *adminServiceClient) GetSession(ctx context.Context, in *GetSe... function NewAdminServiceClient (line 32) | func NewAdminServiceClient(cc grpc.ClientConnInterface) AdminServiceClie... type AdminServiceServer (line 48) | type AdminServiceServer interface type UnimplementedAdminServiceServer (line 53) | type UnimplementedAdminServiceServer struct method GetSession (line 56) | func (UnimplementedAdminServiceServer) GetSession(context.Context, *Ge... type UnsafeAdminServiceServer (line 63) | type UnsafeAdminServiceServer interface function RegisterAdminServiceServer (line 67) | func RegisterAdminServiceServer(s grpc.ServiceRegistrar, srv AdminServic... function _AdminService_GetSession_Handler (line 71) | func _AdminService_GetSession_Handler(srv interface{}, ctx context.Conte... FILE: host/authorizedkeys.go constant codebergKeysUrlFmt (line 19) | codebergKeysUrlFmt = "https://codeberg.org/%s" constant gitHubKeysUrlFmt (line 20) | gitHubKeysUrlFmt = "https://github.com/%s" constant gitLabKeysUrlFmt (line 21) | gitLabKeysUrlFmt = "https://gitlab.com/%s" constant sourceHutKeysUrlFmt (line 22) | sourceHutKeysUrlFmt = "https://meta.sr.ht/~%s" type AuthorizedKey (line 25) | type AuthorizedKey struct function AuthorizedKeysFromFile (line 30) | func AuthorizedKeysFromFile(file string) (*AuthorizedKey, error) { function CodebergUserAuthorizedKeys (line 39) | func CodebergUserAuthorizedKeys(usernames []string) ([]*AuthorizedKey, e... function GitHubUserAuthorizedKeys (line 43) | func GitHubUserAuthorizedKeys(usernames []string, logger *slog.Logger) (... function GitLabUserAuthorizedKeys (line 69) | func GitLabUserAuthorizedKeys(usernames []string) ([]*AuthorizedKey, err... function SourceHutUserAuthorizedKeys (line 73) | func SourceHutUserAuthorizedKeys(usernames []string) ([]*AuthorizedKey, ... function parseAuthorizedKeys (line 77) | func parseAuthorizedKeys(keysBytes []byte, comment string) (*AuthorizedK... function githubUserPublicKeys (line 95) | func githubUserPublicKeys(username string, logger *slog.Logger) ([]byte,... function usersPublicKeys (line 122) | func usersPublicKeys(urlFmt string, usernames []string) ([]*AuthorizedKe... function userPublicKeys (line 146) | func userPublicKeys(urlFmt string, username string) ([]byte, error) { FILE: host/host.go function NewPromptingHostKeyCallback (line 29) | func NewPromptingHostKeyCallback(stdin io.Reader, stdout io.Writer, know... function NewAutoAcceptingHostKeyCallback (line 38) | func NewAutoAcceptingHostKeyCallback(stdout io.Writer, knownHostsFilenam... function newHostKeyCallback (line 42) | func newHostKeyCallback(stdin io.Reader, stdout io.Writer, knownHostsFil... constant markerCert (line 64) | markerCert = "@cert-authority" constant errKeyMismatch (line 66) | errKeyMismatch = ` constant errNoAuthoritiesHostname (line 78) | errNoAuthoritiesHostname = "ssh: no authorities for hostname" type hostKeyCallback (line 81) | type hostKeyCallback struct method checkHostKey (line 89) | func (cb hostKeyCallback) checkHostKey(hostname string, remote net.Add... method promptForConfirmation (line 116) | func (cb hostKeyCallback) promptForConfirmation(hostname string, remot... method autoAcceptHostKey (line 148) | func (cb hostKeyCallback) autoAcceptHostKey(hostname string, key ssh.P... method appendHostLine (line 159) | func (cb hostKeyCallback) appendHostLine(isCert bool, hostname string,... type Host (line 192) | type Host struct method Run (line 216) | func (c *Host) Run(ctx context.Context) error { function keyType (line 400) | func keyType(t string) string { function createFileIfNotExist (line 404) | func createFileIfNotExist(file string) error { function toApiAuthorizedKeys (line 425) | func toApiAuthorizedKeys(aks []*AuthorizedKey) []*api.AuthorizedKey { function displayVersionWarning (line 443) | func displayVersionWarning(out io.Writer, logger *slog.Logger, result *v... FILE: host/host_test.go constant testPublicKey (line 18) | testPublicKey = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN0EWrjdcHcuMfI8bGA... function Test_hostKeyCallbackKnowHostsFileNotExist (line 21) | func Test_hostKeyCallbackKnowHostsFileNotExist(t *testing.T) { function Test_hostKeyCallback (line 52) | func Test_hostKeyCallback(t *testing.T) { function Test_hostKeyCallbackIPv6WithPort (line 86) | func Test_hostKeyCallbackIPv6WithPort(t *testing.T) { function Test_hostKeyCallbackIPv6WithCertAuthority (line 125) | func Test_hostKeyCallbackIPv6WithCertAuthority(t *testing.T) { function Test_autoAcceptingHostKeyCallback (line 178) | func Test_autoAcceptingHostKeyCallback(t *testing.T) { function Test_autoAcceptingHostKeyCallbackWithCertificate (line 206) | func Test_autoAcceptingHostKeyCallbackWithCertificate(t *testing.T) { function Test_autoAcceptingHostKeyCallbackValidatesKnownKeys (line 244) | func Test_autoAcceptingHostKeyCallbackValidatesKnownKeys(t *testing.T) { FILE: host/host_unix.go function setupSignalHandler (line 17) | func setupSignalHandler(g *run.Group, ctx context.Context) { FILE: host/host_windows.go function setupSignalHandler (line 18) | func setupSignalHandler(g *run.Group, ctx context.Context) { FILE: host/internal/adminserver.go type AdminServer (line 12) | type AdminServer struct method Serve (line 19) | func (s *AdminServer) Serve(ctx context.Context, sock string) error { method Shutdown (line 36) | func (s *AdminServer) Shutdown(ctx context.Context) error { type adminServiceServer (line 47) | type adminServiceServer struct method GetSession (line 52) | func (s *adminServiceServer) GetSession(ctx context.Context, in *api.G... FILE: host/internal/client.go function NewClientRepo (line 10) | func NewClientRepo() *ClientRepo { type ClientRepo (line 14) | type ClientRepo struct method Add (line 18) | func (c *ClientRepo) Add(client *api.Client) error { method Delete (line 27) | func (c *ClientRepo) Delete(clientId string) { method Get (line 31) | func (c *ClientRepo) Get(clientId string) *api.Client { method Clients (line 40) | func (c *ClientRepo) Clients() []*api.Client { FILE: host/internal/command.go function newCommand (line 16) | func newCommand( type command (line 38) | type command struct method Start (line 67) | func (c *command) Start(ctx context.Context) (PTY, error) { method Run (line 82) | func (c *command) Run() error { function setupCommand (line 63) | func setupCommand(ctx context.Context, name string, args []string) *exec... FILE: host/internal/command_test.go function TestCommand_NonTTY_WithForceFlag (line 19) | func TestCommand_NonTTY_WithForceFlag(t *testing.T) { function TestCommand_ContextCancellation (line 134) | func TestCommand_ContextCancellation(t *testing.T) { FILE: host/internal/command_unix.go method setupTerminalResize (line 16) | func (c *command) setupTerminalResize(g *run.Group, stdin *os.File, ptmx... FILE: host/internal/command_unix_test.go function TestCommand_Unix_PTY (line 22) | func TestCommand_Unix_PTY(t *testing.T) { FILE: host/internal/command_windows.go method setupTerminalResize (line 17) | func (c *command) setupTerminalResize(g *run.Group, stdin *os.File, ptmx... FILE: host/internal/command_windows_test.go function TestCommand_Windows_BasicExecution (line 19) | func TestCommand_Windows_BasicExecution(t *testing.T) { function TestCommand_Windows_JobObject (line 67) | func TestCommand_Windows_JobObject(t *testing.T) { function TestCommand_Windows_ConPTY (line 153) | func TestCommand_Windows_ConPTY(t *testing.T) { FILE: host/internal/event.go constant errBadFileDescriptor (line 16) | errBadFileDescriptor = "bad file descriptor" type terminal (line 19) | type terminal struct type window (line 25) | type window struct type terminalEventEmitter (line 30) | type terminalEventEmitter struct method TerminalWindowChanged (line 34) | func (t terminalEventEmitter) TerminalWindowChanged(id string, pty PTY... method TerminalDetached (line 46) | func (t terminalEventEmitter) TerminalDetached(id string, pty PTY) { type terminalEventHandler (line 54) | type terminalEventHandler struct method Handle (line 59) | func (t terminalEventHandler) Handle(ctx context.Context) error { method handleWindowChanged (line 85) | func (t terminalEventHandler) handleWindowChanged(evt emitter.Event, m... method handleTerminalDetached (line 110) | func (t terminalEventHandler) handleTerminalDetached(evt emitter.Event... function resizeWindow (line 134) | func resizeWindow(ptmx PTY, ts map[string]terminal) error { FILE: host/internal/pty.go type PTY (line 17) | type PTY interface FILE: host/internal/pty_unix.go function startPty (line 14) | func startPty(c *exec.Cmd, stdin *os.File) (PTY, error) { function ptyError (line 40) | func ptyError(err error) error { function getPtysize (line 48) | func getPtysize(f *os.File) (h, w int, err error) { function wrapPty (line 52) | func wrapPty(f *os.File, cmd *exec.Cmd) *pty { type pty (line 61) | type pty struct method Setsize (line 67) | func (pty *pty) Setsize(h, w int) error { method Read (line 78) | func (pty *pty) Read(p []byte) (n int, err error) { method Close (line 85) | func (pty *pty) Close() error { method Wait (line 93) | func (pty *pty) Wait() error { method Kill (line 105) | func (pty *pty) Kill() error { FILE: host/internal/pty_windows.go function startPty (line 26) | func startPty(c *exec.Cmd, stdin *os.File) (PTY, error) { type pty (line 78) | type pty struct method Setsize (line 88) | func (p *pty) Setsize(h, w int) error { method Read (line 99) | func (p *pty) Read(data []byte) (n int, err error) { method Write (line 112) | func (p *pty) Write(data []byte) (n int, err error) { method Close (line 125) | func (p *pty) Close() error { method Wait (line 161) | func (p *pty) Wait() error { method Kill (line 210) | func (p *pty) Kill() error { function getPtysize (line 150) | func getPtysize(f *os.File) (h, w int, err error) { function ptyError (line 156) | func ptyError(err error) error { constant JobObjectExtendedLimitInformation (line 235) | JobObjectExtendedLimitInformation = 9 constant JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE (line 236) | JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x2000 type JOBOBJECT_BASIC_LIMIT_INFORMATION (line 239) | type JOBOBJECT_BASIC_LIMIT_INFORMATION struct type IO_COUNTERS (line 251) | type IO_COUNTERS struct type JOBOBJECT_EXTENDED_LIMIT_INFORMATION (line 260) | type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct function createJobObject (line 272) | func createJobObject(processHandle syscall.Handle) (syscall.Handle, erro... FILE: host/internal/reversetunnel.go constant publickeyAuthError (line 21) | publickeyAuthError = "ssh: unable to authenticate, attempted methods [no... type ReverseTunnel (line 24) | type ReverseTunnel struct method Close (line 37) | func (c *ReverseTunnel) Close() { method Listener (line 42) | func (c *ReverseTunnel) Listener() net.Listener { method Establish (line 46) | func (c *ReverseTunnel) Establish(ctx context.Context) (*server.Create... method createSession (line 121) | func (c *ReverseTunnel) createSession(user string, hostPublicKeys [][]... function keepAlive (line 148) | func keepAlive(ctx context.Context, d time.Duration, fn func()) { function isWSScheme (line 162) | func isWSScheme(scheme string) bool { type PermissionDeniedError (line 166) | type PermissionDeniedError struct method Error (line 171) | func (e *PermissionDeniedError) Error() string { method Unwrap (line 175) | func (e *PermissionDeniedError) Unwrap() error { return e.err } function sshDialError (line 177) | func sshDialError(host string, err error) error { FILE: host/internal/server.go type Server (line 26) | type Server struct method ServeWithContext (line 48) | func (s *Server) ServeWithContext(ctx context.Context, l net.Listener)... type publicKeyHandler (line 163) | type publicKeyHandler struct method HandlePublicKey (line 169) | func (h *publicKeyHandler) HandlePublicKey(ctx gssh.Context, key gssh.... type sessionHandler (line 195) | type sessionHandler struct method HandleSession (line 209) | func (h *sessionHandler) HandleSession(sess gssh.Session) { function emitClientJoinEvent (line 336) | func emitClientJoinEvent(eventEmmiter *emitter.Emitter, sessionID string... function emitClientLeftEvent (line 346) | func emitClientLeftEvent(eventEmmiter *emitter.Emitter, sessionID string) { function startAttachCmd (line 350) | func startAttachCmd(ctx context.Context, c []string, term string) (PTY, ... FILE: host/internal/sftp.go type SFTPSession (line 20) | type SFTPSession struct method checkPermission (line 82) | func (s *SFTPSession) checkPermission(op hostsftp.Operation, paths ...... method resolvePath (line 109) | func (s *SFTPSession) resolvePath(reqPath string) (string, error) { method HandleSFTP (line 27) | func (h *sessionHandler) HandleSFTP(sess gssh.Session) { type sftpFileReader (line 132) | type sftpFileReader struct method Fileread (line 137) | func (h *sftpFileReader) Fileread(r *sftp.Request) (io.ReaderAt, error) { type sftpFileWriter (line 154) | type sftpFileWriter struct method Filewrite (line 159) | func (h *sftpFileWriter) Filewrite(r *sftp.Request) (io.WriterAt, erro... type sftpFileCmder (line 204) | type sftpFileCmder struct method Filecmd (line 209) | func (h *sftpFileCmder) Filecmd(r *sftp.Request) error { type sftpFileLister (line 322) | type sftpFileLister struct method Filelist (line 327) | func (h *sftpFileLister) Filelist(r *sftp.Request) (sftp.ListerAt, err... type listerat (line 380) | type listerat method ListAt (line 382) | func (l listerat) ListAt(ls []fs.FileInfo, offset int64) (int, error) { type linkInfo (line 395) | type linkInfo struct method Name (line 399) | func (l linkInfo) Name() string { return l.name } method Size (line 400) | func (l linkInfo) Size() int64 { return 0 } method Mode (line 401) | func (l linkInfo) Mode() fs.FileMode { return 0 } method ModTime (line 402) | func (l linkInfo) ModTime() time.Time { return time.Time{} } method IsDir (line 403) | func (l linkInfo) IsDir() bool { return false } method Sys (line 404) | func (l linkInfo) Sys() any { return nil } FILE: host/internal/sftp_test.go function TestSFTPSession_resolvePath (line 13) | func TestSFTPSession_resolvePath(t *testing.T) { function TestListerat (line 137) | func TestListerat(t *testing.T) { FILE: host/sftp/permission.go type Operation (line 4) | type Operation method String (line 19) | func (o Operation) String() string { constant OpDownload (line 7) | OpDownload Operation = iota constant OpUpload (line 8) | OpUpload constant OpDelete (line 9) | OpDelete constant OpMkdir (line 10) | OpMkdir constant OpRmdir (line 11) | OpRmdir constant OpRename (line 12) | OpRename constant OpSymlink (line 13) | OpSymlink constant OpLink (line 14) | OpLink constant OpSetstat (line 15) | OpSetstat type PermissionResult (line 45) | type PermissionResult constant PermissionDenied (line 48) | PermissionDenied PermissionResult = iota constant PermissionAllowed (line 49) | PermissionAllowed constant PermissionAlwaysAllow (line 50) | PermissionAlwaysAllow type ClientInfo (line 54) | type ClientInfo struct type PermissionChecker (line 61) | type PermissionChecker interface FILE: host/signer.go constant errCannotDecodeEncryptedPrivateKeys (line 20) | errCannotDecodeEncryptedPrivateKeys = "cannot decode encrypted private k... type errDescryptingPrivateKey (line 23) | type errDescryptingPrivateKey struct method Error (line 27) | func (e *errDescryptingPrivateKey) Error() string { function Signers (line 34) | func Signers(privateKeys []string) ([]ssh.Signer, func(), error) { function SignersFromFiles (line 53) | func SignersFromFiles(privateKeys []string) ([]ssh.Signer, error) { function signersFromSSHAgent (line 65) | func signersFromSSHAgent(socket string) ([]ssh.Signer, func(), error) { function signerFromFile (line 83) | func signerFromFile(file string, promptForPassphrase func(file string) (... function readPrivateKeyFromFile (line 92) | func readPrivateKeyFromFile(file string, promptForPassphrase func(file s... function promptForPassphrase (line 128) | func promptForPassphrase(file string) ([]byte, error) { FILE: host/signer_test.go constant rsaPrivateKey (line 14) | rsaPrivateKey = `-----BEGIN OPENSSH PRIVATE KEY----- constant rsaPublicKey (line 66) | rsaPublicKey = `ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCt//y3H4heRi1+3bO+... constant ed25519PriavteKey (line 69) | ed25519PriavteKey = `-----BEGIN OPENSSH PRIVATE KEY----- constant ed25519PublicKey (line 79) | ed25519PublicKey = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA9dIfLyILssYzKI... function Test_signerFromFile (line 82) | func Test_signerFromFile(t *testing.T) { FILE: internal/context/logging.go type contextKey (line 9) | type contextKey constant loggerKey (line 11) | loggerKey contextKey = "logger" function WithLogger (line 13) | func WithLogger(ctx context.Context, logger *logging.Logger) context.Con... function Logger (line 17) | func Logger(ctx context.Context) *logging.Logger { FILE: internal/e2e/e2e_test.go constant HostPrivateKeyContent (line 20) | HostPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- constant ClientPublicKeyContent (line 30) | ClientPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHzlndir8K... constant ClientPrivateKeyContent (line 33) | ClientPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- constant uptermPrompt (line 44) | uptermPrompt = "UPTERM_READY>" type testHarness (line 51) | type testHarness struct method startHost (line 126) | func (h *testHarness) startHost(extraFlags string) string { method splitPane (line 145) | func (h *testHarness) splitPane(from *tmux.Pane) *tmux.Pane { method connectClient (line 156) | func (h *testHarness) connectClient(client *tmux.Pane, sshCmd string) { method connectClientWithKey (line 172) | func (h *testHarness) connectClientWithKey(client *tmux.Pane, sshCmd, ... method waitForText (line 187) | func (h *testHarness) waitForText(pane *tmux.Pane, expected string, ti... method writeFile (line 204) | func (h *testHarness) writeFile(name, content string, perm os.FileMode... function newTestHarness (line 64) | func newTestHarness(t *testing.T, width int) *testHarness { function skipIfNoTmux (line 211) | func skipIfNoTmux(t *testing.T) { function extractSSHCommand (line 218) | func extractSSHCommand(output string) string { function extractScpUserHost (line 238) | func extractScpUserHost(sshCmd string) (string, string) { function extractScpPortFlag (line 255) | func extractScpPortFlag(sshCmd string) string { function TestSync (line 267) | func TestSync(t *testing.T) { function TestMultipleClients (line 290) | func TestMultipleClients(t *testing.T) { function TestForceCommand (line 318) | func TestForceCommand(t *testing.T) { function TestAuthorizedKeys (line 334) | func TestAuthorizedKeys(t *testing.T) { function TestSessionInfo (line 365) | func TestSessionInfo(t *testing.T) { FILE: internal/e2e/sftp_test.go function waitForFile (line 16) | func waitForFile(path string, timeout time.Duration) error { function TestSFTPDownload (line 28) | func TestSFTPDownload(t *testing.T) { function TestSFTPUpload (line 61) | func TestSFTPUpload(t *testing.T) { function TestSFTPDisabled (line 94) | func TestSFTPDisabled(t *testing.T) { function TestSFTPReadOnly (line 125) | func TestSFTPReadOnly(t *testing.T) { FILE: internal/logging/logging.go constant sentryFlushTimeout (line 19) | sentryFlushTimeout = 2 * time.Second type Logger (line 23) | type Logger struct method Close (line 29) | func (l *Logger) Close() error { method With (line 39) | func (l *Logger) With(args ...any) *Logger { method WithGroup (line 47) | func (l *Logger) WithGroup(name string) *Logger { type Option (line 55) | type Option type config (line 57) | type config struct function New (line 65) | func New(opts ...Option) (*Logger, error) { function Must (line 90) | func Must(opts ...Option) *Logger { function Level (line 99) | func Level(level slog.Level) Option { function Debug (line 107) | func Debug() Option { function Console (line 112) | func Console() Option { function File (line 120) | func File(path string) Option { function Sentry (line 142) | func Sentry(dsn string) Option { function newSentryHandler (line 158) | func newSentryHandler(dsn string) (slog.Handler, func() error, error) { FILE: internal/testhelpers/consul.go constant ConsulHealthCheckTimeout (line 14) | ConsulHealthCheckTimeout = 2 * time.Second function IsConsulAvailable (line 18) | func IsConsulAvailable() bool { function ConsulURL (line 51) | func ConsulURL() string { function ConsulClient (line 60) | func ConsulClient() (*api.Client, error) { FILE: internal/version/version.go type BuildInfo (line 41) | type BuildInfo struct function Parse (line 48) | func Parse(v string) (*version.Version, error) { function ParseFromSSHVersion (line 54) | func ParseFromSSHVersion(sshVersion string) (*version.Version, error) { function Current (line 78) | func Current() *version.Version { function String (line 87) | func String() string { function GetBuildInfo (line 92) | func GetBuildInfo() BuildInfo { function PrintVersion (line 101) | func PrintVersion(binaryName string) { function ServerSSHVersion (line 115) | func ServerSSHVersion() string { type CompatibilityResult (line 120) | type CompatibilityResult struct function CheckCompatibility (line 129) | func CheckCompatibility(sshVersion string) *CompatibilityResult { FILE: internal/version/version_test.go function TestParseFromSSHVersion (line 10) | func TestParseFromSSHVersion(t *testing.T) { function TestCheckCompatibility (line 82) | func TestCheckCompatibility(t *testing.T) { function TestServerSSHVersion (line 153) | func TestServerSSHVersion(t *testing.T) { function TestCurrent (line 160) | func TestCurrent(t *testing.T) { function TestCurrentPanic (line 167) | func TestCurrentPanic(t *testing.T) { FILE: io/query_filter.go type TerminalQueryFilter (line 19) | type TerminalQueryFilter struct method Write (line 57) | func (f *TerminalQueryFilter) Write(p []byte) (int, error) { method processByte (line 78) | func (f *TerminalQueryFilter) processByte(b byte) { method isCSIQuery (line 243) | func (f *TerminalQueryFilter) isCSIQuery(finalByte byte) bool { method flushAndReset (line 279) | func (f *TerminalQueryFilter) flushAndReset() { type queryFilterState (line 27) | type queryFilterState constant qfStateNormal (line 30) | qfStateNormal queryFilterState = iota constant qfStateEsc (line 31) | qfStateEsc constant qfStateCSI (line 32) | qfStateCSI constant qfStateCSIParam (line 33) | qfStateCSIParam constant qfStateOSC (line 34) | qfStateOSC constant qfStateOSCParam (line 35) | qfStateOSCParam constant qfStateOSCSemi (line 36) | qfStateOSCSemi constant qfStateOSCQuery (line 37) | qfStateOSCQuery constant qfStateOSCQueryEsc (line 38) | qfStateOSCQueryEsc constant qfStateOSCContent (line 39) | qfStateOSCContent constant qfStateOSCContentEsc (line 40) | qfStateOSCContentEsc function NewTerminalQueryFilter (line 45) | func NewTerminalQueryFilter(w io.Writer) *TerminalQueryFilter { FILE: io/query_filter_test.go function TestTerminalQueryFilter (line 11) | func TestTerminalQueryFilter(t *testing.T) { function TestTerminalQueryFilter_PreservesNonQueryOSC (line 129) | func TestTerminalQueryFilter_PreservesNonQueryOSC(t *testing.T) { function TestTerminalQueryFilter_SplitWrites (line 182) | func TestTerminalQueryFilter_SplitWrites(t *testing.T) { function TestTerminalQueryFilter_TertiaryDeviceAttributes (line 243) | func TestTerminalQueryFilter_TertiaryDeviceAttributes(t *testing.T) { type errWriter (line 277) | type errWriter struct method Write (line 281) | func (e *errWriter) Write(p []byte) (int, error) { function TestTerminalQueryFilter_ErrorHandling (line 285) | func TestTerminalQueryFilter_ErrorHandling(t *testing.T) { function TestTerminalQueryFilter_ErrorNotReturnedForFilteredContent (line 298) | func TestTerminalQueryFilter_ErrorNotReturnedForFilteredContent(t *testi... FILE: io/reader.go function NewContextReader (line 8) | func NewContextReader(ctx context.Context, r io.Reader) io.Reader { type contextReader (line 15) | type contextReader struct method Read (line 25) | func (r contextReader) Read(p []byte) (n int, err error) { type readResult (line 20) | type readResult struct FILE: io/reader_test.go function Test_ContextReader (line 13) | func Test_ContextReader(t *testing.T) { type readFunc (line 95) | type readFunc method Read (line 97) | func (rf readFunc) Read(p []byte) (n int, err error) { return rf(p) } FILE: io/writer.go type buffer (line 8) | type buffer struct method Append (line 15) | func (c *buffer) Append(p []byte) { method Size (line 30) | func (c *buffer) Size() int { method Data (line 37) | func (c *buffer) Data() [][]byte { function NewMultiWriter (line 45) | func NewMultiWriter(bufferSize int, writers ...io.Writer) *MultiWriter { type MultiWriter (line 54) | type MultiWriter struct method Append (line 61) | func (t *MultiWriter) Append(writers ...io.Writer) error { method Remove (line 81) | func (t *MultiWriter) Remove(writers ...io.Writer) { method Write (line 95) | func (t *MultiWriter) Write(p []byte) (n int, err error) { FILE: io/writer_test.go function Test_MultiWriter (line 11) | func Test_MultiWriter(t *testing.T) { FILE: memlistener/memlistener.go constant defaultBufferSize (line 17) | defaultBufferSize = 256 * 1024 type addr (line 20) | type addr struct method Network (line 22) | func (addr) Network() string { return "mem" } method String (line 23) | func (addr) String() string { return "mem" } type errListenerAlreadyExist (line 25) | type errListenerAlreadyExist struct method Error (line 29) | func (e errListenerAlreadyExist) Error() string { type errListenerNotFound (line 33) | type errListenerNotFound struct method Error (line 37) | func (e errListenerNotFound) Error() string { function New (line 41) | func New() *MemoryListener { type MemoryListener (line 45) | type MemoryListener struct method Listen (line 49) | func (l *MemoryListener) Listen(network, address string) (net.Listener... method ListenMem (line 53) | func (l *MemoryListener) ListenMem(network, address string, sz int) (n... method Dial (line 77) | func (l *MemoryListener) Dial(network, address string) (net.Conn, erro... method removeListener (line 98) | func (l *MemoryListener) removeListener(address string) { type memlistener (line 102) | type memlistener struct method Close (line 108) | func (m *memlistener) Close() error { FILE: memlistener/memlistener_test.go function Test_MemListener_Listen (line 10) | func Test_MemListener_Listen(t *testing.T) { function Test_MemListener_Dial (line 31) | func Test_MemListener_Dial(t *testing.T) { function Test_MemListener_RemoveListener (line 43) | func Test_MemListener_RemoveListener(t *testing.T) { FILE: routing/encoding.go type Encoder (line 14) | type Encoder interface type Decoder (line 20) | type Decoder interface type ModeProvider (line 26) | type ModeProvider interface type EncodeDecoder (line 32) | type EncodeDecoder interface function NewEncoder (line 39) | func NewEncoder(mode Mode) Encoder { function NewDecoder (line 44) | func NewDecoder(mode Mode) Decoder { function NewEncodeDecoder (line 49) | func NewEncodeDecoder(mode Mode) EncodeDecoder { type EmbeddedEncodeDecoder (line 61) | type EmbeddedEncodeDecoder struct method Encode (line 63) | func (e *EmbeddedEncodeDecoder) Encode(sessionID, nodeAddr string) str... method Decode (line 67) | func (e *EmbeddedEncodeDecoder) Decode(sshUser string) (sessionID, nod... method Mode (line 81) | func (e *EmbeddedEncodeDecoder) Mode() Mode { type ConsulEncodeDecoder (line 86) | type ConsulEncodeDecoder struct method Encode (line 88) | func (c *ConsulEncodeDecoder) Encode(sessionID, nodeAddr string) string { method Decode (line 92) | func (c *ConsulEncodeDecoder) Decode(sshUser string) (sessionID, nodeA... method Mode (line 109) | func (c *ConsulEncodeDecoder) Mode() Mode { FILE: routing/encoding_test.go type EncodeDecoderTestSuite (line 10) | type EncodeDecoderTestSuite struct method TestEmbeddedEncodeDecoder (line 14) | func (suite *EncodeDecoderTestSuite) TestEmbeddedEncodeDecoder() { method TestConsulEncodeDecoder (line 33) | func (suite *EncodeDecoderTestSuite) TestConsulEncodeDecoder() { method TestEmbeddedDecodeInvalidFormats (line 50) | func (suite *EncodeDecoderTestSuite) TestEmbeddedDecodeInvalidFormats() { method TestConsulDecodeInvalidFormats (line 70) | func (suite *EncodeDecoderTestSuite) TestConsulDecodeInvalidFormats() { method TestConsulDecodeBackwardCompatibility (line 78) | func (suite *EncodeDecoderTestSuite) TestConsulDecodeBackwardCompatibi... function TestEncodeDecoderSuite (line 102) | func TestEncodeDecoderSuite(t *testing.T) { FILE: routing/modes.go type Mode (line 4) | type Mode constant ModeEmbedded (line 8) | ModeEmbedded Mode = "embedded" constant ModeConsul (line 10) | ModeConsul Mode = "consul" FILE: server/cert.go constant certClockSkewTolerance (line 23) | certClockSkewTolerance = 1 * time.Minute type UserCertChecker (line 25) | type UserCertChecker struct method Authenticate (line 31) | func (c *UserCertChecker) Authenticate(user string, key ssh.PublicKey)... function parseAuthRequestFromCert (line 47) | func parseAuthRequestFromCert(principal string, cert *ssh.Certificate) (... type UserCertSigner (line 81) | type UserCertSigner struct method SignCert (line 87) | func (g *UserCertSigner) SignCert(signer ssh.Signer) (ssh.Signer, erro... type HostCertSigner (line 121) | type HostCertSigner struct method SignCert (line 125) | func (s *HostCertSigner) SignCert(signer ssh.Signer) (ssh.Signer, erro... FILE: server/metrics.go type metricServer (line 11) | type metricServer struct method Shutdown (line 16) | func (m *metricServer) Shutdown(ctx context.Context) error { method ListenAndServe (line 27) | func (m *metricServer) ListenAndServe(addr string) error { FILE: server/network.go function init (line 15) | func init() { type networkProviders (line 19) | type networkProviders method Get (line 21) | func (n networkProviders) Get(name string) NetworkProvider { type NetworkProvider (line 31) | type NetworkProvider interface type NetworkOptions (line 39) | type NetworkOptions type SessionDialListener (line 41) | type SessionDialListener interface type SSHDDialListener (line 46) | type SSHDDialListener interface type MemoryProvider (line 51) | type MemoryProvider struct method Name (line 56) | func (p *MemoryProvider) Name() string { method Opts (line 60) | func (p *MemoryProvider) Opts() string { method SetOpts (line 64) | func (p *MemoryProvider) SetOpts(opts NetworkOptions) error { method Session (line 70) | func (p *MemoryProvider) Session() SessionDialListener { method SSHD (line 74) | func (p *MemoryProvider) SSHD() SSHDDialListener { type memorySSHDDialListener (line 78) | type memorySSHDDialListener struct method Listen (line 83) | func (l *memorySSHDDialListener) Listen() (net.Listener, error) { method Dial (line 87) | func (l *memorySSHDDialListener) Dial() (net.Conn, error) { type memorySessionDialListener (line 91) | type memorySessionDialListener struct method Listen (line 95) | func (d *memorySessionDialListener) Listen(sessionID string) (net.List... method Dial (line 99) | func (d *memorySessionDialListener) Dial(sessionID string) (net.Conn, ... type UnixProvider (line 103) | type UnixProvider struct method Opts (line 108) | func (p *UnixProvider) Opts() string { method SetOpts (line 112) | func (p *UnixProvider) SetOpts(opts NetworkOptions) error { method Session (line 136) | func (p *UnixProvider) Session() SessionDialListener { method SSHD (line 140) | func (p *UnixProvider) SSHD() SSHDDialListener { method Name (line 144) | func (p *UnixProvider) Name() string { type unixSSHDDialListener (line 148) | type unixSSHDDialListener struct method Listen (line 152) | func (d *unixSSHDDialListener) Listen() (net.Listener, error) { method Dial (line 156) | func (d *unixSSHDDialListener) Dial() (net.Conn, error) { type unixSessionDialListener (line 160) | type unixSessionDialListener struct method Listen (line 164) | func (d *unixSessionDialListener) Listen(sessionID string) (net.Listen... method Dial (line 168) | func (d *unixSessionDialListener) Dial(sessionID string) (net.Conn, er... method socketPath (line 172) | func (d *unixSessionDialListener) socketPath(sessionID string) string { FILE: server/server.go constant tcpDialTimeout (line 29) | tcpDialTimeout = 1 * time.Second type Opt (line 32) | type Opt struct method Validate (line 51) | func (opt *Opt) Validate() error { method validateConsulConfig (line 74) | func (opt *Opt) validateConsulConfig() error { method validateEmbeddedConfig (line 95) | func (opt *Opt) validateEmbeddedConfig() error { function Start (line 100) | func Start(ctx context.Context, opt Opt, logger *slog.Logger) error { function parseNetworkOpt (line 280) | func parseNetworkOpt(opts []string) NetworkOptions { type Server (line 290) | type Server struct method Shutdown (line 308) | func (s *Server) Shutdown() error { method ServeWithContext (line 347) | func (s *Server) ServeWithContext(ctx context.Context, sshln net.Liste... type connDialer (line 453) | type connDialer interface type sshProxyDialer (line 457) | type sshProxyDialer struct method Dial (line 462) | func (d sshProxyDialer) Dial(id *api.Identifier) (net.Conn, error) { type tcpConnDialer (line 474) | type tcpConnDialer struct method Dial (line 477) | func (d tcpConnDialer) Dial(id *api.Identifier) (net.Conn, error) { type wsConnDialer (line 481) | type wsConnDialer struct method Dial (line 484) | func (d wsConnDialer) Dial(id *api.Identifier) (net.Conn, error) { type sidewayConnDialer (line 495) | type sidewayConnDialer struct method Dial (line 503) | func (cd sidewayConnDialer) Dial(id *api.Identifier) (net.Conn, error) { FILE: server/server.pb.go constant _ (line 18) | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) constant _ (line 20) | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) type CreateSessionRequest (line 23) | type CreateSessionRequest struct method Reset (line 33) | func (x *CreateSessionRequest) Reset() { method String (line 42) | func (x *CreateSessionRequest) String() string { method ProtoMessage (line 46) | func (*CreateSessionRequest) ProtoMessage() {} method ProtoReflect (line 48) | func (x *CreateSessionRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 61) | func (*CreateSessionRequest) Descriptor() ([]byte, []int) { method GetHostUser (line 65) | func (x *CreateSessionRequest) GetHostUser() string { method GetHostPublicKeys (line 72) | func (x *CreateSessionRequest) GetHostPublicKeys() [][]byte { method GetClientAuthorizedKeys (line 79) | func (x *CreateSessionRequest) GetClientAuthorizedKeys() [][]byte { type CreateSessionResponse (line 86) | type CreateSessionResponse struct method Reset (line 96) | func (x *CreateSessionResponse) Reset() { method String (line 105) | func (x *CreateSessionResponse) String() string { method ProtoMessage (line 109) | func (*CreateSessionResponse) ProtoMessage() {} method ProtoReflect (line 111) | func (x *CreateSessionResponse) ProtoReflect() protoreflect.Message { method Descriptor (line 124) | func (*CreateSessionResponse) Descriptor() ([]byte, []int) { method GetSessionID (line 128) | func (x *CreateSessionResponse) GetSessionID() string { method GetNodeAddr (line 135) | func (x *CreateSessionResponse) GetNodeAddr() string { method GetSshUser (line 142) | func (x *CreateSessionResponse) GetSshUser() string { type AuthRequest (line 149) | type AuthRequest struct method Reset (line 159) | func (x *AuthRequest) Reset() { method String (line 168) | func (x *AuthRequest) String() string { method ProtoMessage (line 172) | func (*AuthRequest) ProtoMessage() {} method ProtoReflect (line 174) | func (x *AuthRequest) ProtoReflect() protoreflect.Message { method Descriptor (line 187) | func (*AuthRequest) Descriptor() ([]byte, []int) { method GetClientVersion (line 191) | func (x *AuthRequest) GetClientVersion() string { method GetRemoteAddr (line 198) | func (x *AuthRequest) GetRemoteAddr() string { method GetAuthorizedKey (line 205) | func (x *AuthRequest) GetAuthorizedKey() []byte { function file_server_proto_rawDescGZIP (line 251) | func file_server_proto_rawDescGZIP() []byte { function init (line 272) | func init() { file_server_proto_init() } function file_server_proto_init (line 273) | func file_server_proto_init() { FILE: server/session.go type ErrSessionNotFound (line 26) | type ErrSessionNotFound struct method Error (line 30) | func (e *ErrSessionNotFound) Error() string { constant DefaultSessionTTL (line 35) | DefaultSessionTTL = 30 * time.Minute constant DefaultConsulTimeout (line 36) | DefaultConsulTimeout = 5 * time.Second constant DefaultWatchTimeout (line 37) | DefaultWatchTimeout = 10 * time.Minute constant DefaultMaxRetries (line 38) | DefaultMaxRetries = 3 constant DefaultRetryDelay (line 39) | DefaultRetryDelay = 100 * time.Millisecond constant DefaultKeyPrefix (line 40) | DefaultKeyPrefix = "uptermd" constant UnusedNodeAddress (line 41) | UnusedNodeAddress = "localhost" type Session (line 45) | type Session struct method MarshalJSON (line 54) | func (s *Session) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 83) | func (s *Session) UnmarshalJSON(data []byte) error { method IsClientKeyAllowed (line 123) | func (s *Session) IsClientKeyAllowed(key ssh.PublicKey) bool { type SessionStore (line 138) | type SessionStore interface type sessionCache (line 154) | type sessionCache struct method Get (line 169) | func (c *sessionCache) Get(sessionID string) (*Session, bool) { method Has (line 178) | func (c *sessionCache) Has(sessionID string) bool { method Set (line 187) | func (c *sessionCache) Set(sessionID string, session *Session) { method Delete (line 196) | func (c *sessionCache) Delete(sessionID string) { method BatchDelete (line 205) | func (c *sessionCache) BatchDelete(sessionIDs []string) { method ReplaceAll (line 216) | func (c *sessionCache) ReplaceAll(newSessions map[string]*Session) (ad... function newSessionCache (line 161) | func newSessionCache(logger *slog.Logger) *sessionCache { type consulSessionStore (line 249) | type consulSessionStore struct method Store (line 316) | func (c *consulSessionStore) Store(session *Session) error { method Get (line 389) | func (c *consulSessionStore) Get(sessionID string) (*Session, error) { method getFromConsulAndCache (line 408) | func (c *consulSessionStore) getFromConsulAndCache(sessionID string) (... method Delete (line 462) | func (c *consulSessionStore) Delete(sessionID string) error { method BatchDelete (line 506) | func (c *consulSessionStore) BatchDelete(sessionIDs []string) error { method deleteBatch (line 531) | func (c *consulSessionStore) deleteBatch(sessionIDs []string) error { method List (line 566) | func (c *consulSessionStore) List() ([]*Session, error) { method NodeName (line 607) | func (c *consulSessionStore) NodeName() string { method SessionKey (line 612) | func (c *consulSessionStore) SessionKey(sessionID string) string { method SessionsKey (line 616) | func (c *consulSessionStore) SessionsKey() string { method KeyPrefix (line 621) | func (c *consulSessionStore) KeyPrefix() string { method registerNode (line 626) | func (c *consulSessionStore) registerNode() error { method createConsulLockSession (line 638) | func (c *consulSessionStore) createConsulLockSession(sessionID string)... method startSessionWatch (line 649) | func (c *consulSessionStore) startSessionWatch(cfg *api.Config) error { method updateSessionReplica (line 696) | func (c *consulSessionStore) updateSessionReplica(kvPairs api.KVPairs) { method Close (line 716) | func (c *consulSessionStore) Close() error { method HasInCache (line 724) | func (c *consulSessionStore) HasInCache(sessionID string) bool { function newConsulSessionStore (line 261) | func newConsulSessionStore(consulURL *url.URL, ttl time.Duration, logger... type memorySessionStore (line 729) | type memorySessionStore struct method Store (line 743) | func (m *memorySessionStore) Store(session *Session) error { method Get (line 755) | func (m *memorySessionStore) Get(sessionID string) (*Session, error) { method Delete (line 766) | func (m *memorySessionStore) Delete(sessionID string) error { method BatchDelete (line 778) | func (m *memorySessionStore) BatchDelete(sessionIDs []string) error { method List (line 791) | func (m *memorySessionStore) List() ([]*Session, error) { method Close (line 805) | func (m *memorySessionStore) Close() error { function newMemorySessionStore (line 736) | func newMemorySessionStore(logger *slog.Logger) *memorySessionStore { function NewSession (line 810) | func NewSession(sessionID, nodeAddr, hostUser string, hostPublicKeys, cl... type SessionManager (line 836) | type SessionManager struct method CreateSession (line 939) | func (sm *SessionManager) CreateSession(session *Session) (string, err... method GetSession (line 949) | func (sm *SessionManager) GetSession(sessionID string) (*Session, erro... method DeleteSession (line 954) | func (sm *SessionManager) DeleteSession(sessionID string) error { method shouldValidateSessionExistence (line 964) | func (sm *SessionManager) shouldValidateSessionExistence() bool { method ResolveSSHUser (line 973) | func (sm *SessionManager) ResolveSSHUser(sshUser string) (sessionID, n... method GetEncodeDecoder (line 994) | func (sm *SessionManager) GetEncodeDecoder() routing.EncodeDecoder { method GetRoutingMode (line 999) | func (sm *SessionManager) GetRoutingMode() routing.Mode { method GetStore (line 1004) | func (sm *SessionManager) GetStore() SessionStore { method Shutdown (line 1009) | func (sm *SessionManager) Shutdown(nodeAddr string) error { type SessionManagerConfig (line 842) | type SessionManagerConfig struct type SessionManagerOption (line 850) | type SessionManagerOption function WithSessionManagerLogger (line 853) | func WithSessionManagerLogger(logger *slog.Logger) SessionManagerOption { function WithSessionManagerConsulURL (line 860) | func WithSessionManagerConsulURL(consulURL *url.URL) SessionManagerOption { function WithSessionManagerConsulTTL (line 867) | func WithSessionManagerConsulTTL(ttl time.Duration) SessionManagerOption { function NewSessionManager (line 891) | func NewSessionManager(mode routing.Mode, opts ...SessionManagerOption) ... function newSessionManagerWithStore (line 914) | func newSessionManagerWithStore(store SessionStore, encodeDecoder routin... function newEmbeddedSessionManager (line 922) | func newEmbeddedSessionManager(logger *slog.Logger) *SessionManager { function newConsulSessionManager (line 929) | func newConsulSessionManager(consulURL *url.URL, ttl time.Duration, logg... FILE: server/session_test.go type EmbeddedSessionManagerTestSuite (line 39) | type EmbeddedSessionManagerTestSuite struct method SetupTest (line 45) | func (suite *EmbeddedSessionManagerTestSuite) SetupTest() { method TestCreateAndResolveSession (line 50) | func (suite *EmbeddedSessionManagerTestSuite) TestCreateAndResolveSess... method TestResolveSSHUser_DoesNotValidateExistence (line 77) | func (suite *EmbeddedSessionManagerTestSuite) TestResolveSSHUser_DoesN... method TestResolveSSHUser_InvalidFormats (line 94) | func (suite *EmbeddedSessionManagerTestSuite) TestResolveSSHUser_Inval... method TestRoutingMode (line 112) | func (suite *EmbeddedSessionManagerTestSuite) TestRoutingMode() { method TestDeleteSession (line 116) | func (suite *EmbeddedSessionManagerTestSuite) TestDeleteSession() { type ConsulSessionManagerTestSuite (line 141) | type ConsulSessionManagerTestSuite struct method SetupSuite (line 147) | func (suite *ConsulSessionManagerTestSuite) SetupSuite() { method TearDownSuite (line 166) | func (suite *ConsulSessionManagerTestSuite) TearDownSuite() { method TestCreateAndResolveSession (line 176) | func (suite *ConsulSessionManagerTestSuite) TestCreateAndResolveSessio... method TestResolveSSHUser_ValidatesExistence (line 208) | func (suite *ConsulSessionManagerTestSuite) TestResolveSSHUser_Validat... method TestRoutingMode (line 236) | func (suite *ConsulSessionManagerTestSuite) TestRoutingMode() { type MemoryStoreTestSuite (line 245) | type MemoryStoreTestSuite struct method SetupTest (line 251) | func (suite *MemoryStoreTestSuite) SetupTest() { method TestStoreOperations (line 256) | func (suite *MemoryStoreTestSuite) TestStoreOperations() { method TestBatchOperations (line 299) | func (suite *MemoryStoreTestSuite) TestBatchOperations() { method TestClose (line 329) | func (suite *MemoryStoreTestSuite) TestClose() { type ConsulStoreTestSuite (line 336) | type ConsulStoreTestSuite struct method SetupSuite (line 343) | func (suite *ConsulStoreTestSuite) SetupSuite() { method TearDownSuite (line 367) | func (suite *ConsulStoreTestSuite) TearDownSuite() { method TestBasicStoreOperations (line 381) | func (suite *ConsulStoreTestSuite) TestBasicStoreOperations() { method TestReplicationViaCacheAndWatch (line 430) | func (suite *ConsulStoreTestSuite) TestReplicationViaCacheAndWatch() { method TestReplicationHandlesDeletion (line 460) | func (suite *ConsulStoreTestSuite) TestReplicationHandlesDeletion() { method TestSessionNotFoundNoRetry (line 485) | func (suite *ConsulStoreTestSuite) TestSessionNotFoundNoRetry() { method TestBatchOperations (line 500) | func (suite *ConsulStoreTestSuite) TestBatchOperations() { method waitForSessionInCache (line 544) | func (suite *ConsulStoreTestSuite) waitForSessionInCache(sessionID str... method waitForSessionRemovedFromCache (line 551) | func (suite *ConsulStoreTestSuite) waitForSessionRemovedFromCache(sess... function TestEmbeddedSessionManagerTestSuite (line 562) | func TestEmbeddedSessionManagerTestSuite(t *testing.T) { function TestConsulSessionManagerTestSuite (line 566) | func TestConsulSessionManagerTestSuite(t *testing.T) { function TestMemoryStoreTestSuite (line 570) | func TestMemoryStoreTestSuite(t *testing.T) { function TestConsulStoreTestSuite (line 574) | func TestConsulStoreTestSuite(t *testing.T) { FILE: server/sshd.go type ServerInfo (line 23) | type ServerInfo struct type sshd (line 27) | type sshd struct method Shutdown (line 38) | func (s *sshd) Shutdown() error { method Serve (line 52) | func (s *sshd) Serve(ln net.Listener) error { method createSessionHandler (line 106) | func (s *sshd) createSessionHandler(ctx ssh.Context, srv *ssh.Server, ... FILE: server/sshd_test.go constant TestPublicKeyContent (line 18) | TestPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN0EWrjdcHc... constant TestPrivateKeyContent (line 19) | TestPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- function Test_sshd_DisallowSession (line 28) | func Test_sshd_DisallowSession(t *testing.T) { FILE: server/sshhandler.go constant forwardedStreamlocalChannelType (line 18) | forwardedStreamlocalChannelType = "forwarded-streamlocal@openssh.com" constant streamlocalForwardChannelType (line 19) | streamlocalForwardChannelType = "streamlocal-forward@openssh.com" constant cancelStreamlocalForwardChannelType (line 20) | cancelStreamlocalForwardChannelType = "cancel-streamlocal-forward@openss... type streamlocalChannelForwardMsg (line 23) | type streamlocalChannelForwardMsg struct type forwardedStreamlocalPayload (line 27) | type forwardedStreamlocalPayload struct function isExpectedShutdownError (line 33) | func isExpectedShutdownError(err error) bool { function newStreamlocalForwardHandler (line 66) | func newStreamlocalForwardHandler( type streamlocalForwardHandler (line 79) | type streamlocalForwardHandler struct method listen (line 87) | func (h *streamlocalForwardHandler) listen(ctx ssh.Context, ln net.Lis... method handleConnection (line 100) | func (h *streamlocalForwardHandler) handleConnection(ctx ssh.Context, ... method Handler (line 169) | func (h *streamlocalForwardHandler) Handler(ctx ssh.Context, srv *ssh.... method trackListener (line 244) | func (h *streamlocalForwardHandler) trackListener(sessionID string, ln... method closeListener (line 250) | func (h *streamlocalForwardHandler) closeListener(sessionID string) { FILE: server/sshhandler_test.go type SSHHandlerTestSuite (line 15) | type SSHHandlerTestSuite struct method TestIsExpectedShutdownError (line 23) | func (s *SSHHandlerTestSuite) TestIsExpectedShutdownError() { method TestIsExpectedShutdownError_EdgeCases (line 100) | func (s *SSHHandlerTestSuite) TestIsExpectedShutdownError_EdgeCases() { method TestIsExpectedShutdownError_WrappedErrors (line 122) | func (s *SSHHandlerTestSuite) TestIsExpectedShutdownError_WrappedError... function TestSSHHandlerTestSuite (line 19) | func TestSSHHandlerTestSuite(t *testing.T) { FILE: server/sshproxy.go type sshProxy (line 17) | type sshProxy struct method Shutdown (line 31) | func (r *sshProxy) Shutdown() error { method Serve (line 42) | func (r *sshProxy) Serve(ln net.Listener) error { type authPiper (line 69) | type authPiper struct method checkAuthorizedKeys (line 80) | func (a authPiper) checkAuthorizedKeys(conn ssh.ConnMetadata, pk ssh.P... method PublicKeyCallback (line 141) | func (a authPiper) PublicKeyCallback(conn ssh.ConnMetadata, pk ssh.Pub... method dialUpstream (line 222) | func (a *authPiper) dialUpstream(conn ssh.ConnMetadata) (net.Conn, err... method newUserCertSigners (line 258) | func (a authPiper) newUserCertSigners(conn ssh.ConnMetadata, auth *Aut... method hostSession (line 280) | func (a *authPiper) hostSession(conn ssh.ConnMetadata) (*Session, erro... function publicKeyFingerprint (line 105) | func publicKeyFingerprint(pk ssh.PublicKey) string { function loadAuthorizedKeys (line 116) | func loadAuthorizedKeys(paths []string) (map[string]struct{}, error) { FILE: server/sshproxy_test.go constant HostPublicKeyContent (line 24) | HostPublicKeyContent = `ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOA+rMcwWFP... constant HostPrivateKeyContent (line 25) | HostPrivateKeyContent = `-----BEGIN OPENSSH PRIVATE KEY----- function Test_sshProxy_dialUpstream (line 34) | func Test_sshProxy_dialUpstream(t *testing.T) { function testCertSigner (line 151) | func testCertSigner(user string, signer ssh.Signer) (ssh.Signer, error) { type fakeConnMetadata (line 169) | type fakeConnMetadata struct method User (line 173) | func (f *fakeConnMetadata) User() string { return "" } method SessionID (line 174) | func (f *fakeConnMetadata) SessionID() []byte { return nil } method ClientVersion (line 175) | func (f *fakeConnMetadata) ClientVersion() []byte { return []byte(f.cl... method ServerVersion (line 176) | func (f *fakeConnMetadata) ServerVersion() []byte { return nil } method RemoteAddr (line 177) | func (f *fakeConnMetadata) RemoteAddr() net.Addr { return nil } method LocalAddr (line 178) | func (f *fakeConnMetadata) LocalAddr() net.Addr { return nil } function writeKeyFile (line 180) | func writeKeyFile(t *testing.T, content string) string { function Test_loadAuthorizedKeys (line 187) | func Test_loadAuthorizedKeys(t *testing.T) { function Test_authPiper_checkAuthorizedKeys (line 232) | func Test_authPiper_checkAuthorizedKeys(t *testing.T) { FILE: server/sshrouting.go type SSHRouting (line 24) | type SSHRouting struct method Serve (line 54) | func (p *SSHRouting) Serve(ln net.Listener) error { method Shutdown (line 176) | func (p *SSHRouting) Shutdown() error { method getDoneChan (line 185) | func (p *SSHRouting) getDoneChan() <-chan struct{} { method getDoneChanLocked (line 192) | func (p *SSHRouting) getDoneChanLocked() chan struct{} { method closeDoneChanLocked (line 200) | func (p *SSHRouting) closeDoneChanLocked() { method closeListenersLocked (line 212) | func (p *SSHRouting) closeListenersLocked() error { type routingInstruments (line 36) | type routingInstruments struct function newSSHRoutingInstruments (line 44) | func newSSHRoutingInstruments(p provider.Provider) *routingInstruments { FILE: server/wsproxy.go type webSocketProxy (line 22) | type webSocketProxy struct method Serve (line 54) | func (s *webSocketProxy) Serve(ln net.Listener) error { method Shutdown (line 68) | func (s *webSocketProxy) Shutdown() error { function webHandler (line 31) | func webHandler(h http.Handler) http.Handler { type wsHandler (line 88) | type wsHandler struct method ServeHTTP (line 97) | func (h *wsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { method httpError (line 183) | func (h *wsHandler) httpError(w http.ResponseWriter, err error) { method wsError (line 189) | func (h *wsHandler) wsError(ws *websocket.Conn, err error, msg string) { FILE: server/wsproxy_test.go type testSshdDialListener (line 17) | type testSshdDialListener struct method Dial (line 21) | func (l *testSshdDialListener) Dial() (net.Conn, error) { method Listen (line 25) | func (l *testSshdDialListener) Listen() (net.Listener, error) { type testSessionDialListener (line 29) | type testSessionDialListener struct method Dial (line 33) | func (l *testSessionDialListener) Dial(id string) (net.Conn, error) { method Listen (line 37) | func (l *testSessionDialListener) Listen(id string) (net.Listener, err... function Test_WebSocketProxy_Host (line 41) | func Test_WebSocketProxy_Host(t *testing.T) { function scan (line 105) | func scan(s *bufio.Scanner) string { FILE: upterm/const.go constant HostSSHClientVersion (line 5) | HostSSHClientVersion = "SSH-2.0-upterm-host-client" constant HostSSHServerVersion (line 6) | HostSSHServerVersion = "SSH-2.0-upterm-host-server" constant HostAdminSocketEnvVar (line 7) | HostAdminSocketEnvVar = "UPTERM_ADMIN_SOCKET" constant ClientSSHClientVersion (line 10) | ClientSSHClientVersion = "SSH-2.0-upterm-client-client" constant ServerSSHServerVersion (line 13) | ServerSSHServerVersion = "SSH-2.0-uptermd" constant ServerServerInfoRequestType (line 14) | ServerServerInfoRequestType = "upterm-server-info@upterm.dev" constant ServerCreateSessionRequestType (line 15) | ServerCreateSessionRequestType = "upterm-create-session@upterm.dev" constant HeaderUptermClientVersion (line 18) | HeaderUptermClientVersion = "Upterm-Client-Version" constant OpenSSHKeepAliveRequestType (line 21) | OpenSSHKeepAliveRequestType = "keepalive@openssh.com" constant SSHCertExtension (line 23) | SSHCertExtension = "upterm-auth-request" constant EventClientJoined (line 25) | EventClientJoined = "client-joined" constant EventClientLeft (line 26) | EventClientLeft = "client-left" constant EventTerminalWindowChanged (line 27) | EventTerminalWindowChanged = "terminal-window-changed" constant EventTerminalDetached (line 28) | EventTerminalDetached = "terminal-detached" FILE: utils/testing.go function WaitForServer (line 11) | func WaitForServer(ctx context.Context, addr string) error { FILE: utils/utils.go constant logFile (line 19) | logFile = "upterm.log" constant configFile (line 20) | configFile = "config.yaml" constant appName (line 21) | appName = "upterm" type envGetter (line 26) | type envGetter function xdgDirWithFallbackEnv (line 39) | func xdgDirWithFallbackEnv(envVar, xdgPath string, getenv envGetter) str... function xdgDirWithFallback (line 67) | func xdgDirWithFallback(envVar, xdgPath string) string { function UptermRuntimeDir (line 84) | func UptermRuntimeDir() string { function UptermStateDir (line 101) | func UptermStateDir() string { function UptermLogFilePath (line 116) | func UptermLogFilePath() string { function UptermConfigDir (line 133) | func UptermConfigDir() string { function UptermConfigFilePath (line 148) | func UptermConfigFilePath() string { function CreateUptermRuntimeDir (line 154) | func CreateUptermRuntimeDir() (string, error) { function DefaultLocalhost (line 162) | func DefaultLocalhost(defaultPort string) string { function CreateSigners (line 171) | func CreateSigners(privateKeys [][]byte) ([]ssh.Signer, error) { function ReadFiles (line 202) | func ReadFiles(paths []string) ([][]byte, error) { function GenerateSessionID (line 217) | func GenerateSessionID() string { function FingerprintSHA256 (line 221) | func FingerprintSHA256(key ssh.PublicKey) string { function KeysEqual (line 227) | func KeysEqual(pk1 ssh.PublicKey, pk2 ssh.PublicKey) bool { function publicKey (line 231) | func publicKey(pk ssh.PublicKey) ssh.PublicKey { function ShortenHomePath (line 243) | func ShortenHomePath(path string) string { FILE: utils/utils_test.go function TestShortenHomePath (line 12) | func TestShortenHomePath(t *testing.T) { function TestXDGDirWithFallback (line 56) | func TestXDGDirWithFallback(t *testing.T) { FILE: ws/client.go function NewSSHClient (line 18) | func NewSSHClient(u *url.URL, config *ssh.ClientConfig, isUptermClient b... function NewWSConn (line 34) | func NewWSConn(u *url.URL, isUptermClient bool) (net.Conn, error) { function WrapWSConn (line 49) | func WrapWSConn(ws *websocket.Conn) net.Conn { function webSocketDialHeader (line 53) | func webSocketDialHeader(sessionID, encodedNodeAddr string, isClient boo...