libradius

package module
v1.5.4 Latest Latest
Warning

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

Go to latest
Published: Nov 1, 2024 License: GPL-3.0 Imports: 10 Imported by: 0

README

libradius

Library with RADIUS client / server fast deploy and Wimark AVPs parsing. Using in Wimark wBRAS.

Wimark Systems, 2021

Documentation

Index

Constants

View Source
const (
	VendorCisco    uint32 = 9
	VendorWimark   uint32 = 52400
	VendorAirspace uint32 = 14179
	VendorAlu      uint32 = 6527
	VendorRdp      uint32 = 250
)
View Source
const (
	RadiusStart  = "Start"
	RadiusUpdate = "Interim-Update"
	RadiusStop   = "Stop"
)
View Source
const (
	RadiusNASPortTypeWifi     = "wireless"
	RadiusNASPortTypeEthernet = "ethernet"
)
View Source
const (
	RadiusCauseStop    = "Host-Request"
	RadiusCauseSession = "Session-Timeout"
	RadiusCauseAdmin   = "Admin-Reset"
)
View Source
const (
	CiscoCodeLogon  = byte(0x1)
	CiscoCodeLogoff = byte(0x2)
)
View Source
const (
	CiscoSubscriberLogon      = "subscriber:command=account-logon"
	CiscoSubscriberLogoff     = "subscriber:command=account-logoff"
	CiscoSubscriberReauth     = "subscriber:command=reauthenticate"
	CiscoSubscriberReauthType = "subscriber:reathenticate-type=last"
	CiscoAuditSessionID       = "audit-session-id="
)

Variables

View Source
var WimarkAlwaysRedirect_Strings = map[WimarkAlwaysRedirect]string{}
View Source
var WimarkSessionTimeout_Strings = map[WimarkSessionTimeout]string{}

Functions

func AddVSAInt

func AddVSAInt(p *radius.Packet, vendor uint32, attribute uint8, value int)

func AddVSAString

func AddVSAString(p *radius.Packet, vendor uint32, attribute uint8, value string)

func CreateHexVSA added in v1.4.7

func CreateHexVSA(value string, t AVPType, vendor uint32) (hex []byte)

func NewRadiusClient added in v1.4.0

func NewRadiusClient(cfg *RadiusClientConfig) *radius.Client

func SendCoA

func SendCoA(addr, secret string, request CoaRequest) error

func SendPacket

func SendPacket(addr string, packet *radius.Packet) (*radius.Packet, error)

func ServerRun

func ServerRun(cfg *RadiusServerConfig, handler func(w radius.ResponseWriter, r *radius.Request)) error

func ServerRunAsync added in v1.4.0

func ServerRunAsync(cfg *RadiusServerConfig, h func(w radius.ResponseWriter, r *radius.Request)) (*radius.PacketServer, error)

func ServerRunAsyncWithMultipleSecrets added in v1.4.3

func ServerRunAsyncWithMultipleSecrets(
	cfg *RadiusServerConfig,
	s radius.SecretSource,
	f func(w radius.ResponseWriter, r *radius.Request),
) (*radius.PacketServer, error)

func WimarkAlwaysRedirect_Add added in v1.4.0

func WimarkAlwaysRedirect_Add(p *radius.Packet, value WimarkAlwaysRedirect) (err error)

func WimarkAlwaysRedirect_Del added in v1.4.0

func WimarkAlwaysRedirect_Del(p *radius.Packet)

func WimarkAlwaysRedirect_Set added in v1.4.0

func WimarkAlwaysRedirect_Set(p *radius.Packet, value WimarkAlwaysRedirect) (err error)

func WimarkCPEID_Add added in v1.4.6

func WimarkCPEID_Add(p *radius.Packet, value []byte) (err error)

func WimarkCPEID_AddString added in v1.4.6

func WimarkCPEID_AddString(p *radius.Packet, value string) (err error)

func WimarkCPEID_Del added in v1.4.6

func WimarkCPEID_Del(p *radius.Packet)

func WimarkCPEID_Get added in v1.4.6

func WimarkCPEID_Get(p *radius.Packet) (value []byte)

func WimarkCPEID_GetString added in v1.4.6

func WimarkCPEID_GetString(p *radius.Packet) (value string)

func WimarkCPEID_GetStrings added in v1.4.6

func WimarkCPEID_GetStrings(p *radius.Packet) (values []string, err error)

func WimarkCPEID_Gets added in v1.4.6

func WimarkCPEID_Gets(p *radius.Packet) (values [][]byte, err error)

func WimarkCPEID_Lookup added in v1.4.6

func WimarkCPEID_Lookup(p *radius.Packet) (value []byte, err error)

func WimarkCPEID_LookupString added in v1.4.6

func WimarkCPEID_LookupString(p *radius.Packet) (value string, err error)

func WimarkCPEID_Set added in v1.4.6

func WimarkCPEID_Set(p *radius.Packet, value []byte) (err error)

func WimarkCPEID_SetString added in v1.4.6

func WimarkCPEID_SetString(p *radius.Packet, value string) (err error)

func WimarkClientGroup_Add added in v1.4.0

func WimarkClientGroup_Add(p *radius.Packet, value []byte) (err error)

func WimarkClientGroup_AddString added in v1.4.0

func WimarkClientGroup_AddString(p *radius.Packet, value string) (err error)

func WimarkClientGroup_Del added in v1.4.0

func WimarkClientGroup_Del(p *radius.Packet)

func WimarkClientGroup_Get added in v1.4.0

func WimarkClientGroup_Get(p *radius.Packet) (value []byte)

func WimarkClientGroup_GetString added in v1.4.0

func WimarkClientGroup_GetString(p *radius.Packet) (value string)

func WimarkClientGroup_GetStrings added in v1.4.0

func WimarkClientGroup_GetStrings(p *radius.Packet) (values []string, err error)

func WimarkClientGroup_Gets added in v1.4.0

func WimarkClientGroup_Gets(p *radius.Packet) (values [][]byte, err error)

func WimarkClientGroup_Lookup added in v1.4.0

func WimarkClientGroup_Lookup(p *radius.Packet) (value []byte, err error)

func WimarkClientGroup_LookupString added in v1.4.0

func WimarkClientGroup_LookupString(p *radius.Packet) (value string, err error)

func WimarkClientGroup_Set added in v1.4.0

func WimarkClientGroup_Set(p *radius.Packet, value []byte) (err error)

func WimarkClientGroup_SetString added in v1.4.0

func WimarkClientGroup_SetString(p *radius.Packet, value string) (err error)

func WimarkSessionTimeout_Add added in v1.4.0

func WimarkSessionTimeout_Add(p *radius.Packet, value WimarkSessionTimeout) (err error)

func WimarkSessionTimeout_Del added in v1.4.0

func WimarkSessionTimeout_Del(p *radius.Packet)

func WimarkSessionTimeout_Set added in v1.4.0

func WimarkSessionTimeout_Set(p *radius.Packet, value WimarkSessionTimeout) (err error)

func WimarkWLANID_Add added in v1.4.2

func WimarkWLANID_Add(p *radius.Packet, value []byte) (err error)

func WimarkWLANID_AddString added in v1.4.2

func WimarkWLANID_AddString(p *radius.Packet, value string) (err error)

func WimarkWLANID_Del added in v1.4.2

func WimarkWLANID_Del(p *radius.Packet)

func WimarkWLANID_Get added in v1.4.2

func WimarkWLANID_Get(p *radius.Packet) (value []byte)

func WimarkWLANID_GetString added in v1.4.2

func WimarkWLANID_GetString(p *radius.Packet) (value string)

func WimarkWLANID_GetStrings added in v1.4.2

func WimarkWLANID_GetStrings(p *radius.Packet) (values []string, err error)

func WimarkWLANID_Gets added in v1.4.2

func WimarkWLANID_Gets(p *radius.Packet) (values [][]byte, err error)

func WimarkWLANID_Lookup added in v1.4.2

func WimarkWLANID_Lookup(p *radius.Packet) (value []byte, err error)

func WimarkWLANID_LookupString added in v1.4.2

func WimarkWLANID_LookupString(p *radius.Packet) (value string, err error)

func WimarkWLANID_Set added in v1.4.2

func WimarkWLANID_Set(p *radius.Packet, value []byte) (err error)

func WimarkWLANID_SetString added in v1.4.2

func WimarkWLANID_SetString(p *radius.Packet, value string) (err error)

Types

type AVP

type AVP struct {
	VendorId uint32
	TypeId   uint8
	ValueLen uint8
	Value    []byte
}

func DecodeAVPairVSA added in v1.4.0

func DecodeAVPairVSA(vsa []byte) (*AVP, error)

func DecodeAVPairsVSA added in v1.4.0

func DecodeAVPairsVSA(p *radius.Packet) ([]*AVP, error)

func DecodeAVPairsVSAByVendor added in v1.4.0

func DecodeAVPairsVSAByVendor(p *radius.Packet, vendorID uint32) ([]*AVP, error)

func (*AVP) String

func (a *AVP) String() string

type AVPType

type AVPType uint8
const (
	WimarkAVPTypeClientStr                   AVPType = 3
	WimarkAVPTypeSessionInt                  AVPType = 4
	WimarkAVPTypeAlwaysRedirect              AVPType = 5
	WimarkRadiusExternalAuthUserRoleType     AVPType = 6
	WimarkRadiusExternalAuthUserLocationType AVPType = 7
	WimarkIdentifierWLANType                 AVPType = 8
	WimarkAuthCPEIDType                      AVPType = 9
)
const (
	CiscoAVPTypeDefault     AVPType = 1
	CiscoAVPTypeAccountInfo AVPType = 250
	CiscoAVPTypeCommandCode AVPType = 252
)
const (
	AirspaceAVPTypeACLName AVPType = 6
)
const (
	RdpServiceName AVPType = 250
)

type AirspaceAVPs added in v1.5.4

type AirspaceAVPs struct {
	ACLName string
}

func DecodeAirspaceAVPairsStruct added in v1.5.4

func DecodeAirspaceAVPairsStruct(p *radius.Packet) (AirspaceAVPs, error)

type CiscoAVPs

type CiscoAVPs struct {
	AccountInfo      string
	CommandCodeStr   string
	AuditSessionID   string
	CommandCodeBytes []byte
	AVPList          []string
}

func DecodeCiscoAVPairsStruct

func DecodeCiscoAVPairsStruct(p *radius.Packet) (CiscoAVPs, error)

type CoaRequest

type CoaRequest struct {
	FramedIPAddress string
	AcctSessionID   string
	SessionTimeout  int
	IdleTimeout     int
	VSAList         []VSAEntity
}

type RadiusClientConfig added in v1.4.0

type RadiusClientConfig struct {
	MaxPacketErrors int
	Retry           time.Duration
}

func NewRadiusClientConfig added in v1.4.0

func NewRadiusClientConfig(maxPacketErrors int, retry time.Duration) *RadiusClientConfig

type RadiusServerConfig added in v1.4.0

type RadiusServerConfig struct {
	Host   string `json:"host"`
	Port   string `json:"port"`
	Secret string `json:"secret"`
}

func NewRadiusServerConfig added in v1.4.0

func NewRadiusServerConfig(host, port, secret string) *RadiusServerConfig

func (*RadiusServerConfig) GetAddr added in v1.4.0

func (c *RadiusServerConfig) GetAddr() string

type RadiusUserData added in v1.4.0

type RadiusUserData struct {
	UserRole     string
	UserLocation string
}

func LookupExternalRadiusAuthAttrs added in v1.4.0

func LookupExternalRadiusAuthAttrs(p *radius.Packet) (*RadiusUserData, error)

type VSAEntity

type VSAEntity struct {
	Vendor      uint32
	Attr        byte
	ValueString string
	ValueInt    int
}

type WimarkAVPs

type WimarkAVPs struct {
	ClientStr  string
	SessionInt int
}

func DecodeWimarkAVPairsStruct

func DecodeWimarkAVPairsStruct(p *radius.Packet) (WimarkAVPs, error)

type WimarkAlwaysRedirect added in v1.4.0

type WimarkAlwaysRedirect uint32

func WimarkAlwaysRedirect_Get added in v1.4.0

func WimarkAlwaysRedirect_Get(p *radius.Packet) (value WimarkAlwaysRedirect)

func WimarkAlwaysRedirect_Gets added in v1.4.0

func WimarkAlwaysRedirect_Gets(p *radius.Packet) (values []WimarkAlwaysRedirect, err error)

func WimarkAlwaysRedirect_Lookup added in v1.4.0

func WimarkAlwaysRedirect_Lookup(p *radius.Packet) (value WimarkAlwaysRedirect, err error)

func (WimarkAlwaysRedirect) String added in v1.4.0

func (a WimarkAlwaysRedirect) String() string

type WimarkSessionTimeout added in v1.4.0

type WimarkSessionTimeout uint32

func WimarkSessionTimeout_Get added in v1.4.0

func WimarkSessionTimeout_Get(p *radius.Packet) (value WimarkSessionTimeout)

func WimarkSessionTimeout_Gets added in v1.4.0

func WimarkSessionTimeout_Gets(p *radius.Packet) (values []WimarkSessionTimeout, err error)

func WimarkSessionTimeout_Lookup added in v1.4.0

func WimarkSessionTimeout_Lookup(p *radius.Packet) (value WimarkSessionTimeout, err error)

func (WimarkSessionTimeout) String added in v1.4.0

func (a WimarkSessionTimeout) String() string

Jump to

Keyboard shortcuts

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