proxy

package
v0.0.0-...-f1dd522 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2026 License: GPL-3.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusQuery = "query"
	StatusStart = "start"
	StatusNone  = "none"
)
View Source
const (
	CtrlC = 3
	CtrlD = 4
)
View Source
const (
	ResourceNamespace = "namespace"
	ResourcePod       = "pod"
	ResourceContainer = "container"
)
View Source
const (
	CharCleanRightLine = '\x0B'
	CharCTRLC          = '\x03'
	CharCTRLE          = '\x05'
	CharCTRLX          = '\x18'
)
View Source
const (
	LinuxScreen = iota + 1
	UsqlScreen
	MongoScreen
	TmuxScreen
	WindowsScreen
)
View Source
const (
	InputPreState = iota + 1
	InputState
	InVimState
	OutputState
)
View Source
const (
	UnAuth            = "unable to authenticate"
	ConnectRefusedErr = "connection refused" // 无监听端口或者端口被防火墙阻断
	IoTimeoutErr      = "i/o timeout"
	NoRouteErr        = "No route to host" //

	LoginFailed = "failed login" // telnet 连接失败

)
View Source
const FtpTargetPrefix = "FTP_FILES"

Variables

View Source
var (
	ErrMissClient      = errors.New("the protocol client has not installed")
	ErrUnMatchProtocol = errors.New("the protocols are not matched")
	ErrAPIFailed       = errors.New("api failed")
	ErrPermission      = errors.New("no permission")
	ErrNoAuthInfo      = errors.New("no auth info")
)
View Source
var ErrInvalidPort = errors.New("invalid port")
View Source
var ErrNoAvailable = errors.New("no available domain")

Functions

func DefaultEnterKeyPressHandler

func DefaultEnterKeyPressHandler(p []byte) bool

func IsEditEnterMode

func IsEditEnterMode(p []byte) bool

func IsEditExitMode

func IsEditExitMode(p []byte) bool

func IsPasswordPrompt

func IsPasswordPrompt(ps1 string) bool

func IsPrintable

func IsPrintable(s string) bool

func ParseAWSURLRegion

func ParseAWSURLRegion(s string) string

func ParseEndpointRegion

func ParseEndpointRegion(s string) string

func ParseUrlHostAndPort

func ParseUrlHostAndPort(clusterAddr string) (host string, port int, err error)

func ReplaceURLHostAndPort

func ReplaceURLHostAndPort(originUrl *url.URL, ip string, port int) string

Types

type CommandRecorder

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

func (*CommandRecorder) End

func (c *CommandRecorder) End()

func (*CommandRecorder) Record

func (c *CommandRecorder) Record(command *model.Command)

type CommandRule

type CommandRule struct {
	Acl  *model.CommandACL
	Item *model.CommandFilterItem
}

type CommandStorage

type CommandStorage interface {
	BulkSave(commands []*model.Command) error
	StorageType
}

func NewCommandStorage

func NewCommandStorage(jmsService *service.JMService, conf *model.TerminalConfig) CommandStorage

type ConnectionOption

type ConnectionOption func(options *ConnectionOptions)

func ConnectContainer

func ConnectContainer(info *ContainerInfo) ConnectionOption

func ConnectI18nLang

func ConnectI18nLang(lang string) ConnectionOption

func ConnectParams

func ConnectParams(params *ConnectionParams) ConnectionOption

func ConnectTokenAuthInfo

func ConnectTokenAuthInfo(authInfo *model.ConnectToken) ConnectionOption

type ConnectionOptions

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

func (*ConnectionOptions) ConnectMsg

func (opts *ConnectionOptions) ConnectMsg() string

func (*ConnectionOptions) TerminalTitle

func (opts *ConnectionOptions) TerminalTitle() string

type ConnectionParams

type ConnectionParams struct {
	DisableMySQLAutoHash bool
}

type Container

type Container struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

type ContainerInfo

type ContainerInfo struct {
	Namespace string
	PodName   string
	Container string
}

func (*ContainerInfo) K8sName

func (c *ContainerInfo) K8sName(name string) string

func (*ContainerInfo) String

func (c *ContainerInfo) String() string

type CurrentActiveUser

type CurrentActiveUser struct {
	UserId     string
	User       string
	RemoteAddr string
}

type ExecutedCommand

type ExecutedCommand struct {
	Command     string
	Output      string
	CreatedDate time.Time
	RiskLevel   int64
	User        CurrentActiveUser

	CmdFilterACLId string
	CmdGroupId     string
}

type FTPFileInfo

type FTPFileInfo struct {
	Target string
	// contains filtered or unexported fields
}

func (*FTPFileInfo) Close

func (f *FTPFileInfo) Close() error

func (*FTPFileInfo) WriteFromReader

func (f *FTPFileInfo) WriteFromReader(r io.Reader) error

type FTPFileRecorder

type FTPFileRecorder struct {
	TargetPrefix string
	MaxFileSize  int64
	// contains filtered or unexported fields
}

func GetFTPFileRecorder

func GetFTPFileRecorder(jmsService *service.JMService) *FTPFileRecorder

func NewFTPFileRecord

func NewFTPFileRecord(jmsService *service.JMService, storage FTPFileStorage, maxStore int64) *FTPFileRecorder

func (*FTPFileRecorder) ChunkedRecord

func (r *FTPFileRecorder) ChunkedRecord(ftpLog *model.FTPLog, readerAt io.ReaderAt, offset, totalSize int64) (err error)

func (*FTPFileRecorder) CreateFTPFileInfo

func (r *FTPFileRecorder) CreateFTPFileInfo(logData *model.FTPLog) (info *FTPFileInfo, err error)

func (*FTPFileRecorder) FinishFTPFile

func (r *FTPFileRecorder) FinishFTPFile(id string)

func (*FTPFileRecorder) Record

func (r *FTPFileRecorder) Record(ftpLog *model.FTPLog, reader io.Reader) (err error)

func (*FTPFileRecorder) UploadFile

func (r *FTPFileRecorder) UploadFile(maxRetry int, ftpLogId string)

type FTPFileStorage

type FTPFileStorage interface {
	Storage
}

func NewFTPFileStorage

func NewFTPFileStorage(jmsService *service.JMService, conf *model.TerminalConfig) FTPFileStorage

type K8sNode

type K8sNode struct {
	Name    string
	Type    string
	SubTree map[string]*K8sNode
}

func NewNode

func NewNode() *K8sNode

type K8sResourceTree

type K8sResourceTree struct {
	Root *K8sNode
}

func NewTree

func NewTree() *K8sResourceTree

func (*K8sResourceTree) InsertResource

func (tree *K8sResourceTree) InsertResource(ns, pod, container string)

func (*K8sResourceTree) SearchNamespaces

func (tree *K8sResourceTree) SearchNamespaces() []Namespace

type KubernetesClient

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

func NewKubernetesClient

func NewKubernetesClient(address, namespace, token string, gateway *model.Gateway) (*KubernetesClient, error)

func (*KubernetesClient) Close

func (kc *KubernetesClient) Close()

func (*KubernetesClient) GetKubeConfig

func (kc *KubernetesClient) GetKubeConfig(address, namespace, token string) string

func (*KubernetesClient) GetTreeData

func (kc *KubernetesClient) GetTreeData() (string, error)

func (*KubernetesClient) InitClient

func (kc *KubernetesClient) InitClient(address, namespace, token string, gateway *model.Gateway) error

type Namespace

type Namespace struct {
	Name string `json:"name"`
	Type string `json:"type"`
	Pods []Pod  `json:"pods"`
}

type Parser

type Parser struct {
	TerminalParser *TerminalParser
	// contains filtered or unexported fields
}

func (*Parser) Close

func (p *Parser) Close()

Close 关闭parser

func (*Parser) CommandRecordChan

func (p *Parser) CommandRecordChan() chan *ExecutedCommand

func (*Parser) CurrentScreenType

func (p *Parser) CurrentScreenType() int

func (*Parser) EmitCommandEvent

func (p *Parser) EmitCommandEvent(cmd string, outputBuf string)

func (*Parser) IsInZmodemRecvState

func (p *Parser) IsInZmodemRecvState() bool

func (*Parser) IsMatchCommandRule

func (p *Parser) IsMatchCommandRule(command string) (CommandRule,
	string, bool)

IsMatchCommandRule 判断命令是不是在过滤规则中

func (*Parser) IsNeedParse

func (p *Parser) IsNeedParse() bool

func (*Parser) NeedRecord

func (p *Parser) NeedRecord() bool

func (*Parser) ParseServerOutput

func (p *Parser) ParseServerOutput(b []byte) []byte

ParseServerOutput 解析服务器输出

func (*Parser) ParseStream

func (p *Parser) ParseStream(userInChan chan *exchange.RoomMessage, srvInChan <-chan []byte) (userOut, srvOut <-chan []byte)

ParseStream 解析数据流

func (*Parser) ParseUserInput

func (p *Parser) ParseUserInput(b []byte) []byte

ParseUserInput 解析用户的输入

func (*Parser) SetUserInputFilter

func (p *Parser) SetUserInputFilter(filter func([]byte) []byte)

func (*Parser) UpdateActiveUser

func (p *Parser) UpdateActiveUser(msg *exchange.RoomMessage)

type Pod

type Pod struct {
	Name       string      `json:"name"`
	Type       string      `json:"type"`
	Containers []Container `json:"containers"`
}

type ReplayStorage

type ReplayStorage interface {
	Storage
}

func NewReplayStorage

func NewReplayStorage(jmsService *service.JMService, conf *model.TerminalConfig) ReplayStorage

type ReplyInfo

type ReplyInfo struct {
	Width     int
	Height    int
	TimeStamp time.Time
}

type ReplyRecorder

type ReplyRecorder struct {
	SessionID string

	Target string
	Writer *asciinema.Writer
	// contains filtered or unexported fields
}

func NewReplayRecord

func NewReplayRecord(sid string, jmsService *service.JMService,
	storage ReplayStorage, info *ReplyInfo) (*ReplyRecorder, error)

func (*ReplyRecorder) End

func (r *ReplyRecorder) End()

func (*ReplyRecorder) Record

func (r *ReplyRecorder) Record(p []byte)

func (*ReplyRecorder) UploadGzipFile

func (r *ReplyRecorder) UploadGzipFile(maxRetry int)

type ScreenParser

type ScreenParser interface {
	Feed([]byte)
	GetCursorRow() string
}

type Server

type Server struct {
	ID       string
	UserConn UserConnection

	CreateSessionCallback   func() error
	ConnectedFailedCallback func(err error) error
	DisConnectedCallback    func() error

	OnSessionInfo func(info *SessionInfo)

	BroadcastEvent func(event *exchange.RoomMessage)
	// contains filtered or unexported fields
}

func NewServer

func NewServer(conn UserConnection, jmsService *service.JMService, opts ...ConnectionOption) (*Server, error)

func (*Server) CheckPermissionExpired

func (s *Server) CheckPermissionExpired(now time.Time) bool

func (*Server) ConvertErrorToReadableMsg

func (s *Server) ConvertErrorToReadableMsg(e error) string

func (*Server) GenerateCommandItem

func (s *Server) GenerateCommandItem(user, input, output string, item *ExecutedCommand) *model.Command

func (*Server) GetCommandRecorder

func (s *Server) GetCommandRecorder() *CommandRecorder

func (*Server) GetFilterParser

func (s *Server) GetFilterParser() *Parser

func (*Server) GetReplayRecorder

func (s *Server) GetReplayRecorder() *ReplyRecorder

func (*Server) IsKeyboardMode

func (s *Server) IsKeyboardMode() bool

func (*Server) Proxy

func (s *Server) Proxy()

func (*Server) ZmodemFileTransferEvent

func (s *Server) ZmodemFileTransferEvent(zinfo *zmodem.ZFileInfo, status bool)

type SessionInfo

type SessionInfo struct {
	Session *model.Session    `json:"session"`
	Perms   *model.Permission `json:"permission"`

	BackspaceAsCtrlH *bool `json:"backspaceAsCtrlH,omitempty"`
	CtrlCAsCtrlZ     bool  `json:"ctrlCAsCtrlZ"`

	ThemeName string `json:"themeName"`
}

type Storage

type Storage interface {
	Upload(gZipFile, target string) error
	StorageType
}

func GetStorage

func GetStorage(conf *model.TerminalConfig) Storage

type StorageType

type StorageType interface {
	TypeName() string
}

type SwitchSession

type SwitchSession struct {
	ID string

	MaxIdleTime int

	MaxSessionTime time.Time
	// contains filtered or unexported fields
}

func (*SwitchSession) Bridge

func (s *SwitchSession) Bridge(userConn UserConnection, srvConn srvconn.ServerConnection) (err error)

Bridge 桥接两个链接

func (*SwitchSession) CheckPermissionExpired

func (s *SwitchSession) CheckPermissionExpired(now time.Time) bool

func (*SwitchSession) PauseOperation

func (s *SwitchSession) PauseOperation(username string)

func (*SwitchSession) PermBecomeExpired

func (s *SwitchSession) PermBecomeExpired(code, detail string)

func (*SwitchSession) PermBecomeValid

func (s *SwitchSession) PermBecomeValid(code, detail string)

func (*SwitchSession) ResumeOperation

func (s *SwitchSession) ResumeOperation(username string)

func (*SwitchSession) Terminate

func (s *SwitchSession) Terminate(username string)

type TerminalParser

type TerminalParser struct {
	InputBuf bytes.Buffer
	Ps1sStr  string
	Screen   *terminalparser.Screen

	IsEnter func(p []byte) bool

	EmitCommands func(cmd, out string)
	// contains filtered or unexported fields
}

func (*TerminalParser) CheckSubScreen

func (s *TerminalParser) CheckSubScreen(b []byte)

func (*TerminalParser) Feed

func (s *TerminalParser) Feed(p []byte)

func (*TerminalParser) FindCommands

func (s *TerminalParser) FindCommands(cmds []string, startCmd string)

func (*TerminalParser) GetCursorRow

func (s *TerminalParser) GetCursorRow() string

func (*TerminalParser) GetPs1

func (s *TerminalParser) GetPs1() string

func (*TerminalParser) OnSize

func (s *TerminalParser) OnSize()

func (*TerminalParser) ResizeRows

func (s *TerminalParser) ResizeRows()

func (*TerminalParser) SetState

func (s *TerminalParser) SetState(state int)

func (*TerminalParser) TryInput

func (s *TerminalParser) TryInput() string

func (*TerminalParser) TryLastRowInput

func (s *TerminalParser) TryLastRowInput() string

func (*TerminalParser) TryMultipleCommands

func (s *TerminalParser) TryMultipleCommands()

func (*TerminalParser) TryOutput

func (s *TerminalParser) TryOutput() string

func (*TerminalParser) TrySrvOutput

func (s *TerminalParser) TrySrvOutput() string

func (*TerminalParser) TryTmuxInput

func (s *TerminalParser) TryTmuxInput() string

func (*TerminalParser) WriteInput

func (s *TerminalParser) WriteInput(chars []byte) (string, bool)

type UserConnection

type UserConnection interface {
	io.ReadWriteCloser
	ID() string
	WinCh() <-chan ssh.Window
	LoginFrom() string
	RemoteAddr() string
	Pty() ssh.Pty
	Context() context.Context
	HandleRoomEvent(event string, msg *exchange.RoomMessage)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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