#
#
# socks.config format:
# File consists of several lines. Each line can be a maximum of 400
# chars.
#
# We will not use SOCKS for addresses specified using no_socks.
# Any line whose first string is "no_socks" must be of the following
# format:
# no_socks <comma separated list of IPADDRESS and/or IPADDRESS_RANGE>
# IPADDRESS is x1.x2.x3.x4
# IPADDRESS_RANGE is x1.x2.x3.x4 - y1.y2.y3.y4
#

no_socks   123.14.15.1 - 123.14.17.4, 113.14.18.2
no_socks   123.14.30.1 - 123.14.63.4, 122.43.15.2
no_socks   123.14.84.1 - 123.14.89.4, 109.32.15.2

#
# Authentication for SOCKS 5
# We currently support Username/Password authentication
# Format for username/password used by traffic_server when it connects to
# the SOCKS server:
#   auth u <user_name> <password>
# The letter u says it is of type username/password.
# e.g:
#   auth u traffic_server inktomi
#
# specifying multiple parents based on ip addresses
#
# specification is same as for parents (see parent.config and documentation
# for parent.config).
# The main differences:
# 	This supports only "dest_ip" as the primary specifier
#       This supports only "parent" and "round_robin" as the secondary specifiers
#
# examples:
#
# The following rule uses internal.example.com:1080 as the socks server all
# destination addresses between 10.0.0.0 and 10.255.255.255
#
# dest_ip=10.0.0.0-10.255.255.255 parent="internal.example.com:1080"
#
# The following uses socks1 (at port 4080) and socks2 (at port 1080) alternately
# (round-robin).
#
# dest_ip=216.32.0.0-216.32.255.255 parent="socks1:4080; socks2:1080" round_robin=strict
#
########################################################################################
