packages feed

socks5-0.6.0.0: example/Main.hs

{-# LANGUAGE OverloadedStrings #-}

import qualified Data.ByteString.Char8 as C8
import Network.SOCKS5.Client
import Network.SOCKS5.Types
import Network.Socket.ByteString (recv, sendAll)

main :: IO ()
main = do
  let proxyConfig =
        ClientConfig
          { proxyHost = "127.0.0.1",
            proxyPort = "11451",
            userPass = Nothing
          }
  let destAddr = AddressDomain "example.com"
  let destPort = "80"

  runTCPConnect destAddr destPort proxyConfig $ \sock -> do
    putStrLn "Connected to example.com through SOCKS5 proxy!"
    sendAll sock "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n"
    response <- recv sock 4096
    C8.putStrLn response