packages feed

socks 0.5.0 → 0.5.1

raw patch · 4 files changed

+61/−11 lines, 4 files

Files

Network/Socks5/Command.hs view
@@ -39,7 +39,7 @@     sendAll socket (encode $ SocksHello methods)     getSocksHelloResponseMethod <$> runGetDone get (recv socket 4096) -newtype Connect = Connect SocksAddress deriving (Show,Eq)+newtype Connect = Connect SocksAddress deriving (Show,Eq,Ord)  class Command a where     toRequest   :: a -> SocksRequest
Network/Socks5/Conf.hs view
@@ -1,3 +1,11 @@+-- |+-- Module      : Network.Socks5.Conf+-- License     : BSD-style+-- Maintainer  : Vincent Hanquez <vincent@snarc.org>+-- Stability   : experimental+-- Portability : unknown+--+-- typical SOCKS configuration module Network.Socks5.Conf     ( SocksConf(..)     , socksHost
Network/Socks5/Types.hs view
@@ -21,40 +21,79 @@ import Data.Data import Network.Socket (HostAddress, HostAddress6, PortNumber) import Control.Exception+import qualified Data.ByteString.Char8 as BC+import Numeric (showHex)+import Data.List (intersperse)  -- | Socks Version data SocksVersion = SocksVer5-                  deriving (Show,Eq)+                  deriving (Show,Eq,Ord) +-- | Command that can be send and receive on the SOCKS protocol data SocksCommand =       SocksCommandConnect     | SocksCommandBind     | SocksCommandUdpAssociate-    | SocksCommandOther Word8+    | SocksCommandOther !Word8     deriving (Show,Eq,Ord) +-- | Authentication methods available on the SOCKS protocol.+--+-- Only SocksMethodNone is effectively implemented, but+-- other value are enumerated for completeness. data SocksMethod =       SocksMethodNone     | SocksMethodGSSAPI     | SocksMethodUsernamePassword-    | SocksMethodOther Word8+    | SocksMethodOther !Word8     | SocksMethodNotAcceptable     deriving (Show,Eq,Ord) +-- | A Host address on the SOCKS protocol. data SocksHostAddress =-      SocksAddrIPV4 HostAddress-    | SocksAddrDomainName ByteString-    | SocksAddrIPV6 HostAddress6-    deriving (Show,Eq)+      SocksAddrIPV4 !HostAddress+    | SocksAddrDomainName !ByteString+    | SocksAddrIPV6 !HostAddress6+    deriving (Eq,Ord) -data SocksAddress = SocksAddress SocksHostAddress PortNumber-    deriving (Show,Eq)+instance Show SocksHostAddress where+    show (SocksAddrIPV4 ha)       = "SocksAddrIPV4(" ++ showHostAddress ha ++ ")"+    show (SocksAddrIPV6 ha6)      = "SocksAddrIPV6(" ++ showHostAddress6 ha6 ++ ")"+    show (SocksAddrDomainName dn) = "SocksAddrDomainName(" ++ BC.unpack dn ++ ")" +-- | Converts a HostAddress to a String in dot-decimal notation+showHostAddress :: HostAddress -> String+showHostAddress num = concat [show q1, ".", show q2, ".", show q3, ".", show q4]+  where (num',q1)   = num `quotRem` 256+        (num'',q2)  = num' `quotRem` 256+        (num''',q3) = num'' `quotRem` 256+        (_,q4)      = num''' `quotRem` 256++-- | Converts a IPv6 HostAddress6 to standard hex notation+showHostAddress6 :: HostAddress6 -> String+showHostAddress6 (a,b,c,d) =+    (concat . intersperse ":" . map (flip showHex ""))+        [p1,p2,p3,p4,p5,p6,p7,p8]+    where (a',p2) = a `quotRem` 65536+          (_,p1)  = a' `quotRem` 65536+          (b',p4) = b `quotRem` 65536+          (_,p3)  = b' `quotRem` 65536+          (c',p6) = c `quotRem` 65536+          (_,p5)  = c' `quotRem` 65536+          (d',p8) = d `quotRem` 65536+          (_,p7)  = d' `quotRem` 65536++-- | Describe a Socket address on the SOCKS protocol+data SocksAddress = SocksAddress !SocksHostAddress !PortNumber+    deriving (Show,Eq,Ord)++-- | Type of reply on the SOCKS protocol data SocksReply =       SocksReplySuccess     | SocksReplyError SocksError     deriving (Show,Eq,Ord,Data,Typeable) +-- | SOCKS error that can be received or sent data SocksError =       SocksErrorGeneralServerFailure     | SocksErrorConnectionNotAllowedByRule@@ -67,6 +106,9 @@     | SocksErrorOther Word8     deriving (Show,Eq,Ord,Data,Typeable) +-- | Exception returned when using a SOCKS version that is not supported.+--+-- This package only implement version 5. data SocksVersionNotSupported = SocksVersionNotSupported     deriving (Show,Data,Typeable) 
socks.cabal view
@@ -1,5 +1,5 @@ Name:                socks-Version:             0.5.0+Version:             0.5.1 Description:         Socks proxy (version 5) implementation. License:             BSD3 License-file:        LICENSE