X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fnetwork%2Fipv6%2F6in4%2Ffiles%2F6in4.sh;h=786f37fc14c81d8f58d0da32626eb91082192c15;hb=83d3e393bfe85350fcce55735125b5037b0d4ad7;hp=af2ddca1d7959a56e0cc6d71e3e769acab3cabc2;hpb=08f057c703fca370fd2f212eef6e0122028be023;p=openwrt%2Fopenwrt.git diff --git a/package/network/ipv6/6in4/files/6in4.sh b/package/network/ipv6/6in4/files/6in4.sh index af2ddca1d7..786f37fc14 100755 --- a/package/network/ipv6/6in4/files/6in4.sh +++ b/package/network/ipv6/6in4/files/6in4.sh @@ -11,7 +11,7 @@ proto_6in4_update() { sh -c ' - local timeout=5 + timeout=5 (while [ $((timeout--)) -gt 0 ]; do sleep 1 @@ -27,8 +27,8 @@ proto_6in4_setup() { local iface="$2" local link="6in4-$cfg" - local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix tunnelid username password updatekey - json_get_vars mtu ttl tos ipaddr peeraddr ip6addr ip6prefix tunnelid username password updatekey + local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix tunlink tunnelid username password updatekey + json_get_vars mtu ttl tos ipaddr peeraddr ip6addr ip6prefix tunlink tunnelid username password updatekey [ -z "$peeraddr" ] && { proto_notify_error "$cfg" "MISSING_ADDRESS" @@ -36,11 +36,16 @@ proto_6in4_setup() { return } - ( proto_add_host_dependency "$cfg" "$peeraddr" ) + ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" ) [ -z "$ipaddr" ] && { - local wanif - if ! network_find_wan wanif || ! network_get_ipaddr ipaddr "$wanif"; then + local wanif="$tunlink" + if [ -z "$wanif" ] && ! network_find_wan wanif; then + proto_notify_error "$cfg" "NO_WAN_LINK" + return + fi + + if ! network_get_ipaddr ipaddr "$wanif"; then proto_notify_error "$cfg" "NO_WAN_LINK" return fi @@ -68,6 +73,7 @@ proto_6in4_setup() { [ -n "$tos" ] && json_add_string tos "$tos" json_add_string local "$ipaddr" json_add_string remote "$peeraddr" + [ -n "$tunlink" ] && json_add_string link "$tunlink" proto_close_tunnel proto_send_update "$cfg" @@ -76,40 +82,23 @@ proto_6in4_setup() { [ -n "$updatekey" ] && password="$updatekey" local http="http" - local urlget="wget" + local urlget="uclient-fetch" local urlget_opts="-qO-" - 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- --ca-directory=$ca_path" - http="https" - fi + local ca_path="${SSL_CERT_DIR:-/etc/ssl/certs}" + + [ -f /lib/libustream-ssl.so ] && http=https [ "$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 + urlget_opts="$urlget_opts --no-check-certificate" } - local url="$http://ipv4.tunnelbroker.net/nic/update?username=$username&password=$password&hostname=$tunnelid" + local url="$http://ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid" local try=0 local max=3 ( set -o pipefail while [ $((++try)) -le $max ]; do - if proto_6in4_update $urlget $urlget_opts "$url" 2>&1 | \ + if proto_6in4_update $urlget $urlget_opts --user="$username" --password="$password" "$url" 2>&1 | \ sed -e 's,^Killed$,timeout,' -e "s,^,update $try/$max: ," | \ logger -t "$link"; then @@ -135,6 +124,7 @@ proto_6in4_init_config() { proto_config_add_string "ip6addr" proto_config_add_string "ip6prefix" proto_config_add_string "peeraddr" + proto_config_add_string "tunlink" proto_config_add_string "tunnelid" proto_config_add_string "username" proto_config_add_string "password"