radius 0.6.0.0 → 0.6.0.1
raw patch · 3 files changed
+153/−3 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Network.RADIUS.Encoding: instance Data.Binary.Class.Binary Network.RADIUS.Types.Authentic
+ Network.RADIUS.Encoding: instance Data.Binary.Class.Binary Network.RADIUS.Types.StatusType
+ Network.RADIUS.Encoding: instance Data.Binary.Class.Binary Network.RADIUS.Types.TerminateCause
+ Network.RADIUS.Types: AccountingOff :: StatusType
+ Network.RADIUS.Types: AccountingOn :: StatusType
+ Network.RADIUS.Types: AcctAuthenticAttribute :: Authentic -> PacketAttribute
+ Network.RADIUS.Types: AcctDelayTimeAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctInputOctetsAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctInputPacketsAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctLinkCountAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctMultiSessionIdAttribute :: ByteString -> PacketAttribute
+ Network.RADIUS.Types: AcctOutputOctetsAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctOutputPacketsAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctSessionIdAttribute :: ByteString -> PacketAttribute
+ Network.RADIUS.Types: AcctSessionTimeAttribute :: Word32 -> PacketAttribute
+ Network.RADIUS.Types: AcctStatusTypeAttribute :: StatusType -> PacketAttribute
+ Network.RADIUS.Types: AcctTerminateCauseAttribute :: TerminateCause -> PacketAttribute
+ Network.RADIUS.Types: AdminReboot :: TerminateCause
+ Network.RADIUS.Types: AdminReset :: TerminateCause
+ Network.RADIUS.Types: Callback :: TerminateCause
+ Network.RADIUS.Types: Failed :: StatusType
+ Network.RADIUS.Types: HostRequest :: TerminateCause
+ Network.RADIUS.Types: IdleTimeout :: TerminateCause
+ Network.RADIUS.Types: InterimUpdate :: StatusType
+ Network.RADIUS.Types: Local :: Authentic
+ Network.RADIUS.Types: LostCarrier :: TerminateCause
+ Network.RADIUS.Types: LostService :: TerminateCause
+ Network.RADIUS.Types: NASError :: TerminateCause
+ Network.RADIUS.Types: NASReboot :: TerminateCause
+ Network.RADIUS.Types: NASRequest :: TerminateCause
+ Network.RADIUS.Types: PortError :: TerminateCause
+ Network.RADIUS.Types: PortPreempted :: TerminateCause
+ Network.RADIUS.Types: PortSuspended :: TerminateCause
+ Network.RADIUS.Types: PortUnneeded :: TerminateCause
+ Network.RADIUS.Types: Radius :: Authentic
+ Network.RADIUS.Types: Remote :: Authentic
+ Network.RADIUS.Types: ServiceUnavailable :: TerminateCause
+ Network.RADIUS.Types: SessionTimeout :: TerminateCause
+ Network.RADIUS.Types: Start :: StatusType
+ Network.RADIUS.Types: Stop :: StatusType
+ Network.RADIUS.Types: UnknownAuthentic :: Int -> Authentic
+ Network.RADIUS.Types: UnknownStatusType :: Int -> StatusType
+ Network.RADIUS.Types: UnknownTerminateCause :: Int -> TerminateCause
+ Network.RADIUS.Types: UserError :: TerminateCause
+ Network.RADIUS.Types: UserRequest :: TerminateCause
+ Network.RADIUS.Types: [getAcctAuthenticAttribute] :: PacketAttribute -> Authentic
+ Network.RADIUS.Types: [getAcctDelayTimeAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctInputOctetsAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctInputPacketsAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctLinkCountAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctMultiSessionIdAttribute] :: PacketAttribute -> ByteString
+ Network.RADIUS.Types: [getAcctOutputOctetsAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctOutputPacketsAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctSessionIdAttribute] :: PacketAttribute -> ByteString
+ Network.RADIUS.Types: [getAcctSessionTimeAttribute] :: PacketAttribute -> Word32
+ Network.RADIUS.Types: [getAcctStatusTypeAttribute] :: PacketAttribute -> StatusType
+ Network.RADIUS.Types: [getAcctTerminateCauseAttribute] :: PacketAttribute -> TerminateCause
+ Network.RADIUS.Types: data Authentic
+ Network.RADIUS.Types: data StatusType
+ Network.RADIUS.Types: data TerminateCause
+ Network.RADIUS.Types: instance Data.Data.Data Network.RADIUS.Types.Authentic
+ Network.RADIUS.Types: instance Data.Data.Data Network.RADIUS.Types.StatusType
+ Network.RADIUS.Types: instance Data.Data.Data Network.RADIUS.Types.TerminateCause
+ Network.RADIUS.Types: instance GHC.Classes.Eq Network.RADIUS.Types.Authentic
+ Network.RADIUS.Types: instance GHC.Classes.Eq Network.RADIUS.Types.StatusType
+ Network.RADIUS.Types: instance GHC.Classes.Eq Network.RADIUS.Types.TerminateCause
+ Network.RADIUS.Types: instance GHC.Enum.Enum Network.RADIUS.Types.Authentic
+ Network.RADIUS.Types: instance GHC.Enum.Enum Network.RADIUS.Types.StatusType
+ Network.RADIUS.Types: instance GHC.Enum.Enum Network.RADIUS.Types.TerminateCause
+ Network.RADIUS.Types: instance GHC.Show.Show Network.RADIUS.Types.Authentic
+ Network.RADIUS.Types: instance GHC.Show.Show Network.RADIUS.Types.StatusType
+ Network.RADIUS.Types: instance GHC.Show.Show Network.RADIUS.Types.TerminateCause
Files
- radius.cabal +3/−3
- src/Network/RADIUS/Encoding.hs +36/−0
- src/Network/RADIUS/Types.hs +114/−0
radius.cabal view
@@ -1,8 +1,8 @@ name: radius-version: 0.6.0.0+version: 0.6.0.1 synopsis: Remote Authentication Dial In User Service (RADIUS) description: This module provides types and on the wire de/coding of RADIUS packets as per RFC2865-homepage: https://github.com/erickg/radius#readme+homepage: https://gitlab.com/codemonkeylabs/RADIUS license: BSD3 license-file: LICENSE author: Erick Gonzalez@@ -29,4 +29,4 @@ source-repository head type: git- location: https://github.com/erickg/radius+ location: https://gitlab.com/codemonkeylabs/RADIUS
src/Network/RADIUS/Encoding.hs view
@@ -114,6 +114,8 @@ instance Binary IPv6 instance Binary PacketAttribute where+ put (AcctSessionIdAttribute str) = putAttributeStr 44 str+ put (AcctMultiSessionIdAttribute str) = putAttributeStr 50 str put (UserNameAttribute str) = putAttributeStr 1 str put (UserPasswordAttribute str) = putAttributeStr 2 str put (FramedIPv6Route str) = putAttributeStr 99 str@@ -145,6 +147,16 @@ put (ARAPChallengeResponseAttribute str) = putAttributeStr 84 str put (NASPortIdAttribute str) = putAttributeStr 87 str put (FramedPoolAttribute str) = putAttributeStr 88 str+ put (AcctStatusTypeAttribute value) = putAttribute 40 value+ put (AcctDelayTimeAttribute value) = putAttribute 41 value+ put (AcctInputOctetsAttribute value) = putAttribute 42 value+ put (AcctOutputOctetsAttribute value) = putAttribute 43 value+ put (AcctAuthenticAttribute value) = putAttribute 45 value+ put (AcctSessionTimeAttribute value) = putAttribute 46 value+ put (AcctInputPacketsAttribute value) = putAttribute 47 value+ put (AcctOutputPacketsAttribute value) = putAttribute 48 value+ put (AcctTerminateCauseAttribute value) = putAttribute 49 value+ put (AcctLinkCountAttribute value) = putAttribute 51 value put (NASPortAttribute value) = putAttribute 5 value put (FramedMTUAttribute value) = putAttribute 12 value put (LoginTCPPortAttribute value) = putAttribute 16 value@@ -220,6 +232,18 @@ putLazyByteString attrData getAttribute :: Word8 -> Get PacketAttribute+getAttribute 44 = getAttributeStr >>= return . AcctSessionIdAttribute+getAttribute 50 = getAttributeStr >>= return . AcctMultiSessionIdAttribute+getAttribute 40 = getAttributeValue >>= return . AcctStatusTypeAttribute+getAttribute 41 = getAttributeValue >>= return . AcctDelayTimeAttribute+getAttribute 42 = getAttributeValue >>= return . AcctInputOctetsAttribute+getAttribute 43 = getAttributeValue >>= return . AcctOutputOctetsAttribute+getAttribute 45 = getAttributeValue >>= return . AcctAuthenticAttribute+getAttribute 46 = getAttributeValue >>= return . AcctSessionTimeAttribute+getAttribute 47 = getAttributeValue >>= return . AcctInputPacketsAttribute+getAttribute 48 = getAttributeValue >>= return . AcctOutputPacketsAttribute+getAttribute 49 = getAttributeValue >>= return . AcctTerminateCauseAttribute+getAttribute 51 = getAttributeValue >>= return . AcctLinkCountAttribute getAttribute 1 = getAttributeStr >>= return . UserNameAttribute getAttribute 2 = getAttributeStr >>= return . UserPasswordAttribute getAttribute 99 = getAttributeStr >>= return . FramedIPv6Route@@ -340,6 +364,18 @@ get = getEnum instance Binary ARAPZoneAccess where+ put = putEnum+ get = getEnum++instance Binary StatusType where+ put = putEnum+ get = getEnum++instance Binary Authentic where+ put = putEnum+ get = getEnum++instance Binary TerminateCause where put = putEnum get = getEnum
src/Network/RADIUS/Types.hs view
@@ -133,9 +133,123 @@ | AcctInterimIntervalAttribute { getAcctInterimIntervalAttribute :: Word32 } | NASPortIdAttribute { getNASPortIdAttribute :: ByteString } | FramedPoolAttribute { getFramedPoolAttribute :: ByteString }+ | AcctStatusTypeAttribute { getAcctStatusTypeAttribute :: StatusType }+ | AcctDelayTimeAttribute { getAcctDelayTimeAttribute :: Word32 }+ | AcctInputOctetsAttribute { getAcctInputOctetsAttribute :: Word32 }+ | AcctOutputOctetsAttribute { getAcctOutputOctetsAttribute :: Word32 }+ | AcctSessionIdAttribute { getAcctSessionIdAttribute :: ByteString }+ | AcctAuthenticAttribute { getAcctAuthenticAttribute :: Authentic }+ | AcctSessionTimeAttribute { getAcctSessionTimeAttribute :: Word32 }+ | AcctInputPacketsAttribute { getAcctInputPacketsAttribute :: Word32 }+ | AcctOutputPacketsAttribute { getAcctOutputPacketsAttribute :: Word32 }+ | AcctTerminateCauseAttribute { getAcctTerminateCauseAttribute :: TerminateCause }+ | AcctMultiSessionIdAttribute { getAcctMultiSessionIdAttribute :: ByteString }+ | AcctLinkCountAttribute { getAcctLinkCountAttribute :: Word32 } | UnknownAttribute { getUnknownType :: Word8, getUnknownAttribute :: ByteString } deriving (Show, Eq, Data)++data StatusType = Start+ | Stop+ | InterimUpdate+ | AccountingOn+ | AccountingOff+ | Failed+ | UnknownStatusType Int+ deriving (Show, Eq, Data)++instance Enum StatusType where+ fromEnum Start = 1+ fromEnum Stop = 2+ fromEnum InterimUpdate = 3+ fromEnum AccountingOn = 7+ fromEnum AccountingOff = 8+ fromEnum Failed = 15+ fromEnum (UnknownStatusType x) = x+ toEnum 1 = Start+ toEnum 2 = Stop+ toEnum 3 = InterimUpdate+ toEnum 7 = AccountingOn+ toEnum 8 = AccountingOff+ toEnum 15 = Failed+ toEnum x = UnknownStatusType x++data Authentic = Radius+ | Local+ | Remote+ | UnknownAuthentic Int+ deriving (Show, Eq, Data)++instance Enum Authentic where+ fromEnum Radius = 1+ fromEnum Local = 2+ fromEnum Remote = 3+ fromEnum (UnknownAuthentic x) = x+ toEnum 1 = Radius+ toEnum 2 = Local+ toEnum 3 = Remote+ toEnum x = UnknownAuthentic x++data TerminateCause = UserRequest+ | LostCarrier+ | LostService+ | IdleTimeout+ | SessionTimeout+ | AdminReset+ | AdminReboot+ | PortError+ | NASError+ | NASRequest+ | NASReboot+ | PortUnneeded+ | PortPreempted+ | PortSuspended+ | ServiceUnavailable+ | Callback+ | UserError+ | HostRequest+ | UnknownTerminateCause Int+ deriving (Show, Eq, Data)++instance Enum TerminateCause where+ fromEnum UserRequest = 1+ fromEnum LostCarrier = 2+ fromEnum LostService = 3+ fromEnum IdleTimeout = 4+ fromEnum SessionTimeout = 5+ fromEnum AdminReset = 6+ fromEnum AdminReboot = 7+ fromEnum PortError = 8+ fromEnum NASError = 9+ fromEnum NASRequest = 10+ fromEnum NASReboot = 11+ fromEnum PortUnneeded = 12+ fromEnum PortPreempted = 13+ fromEnum PortSuspended = 14+ fromEnum ServiceUnavailable = 15+ fromEnum Callback = 16+ fromEnum UserError = 17+ fromEnum HostRequest = 18+ fromEnum (UnknownTerminateCause x) = x+ toEnum 1 = UserRequest+ toEnum 2 = LostCarrier+ toEnum 3 = LostService+ toEnum 4 = IdleTimeout+ toEnum 5 = SessionTimeout+ toEnum 6 = AdminReset+ toEnum 7 = AdminReboot+ toEnum 8 = PortError+ toEnum 9 = NASError+ toEnum 10 = NASRequest+ toEnum 11 = NASReboot+ toEnum 12 = PortUnneeded+ toEnum 13 = PortPreempted+ toEnum 14 = PortSuspended+ toEnum 15 = ServiceUnavailable+ toEnum 16 = Callback+ toEnum 17 = UserError+ toEnum 18 = HostRequest+ toEnum x = UnknownTerminateCause x data ServiceType = LoginService | FramedService