AIMCC clients can connect to the AIM network through various common types of proxies. For best results, the user should specify the type and location of the proxy, but basic auto-detection is also supported.
When signing on, AIMCC will read the following preferences to determine what method it should use to connect. Typically, these preferences would be connected to corresponding controls in a settings dialog box.
The "enabled" preference controls whether the AIM service connection will go through a proxy, or be a direct connection. If true, the proxy of type "protocol" at location "address":"port" will be used. The "protocol" preference can be set to any of the values in the AccProxyProtocol enumeration, and governs whether the SOCKS4, SOCKS5, HTTPS, or HTTP protocol is used. For proxies that support authentication, namely SOCKS5, HTTPS, and HTTP, the "username" and "password" preferences are used to get the credentials to use with the proxy. If these values are left empty, no authentication is attempted.
When using SOCKS4, SOCKS5, or HTTPS, the proxy is used just as a pass-through, as this is the way these proxies work - they set up the proxied connection and then just relay data. This means that use of these proxies is very efficient, and the full AIMCC feature set is available (although peer-to-peer features may need to use a relay server). Note that use of a HTTPS proxy does not make the traffic flowing through the proxy secure. As mentioned before, HTTPS proxies simply relay data. In order to have a secure session with the AIM server, the traffic coming from the AIM client must use SSL.
When using a HTTP proxy, each packet must first be wrapped in HTTP headers, and is sent to a special AIM server called the HTTP tunnel, which strips off the headers and sends it to the desired AIM server. This "HTTP tunnelling" feature can work with or without a HTTP proxy server (i.e. if "address" is empty), and allows AIM traffic to pass through some restrictive firewalls. However, the addition of HTTP headers adds nontrivial overhead, and as a result, AIMCC features that do bulk data transfer (e.g. file transfer) are disabled when using HTTP tunnelling.
When presenting proxy configuration options to the user, it is suggested to default the port for HTTPS proxies to 443, and the port for SOCKS proxies to 1080. This may prevent accidental misconfiguration by the user.
If the "aimcc.connect.quickDetect" preference is set to true, AIMCC will try to obtain the proxy information from the MSIE connection settings, rather than the preferences mentioned above. Due to some current limitations on this method, it will only auto-detect SOCKS5 and HTTPS proxies that do not require authentication.
rev. 2006/08/15