summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-04-17 18:07:26 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-04-17 18:07:26 (GMT)
commit9e9d061e012a27b0d79f5efed45344800266fbe7 (patch)
tree96774c790aca03e208d156bc2ecb030908d6db5b
parent0b89b1a938ea18c4828b7a4e186efe0dade7d3a9 (diff)
Add an option to use a SOCKS 4/5 proxy to connect to the internet.
As for the HTTP proxy, this is completetly untested, as I have no such proxy at home. scripts/crosstool.sh | 45 31 14 0 +++++++++++++++++-------- config/global.in | 95 81 14 0 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 112 insertions(+), 28 deletions(-)
-rw-r--r--config/global.in95
-rwxr-xr-xscripts/crosstool.sh45
2 files changed, 112 insertions, 28 deletions
diff --git a/config/global.in b/config/global.in
index b971ee6..ed11f6e 100644
--- a/config/global.in
+++ b/config/global.in
@@ -251,23 +251,23 @@ choice
prompt "Proxy type"
default USE_NO_PROXY
-config USE_NO_PROXY
+config PROXY_TYPE_NONE
bool
prompt "No proxy"
help
Select this option if you have a direct connection to the internet,
or if you already set the environment adequately.
-config USE_HTTP_PROXY
+config PROXY_TYPE_HTTP
bool
prompt "HTTP proxy"
help
Use an HTTP proxy to connect to to the internet.
- Onlt the http and ftp protocols will be tunneled through this
+ Only the http and ftp protocols will be tunneled through this
proxy.
- Alternatively to setting this options, you can set and export
- the following variable in your environment:
+ Alternatively to setting this option, you can set and export the
+ following variables in your environment:
ftp_proxy=http://user:passwd@proxy.server:port/
http_proxy=http://user:passwd@proxy.server:port/
https_proxy=http://user:passwd@proxy.server:port/
@@ -277,28 +277,95 @@ config USE_HTTP_PROXY
# choice menu!
# To add a third entry in the choice menu, add it after the
# if...endif conditional below, and so on for a fourth entry...
-if USE_HTTP_PROXY
+if PROXY_TYPE_HTTP
-config HTTP_PROXY_HOST
+config PROXY_HOST
string
- prompt "HTTP proxy hostname/IP"
+ prompt "hostname/IP"
-config HTTP_PROXY_PORT
+config PROXY_PORT
int
- prompt "HTTP proxy port"
+ prompt "port"
+ default 0
-config HTTP_PROXY_USER
+config PROXY_USER
string
- prompt "HTTP proxy user name"
+ prompt "user name"
-config HTTP_PROXY_PASSWD
+config PROXY_PASS
string
- prompt "HTTP proxy password"
+ prompt "password"
endif # USE_HTTP_PROXY
+config PROXY_TYPE_SOCKS
+ bool
+ prompt "SOCKS 4/5 proxy"
+ help
+ Use a Socks 4/5 proxy to connect to the internet.
+ All protocols can get tunneled through this kind of proxy (depending
+ on your proxy configuration, so;e do not allow all protocols, but
+ chances are that protocols needed by crosstool-NG are allowed).
+
+ Alternatively to setting this option, you can set and export the
+ following variable in your environment:
+ LD_PRELOAD=/path/to/your/tsocks-library.so
+
+ In any case, wether you set this option or you export the aforementionned
+ variable, you will _have_ to configure the /etc/tsocks.conf file
+ accordingly to your network setup.
+
+ This option makes use of the tsocks library. You will have to have tsocks
+ installed on your system, of course.
+
+ If you think you do not know what tsocks is, or how to configure it,
+ chances are that you do not need to set this option.
+
+if PROXY_TYPE_SOCKS
+
+choice
+ bool
+ prompt "type"
+ default PROXY_TYPE_SOCKS_5
+
+config PROXY_TYPE_SOCKS_5
+ bool
+ prompt "SOCKS 5"
+
+config PROXY_TYPE_SOCKS_4
+ bool
+ prompt "SOCKS 4"
+
endchoice
+config PROXY_HOST
+ string
+ prompt "hostname/IP"
+
+config PROXY_PORT
+ int
+ prompt "port"
+ default 0
+
+config PROXY_USER
+ string
+ prompt "user name"
+
+config PROXY_PASS
+ string
+ prompt "password"
+
+endif # USE_SOCKS_PROXY
+
+endchoice
+
+config PROXY_TYPE
+ string
+ default "none" if PROXY_TYPE_NONE
+ default "HTTP" if PROXY_TYPE_HTTP
+ default "socks5" if PROXY_TYPE_SOCKS_5
+ default "socks4" if PROXY_TYPE_SOCKS_4
+
# Force restore indentation
config FOOBAR
diff --git a/scripts/crosstool.sh b/scripts/crosstool.sh
index 374f974..f8b52ef 100755
--- a/scripts/crosstool.sh
+++ b/scripts/crosstool.sh
@@ -206,6 +206,37 @@ case "${CT_LOG_TO_FILE}" in
;;
esac
+# Set environment for proxy access
+# This has to be done even if we are restarting, as they don't get
+# saved in the step snapshot.
+case "${CT_PROXY_TYPE}" in
+ none) ;;
+ http)
+ http_proxy="http://"
+ case "${CT_PROXY_USER}:${CT_PROXY_PASS}" in
+ :) ;;
+ :*) http_proxy="${http_proxy}:${CT_HTP_PROXY_PASS}@";;
+ *:) http_proxy="${http_proxy}${CT_HTTP_PROXY_USER}@";;
+ *:*) http_proxy="${http_proxy}${CT_HTTP_PROXY_USER}:${CT_HTP_PROXY_PASS}@";;
+ esac
+ export http_proxy="${http_proxy}${HTTP_PROXY_HOST}:${HTTP_PROXY_PORT}/"
+ export https_proxy="${http_proxy}"
+ export ftp_proxy="${http_proxy}"
+ ;;
+ socks?)
+ # Re;ove any lingering config file from any previous run
+ rm -f "${CT_BUILD_DIR}/tsocks.conf"
+ ( echo "server=${CT_PROXY_HOST}";
+ echo "server_port=${CT_PROXY_PORT}";
+ echo "server_type=${CT_PROXY_TYPE#socks}";
+ [ -n "${CT_PROXY_USER}" ] && echo "default_user=${CT_PROXY_USER}";
+ [ -n "${CT_PROXY_PASS}" ] && echo "default_pass=${CT_PROXY_PASS}";
+ ) >"${CT_BUILD_DIR}/tsocks.conf"
+ export TSOCKS_CONF_FILE="${CT_BUILD_DIR}/tsocks.conf"
+ . tsocks -on
+ ;;
+esac
+
# Setting up the rest of the environment only if not restarting
if [ -z "${CT_RESTART}" ]; then
# Determine build system if not set by the user
@@ -307,20 +338,6 @@ if [ -z "${CT_RESTART}" ]; then
[ ${CT_PARALLEL_JOBS} -ne 0 ] && PARALLELMFLAGS="${PARALLELMFLAGS} -j${CT_PARALLEL_JOBS}"
[ ${CT_LOAD} -ne 0 ] && PARALLELMFLAGS="${PARALLELMFLAGS} -l${CT_LOAD}"
- # Set environment for proxy access
- if [ "${CT_USE_HTTP_PROXY}" = "y" ]; then
- http_proxy="http://"
- case "${CT_HTTP_PROXY_USER}:${CT_HTTP_PROXY_PASSWD}" in
- :) ;;
- :*) http_proxy="${http_proxy}:${CT_HTP_PROXY_PASSWD}@";;
- *:) http_proxy="${http_proxy}${CT_HTTP_PROXY_USER}@";;
- *:*) http_proxy="${http_proxy}${CT_HTTP_PROXY_USER}:${CT_HTP_PROXY_PASSWD}@";;
- esac
- export http_proxy="${http_proxy}${HTTP_PROXY_HOST}:${HTTP_PROXY_PORT}/"
- export https_proxy="${http_proxy}"
- export ftp_proxy="${http_proxy}"
- fi
-
CT_DoStep EXTRA "Dumping internal crosstool-NG configuration"
CT_DoLog EXTRA "Building a toolchain for:"
CT_DoLog EXTRA " build = ${CT_BUILD}"