packages feed

radius 0.5.0.0 → 0.5.0.1

raw patch · 3 files changed

+139/−4 lines, 3 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Network.RADIUS.Encoding: authenticatorLength :: Int64
+ Network.RADIUS.Encoding: decodeAttributes :: [PacketAttribute] -> Get [PacketAttribute]
+ Network.RADIUS.Encoding: decodeHeader :: Get Header
+ Network.RADIUS.Encoding: decodePacket :: Header -> Get Packet
+ Network.RADIUS.Encoding: encodeAttributes :: [PacketAttribute] -> ByteString
+ Network.RADIUS.Encoding: getAttribute :: Word8 -> Get PacketAttribute
+ Network.RADIUS.Encoding: getAttributeStr :: Get ByteString
+ Network.RADIUS.Encoding: getAttributeValue :: (Binary a) => Get a
+ Network.RADIUS.Encoding: getEnum :: (Enum a) => Get a
+ Network.RADIUS.Encoding: hashMD5 :: ByteString -> ByteString
+ 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.Encoding: putAttribute :: (Binary a) => Word8 -> a -> Put
+ Network.RADIUS.Encoding: putAttributeStr :: Word8 -> ByteString -> Put
+ Network.RADIUS.Encoding: putEnum :: (Enum a) => a -> Put
+ 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: 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 view
@@ -1,5 +1,5 @@ name:                radius-version:             0.5.0.0+version:             0.5.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
src/Network/RADIUS/Encoding.hs view
@@ -13,7 +13,7 @@  -} -module Network.RADIUS.Encoding (radiusHeaderSize, sign) where+module Network.RADIUS.Encoding where  import Control.Monad               (when) import Data.Binary                 (Binary(..), encode)@@ -82,7 +82,6 @@   return Packet { getHeader           = header,                   getPacketAttributes = attributes } --- | Add authenticator field to a RADIUS packet using the specified secret sign :: ByteString -> ByteString -> ByteString sign packet secret =     let authenticator = hashMD5 $ packet `append` secret@@ -90,7 +89,6 @@         attributes    = B.drop (fromIntegral radiusHeaderSize) packet     in prologue `append` authenticator `append` attributes --- | Used internally to calculate authenticator field hashMD5 :: ByteString -> ByteString hashMD5 = B.fromStrict . convert . (hashlazy :: ByteString -> Digest MD5) @@ -135,6 +133,8 @@     put (LoginLATNodeAttribute str)             = putAttributeStr  35 str     put (LoginLATGroupAttribute str)            = putAttributeStr  36 str     put (FramedAppleTalkZoneAttribute str)      = putAttributeStr  39 str+    put (AcctSessionIdAttribute str)            = putAttributeStr  44 str+    put (AcctMultiSessionIdAttribute str)       = putAttributeStr  50 str     put (CHAPChallengeAttribute str)            = putAttributeStr  60 str     put (LoginLATPortAttribute str)             = putAttributeStr  63 str     put (ARAPPasswordAttribute str)             = putAttributeStr  70 str@@ -155,6 +155,16 @@     put (IdleTimeoutAttribute value)            = putAttribute     28 value     put (FramedAppleTalkLinkAttribute value)    = putAttribute     37 value     put (FramedAppleTalkNetworkAttribute value) = putAttribute     38 value+    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 (PortLimitAttribute value)              = putAttribute     62 value     put (NASIPAddress value)                    = putAttribute      4 value     put (NASIPv6Address value)                  = putAttribute     95 value@@ -240,6 +250,8 @@ getAttribute  35 = getAttributeStr >>= return . LoginLATNodeAttribute getAttribute  36 = getAttributeStr >>= return . LoginLATGroupAttribute getAttribute  39 = getAttributeStr >>= return . FramedAppleTalkZoneAttribute+getAttribute  44 = getAttributeStr >>= return . AcctSessionIdAttribute+getAttribute  50 = getAttributeStr >>= return . AcctMultiSessionIdAttribute getAttribute  60 = getAttributeStr >>= return . CHAPChallengeAttribute getAttribute  63 = getAttributeStr >>= return . LoginLATPortAttribute getAttribute  70 = getAttributeStr >>= return . ARAPPasswordAttribute@@ -274,6 +286,16 @@ getAttribute 98 = getAttributeValue >>= return . LoginIPv6HostAttribute getAttribute 15 = getAttributeValue >>= return . LoginServiceAttribute getAttribute 29 = getAttributeValue >>= return . TerminationActionAttribute+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 61 = getAttributeValue >>= return . NASPortTypeAttribute getAttribute 52 = getAttributeValue >>= return . AccountInputGigawordsAttribute getAttribute 53 = getAttributeValue >>= return . AccountOutputGigawordsAttribute@@ -333,6 +355,18 @@     get = getEnum  instance Binary TerminationAction 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
@@ -110,6 +110,18 @@   | FramedAppleTalkLinkAttribute    { getFramedAppleTalkLinkAttribute    :: Word32            }   | FramedAppleTalkNetworkAttribute { getFramedAppleTalkNetworkAttribute :: Word32            }   | FramedAppleTalkZoneAttribute    { getFramedAppleTalkZoneAttribute    :: 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            }   | CHAPChallengeAttribute          { getCHAPChallengeAttribute          :: ByteString        }   | NASPortTypeAttribute            { getNASPortTypeAttribute            :: NASPortType       }   | PortLimitAttribute              { getPortLimitAttribute              :: Word32            }@@ -221,6 +233,95 @@  data TerminationAction = DefaultTerminationAction | RADIUSRequestTerminationAction                        deriving (Show, Eq, Enum, Data)++data StatusType = Start | Stop | InterimUpdate | AccountingOn | AccountingOff | Failed+  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+  toEnum 1  = Start+  toEnum 2  = Stop+  toEnum 3  = InterimUpdate+  toEnum 7  = AccountingOn+  toEnum 8  = AccountingOff+  toEnum 15 = Failed+  toEnum x  = error $ "Invalid Acct-Status-Type attribute " ++ show x++data Authentic = Radius | Local | Remote+  deriving (Show, Eq, Data)++instance Enum Authentic where+  fromEnum Radius = 1+  fromEnum Local  = 2+  fromEnum Remote = 3+  toEnum 1 = Radius+  toEnum 2 = Local+  toEnum 3 = Remote+  toEnum x = error $ "Invalid Acc-Authentic attribute " ++ show x++data TerminateCause = UserRequest+                    | LostCarrier+                    | LostService+                    | IdleTimeout+                    | SessionTimeout+                    | AdminReset+                    | AdminReboot+                    | PortError+                    | NASError+                    | NASRequest+                    | NASReboot+                    | PortUnneeded+                    | PortPreempted+                    | PortSuspended+                    | ServiceUnavailable+                    | Callback+                    | UserError+                    | HostRequest+  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+  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  = error $ "Invalid Acct-Terminate-Cause attribute " ++ show x  data NASPortType = AsyncNASPort                  | SyncNASPort