## SOCKS SOCKS — SOCKS proxy |

## Synopsis

    #include <gnet.h>

    #define             GNET_SOCKS_PORT
    #define             GNET_SOCKS_VERSION
    gboolean            gnet_socks_get_enabled              (void);
    void                gnet_socks_set_enabled              (gboolean enabled);
    GInetAddr*          gnet_socks_get_server               (void);
    void                gnet_socks_set_server               (const GInetAddr *inetaddr);
    gint                gnet_socks_get_version              (void);
    void                gnet_socks_set_version              (gint version);

## Description

SOCKS is a TCP proxy protocol. Typically, a host behind a firewall uses SOCKS to connect to hosts outside the firewall via a SOCKS proxy server. To open a TCP connection, a SOCKS client connects to a SOCKS server and the SOCKS server connects to the destination. Data is then forwarded between the client and the destination by the SOCKS server. GNet supports SOCKS versions 4 and 5. Version 5 includes support for server sockets.

SOCKS is used if the SOCKS_SERVER environment variable is set or `gnet_socks_set_server()` is called to set the SOCKS server's address. To disable SOCKS support, call `gnet_socks_set_enabled()` and pass FALSE. The SOCKS_VERSION environment variable controls which SOCKS version is used. The default is version 5.

## Details

### GNET_SOCKS_PORT

    #define GNET_SOCKS_PORT 1080

Default port for the SOCKS protocol.

### GNET_SOCKS_VERSION

    #define GNET_SOCKS_VERSION 5

Default version of the SOCKS protocol.

### gnet_socks_get_enabled ()

    gboolean            gnet_socks_get_enabled              (void);

Determines whether SOCKS support is enabled.

Returns : | TRUE if SOCKS is enabled, FALSE otherwise.

### gnet_socks_set_enabled ()

    void                gnet_socks_set_enabled              (gboolean enabled);

Sets whether SOCKS support is enabled.

`enabled` : | is SOCKS support enabled?

### gnet_socks_get_server ()

    GInetAddr*          gnet_socks_get_server               (void);

Gets the address of the SOCKS server (regardless of whether SOCKS is enabled). This function checks the `gnet_socks_set_server()` value and, if not set, the SOCKS_SERVER environment variable. The SOCKS_SERVER enviroment variable should be in the form HOSTNAME or HOSTNAME:PORT.

Returns : | a copy of the address; NULL if there is no server.

### gnet_socks_set_server ()

    void                gnet_socks_set_server               (const GInetAddr *inetaddr);

Sets the address of the SOCKS server.

`inetaddr` : | SOCKS server address

### gnet_socks_get_version ()

    gint                gnet_socks_get_version              (void);

Gets the SOCKS version GNet uses. This function checks the `gnet_socks_set_version()` value and, if not set, the SOCKS_VERSION environment variable.

Returns : | the SOCKS version.

### gnet_socks_set_version ()

    void                gnet_socks_set_version              (gint version);

Sets the SOCKS version GNet uses. GNet only supports versions 4 and 5.

`version` : | SOCKS version