Documentation ¶
Index ¶
- func PluginIsType(plugin Plugin, pluginType PluginType) bool
- func PluginTypeNames(pluginType PluginType) []string
- type Accounter
- type Authenticater
- type ConfigReader
- type Datastorer
- type Logger
- type Plugin
- type PluginInfo
- type PluginSystem
- type PluginType
- type PoolContacter
- type RadiusHandler
- type RadiusPacketServer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func PluginIsType ¶
func PluginIsType(plugin Plugin, pluginType PluginType) bool
PluginIsType returns true if the plugin is of the specific type
func PluginTypeNames ¶
func PluginTypeNames(pluginType PluginType) []string
PluginTypeNames returns a string list of all plugin types
Types ¶
type Accounter ¶
type Accounter interface { Plugin HandleAccountingPacket(responseWriter radius.ResponseWriter, request *radius.Request, timestamp time.Time) HandleAccountingOnOff(nas string, acctType goradius.AcctStatusType) SendAccountingResponse(responseWriter radius.ResponseWriter, request *radius.Request) CheckAndLogTimingErrors(timestamp time.Time, acctSessionID, nas string, serviceID int, isService bool, statusType goradius.AcctStatusType, packetAttributes utils.PacketAttributes) }
A Accounter is called when a subscriber's session needs to be handled
type Authenticater ¶
type Authenticater interface { Plugin HandleAuthenticationPacket(responseWriter radius.ResponseWriter, request *radius.Request, timestamp time.Time) }
A Authenticater is called when subscriber authentication needs to be handled
type ConfigReader ¶
type ConfigReader interface { Values(sectionName string) map[string]string String(sectionName, key string) string Integer(sectionName, key string) int Duration(sectionName, key string) time.Duration Subsections(sectionName string, level int) []string SubsectionValues(sectionName, key string) []string GetServerAndRestAPIAddress(serverType utils.ServerType) (ipAddress, restAPIAddress string) }
type Datastorer ¶
type Datastorer interface { Plugin CheckConnectivity() bool Retrieve(collection string, key string) (map[string]interface{}, error) Store(collection string, key string, value interface{}) error Delete(collection string, key string) error RetrieveGroup(key string) (map[string]interface{}, error) StoreGroup(key string, value interface{}) error RetrieveUser(key string) (map[string]interface{}, error) StoreUser(key string, value interface{}) error RetrieveSession(key string) (map[string]interface{}, error) StoreSession(key string, value interface{}) error RetrieveService(key string) (map[string]interface{}, error) StoreService(key string, value interface{}) error RetrieveAuthARI(key string) (map[string]interface{}, error) StoreAuthARI(key string, value interface{}) error RetrieveAuthUser(key string) (map[string]interface{}, error) StoreAuthUser(key string, value interface{}) error }
A Datastorer is called when data needs to be stored or retrieved
type Logger ¶
type Logger interface { logrus.Ext1FieldLogger }
type Plugin ¶
type Plugin interface { GetPluginInfo() PluginInfo Init(Logger, ConfigReader) error InitWithPluginSystem(pluginSystem PluginSystem) error Start(conf utils.ServerFlagConfig) error }
A Plugin is called by gorad when defined actions occur. The plugin knows about the business logic.
type PluginInfo ¶
type PluginInfo struct { Name string Buildvers buildvers.Buildvers Type PluginType }
PluginInfo holds all information about the plugin
type PluginSystem ¶
type PluginSystem interface { LoadPlugins(pluginDir string) ([]Plugin, error) Select(pluginType PluginType, name string) error GetByName(name string) (Plugin, error) GetAllAuthenticater() (map[string]Authenticater, error) GetAllAccounter() (map[string]Accounter, error) GetAllDatastorer() (map[string]Datastorer, error) GetAllPoolContacter() (map[string]PoolContacter, error) }
PluginSystem is the interface for plugins to call other plugins
type PluginType ¶
type PluginType int
PluginType represents the type of plugin
const ( // TypeRadiusHandler is a plugin which is responsible for handling the incoming radius packets TypeRadiusHandler PluginType = 1 // TypeAuthenticater is a plugin which is responsible for authenticating a subscriber TypeAuthenticater PluginType = 2 // TypeAccounter is a plugin which is responsible for accounting a subscriber's session TypeAccounter PluginType = 4 // TypeDatastorer is a plugin which is responsible for storing and retrieving data TypeDatastorer PluginType = 8 // TypePoolContacter is a plugin which is responsible for contacting the pool server TypePoolContacter PluginType = 16 )
func (PluginType) String ¶
func (pluginType PluginType) String() string
type PoolContacter ¶
type PoolContacter interface { Plugin SetIPPool(authenticationInformation utils.AuthenticationInformation, bngName, acctSessionID string, attributes map[string][]interface{}) bool ClearIPPool(device string) LockSessionIPAddresses(device, poolname, acctSessionID string) DeleteSessionIPAddresses(device, acctSessionID string) }
A PoolContacter is called when a subscriber's session needs to be handled
type RadiusHandler ¶
type RadiusHandler interface { Plugin GetRadiusHandler() func(radius.ResponseWriter, *radius.Request) }
A RadiusHandler is called when an incoming radius packet needs to be handled