Changeset 25953


Ignore:
Timestamp:
2011-03-08T15:49:40+01:00 (6 years ago)
Author:
cshore
Message:

[net] miniupnpd: Added uci setting of allow/deny rules, amongst other things. This involved switching to the use of /var/etc/miniupnpd.conf that is generated on the fly, instead of command-line parameters.

Location:
packages/net/miniupnpd
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • packages/net/miniupnpd/Makefile

    r25888 r25953  
    5050        $(INSTALL_DATA) ./files/miniupnpd.iface.hotplug $(1)/etc/hotplug.d/iface/50-miniupnpd 
    5151        $(INSTALL_DATA) ./files/miniupnpd.firewall.hotplug $(1)/etc/hotplug.d/firewall/50-miniupnpd 
    52         $(INSTALL_DATA) $(PKG_BUILD_DIR)/miniupnpd.conf $(1)/etc/miniupnpd.conf.example 
     52        $(INSTALL_DIR) $(1)/usr/share/miniupnpd 
     53        $(INSTALL_DATA) $(PKG_BUILD_DIR)/miniupnpd.conf $(1)/usr/share/miniupnpd/miniupnpd.conf.example 
     54        $(INSTALL_DATA) ./files/upnpd.config.example $(1)/etc/config/upnpd.example 
    5355endef 
    5456 
  • packages/net/miniupnpd/files/miniupnpd.init

    r25902 r25953  
    11#!/bin/sh /etc/rc.common 
    22START=95 
     3 
     4upnpd_get_port_range() { 
     5    local _var="$1"; shift 
     6    local _val 
     7    
     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 
     20} 
     21 
     22conf_rule_add() { 
     23    local cfg="$1" 
     24    local tmpconf="$2" 
     25    local action external_port_start external_port_end ip_mask 
     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    echo "${action} ${ext_start}${ext_end:+-}${ext_end} ${int_addr} ${int_start}${int_end:+-}${int_end}" >>$tmpconf    
     32} 
     33 
     34upnpd_write_bool() { 
     35    local opt="$1" 
     36    local def="${2:-0}" 
     37    local alt="$3" 
     38 
     39    local val 
     40    config_get_bool val config "$opt" "$def" 
     41    if [ "$val" -eq 0 ]; then 
     42        echo "${alt:-$opt}=no" >> $tmpconf 
     43    else 
     44        echo "${alt:-$opt}=yes" >> $tmpconf 
     45    fi 
     46} 
    347 
    448start() { 
     
    953        local extiface intiface upload download logging secure enabled natpmp 
    1054        local extip port usesysuptime conffile serial_number model_number 
    11         local uuid notify_interval presentation_url 
     55        local uuid notify_interval presentation_url enable_upnp 
     56        local upnp_lease_file clean_ruleset_threshold clean_ruleset_interval 
    1257 
    1358        config_get extiface config external_iface 
     
    1863        config_get download config download 
    1964        config_get_bool logging config log_output 0 
    20         config_get_bool secure config secure_mode 0 
    21         config_get_bool natpmp config enable_natpmp 0 
    22         config_get_bool enabled config enabled 0  
    23         config_get_bool usesysuptime config use_system_uptime 1 
    2465        config_get conffile config config_file 
    2566        config_get serial_number config serial_number 
     
    2869        config_get notify_interval config notify_interval 
    2970        config_get presentation_url config presentation_url 
     71        config_get upnp_lease_file config upnp_lease_file 
     72        config_get clean_ruleset_threshold config clean_ruleset_threshold 
     73        config_get clean_ruleset_interval config clean_ruleset_interval 
     74 
     75        local args 
    3076 
    3177        include /lib/network 
     
    3480        local ifname 
    3581        config_get ifname ${extiface:-wan} ifname 
     82         
     83        if [ -n "$conffile" ]; then 
     84            args="-f $conffile" 
     85        else 
     86            local tmpconf="/var/etc/miniupnpd.conf" 
     87            args="-f $tmpconf" 
     88            mkdir -p /var/etc 
    3689 
     90            echo "ext_ifname=$ifname" >$tmpconf 
     91 
     92            local iface 
     93             
     94            [ -n "$extip" ] && \ 
     95                echo "ext_ip=$extip" >>$tmpconf 
     96                 
     97            for iface in ${intiface:-lan}; do 
     98                local ipaddr 
     99                config_get ipaddr "$iface" ipaddr 
     100                [ -n "$ipaddr" ] && \ 
     101                    echo "listening_ip=$ipaddr" >>$tmpconf 
     102            done 
     103             
     104            [ "$port" != "auto" ] && \ 
     105                echo "port=$port" >>$tmpconf 
     106 
     107            config_load "upnpd" 
     108            upnpd_write_bool enable_natpmp 1 
     109            upnpd_write_bool enable_upnp 1 
     110            upnpd_write_bool enable_secure 1 secure_mode 
     111            upnpd_write_bool system_uptime 1 
     112 
     113            [ -n "$upnp_lease_file" ] && \ 
     114                echo "lease_file=$upnp_lease_file" >>$tmpconf 
     115                 
     116            [ -n "$upload" -a -n "$download" ] && { 
     117                echo "bitrate_down=$(($download * 1024 * 8))" >>$tmpconf 
     118                echo "bitrate_up=$(($upload * 1024 * 8))" >>$tmpconf 
     119            } 
     120 
     121            [ -n "${presentation_url}" ] && \ 
     122                echo "presentation_url=${presentation_url}" >>$tmpconf 
     123 
     124            [ -n "${notify_interval}" ] && \ 
     125                echo "notify_interval=${notify_interval}" >>$tmpconf 
     126 
     127            [ -n "${clean_ruleset_threshold}" ] && \ 
     128                echo "clean_ruleset_threshold=${clean_ruleset_threshold}" >>$tmpconf 
     129 
     130            [ -n "${clean_ruleset_interval}" ] && \ 
     131                echo "clean_ruleset_interval=${clean_ruleset_interval}" >>$tmpconf 
     132 
     133            [ -z "$uuid" ] && { 
     134                uuid="$(cat /proc/sys/kernel/random/uuid)" 
     135                uci set upnpd.config.uuid=$uuid 
     136                uci commit upnpd 
     137            } 
     138 
     139            [ "$uuid" = "nocli" ] || \ 
     140                echo "uuid=$uuid" >>$tmpconf 
     141                 
     142            [ -n "${serial_number}" ] && \ 
     143                echo "serial=${serial_number}" >>$tmpconf 
     144                 
     145            [ -n "${model_number}" ] && \ 
     146                echo "model_number=${model_number}" >>$tmpconf 
     147             
     148            config_foreach conf_rule_add perm_rule "$tmpconf" 
     149        fi     
     150         
     151                         
    37152        if [ -n "$ifname" ]; then 
    38                 local args="-i $ifname" 
    39                 local iface 
     153            # start firewall 
     154            local zone 
     155            config_load firewall 
     156            config_get zone core "${extiface:-wan}_zone" 
     157            [ -n "$zone" ] && \ 
     158                miniupnpd_add_rules "$zone" "${extiface:-wan}" "$ifname" 
    40159 
    41                 [ -n "$extip" ] && \ 
    42                         append args "-o $extip" 
    43                  
    44                 for iface in ${intiface:-lan}; do 
    45                         local ipaddr 
    46                         config_get ipaddr "$iface" ipaddr 
    47                         [ -n "$ipaddr" ] && append args "-a $ipaddr" 
    48                 done 
    49  
    50                 [ "$port" != "auto" ] && \ 
    51                         append args "-p $port" 
    52                  
    53                 [ "$usesysuptime" -eq 1 ] && \ 
    54                         append args "-U" 
    55  
    56                 [ -n "$upload" -a -n "$download" ] && \ 
    57                         append args "-B $(($download * 1024 * 8)) $(($upload * 1024 * 8))" 
    58  
    59                 [ "$secure" -gt 0 ] && \ 
    60                         append args "-S" 
    61  
    62                 [ "$natpmp" -gt 0 ] && \ 
    63                         append args "-N" 
    64  
    65                 [ -n "$conffile" ] && \ 
    66                         append args "-f $conffile" 
    67  
    68                 [ -n "${serial_number}" ] && \ 
    69                         append args "-s ${serial_number}" 
    70                  
    71                 [ -n "${model_number}" ] && \ 
    72                         append args "-m ${model_number}" 
    73                          
    74                 [ -z "$uuid" ] && { 
    75                         uuid="$(cat /proc/sys/kernel/random/uuid)" 
    76                         uci set upnpd.config.uuid=$uuid 
    77                         uci commit upnpd 
    78                 } 
    79  
    80                 [ "$uuid" = "nocli" ] || \ 
    81                         append args "-u $uuid" 
    82                  
    83                 [ -n "${notify_interval}" ] && \ 
    84                         append args "-t ${notify_interval}" 
    85                          
    86                 [ -n "${presentation_url}" ] && \ 
    87                         append args "-w \"${presentation_url}\""                         
    88                 # start firewall 
    89                 local zone 
    90                 config_load firewall 
    91                 config_get zone core "${extiface:-wan}_zone" 
    92                 [ -n "$zone" ] && \ 
    93                         miniupnpd_add_rules "$zone" "${extiface:-wan}" "$ifname" 
    94  
    95                 if [ "$logging" = "1" ]; then 
    96                         [ "$enabled" -gt 0 ] && eval start-stop-daemon -S -x miniupnpd -- $args -d | logger -t miniupnpd & 
    97                 else 
    98                         [ "$enabled" -gt 0 ] && eval start-stop-daemon -S -x miniupnpd -- $args 2>/dev/null 
    99                 fi 
     160            if [ "$logging" = "1" ]; then 
     161                eval start-stop-daemon -S -x miniupnpd -- $args -d | logger -t miniupnpd & 
     162            else 
     163                eval start-stop-daemon -S -x miniupnpd -- $args 2>/dev/null 
     164            fi 
    100165        else 
    101166                logger -t "upnp daemon" "external interface not found, not starting" 
  • packages/net/miniupnpd/files/upnpd.config

    r18641 r25953  
    11config upnpd config 
    2         option enabled          0 
     2        option enable_natpmp    1 
    33        option secure_mode      1 
    44        option log_output       0 
     
    77        option external_iface   wan 
    88        option internal_iface   lan 
     9 
     10config perm_rule 
     11       option action deny 
     12       option ext_ports 0-65535 
     13       option ip_mask 0.0.0.0/0 
     14       option int_ports '0:65535' 
Note: See TracChangeset for help on using the changeset viewer.