summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2014-11-09 13:46:29 +0000
committerSteven Barth <cyrus@openwrt.org>2014-11-09 13:46:29 +0000
commitc5b5e68879238d195e7a797ca82c8e0043e797ee (patch)
tree5cfff338b67e4b4a1e943d4eaaece0f2c5e10cf8
parent9809b02dec5b6ccfda9a708d029b70bcff15df1f (diff)
downloadmaster-31e0f0ae-c5b5e68879238d195e7a797ca82c8e0043e797ee.tar.gz
master-31e0f0ae-c5b5e68879238d195e7a797ca82c8e0043e797ee.tar.bz2
master-31e0f0ae-c5b5e68879238d195e7a797ca82c8e0043e797ee.zip
6in4: detect curl and busybox wget
b52053b 6in4: https support for he.net tunnel api introduced HTTPS support using wget. The busybox version of wget, however, doesn't support the -V option, thus poluting logfiles with a full invalid-parameter-output. Redirect stderr to fix that. As libcurl and curl support selecting the SSL library of your choice, also add support for curl which is more commonly used on OpenWrt than "real" wget which needs libopenssl. Also make sure to respect SSL_CERT_DIR and increase timeouts. Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 43228
-rwxr-xr-xpackage/network/ipv6/6in4/files/6in4.sh35
1 files changed, 27 insertions, 8 deletions
diff --git a/package/network/ipv6/6in4/files/6in4.sh b/package/network/ipv6/6in4/files/6in4.sh
index 7ffd40dc06..f639a5de8e 100755
--- a/package/network/ipv6/6in4/files/6in4.sh
+++ b/package/network/ipv6/6in4/files/6in4.sh
@@ -67,23 +67,42 @@ proto_6in4_setup() {
[ -n "$updatekey" ] && password="$updatekey"
local http="http"
- local wget_opts="-qO/dev/null"
- if wget --version | grep -qF "+https"; then
+ local urlget="wget"
+ local urlget_opts="-qO/dev/stdout"
+ local ca_path="${SSL_CERT_DIR-/etc/ssl/certs}"
+
+ if [ -n "$(which curl)" ]; then
+ urlget="curl"
+ urlget_opts="-s -S"
+ if curl -V | grep "Protocols:" | grep -qF "https"; then
+ http="https"
+ urlget_opts="$urlget_opts --capath $ca_path"
+ fi
+ fi
+ if [ "$http" = "http" ] &&
+ wget --version 2>&1 | grep -qF "+https"; then
+ urlget="wget"
+ urlget_opts="-qO/dev/stdout --ca-directory=$ca_path"
http="https"
- [ -z "$(find ${SSL_CERT_DIR-/etc/ssl/certs} -name "*.0" 2>/dev/null)" ] && {
- wget_opts="$wget_opts --no-check-certificate"
- }
fi
+ [ "$http" = "https" -a -z "$(find $ca_path -name "*.0" 2>/dev/null)" ] && {
+ if [ "$urlget" = "curl" ]; then
+ urlget_opts="$urlget_opts -k"
+ else
+ urlget_opts="$urlget_opts --no-check-certificate"
+ fi
+ }
local url="$http://ipv4.tunnelbroker.net/nic/update?username=$username&password=$password&hostname=$tunnelid"
local try=0
local max=3
while [ $((++try)) -le $max ]; do
- ( exec wget $wget_opts "$url" 2>/dev/null ) &
+ ( exec $urlget $urlget_opts "$url" | logger -t "$link" ) &
local pid=$!
- ( sleep 5; kill $pid 2>/dev/null ) &
+ ( sleep 20; kill $pid 2>/dev/null ) &
wait $pid && break
+ sleep 20;
done
}
}
@@ -93,7 +112,7 @@ proto_6in4_teardown() {
}
proto_6in4_init_config() {
- no_device=1
+ no_device=1
available=1
proto_config_add_string "ipaddr"