pty

package
v0.0.0-...-fddd243 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2026 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_aop_pty_protocol_proto protoreflect.FileDescriptor

Functions

This section is empty.

Types

type Attach

type Attach struct {
	StreamId  string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Cols      int32  `protobuf:"varint,3,opt,name=cols,proto3" json:"cols,omitempty"`
	Rows      int32  `protobuf:"varint,4,opt,name=rows,proto3" json:"rows,omitempty"`
	// contains filtered or unexported fields
}

func (*Attach) Descriptor deprecated

func (*Attach) Descriptor() ([]byte, []int)

Deprecated: Use Attach.ProtoReflect.Descriptor instead.

func (*Attach) GetCols

func (x *Attach) GetCols() int32

func (*Attach) GetRows

func (x *Attach) GetRows() int32

func (*Attach) GetSessionId

func (x *Attach) GetSessionId() string

func (*Attach) GetStreamId

func (x *Attach) GetStreamId() string

func (*Attach) ProtoMessage

func (*Attach) ProtoMessage()

func (*Attach) ProtoReflect

func (x *Attach) ProtoReflect() protoreflect.Message

func (*Attach) Reset

func (x *Attach) Reset()

func (*Attach) String

func (x *Attach) String() string

type Attached

type Attached struct {
	StreamId string   `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Session  *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"`
	// contains filtered or unexported fields
}

func (*Attached) Descriptor deprecated

func (*Attached) Descriptor() ([]byte, []int)

Deprecated: Use Attached.ProtoReflect.Descriptor instead.

func (*Attached) GetSession

func (x *Attached) GetSession() *Session

func (*Attached) GetStreamId

func (x *Attached) GetStreamId() string

func (*Attached) ProtoMessage

func (*Attached) ProtoMessage()

func (*Attached) ProtoReflect

func (x *Attached) ProtoReflect() protoreflect.Message

func (*Attached) Reset

func (x *Attached) Reset()

func (*Attached) String

func (x *Attached) String() string

type Close

type Close struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	// contains filtered or unexported fields
}

func (*Close) Descriptor deprecated

func (*Close) Descriptor() ([]byte, []int)

Deprecated: Use Close.ProtoReflect.Descriptor instead.

func (*Close) GetStreamId

func (x *Close) GetStreamId() string

func (*Close) ProtoMessage

func (*Close) ProtoMessage()

func (*Close) ProtoReflect

func (x *Close) ProtoReflect() protoreflect.Message

func (*Close) Reset

func (x *Close) Reset()

func (*Close) String

func (x *Close) String() string

type Closed

type Closed struct {
	StreamId string   `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Session  *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"`
	// contains filtered or unexported fields
}

func (*Closed) Descriptor deprecated

func (*Closed) Descriptor() ([]byte, []int)

Deprecated: Use Closed.ProtoReflect.Descriptor instead.

func (*Closed) GetSession

func (x *Closed) GetSession() *Session

func (*Closed) GetStreamId

func (x *Closed) GetStreamId() string

func (*Closed) ProtoMessage

func (*Closed) ProtoMessage()

func (*Closed) ProtoReflect

func (x *Closed) ProtoReflect() protoreflect.Message

func (*Closed) Reset

func (x *Closed) Reset()

func (*Closed) String

func (x *Closed) String() string

type Detach

type Detach struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	// contains filtered or unexported fields
}

func (*Detach) Descriptor deprecated

func (*Detach) Descriptor() ([]byte, []int)

Deprecated: Use Detach.ProtoReflect.Descriptor instead.

func (*Detach) GetStreamId

func (x *Detach) GetStreamId() string

func (*Detach) ProtoMessage

func (*Detach) ProtoMessage()

func (*Detach) ProtoReflect

func (x *Detach) ProtoReflect() protoreflect.Message

func (*Detach) Reset

func (x *Detach) Reset()

func (*Detach) String

func (x *Detach) String() string

type Detached

type Detached struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	// contains filtered or unexported fields
}

func (*Detached) Descriptor deprecated

func (*Detached) Descriptor() ([]byte, []int)

Deprecated: Use Detached.ProtoReflect.Descriptor instead.

func (*Detached) GetStreamId

func (x *Detached) GetStreamId() string

func (*Detached) ProtoMessage

func (*Detached) ProtoMessage()

func (*Detached) ProtoReflect

func (x *Detached) ProtoReflect() protoreflect.Message

func (*Detached) Reset

func (x *Detached) Reset()

func (*Detached) String

func (x *Detached) String() string

type Error

type Error struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Message  string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	// contains filtered or unexported fields
}

func (*Error) Descriptor deprecated

func (*Error) Descriptor() ([]byte, []int)

Deprecated: Use Error.ProtoReflect.Descriptor instead.

func (*Error) GetMessage

func (x *Error) GetMessage() string

func (*Error) GetStreamId

func (x *Error) GetStreamId() string

func (*Error) ProtoMessage

func (*Error) ProtoMessage()

func (*Error) ProtoReflect

func (x *Error) ProtoReflect() protoreflect.Message

func (*Error) Reset

func (x *Error) Reset()

func (*Error) String

func (x *Error) String() string

type Input

type Input struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Data     []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*Input) Descriptor deprecated

func (*Input) Descriptor() ([]byte, []int)

Deprecated: Use Input.ProtoReflect.Descriptor instead.

func (*Input) GetData

func (x *Input) GetData() []byte

func (*Input) GetStreamId

func (x *Input) GetStreamId() string

func (*Input) ProtoMessage

func (*Input) ProtoMessage()

func (*Input) ProtoReflect

func (x *Input) ProtoReflect() protoreflect.Message

func (*Input) Reset

func (x *Input) Reset()

func (*Input) String

func (x *Input) String() string

type Kill

type Kill struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	// contains filtered or unexported fields
}

func (*Kill) Descriptor deprecated

func (*Kill) Descriptor() ([]byte, []int)

Deprecated: Use Kill.ProtoReflect.Descriptor instead.

func (*Kill) GetStreamId

func (x *Kill) GetStreamId() string

func (*Kill) ProtoMessage

func (*Kill) ProtoMessage()

func (*Kill) ProtoReflect

func (x *Kill) ProtoReflect() protoreflect.Message

func (*Kill) Reset

func (x *Kill) Reset()

func (*Kill) String

func (x *Kill) String() string

type List

type List struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	NodeId   string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	// contains filtered or unexported fields
}

func (*List) Descriptor deprecated

func (*List) Descriptor() ([]byte, []int)

Deprecated: Use List.ProtoReflect.Descriptor instead.

func (*List) GetNodeId

func (x *List) GetNodeId() string

func (*List) GetStreamId

func (x *List) GetStreamId() string

func (*List) ProtoMessage

func (*List) ProtoMessage()

func (*List) ProtoReflect

func (x *List) ProtoReflect() protoreflect.Message

func (*List) Reset

func (x *List) Reset()

func (*List) String

func (x *List) String() string

type Open

type Open struct {
	StreamId  string   `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	NodeId    string   `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	Kind      string   `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
	Name      string   `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	Command   string   `protobuf:"bytes,5,opt,name=command,proto3" json:"command,omitempty"`
	Args      []string `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"`
	Cols      int32    `protobuf:"varint,7,opt,name=cols,proto3" json:"cols,omitempty"`
	Rows      int32    `protobuf:"varint,8,opt,name=rows,proto3" json:"rows,omitempty"`
	Singleton bool     `protobuf:"varint,9,opt,name=singleton,proto3" json:"singleton,omitempty"`
	// contains filtered or unexported fields
}

func (*Open) Descriptor deprecated

func (*Open) Descriptor() ([]byte, []int)

Deprecated: Use Open.ProtoReflect.Descriptor instead.

func (*Open) GetArgs

func (x *Open) GetArgs() []string

func (*Open) GetCols

func (x *Open) GetCols() int32

func (*Open) GetCommand

func (x *Open) GetCommand() string

func (*Open) GetKind

func (x *Open) GetKind() string

func (*Open) GetName

func (x *Open) GetName() string

func (*Open) GetNodeId

func (x *Open) GetNodeId() string

func (*Open) GetRows

func (x *Open) GetRows() int32

func (*Open) GetSingleton

func (x *Open) GetSingleton() bool

func (*Open) GetStreamId

func (x *Open) GetStreamId() string

func (*Open) ProtoMessage

func (*Open) ProtoMessage()

func (*Open) ProtoReflect

func (x *Open) ProtoReflect() protoreflect.Message

func (*Open) Reset

func (x *Open) Reset()

func (*Open) String

func (x *Open) String() string

type Opened

type Opened struct {
	StreamId string   `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Session  *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"`
	// contains filtered or unexported fields
}

func (*Opened) Descriptor deprecated

func (*Opened) Descriptor() ([]byte, []int)

Deprecated: Use Opened.ProtoReflect.Descriptor instead.

func (*Opened) GetSession

func (x *Opened) GetSession() *Session

func (*Opened) GetStreamId

func (x *Opened) GetStreamId() string

func (*Opened) ProtoMessage

func (*Opened) ProtoMessage()

func (*Opened) ProtoReflect

func (x *Opened) ProtoReflect() protoreflect.Message

func (*Opened) Reset

func (x *Opened) Reset()

func (*Opened) String

func (x *Opened) String() string

type Output

type Output struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Data     []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	Offset   int64  `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	// contains filtered or unexported fields
}

func (*Output) Descriptor deprecated

func (*Output) Descriptor() ([]byte, []int)

Deprecated: Use Output.ProtoReflect.Descriptor instead.

func (*Output) GetData

func (x *Output) GetData() []byte

func (*Output) GetOffset

func (x *Output) GetOffset() int64

func (*Output) GetStreamId

func (x *Output) GetStreamId() string

func (*Output) ProtoMessage

func (*Output) ProtoMessage()

func (*Output) ProtoReflect

func (x *Output) ProtoReflect() protoreflect.Message

func (*Output) Reset

func (x *Output) Reset()

func (*Output) String

func (x *Output) String() string

type ProtocolMessage

type ProtocolMessage struct {

	// Types that are valid to be assigned to Message:
	//
	//	*ProtocolMessage_Open
	//	*ProtocolMessage_Input
	//	*ProtocolMessage_Output
	//	*ProtocolMessage_Resize
	//	*ProtocolMessage_List
	//	*ProtocolMessage_Sessions
	//	*ProtocolMessage_Attach
	//	*ProtocolMessage_Detach
	//	*ProtocolMessage_Close
	//	*ProtocolMessage_State
	//	*ProtocolMessage_Error
	//	*ProtocolMessage_Opened
	//	*ProtocolMessage_Attached
	//	*ProtocolMessage_Detached
	//	*ProtocolMessage_Kill
	//	*ProtocolMessage_Closed
	Message isProtocolMessage_Message `protobuf_oneof:"message"`
	// contains filtered or unexported fields
}

func (*ProtocolMessage) Descriptor deprecated

func (*ProtocolMessage) Descriptor() ([]byte, []int)

Deprecated: Use ProtocolMessage.ProtoReflect.Descriptor instead.

func (*ProtocolMessage) GetAttach

func (x *ProtocolMessage) GetAttach() *Attach

func (*ProtocolMessage) GetAttached

func (x *ProtocolMessage) GetAttached() *Attached

func (*ProtocolMessage) GetClose

func (x *ProtocolMessage) GetClose() *Close

func (*ProtocolMessage) GetClosed

func (x *ProtocolMessage) GetClosed() *Closed

func (*ProtocolMessage) GetDetach

func (x *ProtocolMessage) GetDetach() *Detach

func (*ProtocolMessage) GetDetached

func (x *ProtocolMessage) GetDetached() *Detached

func (*ProtocolMessage) GetError

func (x *ProtocolMessage) GetError() *Error

func (*ProtocolMessage) GetInput

func (x *ProtocolMessage) GetInput() *Input

func (*ProtocolMessage) GetKill

func (x *ProtocolMessage) GetKill() *Kill

func (*ProtocolMessage) GetList

func (x *ProtocolMessage) GetList() *List

func (*ProtocolMessage) GetMessage

func (x *ProtocolMessage) GetMessage() isProtocolMessage_Message

func (*ProtocolMessage) GetOpen

func (x *ProtocolMessage) GetOpen() *Open

func (*ProtocolMessage) GetOpened

func (x *ProtocolMessage) GetOpened() *Opened

func (*ProtocolMessage) GetOutput

func (x *ProtocolMessage) GetOutput() *Output

func (*ProtocolMessage) GetResize

func (x *ProtocolMessage) GetResize() *Resize

func (*ProtocolMessage) GetSessions

func (x *ProtocolMessage) GetSessions() *Sessions

func (*ProtocolMessage) GetState

func (x *ProtocolMessage) GetState() *State

func (*ProtocolMessage) ProtoMessage

func (*ProtocolMessage) ProtoMessage()

func (*ProtocolMessage) ProtoReflect

func (x *ProtocolMessage) ProtoReflect() protoreflect.Message

func (*ProtocolMessage) Reset

func (x *ProtocolMessage) Reset()

func (*ProtocolMessage) String

func (x *ProtocolMessage) String() string

type ProtocolMessage_Attach

type ProtocolMessage_Attach struct {
	Attach *Attach `protobuf:"bytes,16,opt,name=attach,proto3,oneof"`
}

type ProtocolMessage_Attached

type ProtocolMessage_Attached struct {
	Attached *Attached `protobuf:"bytes,22,opt,name=attached,proto3,oneof"`
}

type ProtocolMessage_Close

type ProtocolMessage_Close struct {
	Close *Close `protobuf:"bytes,18,opt,name=close,proto3,oneof"`
}

type ProtocolMessage_Closed

type ProtocolMessage_Closed struct {
	Closed *Closed `protobuf:"bytes,25,opt,name=closed,proto3,oneof"`
}

type ProtocolMessage_Detach

type ProtocolMessage_Detach struct {
	Detach *Detach `protobuf:"bytes,17,opt,name=detach,proto3,oneof"`
}

type ProtocolMessage_Detached

type ProtocolMessage_Detached struct {
	Detached *Detached `protobuf:"bytes,23,opt,name=detached,proto3,oneof"`
}

type ProtocolMessage_Error

type ProtocolMessage_Error struct {
	Error *Error `protobuf:"bytes,20,opt,name=error,proto3,oneof"`
}

type ProtocolMessage_Input

type ProtocolMessage_Input struct {
	Input *Input `protobuf:"bytes,11,opt,name=input,proto3,oneof"`
}

type ProtocolMessage_Kill

type ProtocolMessage_Kill struct {
	Kill *Kill `protobuf:"bytes,24,opt,name=kill,proto3,oneof"`
}

type ProtocolMessage_List

type ProtocolMessage_List struct {
	List *List `protobuf:"bytes,14,opt,name=list,proto3,oneof"`
}

type ProtocolMessage_Open

type ProtocolMessage_Open struct {
	Open *Open `protobuf:"bytes,10,opt,name=open,proto3,oneof"`
}

type ProtocolMessage_Opened

type ProtocolMessage_Opened struct {
	Opened *Opened `protobuf:"bytes,21,opt,name=opened,proto3,oneof"`
}

type ProtocolMessage_Output

type ProtocolMessage_Output struct {
	Output *Output `protobuf:"bytes,12,opt,name=output,proto3,oneof"`
}

type ProtocolMessage_Resize

type ProtocolMessage_Resize struct {
	Resize *Resize `protobuf:"bytes,13,opt,name=resize,proto3,oneof"`
}

type ProtocolMessage_Sessions

type ProtocolMessage_Sessions struct {
	Sessions *Sessions `protobuf:"bytes,15,opt,name=sessions,proto3,oneof"`
}

type ProtocolMessage_State

type ProtocolMessage_State struct {
	State *State `protobuf:"bytes,19,opt,name=state,proto3,oneof"`
}

type Resize

type Resize struct {
	StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Cols     int32  `protobuf:"varint,2,opt,name=cols,proto3" json:"cols,omitempty"`
	Rows     int32  `protobuf:"varint,3,opt,name=rows,proto3" json:"rows,omitempty"`
	// contains filtered or unexported fields
}

func (*Resize) Descriptor deprecated

func (*Resize) Descriptor() ([]byte, []int)

Deprecated: Use Resize.ProtoReflect.Descriptor instead.

func (*Resize) GetCols

func (x *Resize) GetCols() int32

func (*Resize) GetRows

func (x *Resize) GetRows() int32

func (*Resize) GetStreamId

func (x *Resize) GetStreamId() string

func (*Resize) ProtoMessage

func (*Resize) ProtoMessage()

func (*Resize) ProtoReflect

func (x *Resize) ProtoReflect() protoreflect.Message

func (*Resize) Reset

func (x *Resize) Reset()

func (*Resize) String

func (x *Resize) String() string

type Session

type Session struct {
	Id             string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Kind           string                 `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
	Name           string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Command        string                 `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"`
	Pid            int32                  `protobuf:"varint,5,opt,name=pid,proto3" json:"pid,omitempty"`
	StartedAt      *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
	LastActivityAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_activity_at,json=lastActivityAt,proto3" json:"last_activity_at,omitempty"`
	EndedAt        *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=ended_at,json=endedAt,proto3" json:"ended_at,omitempty"`
	ActivitySeq    int64                  `protobuf:"varint,9,opt,name=activity_seq,json=activitySeq,proto3" json:"activity_seq,omitempty"`
	OutputBytes    int64                  `protobuf:"varint,10,opt,name=output_bytes,json=outputBytes,proto3" json:"output_bytes,omitempty"`
	ExitCode       int32                  `protobuf:"varint,11,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
	State          string                 `protobuf:"bytes,12,opt,name=state,proto3" json:"state,omitempty"`
	KillCause      string                 `protobuf:"bytes,13,opt,name=kill_cause,json=killCause,proto3" json:"kill_cause,omitempty"`
	// contains filtered or unexported fields
}

func (*Session) Descriptor deprecated

func (*Session) Descriptor() ([]byte, []int)

Deprecated: Use Session.ProtoReflect.Descriptor instead.

func (*Session) GetActivitySeq

func (x *Session) GetActivitySeq() int64

func (*Session) GetCommand

func (x *Session) GetCommand() string

func (*Session) GetEndedAt

func (x *Session) GetEndedAt() *timestamppb.Timestamp

func (*Session) GetExitCode

func (x *Session) GetExitCode() int32

func (*Session) GetId

func (x *Session) GetId() string

func (*Session) GetKillCause

func (x *Session) GetKillCause() string

func (*Session) GetKind

func (x *Session) GetKind() string

func (*Session) GetLastActivityAt

func (x *Session) GetLastActivityAt() *timestamppb.Timestamp

func (*Session) GetName

func (x *Session) GetName() string

func (*Session) GetOutputBytes

func (x *Session) GetOutputBytes() int64

func (*Session) GetPid

func (x *Session) GetPid() int32

func (*Session) GetStartedAt

func (x *Session) GetStartedAt() *timestamppb.Timestamp

func (*Session) GetState

func (x *Session) GetState() string

func (*Session) ProtoMessage

func (*Session) ProtoMessage()

func (*Session) ProtoReflect

func (x *Session) ProtoReflect() protoreflect.Message

func (*Session) Reset

func (x *Session) Reset()

func (*Session) String

func (x *Session) String() string

type Sessions

type Sessions struct {
	StreamId string     `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Sessions []*Session `protobuf:"bytes,2,rep,name=sessions,proto3" json:"sessions,omitempty"`
	// contains filtered or unexported fields
}

func (*Sessions) Descriptor deprecated

func (*Sessions) Descriptor() ([]byte, []int)

Deprecated: Use Sessions.ProtoReflect.Descriptor instead.

func (*Sessions) GetSessions

func (x *Sessions) GetSessions() []*Session

func (*Sessions) GetStreamId

func (x *Sessions) GetStreamId() string

func (*Sessions) ProtoMessage

func (*Sessions) ProtoMessage()

func (*Sessions) ProtoReflect

func (x *Sessions) ProtoReflect() protoreflect.Message

func (*Sessions) Reset

func (x *Sessions) Reset()

func (*Sessions) String

func (x *Sessions) String() string

type State

type State struct {
	StreamId string   `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"`
	Session  *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"`
	// contains filtered or unexported fields
}

func (*State) Descriptor deprecated

func (*State) Descriptor() ([]byte, []int)

Deprecated: Use State.ProtoReflect.Descriptor instead.

func (*State) GetSession

func (x *State) GetSession() *Session

func (*State) GetStreamId

func (x *State) GetStreamId() string

func (*State) ProtoMessage

func (*State) ProtoMessage()

func (*State) ProtoReflect

func (x *State) ProtoReflect() protoreflect.Message

func (*State) Reset

func (x *State) Reset()

func (*State) String

func (x *State) String() string

Jump to

Keyboard shortcuts

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