module Network.Socks5.Lowlevel
( socksListen
, module Network.Socks5.Wire
, module Network.Socks5.Command
) where
import Data.Functor ( void )
import Network.Socket ( Socket )
import Network.Socks5.Command
import Network.Socks5.Types ( SocksMethod (..) )
import Network.Socks5.Wire
socksListen ::
Socket
-> IO SocksRequest
socksListen :: Socket -> IO SocksRequest
socksListen Socket
sock = do
IO SocksHello -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (Socket -> IO SocksHello
forall a. Serialize a => Socket -> IO a
waitSerialized Socket
sock :: IO SocksHello)
Socket -> SocksHelloResponse -> IO ()
forall a. Serialize a => Socket -> a -> IO ()
sendSerialized Socket
sock (SocksMethod -> SocksHelloResponse
SocksHelloResponse SocksMethod
SocksMethodNone)
Socket -> IO SocksRequest
forall a. Serialize a => Socket -> IO a
waitSerialized Socket
sock