packages feed

socks 0.3.0 → 0.4.0

raw patch · 2 files changed

+24/−21 lines, 2 files

Files

Network/Socks5.hs view
@@ -29,7 +29,7 @@ -- this structure will be extended in future to support authentification. -- use defaultSocksConf to create new record. data SocksConf = SocksConf-	{ socksHost    :: String -- ^ SOCKS host.+	{ socksHost    :: String     -- ^ SOCKS host. 	, socksPort    :: PortNumber -- ^ SOCKS port. 	, socksVersion :: Int        -- ^ SOCKS version to use, only 5 supported for now. 	}@@ -64,26 +64,29 @@ 	_ <- socks5ConnectDomainName sock destination port 	return () --- | similar to Network connectTo but use a socks proxy.-socksConnectTo :: String -> PortID -> String -> PortID -> IO Handle-socksConnectTo sockshost socksport desthost destport = do-	sport <- resolvePortID socksport+-- | create a new socket and connect in to a destination through the specified+-- SOCKS configuration.+socksConnectWith :: SocksConf -- ^ SOCKS configuration+                 -> String    -- ^ destination hostname+                 -> PortID    -- ^ destination port+                 -> IO Socket+socksConnectWith sockConf desthost destport = do 	dport <- resolvePortID destport- 	proto <- getProtocolNumber "tcp"-	bracketOnError (socket AF_INET Stream proto) sClose (go sport dport)-	where-		go sport dport sock = do-			he <- getHostByName sockshost-			let sockaddr = SockAddrInet sport (hostAddress he)-			socksConnectName sock sockaddr desthost dport-			socketToHandle sock ReadWriteMode+	bracketOnError (socket AF_INET Stream proto) sClose $ \sock -> do+		he <- getHostByName $ socksHost sockConf+		let sockaddr = SockAddrInet (socksPort sockConf) (hostAddress he)+		socksConnectName sock sockaddr desthost dport+		return sock -		resolvePortID (Service serv) = getServicePortNumber serv-		resolvePortID (PortNumber n) = return n-		resolvePortID _              = error "unsupported unix PortID"+-- | similar to Network connectTo but use a socks proxy with default socks configuration.+socksConnectTo :: String -> PortID -> String -> PortID -> IO Handle+socksConnectTo sockshost socksport desthost destport = do+	sport <- resolvePortID socksport+	let socksConf = defaultSocksConf sockshost sport+	sock <- socksConnectWith socksConf desthost destport+	socketToHandle sock ReadWriteMode --- | like socksConnectTo but specify the socks configuration directly.-socksConnectWith :: SocksConf -> String -> PortID -> IO Handle-socksConnectWith socksConf =-	socksConnectTo (socksHost socksConf) (PortNumber $ socksPort socksConf)+resolvePortID (Service serv) = getServicePortNumber serv+resolvePortID (PortNumber n) = return n+resolvePortID _              = error "unsupported unix PortID"
socks.cabal view
@@ -1,5 +1,5 @@ Name:                socks-Version:             0.3.0+Version:             0.4.0 Description:         Socks proxy (version 5) implementation. License:             BSD3 License-file:        LICENSE