Documentation ¶
Index ¶
- Constants
- Variables
- func AsExtType(pk PacketType) string
- func AsString(pk PacketType) string
- func B64DecodedLen(b64 string) int
- func GetMajorVersion(versionStr string) string
- func IsValidCompGenType(t string) bool
- func MarshalPacket(packet PacketType) ([]byte, error)
- func ParseShellStateVersion(fullVersionStr string) (string, string, error)
- func RegisterPacketType(typeStr string, rtype reflect.Type)
- func SendPacket(w io.Writer, packet PacketType) error
- func StateVersionsCompatible(v1 string, v2 string) bool
- type BarePacketType
- type CdPacketType
- type CmdDonePacketType
- type CmdFinalPacketType
- type CmdStartPacketType
- type CommandPacketType
- type CompGenPacketType
- type DataAckPacketType
- type DataEndPacketType
- type DataPacketType
- type DefaultUPR
- type DonePacketType
- type FileDataPacketType
- type FileInfo
- type FileStatPacketType
- type GetCmdPacketType
- type InitPacketType
- type LogPacketType
- type MessagePacketType
- type MessageUPR
- type ModelUpdatePacketType
- type OpenAICloudReqPacketType
- type OpenAICmdInfoChatMessage
- type OpenAICmdInfoPacketOutputType
- type OpenAIPacketType
- type OpenAIPromptMessageType
- type OpenAIUsageType
- type PacketParser
- func (p *PacketParser) GetErr() error
- func (p *PacketParser) GetNextResponse(ctx context.Context, reqId string) (RpcResponsePacketType, error)
- func (p *PacketParser) GetResponseIter(reqId string) *RpcResponseIter
- func (p *PacketParser) RegisterRpc(reqId string) chan RpcResponsePacketType
- func (p *PacketParser) RegisterRpcSz(reqId string, queueSize int) chan RpcResponsePacketType
- func (p *PacketParser) SetErr(err error)
- func (p *PacketParser) UnRegisterRpc(reqId string)
- func (p *PacketParser) WaitForResponse(ctx context.Context, reqId string) RpcResponsePacketType
- type PacketParserOpts
- type PacketSender
- func (sender *PacketSender) Close()
- func (sender *PacketSender) SendErrorResponse(reqId string, err error) error
- func (sender *PacketSender) SendLogPacket(entry wlog.LogEntry)
- func (sender *PacketSender) SendMessageFmt(fmtStr string, args ...interface{}) error
- func (sender *PacketSender) SendPacket(pk PacketType) error
- func (sender *PacketSender) SendPacketCtx(ctx context.Context, pk PacketType) error
- func (sender *PacketSender) SendResponse(reqId string, data interface{}) error
- func (sender *PacketSender) WaitForDone() error
- type PacketType
- type PingPacketType
- type RawPacketType
- type ReInitPacketType
- type RemoteFd
- type ResponsePacketType
- type RpcEntry
- type RpcFollowUpPacketType
- type RpcInputPacketType
- type RpcPacketType
- type RpcResponseIter
- type RpcResponsePacketType
- type RunDataType
- type RunPacketBuilder
- type RunPacketType
- type SendError
- type ShellState
- func (state ShellState) ApproximateSize() int64
- func (state *ShellState) DecodeShellState(barr []byte) error
- func (state ShellState) Dump()
- func (state ShellState) EncodeAndHash() (string, []byte)
- func (state *ShellState) GetHashVal(force bool) string
- func (state ShellState) GetLineDiffSplitString() string
- func (state ShellState) GetShellType() string
- func (state ShellState) IsEmpty() bool
- func (state ShellState) MarshalJSON() ([]byte, error)
- func (state *ShellState) UnmarshalJSON(jsonBytes []byte) error
- type ShellStateDiff
- func (sdiff *ShellStateDiff) DecodeShellStateDiff(barr []byte) error
- func (sdiff ShellStateDiff) Dump(vars bool, aliases bool, funcs bool)
- func (sdiff ShellStateDiff) EncodeAndHash() (string, []byte)
- func (sdiff *ShellStateDiff) GetHashVal(force bool) string
- func (diff ShellStateDiff) GetShellType() string
- func (sdiff ShellStateDiff) MarshalJSON() ([]byte, error)
- func (sdiff *ShellStateDiff) UnmarshalJSON(jsonBytes []byte) error
- type ShellStatePacketType
- type ShellStatePtr
- type ShellStateStats
- type SpecialInputPacketType
- type StreamFilePacketType
- type StreamFileResponseType
- type SudoRequestPacketType
- type SudoResponsePacketType
- type TermOpts
- type UnknownPacketReporter
- type UntailCmdPacketType
- type WinSize
- type WriteFileDonePacketType
- type WriteFilePacketType
- type WriteFileReadyPacketType
Constants ¶
const ( RunPacketStr = "run" // rpc PingPacketStr = "ping" InitPacketStr = "init" DataPacketStr = "data" // command DataAckPacketStr = "dataack" // command CmdStartPacketStr = "cmdstart" // rpc-response CmdDonePacketStr = "cmddone" // command DataEndPacketStr = "dataend" ResponsePacketStr = "resp" // rpc-response DonePacketStr = "done" MessagePacketStr = "message" GetCmdPacketStr = "getcmd" // rpc UntailCmdPacketStr = "untailcmd" // rpc CdPacketStr = "cd" // rpc RawPacketStr = "raw" SpecialInputPacketStr = "sinput" // command CompGenPacketStr = "compgen" // rpc ReInitPacketStr = "reinit" // rpc CmdFinalPacketStr = "cmdfinal" // command, pushed at the "end" of a command (fail-safe for no cmddone) StreamFilePacketStr = "streamfile" // rpc StreamFileResponseStr = "streamfileresp" // rpc-response WriteFilePacketStr = "writefile" // rpc WriteFileReadyPacketStr = "writefileready" // rpc-response WriteFileDonePacketStr = "writefiledone" // rpc-response FileDataPacketStr = "filedata" FileStatPacketStr = "filestat" LogPacketStr = "log" // logging packet (sent from waveshell back to server) ShellStatePacketStr = "shellstate" RpcInputPacketStr = "rpcinput" // rpc-followup SudoRequestPacketStr = "sudorequest" SudoResponsePacketStr = "sudoresponse" OpenAIPacketStr = "openai" // other OpenAICloudReqStr = "openai-cloudreq" )
const ( ShellType_bash = "bash" ShellType_zsh = "zsh" )
const ( EC_InvalidCwd = "ERRCWD" EC_CmdNotRunning = "CMDNOTRUNNING" )
const MaxCompGenValues = 100
const OpenAICmdInfoChatGreetingMessage = "" /* 192-byte string literal not displayed */
const PacketEOFStr = "EOF"
const PacketSenderQueueSize = 20
const ShellStateDiffPackVersion = 0
const ShellStatePackVersion = 0
Variables ¶
var GlobalDebug = false
var TypeStrToFactory map[string]reflect.Type
Functions ¶
func AsExtType ¶
func AsExtType(pk PacketType) string
func AsString ¶
func AsString(pk PacketType) string
func B64DecodedLen ¶
func GetMajorVersion ¶
returns a string like "v4" ("" is an unparseable version)
func IsValidCompGenType ¶
func MarshalPacket ¶
func MarshalPacket(packet PacketType) ([]byte, error)
func ParseShellStateVersion ¶
returns (shell, version, error)
func RegisterPacketType ¶
func SendPacket ¶
func SendPacket(w io.Writer, packet PacketType) error
func StateVersionsCompatible ¶
we're going to allow different versions (as long as shelltype is the same) before we required version numbers to match exactly which was too restrictive
Types ¶
type BarePacketType ¶
type BarePacketType struct {
Type string `json:"type"`
}
type CdPacketType ¶
type CdPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` Dir string `json:"dir"` }
func MakeCdPacket ¶
func MakeCdPacket() *CdPacketType
func (*CdPacketType) GetReqId ¶
func (p *CdPacketType) GetReqId() string
func (*CdPacketType) GetType ¶
func (*CdPacketType) GetType() string
type CmdDonePacketType ¶
type CmdDonePacketType struct { Type string `json:"type"` Ts int64 `json:"ts"` CK base.CommandKey `json:"ck"` ExitCode int `json:"exitcode"` DurationMs int64 `json:"durationms"` FinalState *ShellState `json:"finalstate,omitempty"` FinalStateDiff *ShellStateDiff `json:"finalstatediff,omitempty"` FinalStateBasePtr *ShellStatePtr `json:"finalstatebaseptr,omitempty"` }
func MakeCmdDonePacket ¶
func MakeCmdDonePacket(ck base.CommandKey) *CmdDonePacketType
func (*CmdDonePacketType) GetCK ¶
func (p *CmdDonePacketType) GetCK() base.CommandKey
func (*CmdDonePacketType) GetType ¶
func (*CmdDonePacketType) GetType() string
type CmdFinalPacketType ¶
type CmdFinalPacketType struct { Type string `json:"type"` Ts int64 `json:"ts"` CK base.CommandKey `json:"ck"` Error string `json:"error"` }
func MakeCmdFinalPacket ¶
func MakeCmdFinalPacket(ck base.CommandKey) *CmdFinalPacketType
func (*CmdFinalPacketType) GetCK ¶
func (pk *CmdFinalPacketType) GetCK() base.CommandKey
func (*CmdFinalPacketType) GetType ¶
func (*CmdFinalPacketType) GetType() string
type CmdStartPacketType ¶
type CmdStartPacketType struct { Type string `json:"type"` RespId string `json:"respid,omitempty"` Ts int64 `json:"ts"` CK base.CommandKey `json:"ck"` Pid int `json:"pid,omitempty"` WaveshellPid int `json:"waveshellpid,omitempty"` }
func MakeCmdStartPacket ¶
func MakeCmdStartPacket(reqId string) *CmdStartPacketType
func (*CmdStartPacketType) GetResponseDone ¶
func (*CmdStartPacketType) GetResponseDone() bool
func (*CmdStartPacketType) GetResponseId ¶
func (p *CmdStartPacketType) GetResponseId() string
func (*CmdStartPacketType) GetType ¶
func (*CmdStartPacketType) GetType() string
type CommandPacketType ¶
type CommandPacketType interface { GetType() string GetCK() base.CommandKey }
type CompGenPacketType ¶
type CompGenPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` Prefix string `json:"prefix"` CompType string `json:"comptype"` Cwd string `json:"cwd"` }
func MakeCompGenPacket ¶
func MakeCompGenPacket() *CompGenPacketType
func (*CompGenPacketType) GetReqId ¶
func (p *CompGenPacketType) GetReqId() string
func (*CompGenPacketType) GetType ¶
func (*CompGenPacketType) GetType() string
type DataAckPacketType ¶
type DataAckPacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` FdNum int `json:"fdnum"` AckLen int `json:"acklen"` Error string `json:"error,omitempty"` }
func MakeDataAckPacket ¶
func MakeDataAckPacket() *DataAckPacketType
func (*DataAckPacketType) GetCK ¶
func (p *DataAckPacketType) GetCK() base.CommandKey
func (*DataAckPacketType) GetType ¶
func (*DataAckPacketType) GetType() string
func (*DataAckPacketType) String ¶
func (p *DataAckPacketType) String() string
type DataEndPacketType ¶
type DataEndPacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` }
func MakeDataEndPacket ¶
func MakeDataEndPacket(ck base.CommandKey) *DataEndPacketType
func (*DataEndPacketType) GetType ¶
func (*DataEndPacketType) GetType() string
type DataPacketType ¶
type DataPacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` FdNum int `json:"fdnum"` Data64 string `json:"data64"` // base64 encoded Eof bool `json:"eof,omitempty"` Error string `json:"error,omitempty"` }
func MakeDataPacket ¶
func MakeDataPacket() *DataPacketType
func (*DataPacketType) GetCK ¶
func (p *DataPacketType) GetCK() base.CommandKey
func (*DataPacketType) GetType ¶
func (*DataPacketType) GetType() string
func (*DataPacketType) String ¶
func (p *DataPacketType) String() string
type DefaultUPR ¶
type DefaultUPR struct{}
func (DefaultUPR) UnknownPacket ¶
func (DefaultUPR) UnknownPacket(pk PacketType)
type DonePacketType ¶
type DonePacketType struct {
Type string `json:"type"`
}
func MakeDonePacket ¶
func MakeDonePacket() *DonePacketType
func (*DonePacketType) GetType ¶
func (*DonePacketType) GetType() string
type FileDataPacketType ¶
type FileDataPacketType struct { Type string `json:"type"` RespId string `json:"respid"` Data []byte `json:"data"` Eof bool `json:"eof,omitempty"` Error string `json:"error,omitempty"` }
these packets can travel either direction so it is both a RpcResponsePacketType and an RpcFollowUpPacketType
func MakeFileDataPacket ¶
func MakeFileDataPacket(reqId string) *FileDataPacketType
func (*FileDataPacketType) GetAssociatedReqId ¶
func (p *FileDataPacketType) GetAssociatedReqId() string
func (*FileDataPacketType) GetResponseDone ¶
func (p *FileDataPacketType) GetResponseDone() bool
func (*FileDataPacketType) GetResponseId ¶
func (p *FileDataPacketType) GetResponseId() string
func (*FileDataPacketType) GetType ¶
func (*FileDataPacketType) GetType() string
type FileInfo ¶
type FileInfo struct { Name string `json:"name"` Size int64 `json:"size"` ModTs int64 `json:"modts"` IsDir bool `json:"isdir,omitempty"` Perm int `json:"perm"` MimeType string `json:"mimetype,omitempty"` NotFound bool `json:"notfound,omitempty"` // when NotFound is set, Perm will be set to permission for directory }
type FileStatPacketType ¶
type FileStatPacketType struct { Type string `json:"type"` Name string `json:"name"` Size int64 `json:"size"` ModTs time.Time `json:"modts"` IsDir bool `json:"isdir"` Perm int `json:"perm"` ModeStr string `json:"modestr"` Error string `json:"error"` Done bool `json:"done"` RespId string `json:"respid"` Path string `json:"path"` }
func MakeFileStatPacketFromFileInfo ¶
func MakeFileStatPacketFromFileInfo(finfo fs.FileInfo, err string, done bool) *FileStatPacketType
func MakeFileStatPacketType ¶
func MakeFileStatPacketType() *FileStatPacketType
func (*FileStatPacketType) GetResponseDone ¶
func (p *FileStatPacketType) GetResponseDone() bool
func (*FileStatPacketType) GetResponseId ¶
func (p *FileStatPacketType) GetResponseId() string
func (*FileStatPacketType) GetType ¶
func (*FileStatPacketType) GetType() string
type GetCmdPacketType ¶
type GetCmdPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` CK base.CommandKey `json:"ck"` PtyPos int64 `json:"ptypos"` RunPos int64 `json:"runpos"` Tail bool `json:"tail,omitempty"` PtyOnly bool `json:"ptyonly,omitempty"` }
func MakeGetCmdPacket ¶
func MakeGetCmdPacket() *GetCmdPacketType
func (*GetCmdPacketType) GetReqId ¶
func (p *GetCmdPacketType) GetReqId() string
func (*GetCmdPacketType) GetType ¶
func (*GetCmdPacketType) GetType() string
type InitPacketType ¶
type InitPacketType struct { Type string `json:"type"` RespId string `json:"respid,omitempty"` Version string `json:"version"` BuildTime string `json:"buildtime,omitempty"` WaveshellHomeDir string `json:"waveshellhomedir,omitempty"` HomeDir string `json:"homedir,omitempty"` User string `json:"user,omitempty"` HostName string `json:"hostname,omitempty"` NotFound bool `json:"notfound,omitempty"` UName string `json:"uname,omitempty"` Shell string `json:"shell,omitempty"` RemoteId string `json:"remoteid,omitempty"` }
func MakeInitPacket ¶
func MakeInitPacket() *InitPacketType
func (*InitPacketType) GetResponseDone ¶
func (pk *InitPacketType) GetResponseDone() bool
func (*InitPacketType) GetResponseId ¶
func (pk *InitPacketType) GetResponseId() string
func (*InitPacketType) GetType ¶
func (*InitPacketType) GetType() string
type LogPacketType ¶
func MakeLogPacket ¶
func MakeLogPacket(entry wlog.LogEntry) *LogPacketType
func (*LogPacketType) GetType ¶
func (*LogPacketType) GetType() string
func (*LogPacketType) String ¶
func (p *LogPacketType) String() string
type MessagePacketType ¶
type MessagePacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck,omitempty"` Message string `json:"message"` }
func FmtMessagePacket ¶
func FmtMessagePacket(fmtStr string, args ...interface{}) *MessagePacketType
func MakeMessagePacket ¶
func MakeMessagePacket(message string) *MessagePacketType
func (*MessagePacketType) GetType ¶
func (*MessagePacketType) GetType() string
func (*MessagePacketType) String ¶
func (p *MessagePacketType) String() string
type MessageUPR ¶
type MessageUPR struct { CK base.CommandKey Sender *PacketSender }
func (MessageUPR) UnknownPacket ¶
func (upr MessageUPR) UnknownPacket(pk PacketType)
type ModelUpdatePacketType ¶
type OpenAICloudReqPacketType ¶
type OpenAICloudReqPacketType struct { Type string `json:"type"` ClientId string `json:"clientid"` Prompt []OpenAIPromptMessageType `json:"prompt"` MaxTokens int `json:"maxtokens,omitempty"` MaxChoices int `json:"maxchoices,omitempty"` }
func MakeOpenAICloudReqPacket ¶
func MakeOpenAICloudReqPacket() *OpenAICloudReqPacketType
func (*OpenAICloudReqPacketType) GetType ¶
func (*OpenAICloudReqPacketType) GetType() string
type OpenAICmdInfoChatMessage ¶
type OpenAICmdInfoChatMessage struct { MessageID int `json:"messageid"` IsAssistantResponse bool `json:"isassistantresponse,omitempty"` AssistantResponse *OpenAICmdInfoPacketOutputType `json:"assistantresponse,omitempty"` UserQuery string `json:"userquery,omitempty"` UserEngineeredQuery string `json:"userengineeredquery,omitempty"` }
type OpenAIPacketType ¶
type OpenAIPacketType struct { Type string `json:"type"` Model string `json:"model,omitempty"` Created int64 `json:"created,omitempty"` FinishReason string `json:"finish_reason,omitempty"` Usage *OpenAIUsageType `json:"usage,omitempty"` Index int `json:"index,omitempty"` Text string `json:"text,omitempty"` Error string `json:"error,omitempty"` }
func MakeOpenAIPacket ¶
func MakeOpenAIPacket() *OpenAIPacketType
func (*OpenAIPacketType) GetType ¶
func (*OpenAIPacketType) GetType() string
type OpenAIPromptMessageType ¶
type OpenAIUsageType ¶
type PacketParser ¶
type PacketParser struct { Lock *sync.Mutex MainCh chan PacketType RpcMap map[string]*RpcEntry RpcHandler bool Err error }
func CombinePacketParsers ¶
func CombinePacketParsers(p1 *PacketParser, p2 *PacketParser, rpcHandler bool) *PacketParser
func MakePacketParser ¶
func MakePacketParser(input io.Reader, opts *PacketParserOpts) *PacketParser
func (*PacketParser) GetErr ¶
func (p *PacketParser) GetErr() error
func (*PacketParser) GetNextResponse ¶
func (p *PacketParser) GetNextResponse(ctx context.Context, reqId string) (RpcResponsePacketType, error)
func (*PacketParser) GetResponseIter ¶
func (p *PacketParser) GetResponseIter(reqId string) *RpcResponseIter
func (*PacketParser) RegisterRpc ¶
func (p *PacketParser) RegisterRpc(reqId string) chan RpcResponsePacketType
func (*PacketParser) RegisterRpcSz ¶
func (p *PacketParser) RegisterRpcSz(reqId string, queueSize int) chan RpcResponsePacketType
func (*PacketParser) SetErr ¶
func (p *PacketParser) SetErr(err error)
func (*PacketParser) UnRegisterRpc ¶
func (p *PacketParser) UnRegisterRpc(reqId string)
func (*PacketParser) WaitForResponse ¶
func (p *PacketParser) WaitForResponse(ctx context.Context, reqId string) RpcResponsePacketType
should have already registered rpc
type PacketParserOpts ¶
type PacketSender ¶
type PacketSender struct { Lock *sync.Mutex SendCh chan PacketType Done bool DoneCh chan bool ErrHandler func(*PacketSender, PacketType, error) ExitErr error }
func MakeChannelPacketSender ¶
func MakeChannelPacketSender(packetCh chan PacketType) *PacketSender
func MakePacketSender ¶
func MakePacketSender(output io.Writer, errHandler func(*PacketSender, PacketType, error)) *PacketSender
func (*PacketSender) Close ¶
func (sender *PacketSender) Close()
func (*PacketSender) SendErrorResponse ¶
func (sender *PacketSender) SendErrorResponse(reqId string, err error) error
func (*PacketSender) SendLogPacket ¶
func (sender *PacketSender) SendLogPacket(entry wlog.LogEntry)
func (*PacketSender) SendMessageFmt ¶
func (sender *PacketSender) SendMessageFmt(fmtStr string, args ...interface{}) error
func (*PacketSender) SendPacket ¶
func (sender *PacketSender) SendPacket(pk PacketType) error
func (*PacketSender) SendPacketCtx ¶
func (sender *PacketSender) SendPacketCtx(ctx context.Context, pk PacketType) error
func (*PacketSender) SendResponse ¶
func (sender *PacketSender) SendResponse(reqId string, data interface{}) error
func (*PacketSender) WaitForDone ¶
func (sender *PacketSender) WaitForDone() error
returns ExitErr if set
type PacketType ¶
type PacketType interface {
GetType() string
}
func MakePacket ¶
func MakePacket(packetType string) (PacketType, error)
func ParseJsonPacket ¶
func ParseJsonPacket(jsonBuf []byte) (PacketType, error)
type PingPacketType ¶
type PingPacketType struct {
Type string `json:"type"`
}
func MakePingPacket ¶
func MakePingPacket() *PingPacketType
func (*PingPacketType) GetType ¶
func (*PingPacketType) GetType() string
type RawPacketType ¶
func MakeRawPacket ¶
func MakeRawPacket(val string) *RawPacketType
func (*RawPacketType) GetType ¶
func (*RawPacketType) GetType() string
func (*RawPacketType) String ¶
func (p *RawPacketType) String() string
type ReInitPacketType ¶
type ReInitPacketType struct { Type string `json:"type"` ShellType string `json:"shelltype"` ReqId string `json:"reqid"` }
func MakeReInitPacket ¶
func MakeReInitPacket() *ReInitPacketType
func (*ReInitPacketType) GetReqId ¶
func (p *ReInitPacketType) GetReqId() string
func (*ReInitPacketType) GetType ¶
func (*ReInitPacketType) GetType() string
type ResponsePacketType ¶
type ResponsePacketType struct { Type string `json:"type"` RespId string `json:"respid"` Success bool `json:"success"` Error string `json:"error,omitempty"` ErrorCode string `json:"errorcode,omitempty"` // can be used for structured errors Data interface{} `json:"data,omitempty"` }
func MakeErrorResponsePacket ¶
func MakeErrorResponsePacket(reqId string, err error) *ResponsePacketType
func MakeResponsePacket ¶
func MakeResponsePacket(reqId string, data interface{}) *ResponsePacketType
func (*ResponsePacketType) Err ¶
func (p *ResponsePacketType) Err() error
func (*ResponsePacketType) GetResponseDone ¶
func (*ResponsePacketType) GetResponseDone() bool
func (*ResponsePacketType) GetResponseId ¶
func (p *ResponsePacketType) GetResponseId() string
func (*ResponsePacketType) GetType ¶
func (*ResponsePacketType) GetType() string
func (*ResponsePacketType) String ¶
func (p *ResponsePacketType) String() string
type RpcEntry ¶
type RpcEntry struct { ReqId string RespCh chan RpcResponsePacketType }
type RpcFollowUpPacketType ¶
RpcPackets initiate an Rpc. these can be part of the data passed back and forth
type RpcInputPacketType ¶
type RpcInputPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` Data []byte `json:"data"` }
func MakeRpcInputPacket ¶
func MakeRpcInputPacket(reqId string) *RpcInputPacketType
func (*RpcInputPacketType) GetAssociatedReqId ¶
func (p *RpcInputPacketType) GetAssociatedReqId() string
func (*RpcInputPacketType) GetType ¶
func (*RpcInputPacketType) GetType() string
type RpcPacketType ¶
type RpcResponseIter ¶
type RpcResponseIter struct { ReqId string Parser *PacketParser }
func (*RpcResponseIter) Close ¶
func (iter *RpcResponseIter) Close()
func (*RpcResponseIter) Next ¶
func (iter *RpcResponseIter) Next(ctx context.Context) (RpcResponsePacketType, error)
type RpcResponsePacketType ¶
type RunDataType ¶
type RunPacketBuilder ¶
type RunPacketBuilder struct {
RunMap map[base.CommandKey]*RunPacketType
}
todo: clean hanging entries in RunMap when in server mode
func MakeRunPacketBuilder ¶
func MakeRunPacketBuilder() *RunPacketBuilder
func (*RunPacketBuilder) ProcessPacket ¶
func (b *RunPacketBuilder) ProcessPacket(pk PacketType) (bool, *RunPacketType)
returns (consumed, fullRunPacket)
type RunPacketType ¶
type RunPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` CK base.CommandKey `json:"ck"` ShellType string `json:"shelltype"` // added in Wave v0.6.0 (either "bash" or "zsh") (set by remote.go) Command string `json:"command"` State *ShellState `json:"state,omitempty"` StatePtr *ShellStatePtr `json:"stateptr,omitempty"` // added in Wave v0.7.2 StateComplete bool `json:"statecomplete,omitempty"` // set to true if state is complete (the default env should not be set) UsePty bool `json:"usepty,omitempty"` // Set to true if the command should be run in a pty. This will write all output to the stdout file descriptor with PTY formatting. TermOpts *TermOpts `json:"termopts,omitempty"` Fds []RemoteFd `json:"fds,omitempty"` RunData []RunDataType `json:"rundata,omitempty"` Detached bool `json:"detached,omitempty"` ReturnState bool `json:"returnstate,omitempty"` IsSudo bool `json:"issudo,omitempty"` Timeout time.Duration `json:"timeout"` // TODO: added vnext. This is the timeout for the command to run. If the command does not complete in this time, it will be killed. The default zero value will not impose a timeout. }
func MakeRunPacket ¶
func MakeRunPacket() *RunPacketType
func (*RunPacketType) GetReqId ¶
func (p *RunPacketType) GetReqId() string
func (*RunPacketType) GetType ¶
func (*RunPacketType) GetType() string
type SendError ¶
type ShellState ¶
type ShellState struct { Version string `json:"version"` // [type] [semver] Cwd string `json:"cwd,omitempty"` ShellVars []byte `json:"shellvars,omitempty"` Aliases string `json:"aliases,omitempty"` Funcs string `json:"funcs,omitempty"` Error string `json:"error,omitempty"` HashVal string `json:"-"` }
func (ShellState) ApproximateSize ¶
func (state ShellState) ApproximateSize() int64
func (*ShellState) DecodeShellState ¶
func (state *ShellState) DecodeShellState(barr []byte) error
func (ShellState) Dump ¶
func (state ShellState) Dump()
func (ShellState) EncodeAndHash ¶
func (state ShellState) EncodeAndHash() (string, []byte)
returns (SHA1, encoded-state)
func (*ShellState) GetHashVal ¶
func (state *ShellState) GetHashVal(force bool) string
caches HashVal in struct
func (ShellState) GetLineDiffSplitString ¶
func (state ShellState) GetLineDiffSplitString() string
func (ShellState) GetShellType ¶
func (state ShellState) GetShellType() string
func (ShellState) IsEmpty ¶
func (state ShellState) IsEmpty() bool
func (ShellState) MarshalJSON ¶
func (state ShellState) MarshalJSON() ([]byte, error)
func (*ShellState) UnmarshalJSON ¶
func (state *ShellState) UnmarshalJSON(jsonBytes []byte) error
type ShellStateDiff ¶
type ShellStateDiff struct { Version string `json:"version"` // [type] [semver] (note this should *always* be set even if the same as base) BaseHash string `json:"basehash"` DiffHashArr []string `json:"diffhasharr,omitempty"` Cwd string `json:"cwd,omitempty"` VarsDiff []byte `json:"shellvarsdiff,omitempty"` // vardiff AliasesDiff []byte `json:"aliasesdiff,omitempty"` // linediff FuncsDiff []byte `json:"funcsdiff,omitempty"` // linediff Error string `json:"error,omitempty"` HashVal string `json:"-"` }
func (*ShellStateDiff) DecodeShellStateDiff ¶
func (sdiff *ShellStateDiff) DecodeShellStateDiff(barr []byte) error
func (ShellStateDiff) EncodeAndHash ¶
func (sdiff ShellStateDiff) EncodeAndHash() (string, []byte)
func (*ShellStateDiff) GetHashVal ¶
func (sdiff *ShellStateDiff) GetHashVal(force bool) string
caches HashVal in struct
func (ShellStateDiff) GetShellType ¶
func (diff ShellStateDiff) GetShellType() string
func (ShellStateDiff) MarshalJSON ¶
func (sdiff ShellStateDiff) MarshalJSON() ([]byte, error)
func (*ShellStateDiff) UnmarshalJSON ¶
func (sdiff *ShellStateDiff) UnmarshalJSON(jsonBytes []byte) error
type ShellStatePacketType ¶
type ShellStatePacketType struct { Type string `json:"type"` ShellType string `json:"shelltype"` RespId string `json:"respid,omitempty"` State *ShellState `json:"state"` Stats *ShellStateStats `json:"stats"` Error string `json:"error,omitempty"` }
func MakeShellStatePacket ¶
func MakeShellStatePacket() *ShellStatePacketType
func (*ShellStatePacketType) GetResponseDone ¶
func (p *ShellStatePacketType) GetResponseDone() bool
func (*ShellStatePacketType) GetResponseId ¶
func (p *ShellStatePacketType) GetResponseId() string
func (*ShellStatePacketType) GetType ¶
func (*ShellStatePacketType) GetType() string
func (*ShellStatePacketType) String ¶
func (p *ShellStatePacketType) String() string
type ShellStatePtr ¶
type ShellStatePtr struct { BaseHash string `json:"basehash"` DiffHashArr []string `json:"diffhasharr,omitempty"` }
func (*ShellStatePtr) IsEmpty ¶
func (ssptr *ShellStatePtr) IsEmpty() bool
type ShellStateStats ¶
type SpecialInputPacketType ¶
type SpecialInputPacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` SigName string `json:"signame,omitempty"` // passed to unix.SignalNum (needs 'SIG' prefix, e.g. "SIGTERM"), also accepts a number (e.g. "9") WinSize *WinSize `json:"winsize,omitempty"` }
SigNum gets sent to process via a signal WinSize, if set, will run TIOCSWINSZ to set size, and then send SIGWINCH
func MakeSpecialInputPacket ¶
func MakeSpecialInputPacket() *SpecialInputPacketType
func (*SpecialInputPacketType) GetCK ¶
func (p *SpecialInputPacketType) GetCK() base.CommandKey
func (*SpecialInputPacketType) GetType ¶
func (*SpecialInputPacketType) GetType() string
type StreamFilePacketType ¶
type StreamFilePacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` Path string `json:"path"` ByteRange []int64 `json:"byterange"` // works like the http "Range" header (multiple ranges are not allowed) StatOnly bool `json:"statonly,omitempty"` // set if you just want the stat response (no data returned) }
func MakeStreamFilePacket ¶
func MakeStreamFilePacket() *StreamFilePacketType
func (*StreamFilePacketType) GetReqId ¶
func (p *StreamFilePacketType) GetReqId() string
func (*StreamFilePacketType) GetType ¶
func (*StreamFilePacketType) GetType() string
type StreamFileResponseType ¶
type StreamFileResponseType struct { Type string `json:"type"` RespId string `json:"respid"` Done bool `json:"done,omitempty"` Info *FileInfo `json:"info,omitempty"` Error string `json:"error,omitempty"` }
func MakeStreamFileResponse ¶
func MakeStreamFileResponse(respId string) *StreamFileResponseType
func (*StreamFileResponseType) GetResponseDone ¶
func (p *StreamFileResponseType) GetResponseDone() bool
func (*StreamFileResponseType) GetResponseId ¶
func (p *StreamFileResponseType) GetResponseId() string
func (*StreamFileResponseType) GetType ¶
func (*StreamFileResponseType) GetType() string
type SudoRequestPacketType ¶
type SudoRequestPacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` ShellPubKey []byte `json:"shellpubkey"` SudoStatus string `json:"sudostatus"` ErrStr string `json:"errstr"` }
func MakeSudoRequestPacket ¶
func MakeSudoRequestPacket(ck base.CommandKey, pubKey []byte, sudoStatus string) *SudoRequestPacketType
func (*SudoRequestPacketType) GetCK ¶
func (p *SudoRequestPacketType) GetCK() base.CommandKey
func (*SudoRequestPacketType) GetType ¶
func (*SudoRequestPacketType) GetType() string
type SudoResponsePacketType ¶
type SudoResponsePacketType struct { Type string `json:"type"` CK base.CommandKey `json:"ck"` Secret []byte `json:"secret"` SrvPubKey []byte `json:"srvpubkey"` }
func MakeSudoResponsePacket ¶
func MakeSudoResponsePacket(ck base.CommandKey, secret []byte, srvPubKey []byte) *SudoResponsePacketType
func (*SudoResponsePacketType) GetCK ¶
func (p *SudoResponsePacketType) GetCK() base.CommandKey
func (*SudoResponsePacketType) GetType ¶
func (*SudoResponsePacketType) GetType() string
type UnknownPacketReporter ¶
type UnknownPacketReporter interface {
UnknownPacket(pk PacketType)
}
type UntailCmdPacketType ¶
type UntailCmdPacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` CK base.CommandKey `json:"ck"` }
func MakeUntailCmdPacket ¶
func MakeUntailCmdPacket() *UntailCmdPacketType
func (*UntailCmdPacketType) GetReqId ¶
func (p *UntailCmdPacketType) GetReqId() string
func (*UntailCmdPacketType) GetType ¶
func (*UntailCmdPacketType) GetType() string
type WriteFileDonePacketType ¶
type WriteFileDonePacketType struct { Type string `json:"type"` RespId string `json:"reqid"` Error string `json:"error,omitempty"` }
func MakeWriteFileDonePacket ¶
func MakeWriteFileDonePacket(reqId string) *WriteFileDonePacketType
func (*WriteFileDonePacketType) GetResponseDone ¶
func (p *WriteFileDonePacketType) GetResponseDone() bool
func (*WriteFileDonePacketType) GetResponseId ¶
func (p *WriteFileDonePacketType) GetResponseId() string
func (*WriteFileDonePacketType) GetType ¶
func (*WriteFileDonePacketType) GetType() string
type WriteFilePacketType ¶
type WriteFilePacketType struct { Type string `json:"type"` ReqId string `json:"reqid"` UseTemp bool `json:"usetemp,omitempty"` Path string `json:"path"` }
func MakeWriteFilePacket ¶
func MakeWriteFilePacket() *WriteFilePacketType
func (*WriteFilePacketType) GetReqId ¶
func (p *WriteFilePacketType) GetReqId() string
func (*WriteFilePacketType) GetType ¶
func (*WriteFilePacketType) GetType() string
type WriteFileReadyPacketType ¶
type WriteFileReadyPacketType struct { Type string `json:"type"` RespId string `json:"reqid"` Error string `json:"error,omitempty"` }
func MakeWriteFileReadyPacket ¶
func MakeWriteFileReadyPacket(reqId string) *WriteFileReadyPacketType
func (*WriteFileReadyPacketType) GetResponseDone ¶
func (p *WriteFileReadyPacketType) GetResponseDone() bool
func (*WriteFileReadyPacketType) GetResponseId ¶
func (p *WriteFileReadyPacketType) GetResponseId() string
func (*WriteFileReadyPacketType) GetType ¶
func (*WriteFileReadyPacketType) GetType() string