component

package
v0.0.0-...-2f095fc Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2016 License: MIT Imports: 29 Imported by: 0

Documentation

Overview

Package component contains code that is shared by all components (discovery, router, broker, networkserver, handler)

Index

Constants

This section is empty.

Variables

View Source
var AuthServerRegex = regexp.MustCompile(`^(http[s]?://)(?:([0-9a-z_-]+)(?::([0-9A-Za-z-!"#$%&'()*+,.:;<=>?@[\]^_{|}~]+))?@)?([0-9a-z.-]+)/?$`)

AuthServerRegex gives the format of auth server configuration. Format: [username[:password]@]domain - usernames can contain lowercase letters, numbers, underscores and dashes - passwords can contain uppercase and lowercase letters, numbers, and special characters - domains can be http/https and can contain lowercase letters, numbers, dashes and dots

View Source
var ErrNoAuthServerRegexMatch = errors.New("Account server did not match AuthServerRegex")

ErrNoAuthServerRegexMatch is returned when an auth server

Functions

This section is empty.

Types

type Component

type Component struct {
	Config      Config
	Identity    *pb_discovery.Announcement
	Discovery   pb_discovery.Client
	Monitors    map[string]*pb_monitor.Client
	Ctx         log.Interface
	AccessToken string

	TokenKeyProvider tokenkey.Provider
	// contains filtered or unexported fields
}

Component contains the common attributes for all TTN components

func New

func New(ctx log.Interface, serviceName string, announcedAddress string) (*Component, error)

New creates a new Component

func (*Component) Announce

func (c *Component) Announce() error

Announce the component to TTN discovery

func (*Component) BuildJWT

func (c *Component) BuildJWT() (string, error)

BuildJWT builds a short-lived JSON Web Token for this component

func (*Component) Discover

func (c *Component) Discover(serviceName, id string) (*pb_discovery.Announcement, error)

Discover is used to discover another component

func (*Component) ExchangeAppKeyForToken

func (c *Component) ExchangeAppKeyForToken(appID, key string) (string, error)

ExchangeAppKeyForToken enables authentication with the App Access Key

func (*Component) GetContext

func (c *Component) GetContext(token string) context.Context

GetContext returns a context for outgoing RPC request. If token is "", this function will generate a short lived token from the component

func (*Component) GetStatus

func (c *Component) GetStatus() Status

GetStatus gets the health status of the component

func (*Component) InitAuth

func (c *Component) InitAuth() error

InitAuth initializes Auth functionality

func (*Component) ServerOptions

func (c *Component) ServerOptions() []grpc.ServerOption

func (*Component) SetStatus

func (c *Component) SetStatus(status Status)

SetStatus sets the health status of the component

func (*Component) UpdateTokenKey

func (c *Component) UpdateTokenKey() error

UpdateTokenKey updates the OAuth Bearer token key

func (*Component) ValidateNetworkContext

func (c *Component) ValidateNetworkContext(ctx context.Context) (component *pb_discovery.Announcement, err error)

ValidateNetworkContext validates the context of a network request (router-broker, broker-handler, etc)

func (*Component) ValidateTTNAuthContext

func (c *Component) ValidateTTNAuthContext(ctx context.Context) (*claims.Claims, error)

ValidateTTNAuthContext gets a token from the context and validates it

type Config

type Config struct {
	AuthServers map[string]string
	KeyDir      string
	UseTLS      bool
}

Config is the configuration for this component

func ConfigFromViper

func ConfigFromViper() Config

ConfigFromViper imports configuration from Viper

type Interface

type Interface interface {
	RegisterRPC(s *grpc.Server)
	Init(c *Component) error
	Shutdown()
	ValidateNetworkContext(ctx context.Context) (*pb_discovery.Announcement, error)
	ValidateTTNAuthContext(ctx context.Context) (*claims.Claims, error)
}

type ManagementInterface

type ManagementInterface interface {
	RegisterManager(s *grpc.Server)
}

type Status

type Status int

Status indicates the health status of this component

const (
	// StatusHealthy indicates a healthy component
	StatusHealthy Status = iota
	// StatusUnhealthy indicates an unhealthy component
	StatusUnhealthy
)

Jump to

Keyboard shortcuts

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