proxy

package
v0.0.0-...-503ec33 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: GPL-3.0 Imports: 37 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 (
	CommandInputParserName  = "Command Input parser"
	CommandOutputParserName = "Command Output parser"
)
View Source
const (
	CharCleanRightLine = '\x0B'
	CharCTRLC          = '\x03'
	CharCTRLE          = '\x05'
	CharCTRLX          = '\x18'
)
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 IsEditEnterMode

func IsEditEnterMode(p []byte) bool

func IsEditExitMode

func IsEditExitMode(p []byte) 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 CmdParser

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

func NewCmdParser

func NewCmdParser(sid, name string) *CmdParser

func (*CmdParser) Close

func (cp *CmdParser) Close() error

func (*CmdParser) GetPs1

func (cp *CmdParser) GetPs1() string

func (*CmdParser) Parse

func (cp *CmdParser) Parse() []string

Parse 解析命令或输出

func (*CmdParser) SetPs1

func (cp *CmdParser) SetPs1(s string)

func (*CmdParser) WriteData

func (cp *CmdParser) WriteData(p []byte) (int, error)

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

func (f *FTPFileInfo) WriteChunk(p []byte, off int64) 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) 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) RecordChunkRead

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

func (*FTPFileRecorder) RecordFtpChunk

func (r *FTPFileRecorder) RecordFtpChunk(ftpLog *model.FTPLog, p []byte, off int64) (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 Parser

type Parser struct {
	// 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) 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 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 Server

type Server struct {
	ID       string
	UserConn UserConnection

	CreateSessionCallback    func() error
	ConnectedSuccessCallback 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) PauseOperation

func (s *SwitchSession) PauseOperation(username string)

func (*SwitchSession) ResumeOperation

func (s *SwitchSession) ResumeOperation(username string)

func (*SwitchSession) Terminate

func (s *SwitchSession) Terminate(username string)

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