v1alpha1

package
v1.5.0-rc.6 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the config v1alpha1 API group +kubebuilder:object:generate=true +groupName=config.rig.dev

Index

Constants

View Source
const (
	// EmailTypeNoEmail disables mail sending.
	EmailTypeNoEmail = ""
	// EmailTypeMailjet uses the mailjet API for sending emails.
	EmailTypeMailjet = "mailjet"
	// EmailTypeSMTP uses regular SMTP for sending emails.
	EmailTypeSMTP = "smtp"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "config.rig.dev", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type Auth added in v1.5.0

type Auth struct {
	// Secret specifies a secret which will be used for jwt signatures.
	Secret string `json:"secret,omitempty"`

	// CertificateFile specifies a path to a PEM encoded certificate file which
	// will be used for validating jwt signatures.
	CertificateFile string `json:"certificateFile,omitempty"`

	// CertificateKeyFile specifies a path to a PEM encoded certificate key
	// which will be used for jwt signatures.
	CertificateKeyFile string `json:"certificateKeyFile,omitempty"`
}

Auth specifies authentication configuration.

func (*Auth) DeepCopy added in v1.5.0

func (in *Auth) DeepCopy() *Auth

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Auth.

func (*Auth) DeepCopyInto added in v1.5.0

func (in *Auth) DeepCopyInto(out *Auth)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CertManagerConfig

type CertManagerConfig struct {
	// ClusterIssuer to use for issueing ingress certificates
	ClusterIssuer string `json:"clusterIssuer"`

	// CreateCertificateResources specifies wether to create Certificate
	// resources. If this is not enabled we will use ingress annotations. This
	// is handy in environments where the ingress-shim isen't enabled.
	CreateCertificateResources bool `json:"createCertificateResources,omitempty"`
}

func (*CertManagerConfig) DeepCopy

func (in *CertManagerConfig) DeepCopy() *CertManagerConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CertManagerConfig.

func (*CertManagerConfig) DeepCopyInto

func (in *CertManagerConfig) DeepCopyInto(out *CertManagerConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Client added in v1.5.0

type Client struct {
	// Postgres holds configuration for the postgres client.
	Postgres ClientPostgres `json:"postgres,omitempty"`

	// Mongo holds configuration for the Mongo client.
	Mongo ClientMongo `json:"mongo,omitempty"`

	// Docker sets the host for the Docker client.
	Docker ClientDocker `json:"docker,omitempty"`

	// Mailjet sets the API key and secret for the Mailjet client.
	Mailjet ClientMailjet `json:"mailjet,omitempty"`

	// SMTP sets the host, port, username and password for the SMTP client.
	SMTP ClientSMTP `json:"smtp,omitempty"`

	// Operator sets the base url for the Operator client.
	Operator ClientOperator `json:"operator,omitempty"`
}

Client holds various client configuration

func (*Client) DeepCopy added in v1.5.0

func (in *Client) DeepCopy() *Client

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Client.

func (*Client) DeepCopyInto added in v1.5.0

func (in *Client) DeepCopyInto(out *Client)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientDocker added in v1.5.0

type ClientDocker struct {
	// Host where the docker daemon can be reached.
	Host string `json:"host,omitempty"`
}

ClientDocker specifies the configuration for the docker client.

func (*ClientDocker) DeepCopy added in v1.5.0

func (in *ClientDocker) DeepCopy() *ClientDocker

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientDocker.

func (*ClientDocker) DeepCopyInto added in v1.5.0

func (in *ClientDocker) DeepCopyInto(out *ClientDocker)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientMailjet added in v1.5.0

type ClientMailjet struct {
	// APIKey is the mailjet API key
	APIKey string `json:"apiKey,omitempty"`

	// SecretKey is the mailjet secret key
	SecretKey string `json:"secretKey,omitempty"`
}

ClientMailjet specifes the configuration for the mailjet client.

func (*ClientMailjet) DeepCopy added in v1.5.0

func (in *ClientMailjet) DeepCopy() *ClientMailjet

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientMailjet.

func (*ClientMailjet) DeepCopyInto added in v1.5.0

func (in *ClientMailjet) DeepCopyInto(out *ClientMailjet)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientMongo added in v1.5.0

type ClientMongo struct {
	// User is the database user used when connecting to the mongodb server.
	User string `json:"user,omitempty"`

	// Password is used when connecting to the mongodb server.
	Password string `json:"password,omitempty"`

	// Host of the mongo server. This is both the host and port.
	Host string `json:"host,omitempty"`
}

ClientMongo specifies the configuration for the mongo client.

func (*ClientMongo) DeepCopy added in v1.5.0

func (in *ClientMongo) DeepCopy() *ClientMongo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientMongo.

func (*ClientMongo) DeepCopyInto added in v1.5.0

func (in *ClientMongo) DeepCopyInto(out *ClientMongo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientOperator added in v1.5.0

type ClientOperator struct {
	// BaseURL is the URL used to connect to the operator API
	BaseURL string `json:"baseUrl,omitempty"`
}

ClientOperator specifies the configuration for the operator client.

func (*ClientOperator) DeepCopy added in v1.5.0

func (in *ClientOperator) DeepCopy() *ClientOperator

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientOperator.

func (*ClientOperator) DeepCopyInto added in v1.5.0

func (in *ClientOperator) DeepCopyInto(out *ClientOperator)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientPostgres added in v1.5.0

type ClientPostgres struct {
	// User is the database user used when connecting to the postgres database.
	User string `json:"user,omitempty"`

	// Password is the password used when connecting to the postgres database.
	Password string `json:"password,omitempty"`

	// Host is the host where the postgres database can be reached.
	Host string `json:"host,omitempty"`

	// Port is the port of the postgres database server.
	Port int `json:"port,omitempty"`

	// Database in the postgres server to use
	Database string `json:"database,omitempty"`

	// Insecure is wether to use SSL when connecting to the postgres server
	Insecure bool `json:"insecure,omitempty"`
}

ClientPostgres specifies the configuration for the postgres client.

func (*ClientPostgres) DeepCopy added in v1.5.0

func (in *ClientPostgres) DeepCopy() *ClientPostgres

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientPostgres.

func (*ClientPostgres) DeepCopyInto added in v1.5.0

func (in *ClientPostgres) DeepCopyInto(out *ClientPostgres)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientSMTP added in v1.5.0

type ClientSMTP struct {
	// Host is the SMTP server host.
	Host string `json:"host,omitempty"`

	// Port is the SMTP server port to use.
	Port int `json:"port,omitempty"`

	// Username used when connecting to the SMTP server.
	Username string `json:"username,omitempty"`

	// Password used when connecting to the SMTP server.
	Password string `json:"password,omitempty"`
}

ClientSMTP specifies the configuration for the SMTP client.

func (*ClientSMTP) DeepCopy added in v1.5.0

func (in *ClientSMTP) DeepCopy() *ClientSMTP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientSMTP.

func (*ClientSMTP) DeepCopyInto added in v1.5.0

func (in *ClientSMTP) DeepCopyInto(out *ClientSMTP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Cluster added in v1.5.0

type Cluster struct {
	// Type of the cluster - either `docker` or `k8s`.
	Type ClusterType `json:"type,omitempty"`

	// DevRegistry configuration
	DevRegistry DevRegistry `json:"devRegistry,omitempty"`

	// Git sets up gitops write back for this cluster.
	Git ClusterGit `json:"git,omitempty"`
}

Cluster specifies cluster configuration

func (*Cluster) DeepCopy added in v1.5.0

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto added in v1.5.0

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterGit added in v1.5.0

type ClusterGit struct {
	// URL is the git repository URL.
	URL string `json:"url,omitempty"`

	// Branch to commit changes to.
	Branch string `json:"branch,omitempty"`

	// PathPrefix path to commit to in git repository.
	PathPrefix string `json:"pathPrefix,omitempty"`

	// Credentials to use when connecting to git.
	Credentials GitCredentials `json:"credentials,omitempty"`

	// Author used when creating commits.
	Author GitAuthor `json:"author,omitempty"`

	// Templates used for commit messages.
	Templates GitTemplates `json:"templates,omitempty"`
}

ClusterGit specifies configuration for git integration. This can be used to tie rig into a gitops setup.

func (*ClusterGit) DeepCopy added in v1.5.0

func (in *ClusterGit) DeepCopy() *ClusterGit

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterGit.

func (*ClusterGit) DeepCopyInto added in v1.5.0

func (in *ClusterGit) DeepCopyInto(out *ClusterGit)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterType added in v1.5.0

type ClusterType string

ClusterType is a cluster type.

const (
	// ClusterTypeDocker is the docker cluster type.
	ClusterTypeDocker ClusterType = "docker"
	// ClusterTypeKubernetes is the kubernetes cluster type.
	ClusterTypeKubernetes ClusterType = "k8s"
)

type DevRegistry added in v1.5.0

type DevRegistry struct {
	// Host is the host used in image names when pushing to the registry from
	// outside of the cluster.
	Host string `json:"host,omitempty"`

	// ClusterHost is the host where the registry can be reached from within
	// the cluster. Any image which is named after `Host` will be rename to use
	// `ClusterHost` instead. This ensures that the image can be pulled from
	// within the cluster.
	ClusterHost string `json:"clusterHost,omitempty"`
}

DevRegistry specifies configuration for the dev registry support.

func (*DevRegistry) DeepCopy added in v1.5.0

func (in *DevRegistry) DeepCopy() *DevRegistry

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DevRegistry.

func (*DevRegistry) DeepCopyInto added in v1.5.0

func (in *DevRegistry) DeepCopyInto(out *DevRegistry)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Email added in v1.5.0

type Email struct {
	// From is who is set as the sender of rig emails.
	From string `json:"from,omitempty"`

	// Type is what client rig should use to send emails.
	Type EmailType `json:"type,omitempty"`
}

Email holds configuration for sending emails. Either using mailjet or using SMTP

func (*Email) DeepCopy added in v1.5.0

func (in *Email) DeepCopy() *Email

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Email.

func (*Email) DeepCopyInto added in v1.5.0

func (in *Email) DeepCopyInto(out *Email)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type EmailType added in v1.5.0

type EmailType string

EmailType represents a type of mailing provider

type GitAuthor added in v1.5.0

type GitAuthor struct {
	// Name of author
	Name string `json:"name,omitempty"`

	// Email of author
	Email string `json:"email,omitempty"`
}

GitAuthor specifies a git commit author

func (*GitAuthor) DeepCopy added in v1.5.0

func (in *GitAuthor) DeepCopy() *GitAuthor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitAuthor.

func (*GitAuthor) DeepCopyInto added in v1.5.0

func (in *GitAuthor) DeepCopyInto(out *GitAuthor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GitCredentials added in v1.5.0

type GitCredentials struct {
	// HTTPS specifies basic auth credentials.
	HTTPS HTTPSCredential `json:"https,omitempty"`

	// SSH specifies SSH credentials.
	SSH SSHCredential `json:"ssh,omitempty"`
}

GitCredentials specifies how to authenticate against git.

func (*GitCredentials) DeepCopy added in v1.5.0

func (in *GitCredentials) DeepCopy() *GitCredentials

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitCredentials.

func (*GitCredentials) DeepCopyInto added in v1.5.0

func (in *GitCredentials) DeepCopyInto(out *GitCredentials)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GitTemplates added in v1.5.0

type GitTemplates struct {
	// Rollout specifies the template used for rollout commits.
	Rollout string `json:"rollout,omitempty"`

	// Delete specifies the template used for delete commits.
	Delete string `json:"delete,omitempty"`
}

GitTemplates specifies the templates used for creating commits.

func (*GitTemplates) DeepCopy added in v1.5.0

func (in *GitTemplates) DeepCopy() *GitTemplates

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitTemplates.

func (*GitTemplates) DeepCopyInto added in v1.5.0

func (in *GitTemplates) DeepCopyInto(out *GitTemplates)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HTTPSCredential added in v1.5.0

type HTTPSCredential struct {
	// Username is the basic auth user name
	Username string `json:"username,omitempty"`

	// Password is the basic auth password
	Password string `json:"password,omitempty"`
}

HTTPSCredential specifies basic auth credentials

func (*HTTPSCredential) DeepCopy added in v1.5.0

func (in *HTTPSCredential) DeepCopy() *HTTPSCredential

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPSCredential.

func (*HTTPSCredential) DeepCopyInto added in v1.5.0

func (in *HTTPSCredential) DeepCopyInto(out *HTTPSCredential)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IngressConfig

type IngressConfig struct {
	// Annotations for all ingress resources created.
	Annotations map[string]string `json:"annotations"`

	// ClassName specifies the default ingress class to use for all ingress
	// resources created.
	ClassName string `json:"className"`
}

func (*IngressConfig) DeepCopy

func (in *IngressConfig) DeepCopy() *IngressConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressConfig.

func (*IngressConfig) DeepCopyInto

func (in *IngressConfig) DeepCopyInto(out *IngressConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Logging added in v1.5.0

type Logging struct {
	// DevModeEnabled enables verbose logs and changes the logging format to be
	// more human readable.
	DevMode bool `json:"devMode,omitempty"`

	// Level sets the granularity of logging.
	Level zapcore.Level `json:"level,omitempty"`
}

Logging specifies logging configuration.

func (*Logging) DeepCopy added in v1.5.0

func (in *Logging) DeepCopy() *Logging

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Logging.

func (*Logging) DeepCopyInto added in v1.5.0

func (in *Logging) DeepCopyInto(out *Logging)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OAuth added in v1.5.0

type OAuth struct {
	// Google specifies OAuth client configuration for google.
	Google OAuthClientCredentials `json:"google,omitempty"`

	// Github specifies OAuth client configuration for github.
	Github OAuthClientCredentials `json:"github,omitempty"`

	// Facebook specifies OAuth client configuration for facebook.
	Facebook OAuthClientCredentials `json:"facebook,omitempty"`
}

OAuth specifies configuration for different OAuth providers.

func (*OAuth) DeepCopy added in v1.5.0

func (in *OAuth) DeepCopy() *OAuth

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OAuth.

func (*OAuth) DeepCopyInto added in v1.5.0

func (in *OAuth) DeepCopyInto(out *OAuth)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OAuthClientCredentials added in v1.5.0

type OAuthClientCredentials struct {
	// ClientID is the OAuth client ID.
	ClientID string `json:"clientId,omitempty"`

	// ClientSecret is the OAuth client secret.
	ClientSecret string `json:"clientSecret,omitempty"`
}

OAuthClientCredentials specifies a set of OAuth client credentials.

func (*OAuthClientCredentials) DeepCopy added in v1.5.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OAuthClientCredentials.

func (*OAuthClientCredentials) DeepCopyInto added in v1.5.0

func (in *OAuthClientCredentials) DeepCopyInto(out *OAuthClientCredentials)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperatorConfig

type OperatorConfig struct {
	metav1.TypeMeta `json:",inline"`

	// WebhooksEnabled set wether or not webhooks should be enabled. When
	// enabled a certificate should be mounted at the webhook server
	// certificate path. Defaults to true if omitted.
	WebhooksEnabled *bool `json:"webhooksEnabled,omitempty"`

	// DevModeEnabled enables verbose logs and changes the logging format to be
	// more human readable.
	DevModeEnabled bool `json:"devModeEnabled,omitempty"`

	// LeaderElectionEnabled enables leader election when running multiple
	// instances of the operator.
	LeaderElectionEnabled *bool `json:"leaderElectionEnabled,omitempty"`

	// Certmanager holds configuration for how the operator should create
	// certificates for ingress resources.
	Certmanager *CertManagerConfig `json:"certManager,omitempty"`

	// Ingress holds the configuration for ingress resources created by the
	// operator.
	Ingress IngressConfig `json:"ingress,omitempty"`
}

OperatorConfig is the Schema for the configs API +kubebuilder:object:root=true

func (*OperatorConfig) DeepCopy

func (in *OperatorConfig) DeepCopy() *OperatorConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorConfig.

func (*OperatorConfig) DeepCopyInto

func (in *OperatorConfig) DeepCopyInto(out *OperatorConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OperatorConfig) DeepCopyObject

func (in *OperatorConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*OperatorConfig) Default

func (c *OperatorConfig) Default()

type PlatformConfig added in v1.5.0

type PlatformConfig struct {
	metav1.TypeMeta `json:",inline"`

	// Port sets the port the platform should listen on
	Port int `json:"port,omitempty"`

	// PublicUrl sets the public url for the platform. This is used for
	// generating urls for the platform when using oauth2.
	PublicURL string `json:"publicUrl,omitempty"`

	// TelemetryEnabled specifies wether or not we are allowed to collect usage
	// data. Defaults to true.
	TelemetryEnabled bool `json:"telemetryEnabled,omitempty"`

	// Auth holds authentication configuration.
	Auth Auth `json:"auth,omitempty"`

	// Client holds configuration for clients used in the platform.
	Client Client `json:"client,omitempty"`

	// Repository specifies the type of db to use along with secret key
	Repository Repository `json:"repository,omitempty"`

	// OAuth holds configuration for oauth2 clients, namely google, github and facebook.
	OAuth OAuth `json:"oauth,omitempty"`

	// Cluster holds cluster specific configuration
	Cluster Cluster `json:"cluster,omitempty"`

	// Email holds configuration for sending emails. Either using mailjet or using SMTP
	Email Email `json:"email,omitempty"`

	// Loggin holds information about the granularity of logging
	Logging Logging `json:"logging,omitempty"`
}

OperatorConfig is the Schema for the configs API +kubebuilder:object:root=true

func NewDefaultPlatform added in v1.5.0

func NewDefaultPlatform() *PlatformConfig

func (*PlatformConfig) DeepCopy added in v1.5.0

func (in *PlatformConfig) DeepCopy() *PlatformConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlatformConfig.

func (*PlatformConfig) DeepCopyInto added in v1.5.0

func (in *PlatformConfig) DeepCopyInto(out *PlatformConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PlatformConfig) DeepCopyObject added in v1.5.0

func (in *PlatformConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type Repository added in v1.5.0

type Repository struct {
	// Store is what database will be used can be either postgres or mongodb.
	Store string `json:"store,omitempty"`

	// Secret is a secret key used for encrypting sensitive data before saving
	// it in the database.
	Secret string `json:"secret,omitempty"`
}

Repository specifies repository configuration

func (*Repository) DeepCopy added in v1.5.0

func (in *Repository) DeepCopy() *Repository

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Repository.

func (*Repository) DeepCopyInto added in v1.5.0

func (in *Repository) DeepCopyInto(out *Repository)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SSHCredential added in v1.5.0

type SSHCredential struct {
	// PrivateKey is a PEM encoded SSH private key.
	PrivateKey string `json:"privateKey,omitempty"`

	// PrivateKeyPassword is an optional password for the SSH private key.
	PrivateKeyPassword string `json:"password,omitempty"`
}

SSHCredential specifies SSH credentials

func (*SSHCredential) DeepCopy added in v1.5.0

func (in *SSHCredential) DeepCopy() *SSHCredential

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHCredential.

func (*SSHCredential) DeepCopyInto added in v1.5.0

func (in *SSHCredential) DeepCopyInto(out *SSHCredential)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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