Portability | unknown |
---|---|
Stability | experimental |
Maintainer | Vincent Hanquez <vincent@snarc.org> |
Safe Haskell | None |
Network.Socks5
Contents
Description
This is an implementation of SOCKS5 as defined in RFC 1928
In Wikipedia's words:
SOCKet Secure (SOCKS) is an Internet protocol that routes network packets between a client and server through a proxy server. SOCKS5 additionally provides authentication so only authorized users may access a server. Practically, a SOCKS server will proxy TCP connections to an arbitrary IP address as well as providing a means for UDP packets to be forwarded.
BIND and UDP ASSOCIATE messages are not implemented. However main usage of SOCKS is covered in this implementation.
- data SocksAddress = SocksAddress SocksHostAddress PortNumber
- data SocksHostAddress
- data SocksReply
- data SocksError
- data SocksConf = SocksConf {}
- socksHost :: SocksConf -> SocksHostAddress
- socksPort :: SocksConf -> PortNumber
- defaultSocksConf :: [Char] -> PortNumber -> SocksConf
- defaultSocksConfFromSockAddr :: SockAddr -> SocksConf
- socksConnectWithSocket :: Socket -> SocksConf -> SocksAddress -> IO (SocksHostAddress, PortNumber)
- socksConnect :: SocksConf -> SocksAddress -> IO (Socket, (SocksHostAddress, PortNumber))
- socksConnectAddr :: Socket -> SockAddr -> SockAddr -> IO ()
- socksConnectName :: Socket -> SockAddr -> String -> PortNumber -> IO ()
- socksConnectTo :: String -> PortID -> String -> PortID -> IO Handle
- socksConnectWith :: SocksConf -> String -> PortID -> IO Socket
Types
data SocksHostAddress Source
Instances
data SocksReply Source
Constructors
SocksReplySuccess | |
SocksReplyError SocksError |
data SocksError Source
Configuration
SOCKS configuration structure. this structure will be extended in future to support authentification. use defaultSocksConf to create new record.
Constructors
SocksConf | |
Fields
|
socksHost :: SocksConf -> SocksHostAddressSource
SOCKS Host
socksPort :: SocksConf -> PortNumberSource
SOCKS Port
defaultSocksConf :: [Char] -> PortNumber -> SocksConfSource
defaultSocksConf create a new record, making sure API remains compatible when the record is extended.
defaultSocksConfFromSockAddr :: SockAddr -> SocksConfSource
same as defaultSocksConf except the server address is determined from a SockAddr
A unix SockAddr will raises an error. Only Inet and Inet6 types supported
Methods
Arguments
:: Socket | Socket to use. |
-> SocksConf | SOCKS configuration for the server. |
-> SocksAddress | SOCKS Address to connect to. |
-> IO (SocksHostAddress, PortNumber) |
connect a user specified new socket to the socks server,
and connect the stream on the server side to the SockAddress
specified.
|socket|-----sockServer----->|server|----destAddr----->|destination|
Arguments
:: SocksConf | SOCKS configuration for the server. |
-> SocksAddress | SOCKS Address to connect to. |
-> IO (Socket, (SocksHostAddress, PortNumber)) |
connect a new socket to a socks server and connect the stream on the
server side to the SocksAddress
specified.
Variants
socksConnectAddr :: Socket -> SockAddr -> SockAddr -> IO ()Source
Deprecated: use socksConnectWithSocket
connect a new socket to the socks server, and connect the stream on the server side to the sockaddr specified. the sockaddr need to be SockAddrInet or SockAddrInet6.
a unix sockaddr will raises an exception.
|socket|-----sockServer----->|server|----destAddr----->|destination|
socksConnectName :: Socket -> SockAddr -> String -> PortNumber -> IO ()Source
connect a new socket to the socks server, and connect the stream to a FQDN resolved on the server side.