Changeset 43228


Ignore:
Timestamp:
2014-11-09T14:46:29+01:00 (3 years ago)
Author:
cyrus
Message:

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@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/network/ipv6/6in4/files/6in4.sh

    r43124 r43228  
    6868 
    6969                local http="http" 
    70                 local wget_opts="-qO/dev/null" 
    71                 if wget --version | grep -qF "+https"; then 
     70                local urlget="wget" 
     71                local urlget_opts="-qO/dev/stdout" 
     72                local ca_path="${SSL_CERT_DIR-/etc/ssl/certs}" 
     73 
     74                if [ -n "$(which curl)" ]; then 
     75                        urlget="curl" 
     76                        urlget_opts="-s -S" 
     77                        if curl -V | grep "Protocols:" | grep -qF "https"; then 
     78                                http="https" 
     79                                urlget_opts="$urlget_opts --capath $ca_path" 
     80                        fi 
     81                fi 
     82                if [ "$http" = "http" ] && 
     83                        wget --version 2>&1 | grep -qF "+https"; then 
     84                        urlget="wget" 
     85                        urlget_opts="-qO/dev/stdout --ca-directory=$ca_path" 
    7286                        http="https" 
    73                         [ -z "$(find ${SSL_CERT_DIR-/etc/ssl/certs} -name "*.0" 2>/dev/null)" ] && { 
    74                                 wget_opts="$wget_opts --no-check-certificate" 
    75                         } 
    7687                fi 
     88                [ "$http" = "https" -a -z "$(find $ca_path -name "*.0" 2>/dev/null)" ] && { 
     89                        if [ "$urlget" = "curl" ]; then 
     90                                urlget_opts="$urlget_opts -k" 
     91                        else 
     92                                urlget_opts="$urlget_opts --no-check-certificate" 
     93                        fi 
     94                } 
    7795 
    7896                local url="$http://ipv4.tunnelbroker.net/nic/update?username=$username&password=$password&hostname=$tunnelid" 
     
    8199 
    82100                while [ $((++try)) -le $max ]; do 
    83                         ( exec wget $wget_opts "$url" 2>/dev/null ) & 
     101                        ( exec $urlget $urlget_opts "$url" | logger -t "$link" ) & 
    84102                        local pid=$! 
    85                         ( sleep 5; kill $pid 2>/dev/null ) & 
     103                        ( sleep 20; kill $pid 2>/dev/null ) & 
    86104                        wait $pid && break 
     105                        sleep 20; 
    87106                done 
    88107        } 
     
    94113 
    95114proto_6in4_init_config() { 
    96         no_device=1              
     115        no_device=1 
    97116        available=1 
    98117 
Note: See TracChangeset for help on using the changeset viewer.