luci: Index | Files | Directories

package server

import ""

Package server implements an environment for running LUCI servers.


Package Files


type Options Uses

type Options struct {
    Prod           bool   // must be set when running in production
    HTTPAddr       string // address to bind the main listening socket to
    AdminAddr      string // address to bind the admin socket to
    RootSecretPath string // path to a JSON file with the root secret key
    SettingsPath   string // path to a JSON file with app settings
    // contains filtered or unexported fields

Options are exposed as command line flags.

func (*Options) Register Uses

func (o *Options) Register(f *flag.FlagSet)

Register registers the command line flags.

type Server Uses

type Server struct {
    Routes *router.Router // HTTP routes exposed via opts.HTTPAddr
    // contains filtered or unexported fields

Server is responsible for initializing and launching the serving environment.

Doesn't do TLS. Should be sitting behind a load balancer that terminates TLS.

func New Uses

func New(opts Options) *Server

New constructs a new server instance.

It hosts one or more HTTP servers and starts and stops them in unison. It is also responsible for preparing contexts for incoming requests.

func (*Server) ListenAndServe Uses

func (s *Server) ListenAndServe() error

ListenAndServe launches the serving loop.

Blocks forever or until the server is stopped via Shutdown (from another goroutine or from a SIGTERM handler). Returns nil if the server was shutdown correctly or an error if it failed to start or unexpectedly died. The error is logged inside.

Should be called only once. Panics otherwise.

func (*Server) RegisterHTTP Uses

func (s *Server) RegisterHTTP(addr string) *router.Router

RegisterHTTP prepares an additional HTTP server.

Can be used to open more listening HTTP ports (in addition to opts.HTTPAddr and opts.AdminAddr). Returns a router that should be populated with routes exposed through the added server.

Should be called before ListenAndServe (panics otherwise).

func (*Server) Shutdown Uses

func (s *Server) Shutdown()

Shutdown gracefully stops the server if it was running.

Blocks until the server is stopped. Can be called multiple times.


analyticsPackage analytics provides a standard way to store the Google Analytics tracking ID.
authPackage auth implements authentication and authorization framework for HTTP servers.
auth/authdbPackage authdb contains definition of Authentication Database (aka AuthDB).
auth/authtestPackage authtest implements some interfaces used by auth package to simplify unit testing.
auth/delegationPackage delegation contains low-level API for working with delegation tokens.
auth/openidPackage openid implements OpenID Connect Login protocol (client side).
auth/servicePackage service implements a wrapper around API exposed by auth_service:
auth/signingPackage signing provides interfaces to sign arbitrary small blobs with RSA-SHA256 signature (PKCS1v15) and verify such signatures.
auth/signing/signingtestPackage signingtest implements signing.Signer interface using small random keys.
auth/xsrfPackage xsrf provides Cross Site Request Forgery prevention middleware.
cachingPackage caching implements common server object caches.
caching/cachingtestPackage cachingtest contains helpers for testing code that uses caching package.
caching/layeredPackage layered provides a two-layer cache for serializable objects.
middlewarePackage middleware defines base type for context-aware HTTP request handler.
portalPackage portal implements HTTP routes for portal pages.
portal/internal/assetsPackage assets is generated by
pprofPackage pprof is similar to net/http/pprof, except it supports auth.
routerPackage router provides an HTTP router with support for middleware and subrouters.
secretsPackage secrets provides an interface for a simple secret store: you ask it for a secret (a byte blob, identifies by some key), and it returns it to you (current version, as well as a bunch of previous versions).
secrets/testsecretsPackage testsecrets provides a dumb in-memory secret store to use in unit tests.
settingsPackage settings implements storage for infrequently changing global settings.
templatesPackage templates implements wrapper around html/template to provide lazy loading of templates and better integration with HTTP middleware framework.
tokensPackage tokens provides means to generate and validate base64 encoded tokens compatible with luci-py's components.auth implementation.
tsmonPackage tsmon adapts common/tsmon library to a server-side environment.
warmupPackage warmup allows to register hooks executed during the server warmup.

Package server imports 28 packages (graph). Updated 2019-05-23. Refresh now. Tools for package owners.