joinserver

package
v0.0.0-...-60b8695 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2021 License: Apache-2.0 Imports: 36 Imported by: 0

Documentation

Overview

Package joinserver provides a LoRaWAN-compliant Join Server implementation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteApplicationActivationSettings

func DeleteApplicationActivationSettings(ctx context.Context, r ApplicationActivationSettingRegistry, appID ttnpb.ApplicationIdentifiers) error

DeleteApplicationActivationSettings deletes application activation settings from r.

func DeleteDevice

func DeleteDevice(ctx context.Context, r DeviceRegistry, appID ttnpb.ApplicationIdentifiers, devID string) error

DeleteDevice deletes device identified by joinEUI, devEUI from r.

func DeleteKeys

func DeleteKeys(ctx context.Context, r KeyRegistry, joinEUI, devEUI types.EUI64, id []byte) error

DeleteKeys deletes session keys identified by devEUI, id pair from r.

Types

type ApplicationActivationSettingRegistry

ApplicationActivationSettingRegistry is a registry, containing application activation settings.

type Config

type Config struct {
	Devices                       DeviceRegistry                       `name:"-"`
	Keys                          KeyRegistry                          `name:"-"`
	ApplicationActivationSettings ApplicationActivationSettingRegistry `name:"-"`
	JoinEUIPrefixes               []types.EUI64Prefix                  `name:"join-eui-prefix" description:"JoinEUI prefixes handled by this JS"`
	DeviceKEKLabel                string                               `name:"device-kek-label" description:"Label of KEK used to encrypt device keys at rest"`
}

Config represents the JoinServer configuration.

type DeviceRegistry

type DeviceRegistry interface {
	GetByEUI(ctx context.Context, joinEUI types.EUI64, devEUI types.EUI64, paths []string) (*ttnpb.ContextualEndDevice, error)
	GetByID(ctx context.Context, appID ttnpb.ApplicationIdentifiers, devID string, paths []string) (*ttnpb.EndDevice, error)
	SetByEUI(ctx context.Context, joinEUI types.EUI64, devEUI types.EUI64, paths []string, f func(context.Context, *ttnpb.EndDevice) (*ttnpb.EndDevice, []string, error)) (*ttnpb.ContextualEndDevice, error)
	SetByID(ctx context.Context, appID ttnpb.ApplicationIdentifiers, devID string, paths []string, f func(*ttnpb.EndDevice) (*ttnpb.EndDevice, []string, error)) (*ttnpb.EndDevice, error)
}

DeviceRegistry is a registry, containing devices.

type JoinServer

type JoinServer struct {
	*component.Component
	// contains filtered or unexported fields
}

JoinServer implements the Join Server component.

The Join Server exposes the NsJs and DeviceRegistry services.

func New

func New(c *component.Component, conf *Config) (*JoinServer, error)

New returns new *JoinServer.

func (*JoinServer) Context

func (js *JoinServer) Context() context.Context

Context returns the context of the Join Server.

func (*JoinServer) GetAppSKey

GetAppSKey returns the requested application session key.

func (*JoinServer) GetHomeNetID

func (js *JoinServer) GetHomeNetID(ctx context.Context, joinEUI, devEUI types.EUI64) (*types.NetID, error)

GetHomeNetID returns the requested NetID.

func (*JoinServer) GetNwkSKeys

GetNwkSKeys returns the requested network session keys.

func (*JoinServer) HandleJoin

func (js *JoinServer) HandleJoin(ctx context.Context, req *ttnpb.JoinRequest) (res *ttnpb.JoinResponse, err error)

HandleJoin handles the given join-request.

func (*JoinServer) RegisterHandlers

func (js *JoinServer) RegisterHandlers(s *runtime.ServeMux, conn *grpc.ClientConn)

RegisterHandlers registers gRPC handlers.

func (*JoinServer) RegisterInterop

func (js *JoinServer) RegisterInterop(srv *interop.Server)

RegisterInterop registers the NS-JS and AS-JS interop services.

func (*JoinServer) RegisterServices

func (js *JoinServer) RegisterServices(s *grpc.Server)

RegisterServices registers services provided by js at s.

func (*JoinServer) Roles

func (js *JoinServer) Roles() []ttnpb.ClusterRole

Roles of the gRPC service.

type KeyRegistry

type KeyRegistry interface {
	GetByID(ctx context.Context, joinEUI, devEUI types.EUI64, id []byte, paths []string) (*ttnpb.SessionKeys, error)
	SetByID(ctx context.Context, joinEUI, devEUI types.EUI64, id []byte, paths []string, f func(*ttnpb.SessionKeys) (*ttnpb.SessionKeys, []string, error)) (*ttnpb.SessionKeys, error)
}

KeyRegistry is a registry, containing session keys.

Directories

Path Synopsis
Package redis provides Redis implementations of interfaces used by joinserver.
Package redis provides Redis implementations of interfaces used by joinserver.

Jump to

Keyboard shortcuts

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