proto

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2018 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterCoachRPCServer

func RegisterCoachRPCServer(s *grpc.Server, srv CoachRPCServer)

Types

type AuditLog

type AuditLog struct {
	Created              *timestamp.Timestamp `protobuf:"bytes,1,opt,name=created,proto3" json:"created,omitempty"`
	CreatedBy            string               `protobuf:"bytes,2,opt,name=createdBy,proto3" json:"createdBy,omitempty"`
	Updated              *timestamp.Timestamp `protobuf:"bytes,3,opt,name=updated,proto3" json:"updated,omitempty"`
	UpdatedBy            string               `protobuf:"bytes,4,opt,name=updatedBy,proto3" json:"updatedBy,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (*AuditLog) Descriptor

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

func (*AuditLog) GetCreated

func (m *AuditLog) GetCreated() *timestamp.Timestamp

func (*AuditLog) GetCreatedBy

func (m *AuditLog) GetCreatedBy() string

func (*AuditLog) GetUpdated

func (m *AuditLog) GetUpdated() *timestamp.Timestamp

func (*AuditLog) GetUpdatedBy

func (m *AuditLog) GetUpdatedBy() string

func (*AuditLog) ProtoMessage

func (*AuditLog) ProtoMessage()

func (*AuditLog) Reset

func (m *AuditLog) Reset()

func (*AuditLog) String

func (m *AuditLog) String() string

func (*AuditLog) XXX_DiscardUnknown

func (m *AuditLog) XXX_DiscardUnknown()

func (*AuditLog) XXX_Marshal

func (m *AuditLog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*AuditLog) XXX_Merge

func (m *AuditLog) XXX_Merge(src proto.Message)

func (*AuditLog) XXX_Size

func (m *AuditLog) XXX_Size() int

func (*AuditLog) XXX_Unmarshal

func (m *AuditLog) XXX_Unmarshal(b []byte) error

type CoachRPCClient

type CoachRPCClient interface {
	// query shoud be a comma delimited list of tags
	QueryScripts(ctx context.Context, in *ScriptsQuery, opts ...grpc.CallOption) (*GetScriptsResponse, error)
	// query should be a script alias
	GetScript(ctx context.Context, in *ScriptsQuery, opts ...grpc.CallOption) (*DocumentedScript, error)
	// the first RunEventIn event should contain the alias for the script
	// you want to run, subsequent events are treated as stdin passed to
	// the script while running
	RunScript(ctx context.Context, opts ...grpc.CallOption) (CoachRPC_RunScriptClient, error)
	SaveScript(ctx context.Context, in *SaveScriptRequest, opts ...grpc.CallOption) (*Response, error)
}

CoachRPCClient is the client API for CoachRPC service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewCoachRPCClient

func NewCoachRPCClient(cc *grpc.ClientConn) CoachRPCClient

type CoachRPCServer

type CoachRPCServer interface {
	// query shoud be a comma delimited list of tags
	QueryScripts(context.Context, *ScriptsQuery) (*GetScriptsResponse, error)
	// query should be a script alias
	GetScript(context.Context, *ScriptsQuery) (*DocumentedScript, error)
	// the first RunEventIn event should contain the alias for the script
	// you want to run, subsequent events are treated as stdin passed to
	// the script while running
	RunScript(CoachRPC_RunScriptServer) error
	SaveScript(context.Context, *SaveScriptRequest) (*Response, error)
}

CoachRPCServer is the server API for CoachRPC service.

type CoachRPC_RunScriptClient

type CoachRPC_RunScriptClient interface {
	Send(*RunEventIn) error
	Recv() (*RunEventOut, error)
	grpc.ClientStream
}

type CoachRPC_RunScriptServer

type CoachRPC_RunScriptServer interface {
	Send(*RunEventOut) error
	Recv() (*RunEventIn, error)
	grpc.ServerStream
}

type CommandContext

type CommandContext struct {
	Shell                string   `protobuf:"bytes,1,opt,name=shell,proto3" json:"shell,omitempty"`
	Os                   string   `protobuf:"bytes,2,opt,name=os,proto3" json:"os,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*CommandContext) Descriptor

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

func (*CommandContext) GetOs

func (m *CommandContext) GetOs() string

func (*CommandContext) GetShell

func (m *CommandContext) GetShell() string

func (*CommandContext) ProtoMessage

func (*CommandContext) ProtoMessage()

func (*CommandContext) Reset

func (m *CommandContext) Reset()

func (*CommandContext) String

func (m *CommandContext) String() string

func (*CommandContext) XXX_DiscardUnknown

func (m *CommandContext) XXX_DiscardUnknown()

func (*CommandContext) XXX_Marshal

func (m *CommandContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CommandContext) XXX_Merge

func (m *CommandContext) XXX_Merge(src proto.Message)

func (*CommandContext) XXX_Size

func (m *CommandContext) XXX_Size() int

func (*CommandContext) XXX_Unmarshal

func (m *CommandContext) XXX_Unmarshal(b []byte) error

type DocumentedScript

type DocumentedScript struct {
	Id                   []byte    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Script               *Script   `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"`
	Alias                string    `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
	Tags                 []string  `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"`
	Documentation        string    `protobuf:"bytes,5,opt,name=documentation,proto3" json:"documentation,omitempty"`
	AuditLog             *AuditLog `protobuf:"bytes,6,opt,name=auditLog,proto3" json:"auditLog,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (*DocumentedScript) Descriptor

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

func (*DocumentedScript) GetAlias

func (m *DocumentedScript) GetAlias() string

func (*DocumentedScript) GetAuditLog

func (m *DocumentedScript) GetAuditLog() *AuditLog

func (*DocumentedScript) GetDocumentation

func (m *DocumentedScript) GetDocumentation() string

func (*DocumentedScript) GetId

func (m *DocumentedScript) GetId() []byte

func (*DocumentedScript) GetScript

func (m *DocumentedScript) GetScript() *Script

func (*DocumentedScript) GetTags

func (m *DocumentedScript) GetTags() []string

func (*DocumentedScript) ProtoMessage

func (*DocumentedScript) ProtoMessage()

func (*DocumentedScript) Reset

func (m *DocumentedScript) Reset()

func (*DocumentedScript) String

func (m *DocumentedScript) String() string

func (*DocumentedScript) XXX_DiscardUnknown

func (m *DocumentedScript) XXX_DiscardUnknown()

func (*DocumentedScript) XXX_Marshal

func (m *DocumentedScript) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*DocumentedScript) XXX_Merge

func (m *DocumentedScript) XXX_Merge(src proto.Message)

func (*DocumentedScript) XXX_Size

func (m *DocumentedScript) XXX_Size() int

func (*DocumentedScript) XXX_Unmarshal

func (m *DocumentedScript) XXX_Unmarshal(b []byte) error

type EnvVar

type EnvVar struct {
	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*EnvVar) Descriptor

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

func (*EnvVar) GetName

func (m *EnvVar) GetName() string

func (*EnvVar) GetValue

func (m *EnvVar) GetValue() string

func (*EnvVar) ProtoMessage

func (*EnvVar) ProtoMessage()

func (*EnvVar) Reset

func (m *EnvVar) Reset()

func (*EnvVar) String

func (m *EnvVar) String() string

func (*EnvVar) XXX_DiscardUnknown

func (m *EnvVar) XXX_DiscardUnknown()

func (*EnvVar) XXX_Marshal

func (m *EnvVar) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*EnvVar) XXX_Merge

func (m *EnvVar) XXX_Merge(src proto.Message)

func (*EnvVar) XXX_Size

func (m *EnvVar) XXX_Size() int

func (*EnvVar) XXX_Unmarshal

func (m *EnvVar) XXX_Unmarshal(b []byte) error

type GetScriptsResponse

type GetScriptsResponse struct {
	Scripts              []*DocumentedScript `protobuf:"bytes,1,rep,name=scripts,proto3" json:"scripts,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

func (*GetScriptsResponse) Descriptor

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

func (*GetScriptsResponse) GetScripts

func (m *GetScriptsResponse) GetScripts() []*DocumentedScript

func (*GetScriptsResponse) ProtoMessage

func (*GetScriptsResponse) ProtoMessage()

func (*GetScriptsResponse) Reset

func (m *GetScriptsResponse) Reset()

func (*GetScriptsResponse) String

func (m *GetScriptsResponse) String() string

func (*GetScriptsResponse) XXX_DiscardUnknown

func (m *GetScriptsResponse) XXX_DiscardUnknown()

func (*GetScriptsResponse) XXX_Marshal

func (m *GetScriptsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*GetScriptsResponse) XXX_Merge

func (m *GetScriptsResponse) XXX_Merge(src proto.Message)

func (*GetScriptsResponse) XXX_Size

func (m *GetScriptsResponse) XXX_Size() int

func (*GetScriptsResponse) XXX_Unmarshal

func (m *GetScriptsResponse) XXX_Unmarshal(b []byte) error

type HistoryRecord

type HistoryRecord struct {
	Id                   []byte               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	FullCommand          string               `protobuf:"bytes,2,opt,name=fullCommand,proto3" json:"fullCommand,omitempty"`
	Tty                  string               `protobuf:"bytes,3,opt,name=tty,proto3" json:"tty,omitempty"`
	Timestamp            *timestamp.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	User                 string               `protobuf:"bytes,5,opt,name=user,proto3" json:"user,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (*HistoryRecord) Descriptor

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

func (*HistoryRecord) GetFullCommand

func (m *HistoryRecord) GetFullCommand() string

func (*HistoryRecord) GetId

func (m *HistoryRecord) GetId() []byte

func (*HistoryRecord) GetTimestamp

func (m *HistoryRecord) GetTimestamp() *timestamp.Timestamp

func (*HistoryRecord) GetTty

func (m *HistoryRecord) GetTty() string

func (*HistoryRecord) GetUser

func (m *HistoryRecord) GetUser() string

func (*HistoryRecord) ProtoMessage

func (*HistoryRecord) ProtoMessage()

func (*HistoryRecord) Reset

func (m *HistoryRecord) Reset()

func (*HistoryRecord) String

func (m *HistoryRecord) String() string

func (*HistoryRecord) XXX_DiscardUnknown

func (m *HistoryRecord) XXX_DiscardUnknown()

func (*HistoryRecord) XXX_Marshal

func (m *HistoryRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*HistoryRecord) XXX_Merge

func (m *HistoryRecord) XXX_Merge(src proto.Message)

func (*HistoryRecord) XXX_Size

func (m *HistoryRecord) XXX_Size() int

func (*HistoryRecord) XXX_Unmarshal

func (m *HistoryRecord) XXX_Unmarshal(b []byte) error

type Response

type Response struct {
	Success              bool     `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	Error                string   `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Response) Descriptor

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

func (*Response) GetError

func (m *Response) GetError() string

func (*Response) GetSuccess

func (m *Response) GetSuccess() bool

func (*Response) ProtoMessage

func (*Response) ProtoMessage()

func (*Response) Reset

func (m *Response) Reset()

func (*Response) String

func (m *Response) String() string

func (*Response) XXX_DiscardUnknown

func (m *Response) XXX_DiscardUnknown()

func (*Response) XXX_Marshal

func (m *Response) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Response) XXX_Merge

func (m *Response) XXX_Merge(src proto.Message)

func (*Response) XXX_Size

func (m *Response) XXX_Size() int

func (*Response) XXX_Unmarshal

func (m *Response) XXX_Unmarshal(b []byte) error

type RunEventIn

type RunEventIn struct {
	Input string    `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	Env   []*EnvVar `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"`
	// specify the batch size in bytes you would like the response output to come in
	ResponseSize         uint32   `protobuf:"varint,3,opt,name=responseSize,proto3" json:"responseSize,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

RunEventIn has multiple uses, the first event should contain the tag of the script to run in the input. Subsequent events should contain responses to requests for input and finally it should end with an EOF.

func (*RunEventIn) Descriptor

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

func (*RunEventIn) GetEnv

func (m *RunEventIn) GetEnv() []*EnvVar

func (*RunEventIn) GetInput

func (m *RunEventIn) GetInput() string

func (*RunEventIn) GetResponseSize

func (m *RunEventIn) GetResponseSize() uint32

func (*RunEventIn) ProtoMessage

func (*RunEventIn) ProtoMessage()

func (*RunEventIn) Reset

func (m *RunEventIn) Reset()

func (*RunEventIn) String

func (m *RunEventIn) String() string

func (*RunEventIn) XXX_DiscardUnknown

func (m *RunEventIn) XXX_DiscardUnknown()

func (*RunEventIn) XXX_Marshal

func (m *RunEventIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RunEventIn) XXX_Merge

func (m *RunEventIn) XXX_Merge(src proto.Message)

func (*RunEventIn) XXX_Size

func (m *RunEventIn) XXX_Size() int

func (*RunEventIn) XXX_Unmarshal

func (m *RunEventIn) XXX_Unmarshal(b []byte) error

type RunEventOut

type RunEventOut struct {
	Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"`
	Error  string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	// exitCode means nothing until stream finishes
	ExitCode             int32    `protobuf:"varint,3,opt,name=exitCode,proto3" json:"exitCode,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*RunEventOut) Descriptor

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

func (*RunEventOut) GetError

func (m *RunEventOut) GetError() string

func (*RunEventOut) GetExitCode

func (m *RunEventOut) GetExitCode() int32

func (*RunEventOut) GetOutput

func (m *RunEventOut) GetOutput() string

func (*RunEventOut) ProtoMessage

func (*RunEventOut) ProtoMessage()

func (*RunEventOut) Reset

func (m *RunEventOut) Reset()

func (*RunEventOut) String

func (m *RunEventOut) String() string

func (*RunEventOut) XXX_DiscardUnknown

func (m *RunEventOut) XXX_DiscardUnknown()

func (*RunEventOut) XXX_Marshal

func (m *RunEventOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RunEventOut) XXX_Merge

func (m *RunEventOut) XXX_Merge(src proto.Message)

func (*RunEventOut) XXX_Size

func (m *RunEventOut) XXX_Size() int

func (*RunEventOut) XXX_Unmarshal

func (m *RunEventOut) XXX_Unmarshal(b []byte) error

type SaveScriptRequest

type SaveScriptRequest struct {
	Script               *DocumentedScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"`
	Overwrite            bool              `protobuf:"varint,2,opt,name=overwrite,proto3" json:"overwrite,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (*SaveScriptRequest) Descriptor

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

func (*SaveScriptRequest) GetOverwrite

func (m *SaveScriptRequest) GetOverwrite() bool

func (*SaveScriptRequest) GetScript

func (m *SaveScriptRequest) GetScript() *DocumentedScript

func (*SaveScriptRequest) ProtoMessage

func (*SaveScriptRequest) ProtoMessage()

func (*SaveScriptRequest) Reset

func (m *SaveScriptRequest) Reset()

func (*SaveScriptRequest) String

func (m *SaveScriptRequest) String() string

func (*SaveScriptRequest) XXX_DiscardUnknown

func (m *SaveScriptRequest) XXX_DiscardUnknown()

func (*SaveScriptRequest) XXX_Marshal

func (m *SaveScriptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SaveScriptRequest) XXX_Merge

func (m *SaveScriptRequest) XXX_Merge(src proto.Message)

func (*SaveScriptRequest) XXX_Size

func (m *SaveScriptRequest) XXX_Size() int

func (*SaveScriptRequest) XXX_Unmarshal

func (m *SaveScriptRequest) XXX_Unmarshal(b []byte) error

type Script

type Script struct {
	Content              string   `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	Variables            []string `protobuf:"bytes,2,rep,name=variables,proto3" json:"variables,omitempty"`
	Shell                string   `protobuf:"bytes,3,opt,name=shell,proto3" json:"shell,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Script) Descriptor

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

func (*Script) GetContent

func (m *Script) GetContent() string

func (*Script) GetShell

func (m *Script) GetShell() string

func (*Script) GetVariables

func (m *Script) GetVariables() []string

func (*Script) ProtoMessage

func (*Script) ProtoMessage()

func (*Script) Reset

func (m *Script) Reset()

func (*Script) String

func (m *Script) String() string

func (*Script) XXX_DiscardUnknown

func (m *Script) XXX_DiscardUnknown()

func (*Script) XXX_Marshal

func (m *Script) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Script) XXX_Merge

func (m *Script) XXX_Merge(src proto.Message)

func (*Script) XXX_Size

func (m *Script) XXX_Size() int

func (*Script) XXX_Unmarshal

func (m *Script) XXX_Unmarshal(b []byte) error

type ScriptsQuery

type ScriptsQuery struct {
	Query                string   `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*ScriptsQuery) Descriptor

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

func (*ScriptsQuery) GetQuery

func (m *ScriptsQuery) GetQuery() string

func (*ScriptsQuery) ProtoMessage

func (*ScriptsQuery) ProtoMessage()

func (*ScriptsQuery) Reset

func (m *ScriptsQuery) Reset()

func (*ScriptsQuery) String

func (m *ScriptsQuery) String() string

func (*ScriptsQuery) XXX_DiscardUnknown

func (m *ScriptsQuery) XXX_DiscardUnknown()

func (*ScriptsQuery) XXX_Marshal

func (m *ScriptsQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ScriptsQuery) XXX_Merge

func (m *ScriptsQuery) XXX_Merge(src proto.Message)

func (*ScriptsQuery) XXX_Size

func (m *ScriptsQuery) XXX_Size() int

func (*ScriptsQuery) XXX_Unmarshal

func (m *ScriptsQuery) XXX_Unmarshal(b []byte) error

type Session

type Session struct {
	Tty                  string          `protobuf:"bytes,1,opt,name=tty,proto3" json:"tty,omitempty"`
	Context              *CommandContext `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"`
	LastCommand          *HistoryRecord  `protobuf:"bytes,3,opt,name=last_command,json=lastCommand,proto3" json:"last_command,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (*Session) Descriptor

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

func (*Session) GetContext

func (m *Session) GetContext() *CommandContext

func (*Session) GetLastCommand

func (m *Session) GetLastCommand() *HistoryRecord

func (*Session) GetTty

func (m *Session) GetTty() string

func (*Session) ProtoMessage

func (*Session) ProtoMessage()

func (*Session) Reset

func (m *Session) Reset()

func (*Session) String

func (m *Session) String() string

func (*Session) XXX_DiscardUnknown

func (m *Session) XXX_DiscardUnknown()

func (*Session) XXX_Marshal

func (m *Session) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Session) XXX_Merge

func (m *Session) XXX_Merge(src proto.Message)

func (*Session) XXX_Size

func (m *Session) XXX_Size() int

func (*Session) XXX_Unmarshal

func (m *Session) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

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