Changeset 1987


Ignore:
Timestamp:
2005-09-24T19:06:12+02:00 (11 years ago)
Author:
nbd
Message:

add checks for pptp/pppoe and implement basic ip address validation for the wan/lan pages in webif

Location:
branches/whiterussian/openwrt/package/webif/files
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/whiterussian/openwrt/package/webif/files/usr/lib/webif/form.awk

    r1980 r1987  
    55# $5 = string to append 
    66# $6 = additional attributes  
     7 
     8# trim leading whitespaces  
     9{ 
     10        gsub(/^[ \t]+/,"",$1) 
     11} 
    712 
    813$1 ~ /^start_form/ { 
     
    4045$1 ~ /^end_form/ { 
    4146        if (field_open == 1) print "</td></tr>" 
     47        field_open = 0 
    4248        print "</tbody>" 
    4349        print "</table>" 
    4450        print "</form>" 
    4551} 
     52END { 
     53        if(field_open == 1) print "</td></tr>" 
     54} 
  • branches/whiterussian/openwrt/package/webif/files/usr/lib/webif/webif.sh

    r1980 r1987  
    160160} 
    161161 
     162validate_ip() { 
     163        [ \! -z "$1" ] && { 
     164                ipcalc "$1" >&- 2>&- && return 0 || { 
     165                        ERROR="$ERROR Invalid IP address: $2<br />" 
     166                        return 255 
     167                } 
     168        } || { 
     169                [ "$3" != "1" ] && return 0 || { 
     170                        ERROR="$ERROR No IP address entered: $2<br />" 
     171                        return 255 
     172                }  
     173        } 
     174} 
     175 
     176validate_ips() { 
     177        [ \! -z "$1" ] && { 
     178                invalid_ip=0 
     179                for tmp_ip in $1; do 
     180                        ipcalc "$1" >&- 2>&- || invalid_ip=1 
     181                done 
     182                [ "$invalid_ip" != 1 ] && return 0 || { 
     183                        ERROR="$ERROR Invalid IP address list: $2<br />" 
     184                        return 255 
     185                } 
     186        } || { 
     187                [ "$3" != "1" ] && return 0 || { 
     188                        ERROR="$ERROR No IP address entered: $2<br />" 
     189                        return 255 
     190                }  
     191        } 
     192} 
     193 
     194validate_netmask() { 
     195        [ \! -z "$1" ] && { 
     196                # FIXME 
     197                ipcalc "$1" >&- 2>&- && return 0 || { 
     198                        ERROR="$ERROR Invalid Netmask: $2<br />" 
     199                        return 255 
     200                } 
     201        } || { 
     202                [ "$3" != "1" ] && return 0 || { 
     203                        ERROR="$ERROR No Netmask entered: $2<br />" 
     204                        return 255 
     205                }  
     206        } 
     207} 
     208 
    162209save_setting() { 
    163210        oldval=$(eval "echo \${$2}") 
  • branches/whiterussian/openwrt/package/webif/files/www/cgi-bin/webif/lan.sh

    r1980 r1987  
    1111} || { 
    1212        SAVED=1 
    13         [ -z $FORM_lan_ipaddr ] || save_setting network lan_ipaddr $FORM_lan_ipaddr 
    14         [ -z $FORM_lan_netmask ] || save_setting network lan_netmask $FORM_lan_netmask 
    15         [ -z $FORM_lan_gateway ] || save_setting network lan_gateway $FORM_lan_gateway 
    16         [ -z $FORM_lan_dns ] || save_setting network lan_dns $FORM_lan_dns 
     13        validate_ip "$FORM_lan_ipaddr" "LAN IP" 1 && save_setting network lan_ipaddr $FORM_lan_ipaddr 
     14        validate_ip "$FORM_lan_netmask" "LAN Netmask" 1 && save_setting network lan_netmask $FORM_lan_netmask 
     15        validate_ip "$FORM_lan_gateway" "LAN Gateway" && save_setting network lan_gateway $FORM_lan_gateway 
     16        validate_ips "$FORM_lan_dns" "LAN DNS Servers" && save_setting network lan_dns $FORM_lan_dns 
    1717} 
    1818header "Network" "LAN" "LAN settings" 
    1919?> 
    2020<?if [ "$SAVED" = "1" ] ?> 
     21        <? [ -z "$ERROR" ] || echo "<h2>Errors occured:</h2><h3>$ERROR</h3>" ?> 
    2122        <h2>Settings saved</h2> 
    22 <?el?> 
     23        <br /> 
     24<?fi?> 
    2325<? display_form "start_form:$SCRIPT_NAME 
    2426field:IP Address 
     
    3335submit:action:Save settings 
    3436end_form" ?> 
    35 <?fi?> 
    3637 
    3738<? footer ?> 
  • branches/whiterussian/openwrt/package/webif/files/www/cgi-bin/webif/wan.sh

    r1981 r1987  
    66 
    77[ -z $FORM_submit ] && { 
    8         # common 
    98        FORM_wan_proto=${wan_proto:-$(nvram get wan_proto)} 
    10         FORM_wan_proto=${FORM_wan_proto:-none} 
     9        case "$FORM_wan_proto" in 
     10                # supported types 
     11                static|dhcp|pptp|pppoe) ;; 
     12                # otherwise select "none" 
     13                *) FORM_wan_proto="none";; 
     14        esac 
    1115         
    12         # pptp and static common 
     16        # detect pptp package and compile option 
     17        [ -x /sbin/ifup.pptp ] && { 
     18                PPTP_OPTION="radio:wan_proto:$FORM_wan_proto:pptp:PPTP<br />:onChange=\"modechange()\"" 
     19                PPTP_SERVER_OPTION="field:PPTP Server IP:pptp_server_ip 
     20text:pptp_server_ip:$FORM_pptp_server_ip" 
     21        } 
     22        [ -x /sbin/ifup.pppoe ] && { 
     23                PPPOE_OPTION="radio:wan_proto:$FORM_wan_proto:pppoe:PPPoE<br />:onChange=\"modechange()\"" 
     24        } 
     25         
     26        # pptp, dhcp and static common 
    1327        FORM_wan_ipaddr=${wan_ipaddr:-$(nvram get wan_ipaddr)} 
    1428        FORM_wan_netmask=${wan_netmask:-$(nvram get wan_netmask)} 
    1529        FORM_wan_gateway=${wan_gateway:-$(nvram get wan_gateway)} 
     30        FORM_wan_dns=${wan_dns:-$(nvram get wan_dns)} 
    1631         
    17         # pppoe and pptp common 
     32        # ppp common 
    1833        FORM_ppp_username=${ppp_username:-$(nvram get ppp_username)} 
    1934        FORM_ppp_passwd=${ppp_passwd:-$(nvram get ppp_passwd)} 
     
    2136        FORM_ppp_redialperiod=${ppp_redialperiod:-$(nvram get ppp_redialperiod)} 
    2237        FORM_ppp_mtu=${ppp_mtu:-$(nvram get ppp_mtu)} 
     38 
    2339        redial=${ppp_demand:-$(nvram get ppp_demand)} 
    2440        case "$redial" in 
     
    3147        esac 
    3248         
    33         # static specific 
    34         FORM_wan_dns=${wan_dns:-$(nvram get wan_dns)} 
     49        FORM_pptp_server_ip=${pptp_server_ip:-$(nvram get pptp_server_ip)} 
    3550} || { 
    3651        SAVED=1 
    37         # common  
    38         [ -z $FORM_wan_proto ] || save_setting network wan_proto $FORM_wan_proto 
     52 
     53        [ -z $FORM_wan_proto ] && { 
     54                ERROR="No WAN protocol selected"  
     55                return -1 
     56        } 
     57 
     58        save_setting network wan_proto $FORM_wan_proto 
    3959         
    40         # pptp and static common 
     60        # Settings specific to one protocol type 
     61        case "$FORM_wan_proto" in 
     62                static) 
     63                        validate_ip "$FORM_wan_dns" "WAN DNS Server" 1 && \ 
     64                                save_setting network wan_dns $FORM_wan_dns 
     65 
     66                        validate_ip "$FORM_wan_gateway" "WAN Gateway" && \ 
     67                                save_setting network wan_gateway $FORM_wan_gateway 
     68 
     69                        # Requirements for input validation 
     70                        REQ_IP=1 
     71                        REQ_NETMASK=1 
     72                        ;; 
     73                pptp) 
     74                        validate_ip "$FORM_pptp_server_ip" "PPTP Server" 1 && \ 
     75                                save_setting network pptp_server_ip "$FORM_pptp_server_ip" 
     76                        ;; 
     77        esac 
     78         
     79        # Common settings for PPTP, Static and DHCP  
    4180        [ "$FORM_wan_proto" = "pptp" -o "$FORM_wan_proto" = "static" -o "$FORM_wan_proto" = "dhcp" ] && { 
    42                 [ -z $FORM_wan_ipaddr ] || save_setting network wan_ipaddr $FORM_wan_ipaddr 
    43                 [ -z $FORM_wan_netmask ] || save_setting network wan_netmask $FORM_wan_netmask 
    44                 [ -z $FORM_wan_gateway ] || save_setting network wan_gateway $FORM_wan_gateway 
     81                validate_ip "$FORM_wan_ipaddr" "WAN IP" $REQ_IP && \ 
     82                        save_setting network wan_ipaddr $FORM_wan_ipaddr 
     83         
     84                validate_netmask "$FORM_wan_netmask" "WAN Netmask" $REQ_NETMASK && \ 
     85                        save_setting network wan_netmask $FORM_wan_netmask  
    4586        } 
    4687         
    47         # pppoe and pptp common 
     88        # Common PPP settings 
    4889        [ "$FORM_wan_proto" = "pppoe" -o "$FORM_wan_proto" = "pptp" ] && { 
    4990                [ -z $FORM_ppp_username ] || save_setting network ppp_username $FORM_ppp_username 
    5091                [ -z $FORM_ppp_passwd ] || save_setting network ppp_passwd $FORM_ppp_passwd 
    51                 [ -z $FORM_ppp_idletime ] || save_setting network ppp_idletime $FORM_ppp_idletime 
    52                 [ -z $FORM_ppp_redialperiod ] || save_setting network ppp_redialperiod $FORM_ppp_redialperiod 
    53                 [ -z $FORM_ppp_mtu ] || save_setting network ppp_mtu $FORM_ppp_mtu 
     92 
     93                # These can be blank 
     94                save_setting network ppp_idletime $FORM_ppp_idletime 
     95                save_setting network ppp_redialperiod $FORM_ppp_redialperiod 
     96                save_setting network ppp_mtu $FORM_ppp_mtu 
     97 
    5498                case "$FORM_ppp_redial" in 
    5599                        demand) 
     
    57101                                ;; 
    58102                        persist) 
    59                                 save_setting network ppp_demand 0 
     103                                save_setting network ppp_demand "" 
    60104                                ;; 
    61105                esac     
    62         }        
    63         # static specific        
    64         [ "$FORM_wan_proto" = "static" ] && { 
    65                 [ -z $FORM_wan_dns ]  || save_setting network wan_dns $FORM_wan_dns 
    66         }        
     106        } 
     107 
    67108} 
    68109 
     
    74115function modechange() 
    75116{ 
    76         // pppoe and pptp common 
    77         if (checked('wan_proto_pppoe') || checked('wan_proto_pptp')) { 
    78                 show('ppp_username'); 
    79                 show('ppp_passwd'); 
    80                 show('ppp_redial'); 
    81                 show('ppp_mtu'); 
    82                  
    83                 if (checked('ppp_redial_demand')) { 
    84                         show('ppp_demand_idletime'); 
    85                         hide('ppp_persist_redialperiod'); 
    86                 } else {         
    87                         hide('ppp_demand_idletime'); 
    88                         show('ppp_persist_redialperiod'); 
    89                 }        
    90         } else { 
    91                 hide('ppp_username'); 
    92                 hide('ppp_passwd'); 
    93                 hide('ppp_demand_idletime'); 
    94                 hide('ppp_persist_redialperiod'); 
    95                 hide('ppp_redial'); 
    96                 hide('ppp_mtu'); 
    97                  
    98         }        
     117        var v; 
     118        v = (checked('wan_proto_pppoe') || checked('wan_proto_pptp')); 
     119        set_visible('ppp_username', v); 
     120        set_visible('ppp_passwd', v); 
     121        set_visible('ppp_redial', v); 
     122        set_visible('ppp_mtu', v); 
     123        set_visible('ppp_demand_idletime', v && checked('ppp_redial_demand')); 
     124        set_visible('ppp_persist_redialperiod', v && !checked('ppp_redial_demand')); 
    99125         
    100         // pptp and static common 
    101         if(checked('wan_proto_static') || checked('wan_proto_pptp')) { 
    102                 show('wan_ipaddr'); 
    103                 show('wan_netmask'); 
    104                 show('wan_gateway'); 
    105         } else { 
    106                 if (checked('wan_proto_dhcp')) { 
    107                         show('wan_ipaddr'); 
    108                 } else { 
    109                         hide('wan_ipaddr'); 
    110                 } 
    111                 hide('wan_netmask'); 
    112                 hide('wan_gateway'); 
    113         } 
     126        v = (checked('wan_proto_static') || checked('wan_proto_pptp') || checked('wan_proto_dhcp')); 
     127        set_visible('wan_ipaddr', v); 
     128        set_visible('wan_netmask', v); 
    114129         
    115         // static specific 
    116         if(checked('wan_proto_static')) { 
    117                 show('wan_dns'); 
    118         } else {         
    119                 hide('wan_dns'); 
    120         } 
     130        v = checked('wan_proto_static'); 
     131        set_visible('wan_gateway', v); 
     132        set_visible('wan_dns', v); 
    121133} 
    122134--> 
    123135</script> 
    124136<?if [ "$SAVED" = "1" ] ?> 
     137        <? [ -z "$ERROR" ] || echo "<h2>Errors occured:</h2><h3>$ERROR</h3>" ?> 
    125138        <h2>Settings Saved</h2> 
    126 <?el?> 
     139        <br /> 
     140<?fi?> 
    127141<? display_form "start_form:$SCRIPT_NAME 
    128142field:Internet Connection Type 
     
    130144radio:wan_proto:$FORM_wan_proto:dhcp:DHCP<br />:onchange=\"modechange()\" 
    131145radio:wan_proto:$FORM_wan_proto:static:Static IP<br />:onchange=\"modechange()\" 
    132 radio:wan_proto:$FORM_wan_proto:pppoe:PPPoE<br />:onChange=\"modechange()\" 
    133 radio:wan_proto:$FORM_wan_proto:pptp:PPTP<br />:onChange=\"modechange()\" 
     146$PPPOE_OPTION 
     147$PPTP_OPTION 
    134148 
    135149field:Internet IP Address:wan_ipaddr 
     
    141155field:DNS Server(s):wan_dns 
    142156text:wan_dns:$FORM_wan_dns 
     157$PPTP_SERVER_OPTION 
    143158 
    144159field:PPP Redial Policy:ppp_redial 
     
    160175end_form" ?> 
    161176 
    162  
    163 <?fi?> 
    164  
    165177<? footer ?> 
    166178<!-- 
  • branches/whiterussian/openwrt/package/webif/files/www/webif.js

    r1980 r1987  
    11function checked(name) 
    22{ 
    3         return document.getElementById(name).checked; 
     3        var item = document.getElementById(name); 
     4        return ((item) && item.checked); 
    45} 
    56function hide(name) 
    67{ 
    7         document.getElementById(name).style.display = 'none'; 
     8        var item = document.getElementById(name); 
     9        if (item)  
     10                item.style.display = 'none'; 
    811} 
    912function show(name) 
    1013{ 
    11         document.getElementById(name).style.display = ''; 
     14        var item = document.getElementById(name); 
     15        if (item) 
     16                item.style.display = ''; 
    1217} 
    13  
     18function set_visible(name, value) 
     19{ 
     20        if (value) 
     21                show(name) 
     22        else 
     23                hide(name) 
     24} 
Note: See TracChangeset for help on using the changeset viewer.