Changeset 27151


Ignore:
Timestamp:
2011-06-09T19:04:06+02:00 (7 years ago)
Author:
jow
Message:

[packages] miniupnpd: properly handle multiple internal interfaces in hotplug helper (#9538)

Location:
packages/net/miniupnpd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • packages/net/miniupnpd/Makefile

    r26496 r27151  
    11# 
    2 # Copyright (C) 2006-2009 OpenWrt.org 
     2# Copyright (C) 2006-2011 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    1111PKG_NAME:=miniupnpd 
    1212PKG_VERSION:=1.5.20110309 
    13 PKG_RELEASE:=1 
     13PKG_RELEASE:=2 
    1414PKG_MD5SUM:=350d20bf25922e12f8d69e06fa33fd83 
    1515 
  • packages/net/miniupnpd/files/miniupnpd.iface.hotplug

    r25593 r27151  
    11#!/bin/sh 
    22 
    3 /etc/init.d/miniupnpd enabled && [ -n "`pidof miniupnpd`" ] && { 
    4         local intif="$(uci_get upnpd config internal_iface)" 
    5         [ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "$intif" ] && \ 
    6                 /etc/init.d/miniupnpd restart 
     3/etc/init.d/miniupnpd enabled && [ -n "`pidof miniupnpd`" ] && [ "$ACTION" = "ifup" ] && { 
     4        local intif 
     5        for intif in $(uci_get upnpd config internal_iface); do 
     6                [ "$INTERFACE" = "$intif" ] && /etc/init.d/miniupnpd restart 
     7        done 
    78} 
  • packages/net/miniupnpd/files/miniupnpd.init

    r26478 r27151  
    33 
    44upnpd_get_port_range() { 
    5     local _var="$1"; shift 
    6     local _val 
    7     
    8     config_get _val "$@" 
     5        local _var="$1"; shift 
     6        local _val 
    97 
    10     case "$_val" in 
    11         [0-9]*[:-][0-9]*) 
    12             export -n -- "${_var}_start=${_val%%[:-]*}" 
    13             export -n -- "${_var}_end=${_val##*[:-]}" 
    14         ;; 
    15         [0-9]*) 
    16             export -n -- "${_var}_start=$_val" 
    17             export -n -- "${_var}_end=" 
    18         ;; 
    19     esac 
     8        config_get _val "$@" 
     9 
     10        case "$_val" in 
     11                [0-9]*[:-][0-9]*) 
     12                        export -n -- "${_var}_start=${_val%%[:-]*}" 
     13                        export -n -- "${_var}_end=${_val##*[:-]}" 
     14                ;; 
     15                [0-9]*) 
     16                        export -n -- "${_var}_start=$_val" 
     17                        export -n -- "${_var}_end=" 
     18                ;; 
     19        esac 
    2020} 
    2121 
    2222conf_rule_add() { 
    23     local cfg="$1" 
    24     local tmpconf="$2" 
    25     local action external_port_start external_port_end int_addr 
    26     local internal_port_start internal_port_end 
    27     config_get action "$cfg" action "deny"               # allow or deny 
    28     upnpd_get_port_range "ext" "$cfg" ext_ports "0-65535" # external ports: x, x-y, x:y 
    29     config_get int_addr "$cfg" int_addr "0.0.0.0/0"       # ip or network and subnet mask (internal) 
    30     upnpd_get_port_range "int" "$cfg" int_ports "0-65535" # internal ports: x, x-y, x:y or range 
    31     # Make a single IP IP/32 so that miniupnpd.conf can use it. 
    32     case "$int_addr" in 
    33         */*) ;; 
    34         *) int_addr="$int_addr/32"  ;; 
    35     esac 
    36     echo "${action} ${ext_start}${ext_end:+-}${ext_end} ${int_addr} ${int_start}${int_end:+-}${int_end}" >>$tmpconf    
     23        local cfg="$1" 
     24        local tmpconf="$2" 
     25        local action external_port_start external_port_end int_addr 
     26        local internal_port_start internal_port_end 
     27 
     28        config_get action "$cfg" action "deny"               # allow or deny 
     29        upnpd_get_port_range "ext" "$cfg" ext_ports "0-65535" # external ports: x, x-y, x:y 
     30        config_get int_addr "$cfg" int_addr "0.0.0.0/0"       # ip or network and subnet mask (internal) 
     31        upnpd_get_port_range "int" "$cfg" int_ports "0-65535" # internal ports: x, x-y, x:y or range 
     32 
     33        # Make a single IP IP/32 so that miniupnpd.conf can use it. 
     34        case "$int_addr" in 
     35                */*) ;; 
     36                *) int_addr="$int_addr/32" ;; 
     37        esac 
     38 
     39        echo "${action} ${ext_start}${ext_end:+-}${ext_end} ${int_addr} ${int_start}${int_end:+-}${int_end}" >>$tmpconf 
    3740} 
    3841 
    3942upnpd_write_bool() { 
    40     local opt="$1" 
    41     local def="${2:-0}" 
    42     local alt="$3" 
     43        local opt="$1" 
     44        local def="${2:-0}" 
     45        local alt="$3" 
     46        local val 
    4347 
    44     local val 
    45     config_get_bool val config "$opt" "$def" 
    46     if [ "$val" -eq 0 ]; then 
    47         echo "${alt:-$opt}=no" >> $tmpconf 
    48     else 
    49         echo "${alt:-$opt}=yes" >> $tmpconf 
    50     fi 
     48        config_get_bool val config "$opt" "$def" 
     49        if [ "$val" -eq 0 ]; then 
     50                echo "${alt:-$opt}=no" >> $tmpconf 
     51        else 
     52                echo "${alt:-$opt}=yes" >> $tmpconf 
     53        fi 
    5154} 
    5255 
     
    8588        local ifname 
    8689        config_get ifname ${extiface:-wan} ifname 
    87          
     90 
    8891        if [ -n "$conffile" ]; then 
    89             args="-f $conffile" 
     92                args="-f $conffile" 
    9093        else 
    91             local tmpconf="/var/etc/miniupnpd.conf" 
    92             args="-f $tmpconf" 
    93             mkdir -p /var/etc 
     94                local tmpconf="/var/etc/miniupnpd.conf" 
     95                args="-f $tmpconf" 
     96                mkdir -p /var/etc 
    9497 
    95             echo "ext_ifname=$ifname" >$tmpconf 
     98                echo "ext_ifname=$ifname" >$tmpconf 
    9699 
    97             local iface 
    98              
    99             [ -n "$extip" ] && \ 
    100                 echo "ext_ip=$extip" >>$tmpconf 
    101                  
    102             for iface in ${intiface:-lan}; do 
    103                 local ipaddr 
    104                 config_get ipaddr "$iface" ipaddr 
    105                 [ -n "$ipaddr" ] && \ 
    106                     echo "listening_ip=$ipaddr" >>$tmpconf 
    107             done 
    108              
    109             [ "$port" != "auto" ] && \ 
    110                 echo "port=$port" >>$tmpconf 
     100                [ -n "$extip" ] && \ 
     101                        echo "ext_ip=$extip" >>$tmpconf 
    111102 
    112             config_load "upnpd" 
    113             upnpd_write_bool enable_natpmp 1 
    114             upnpd_write_bool enable_upnp 1 
    115             upnpd_write_bool secure_mode 1 
    116             upnpd_write_bool system_uptime 1 
     103                local iface 
     104                for iface in ${intiface:-lan}; do 
     105                        local ipaddr 
     106                        config_get ipaddr "$iface" ipaddr 
     107                        [ -n "$ipaddr" ] && \ 
     108                                echo "listening_ip=$ipaddr" >>$tmpconf 
     109                done 
    117110 
    118             [ -n "$upnp_lease_file" ] && \ 
    119                 echo "lease_file=$upnp_lease_file" >>$tmpconf 
    120                  
    121             [ -n "$upload" -a -n "$download" ] && { 
    122                 echo "bitrate_down=$(($download * 1024 * 8))" >>$tmpconf 
    123                 echo "bitrate_up=$(($upload * 1024 * 8))" >>$tmpconf 
    124             } 
     111                [ "$port" != "auto" ] && \ 
     112                        echo "port=$port" >>$tmpconf 
    125113 
    126             [ -n "${presentation_url}" ] && \ 
    127                 echo "presentation_url=${presentation_url}" >>$tmpconf 
     114                config_load "upnpd" 
     115                upnpd_write_bool enable_natpmp 1 
     116                upnpd_write_bool enable_upnp 1 
     117                upnpd_write_bool secure_mode 1 
     118                upnpd_write_bool system_uptime 1 
    128119 
    129             [ -n "${notify_interval}" ] && \ 
    130                 echo "notify_interval=${notify_interval}" >>$tmpconf 
     120                [ -n "$upnp_lease_file" ] && \ 
     121                        echo "lease_file=$upnp_lease_file" >>$tmpconf 
    131122 
    132             [ -n "${clean_ruleset_threshold}" ] && \ 
    133                 echo "clean_ruleset_threshold=${clean_ruleset_threshold}" >>$tmpconf 
     123                [ -n "$upload" -a -n "$download" ] && { 
     124                        echo "bitrate_down=$(($download * 1024 * 8))" >>$tmpconf 
     125                        echo "bitrate_up=$(($upload * 1024 * 8))" >>$tmpconf 
     126                } 
    134127 
    135             [ -n "${clean_ruleset_interval}" ] && \ 
    136                 echo "clean_ruleset_interval=${clean_ruleset_interval}" >>$tmpconf 
     128                [ -n "${presentation_url}" ] && \ 
     129                        echo "presentation_url=${presentation_url}" >>$tmpconf 
    137130 
    138             [ -z "$uuid" ] && { 
    139                 uuid="$(cat /proc/sys/kernel/random/uuid)" 
    140                 uci set upnpd.config.uuid=$uuid 
    141                 uci commit upnpd 
    142             } 
     131                [ -n "${notify_interval}" ] && \ 
     132                        echo "notify_interval=${notify_interval}" >>$tmpconf 
    143133 
    144             [ "$uuid" = "nocli" ] || \ 
    145                 echo "uuid=$uuid" >>$tmpconf 
    146                  
    147             [ -n "${serial_number}" ] && \ 
    148                 echo "serial=${serial_number}" >>$tmpconf 
    149                  
    150             [ -n "${model_number}" ] && \ 
    151                 echo "model_number=${model_number}" >>$tmpconf 
    152              
     134                [ -n "${clean_ruleset_threshold}" ] && \ 
     135                        echo "clean_ruleset_threshold=${clean_ruleset_threshold}" >>$tmpconf 
     136 
     137                [ -n "${clean_ruleset_interval}" ] && \ 
     138                        echo "clean_ruleset_interval=${clean_ruleset_interval}" >>$tmpconf 
     139 
     140                [ -z "$uuid" ] && { 
     141                        uuid="$(cat /proc/sys/kernel/random/uuid)" 
     142                        uci set upnpd.config.uuid=$uuid 
     143                        uci commit upnpd 
     144                } 
     145 
     146                [ "$uuid" = "nocli" ] || \ 
     147                        echo "uuid=$uuid" >>$tmpconf 
     148 
     149                [ -n "${serial_number}" ] && \ 
     150                        echo "serial=${serial_number}" >>$tmpconf 
     151 
     152                [ -n "${model_number}" ] && \ 
     153                        echo "model_number=${model_number}" >>$tmpconf 
     154 
    153155            config_foreach conf_rule_add perm_rule "$tmpconf" 
    154         fi     
    155          
    156                          
     156        fi 
     157 
     158 
    157159        if [ -n "$ifname" ]; then 
    158             # start firewall 
    159             local zone 
    160             config_load firewall 
    161             config_get zone core "${extiface:-wan}_zone" 
     160                # start firewall 
     161                local zone 
     162                config_load firewall 
     163                config_get zone core "${extiface:-wan}_zone" 
     164 
    162165            [ -n "$zone" ] && \ 
    163                 miniupnpd_add_rules "$zone" "${extiface:-wan}" "$ifname" 
     166                        miniupnpd_add_rules "$zone" "${extiface:-wan}" "$ifname" 
    164167 
    165             if [ "$logging" = "1" ]; then 
    166                 start-stop-daemon -b -S -x miniupnpd -- $args -d  
    167             else 
    168                 start-stop-daemon -S -x miniupnpd -- $args  
    169             fi 
     168                if [ "$logging" = "1" ]; then 
     169                        start-stop-daemon -b -S -x miniupnpd -- $args -d 
     170                else 
     171                        start-stop-daemon -S -x miniupnpd -- $args 
     172                fi 
    170173        else 
    171174                logger -t "upnp daemon" "external interface not found, not starting" 
Note: See TracChangeset for help on using the changeset viewer.