Exemplo n.º 1
0
function check_qos_setting($path)
{
    $enable = query($path . "/device/qos/enable");
    $auto = query($path . "/device/qos/autobandwidth");
    if ($enable == "1") {
        if ($auto == "0") {
            if (isdigit(query($path . "/inf/bandwidth/upstream")) == "0" || query($path . "/inf/bandwidth/upstream") > 102400 || query($path . "/inf/bandwidth/upstream") < 1) {
                set_result("FAILED", $path . "/inf/bandwidth/upstream", i18n("The input uplink speed is invalid."));
                return "FAILED";
            } else {
                // Remove the leading zeros.
                $upstream_dec = strtoul(query($path . "/inf/bandwidth/upstream"), 10);
                set($path . "/inf/bandwidth/upstream", $upstream_dec);
            }
        } else {
            set($path . "/device/qos/autobandwidth", "1");
        }
        $type = query($path . "/inf/bandwidth/type");
        if ($type == "AUTO" || $type == "ADSL" || $type == "CABLE") {
        } else {
            set_result("FAILED", $path . "/inf/bandwidth/type", i18n("Unsupported Connection type be assigned."));
            return "FAILED";
        }
    } else {
        set($path . "/device/qos/enable", "0");
    }
    return "OK";
}
Exemplo n.º 2
0
function check_ntp($prefix)
{
    $ntp = query($prefix . "/enable");
    if ($ntp != "1") {
        set($prefix . "/enable", "0");
    } else {
        /* TODO: need to validate the server. */
        $server = query($prefix . "/server");
        TRACE_debug("FATLADY: server=" . $server);
        if ($server == "") {
            set_result("FAILED", $prefix . "/server", i18n("Invalid NTP server"));
            return;
        }
        $period = query($prefix . "/period");
        TRACE_debug("FATLADY: period=" . $period);
        if (isdigit($period) != 1) {
            set_result("FAILED", $prefix . "/period", i18n("Invalid Update period"));
            return;
        }
        if ($period == 0) {
            set_result("FAILED", $prefix . "/period", i18n("Invalid Update period"));
            return;
        }
    }
    set_result("OK", "", "");
}
Exemplo n.º 3
0
function check_remote($entry)
{
    $port = query($entry . "/inf/web");
    if ($port != "") {
        if (isdigit($port) != "1") {
            set_result("FAILED", $entry . "/inf/web", i18n("Invalid port number"));
            return 0;
        }
        if ($port < 1 || $port > 65535) {
            set_result("FAILED", $entry . "/inf/web", i18n("Invalid port range"));
            return 0;
        }
    }
    $port = query($entry . "/inf/https_rport");
    if ($port != "") {
        if (isdigit($port) != "1") {
            set_result("FAILED", $entry . "/inf/https_rport", i18n("Invalid port number"));
            return 0;
        }
        if ($port < 1 || $port > 65535) {
            set_result("FAILED", $entry . "/inf/https_rport", i18n("Invalid port range"));
            return 0;
        }
    }
    $host = query($entry . "/inf/weballow/hostv4ip");
    if ($host != "") {
        if (INET_validv4addr($host) != "1") {
            set_result("FAILED", $entry . "/inf/weballow/hostv4ip", i18n("Invalid host IP address"));
            return 0;
        }
    }
    set_result("OK", "", "");
    return 1;
}
Exemplo n.º 4
0
function check_pin($pin)
{
    /* more checking added for WPS 2.0 
    		We allow pin with : xxxx-xxxx
    							xxxx xxxx
    							xxxxxxxx
    	*/
    $len = strlen($pin);
    $delim = "";
    //we support 4 digits
    if ($len == 4) {
        if (isdigit($pin) != 1) {
            return 0;
        } else {
            return $pin;
        }
    }
    if ($len == 9) {
        if (cut_count($pin, "-") == 2) {
            $delim = "-";
        } else {
            if (cut_count($pin, " ") == 2) {
                $delim = " ";
            } else {
                return 0;
            }
        }
        $val1 = cut($pin, 0, $delim);
        $val2 = cut($pin, 1, $delim);
        if (strlen($val1) != 4 || strlen($val2) != 4) {
            return 0;
        }
        $pin = $val1 . $val2;
    }
    if (isdigit($pin) != 1) {
        return 0;
    }
    if (strlen($pin) != 8) {
        return 0;
    }
    $i = 0;
    $pow = 3;
    $sum = 0;
    while ($i < 8) {
        $sum = $pow * substr($pin, $i, 1) + $sum;
        if ($pow == 3) {
            $pow = 1;
        } else {
            $pow = 3;
        }
        $i++;
    }
    $sum = $sum % 10;
    if ($sum == 0) {
        return $pin;
    } else {
        return 0;
    }
}
Exemplo n.º 5
0
function check_datetime($prefix)
{
    $date = query($prefix . "/date");
    $time = query($prefix . "/time");
    $month = cut($date, 0, "/");
    $day = cut($date, 1, "/");
    $year = cut($date, 2, "/");
    $hour = cut($time, 0, ":");
    $min = cut($time, 1, ":");
    $sec = cut($time, 2, ":");
    TRACE_debug("FATLADY: RUNTIME.TIME: " . $year . "/" . $month . "/" . $day);
    TRACE_debug("FATLADY: RUNTIME.TIME: " . $hour . ":" . $min . ":" . $sec);
    /* The latest time linux can support is: Tue Jan 19 11:14:07 CST 2038. */
    if (isdigit($year) == 0 || $year < 1999 || $year > 2037) {
        set_result("FAILED", $prefix . "/date", i18n("Invalid year") . " - " . $year);
        return;
    }
    if (isdigit($month) == 0 || $month <= 0 || $month > 12) {
        set_result("FAILED", $prefix . "/date", i18n("Invalid month"));
        return;
    }
    if (isdigit($day) == 0 || $day <= 0 || $day > 31) {
        set_result("FAILED", $prefix . "/date", i18n("Invalid day"));
        return;
    }
    if ($month == 2 || $month == 4 || $month == 6 || $month == 9 || $month == 11) {
        if ($day > 30) {
            set_result("FAILED", $prefix . "/date", i18n("Invalid day"));
            return;
        }
        if ($month == 2) {
            if (is29year($year) == 1) {
                if ($day > 29) {
                    set_result("FAILED", $prefix . "/date", i18n("Invalid day"));
                    return;
                }
            } else {
                if ($day > 28) {
                    set_result("FAILED", $prefix . "/date", i18n("Invalid day"));
                    return;
                }
            }
        }
    }
    if (isdigit($hour) == 0 || $hour < 0 || $hour > 23) {
        set_result("FAILED", $prefix . "/time", i18n("Invalid hour"));
        return;
    }
    if (isdigit($min) == 0 || $min < 0 || $min > 59) {
        set_result("FAILED", $prefix . "/time", i18n("Invalid minute"));
        return;
    }
    if (isdigit($sec) == 0 || $sec < 0 || $sec > 59) {
        set_result("FAILED", $prefix . "/time", i18n("Invalid second"));
        return;
    }
    set_result("OK", "", "");
}
Exemplo n.º 6
0
function WIFI_getchannellist($band)
{
    /**********************************************************************/
    /* New methods to get the channel list.								  */
    /**********************************************************************/
    if ($band == "") {
        $band = "g";
    }
    $list = query("/runtime/freqrule/channellist/" . $band);
    if ($list != "") {
        return $list;
    }
    /**********************************************************************/
    /* Old methods to get the channel list. Yes, it only supports G band. */
    /**********************************************************************/
    $c = query("/runtime/devdata/countrycode");
    if ($c == "") {
        TRACE_error("phplib/WIFI.php - WIFI_getchannellist() ERROR: no Country Code!!! Please check if you board is initialized. Use 'US' as temporary countrycode.");
        $c = "US";
    }
    if (isdigit($c) == 1) {
        TRACE_error("phplib/WIFI.php - WIFI_getchannellist() ERROR: Country Code (" . $c . ") is not in ISO Name!! Please use ISO name insteads of Country Number. Use 'US' as temporary countrycode.");
        $c = "US";
    }
    if ($band == "a") {
        if ($c == "US") {
            $list = "36,40,44,48,149,153,157,161,165";
        } else {
            if ($c == "JP") {
                $list = "36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140";
            } else {
                if ($c == "CN") {
                    $list = "149,153,157,161,165";
                } else {
                    if ($c == "LA") {
                        $list = "149,153,157,161";
                    } else {
                        TRACE_error("phplib/WIFI.php - WIFI_getchannellist() ERROR: countrycode (" . $c . ") doesn't match any list in WIFI_getchannellist(). Please check it. Return the channel list of 'US' instead.");
                        $list = "36,40,44,48,149,153,157,161,165";
                    }
                }
            }
        }
        return $list;
    }
    if ($c == "US") {
        $list = "1,2,3,4,5,6,7,8,9,10,11";
    } else {
        if ($c == "CL" || $c == "GB" || $c == "JP" || $c == "CN" || $c == "LA") {
            $list = "1,2,3,4,5,6,7,8,9,10,11,12,13";
        } else {
            TRACE_error("phplib/WIFI.php - WIFI_getchannellist() ERROR: countrycode (" . $c . ") doesn't match any list in WIFI_getchannellist(). Please check it. Return the channel list of 'US' instead.");
            $list = "1,2,3,4,5,6,7,8,9,10,11";
        }
    }
    return $list;
}
Exemplo n.º 7
0
function check_remote($entry)
{
    $port = query($entry . "/inf/web");
    if ($port != "") {
        if (isdigit($port) != "1") {
            set_result("FAILED", $entry . "/inf/web", i18n("Invalid port number"));
            return 0;
        }
        if ($port < 1 || $port > 65535) {
            set_result("FAILED", $entry . "/inf/web", i18n("Invalid port range"));
            return 0;
        }
        // Check with VSVR and PFWD. Currently only with NAT-1;
        $nat = XNODE_getpathbytarget("/nat", "entry", "uid", "NAT-1");
        if ($nat != "") {
            $i = 1;
            while ($i <= 2) {
                if ($i == 1) {
                    $target = "portforward";
                    $svr_str = i18n("PORT FORWARDING");
                } else {
                    $target = "virtualserver";
                    $svr_str = i18n("VIRTUAL SERVER");
                }
                $count = query($nat . "/" . $target . "/entry#");
                TRACE_debug("FATLADY: check HTTP.WAN with " . $nat . "/" . $target . " count:" . $count);
                $j = 1;
                while ($j <= $count) {
                    $CurBase = $nat . "/" . $target . "/entry:" . $j;
                    if (query($CurBase . "/protocol") == "TCP+UDP" || query($CurBase . "/protocol") == "TCP") {
                        if ($port >= query($CurBase . "/external/start") && $port <= query($CurBase . "/external/end")) {
                            set_result("FAILED", $entry . "/inf/web", i18n("The port number is used by") . " " . i18n($svr_str) . ".");
                            return 0;
                        }
                    }
                    $j++;
                }
                $i++;
            }
        }
    }
    $host = query($entry . "/inf/weballow/hostv4ip");
    if ($host != "") {
        if (INET_validv4addr($host) != "1") {
            set_result("FAILED", $entry . "/inf/weballow/hostv4ip", i18n("Invalid host IP address"));
            return 0;
        }
    }
    set_result("OK", "", "");
    return 1;
}
Exemplo n.º 8
0
<?php

/* fatlady is used to validate the configuration for the specific service.
 * FATLADY_prefix was defined to the path of Session Data.
 * 3 variables should be returned for the result:
 * FATLADY_result, FATLADY_node & FATLADY_message. */
include "/htdocs/phplib/trace.php";
$hostname = query($FATLADY_prefix . "/device/hostname");
TRACE_debug("FATLADY: DEVICE.HOSTNAME: hostname=" . $hostname);
if ($hostname == "" || isdomain($hostname) == "0" || isdigit($hostname) == "1" || strchr($hostname, ".") != "") {
    $_GLOBALS["FATLADY_result"] = "FAILED";
    $_GLOBALS["FATLADY_node"] = $FATLADY_prefix . "/device/hostname";
    $_GLOBALS["FATLADY_message"] = i18n("Invalid host name");
    /* internal error, no i18n. */
} else {
    set($FATLADY_prefix . "/valid", "1");
    $_GLOBALS["FATLADY_result"] = "OK";
    $_GLOBALS["FATLADY_node"] = "";
    $_GLOBALS["FATLADY_message"] = "";
}
Exemplo n.º 9
0
                }
            }
        }
        if (query($FATLADY_prefix . "/runtime/callmgr/voice_service:1/mobile/call_forward/not_reachable") == 1) {
            $number = query($FATLADY_prefix . "/runtime/callmgr/voice_service:1/mobile/call_forward/not_reachable_number");
            //TRACE_debug("FATLADY: not_reachable_number".$number);
            if ($number == "") {
                set_result("FAILED", $FATLADY_prefix . "/runtime/callmgr/voice_service:1/mobile/call_forward/not_reachable_number", i18n("The Not Reachable Number cannot be empty."));
                $rlt = "-1";
            } else {
                if (substr($number, 0, 1) == "+") {
                    $len = strlen($number);
                    $string = substr($number, 1, $len - 1);
                    if (isdigit($string) == "0") {
                        set_result("FAILED", $FATLADY_prefix . "/runtime/callmgr/voice_service:1/mobile/call_forward/not_reachable_number", i18n("Invalid value for the Not Reachable Number."));
                        $rlt = "-1";
                    }
                } else {
                    if (isdigit($number) == "0") {
                        set_result("FAILED", $FATLADY_prefix . "/runtime/callmgr/voice_service:1/mobile/call_forward/not_reachable_number", i18n("Invalid value for the Not Reachable Number."));
                        $rlt = "-1";
                    }
                }
            }
        }
    }
}
if ($rlt == "0") {
    set($FATLADY_prefix . "/valid", "1");
    set_result("OK", "", "");
}
Exemplo n.º 10
0
 function parseDuration($duration, $interval)
 {
     $temp = strpos($duration, $interval);
     if ($temp !== false) {
         $end = $temp;
         while ($temp > 0 && isdigit(substr($duration, $temp, 1))) {
             $temp--;
         }
         return substr($duration, $temp, $end - $temp);
     } else {
         return 0;
     }
 }
Exemplo n.º 11
0
                    }
                }
            }
        }
    }
    /*echo "nvram set ".$pci_5g_path."regrev=".$regrev."\n";
    	echo "nvram set ".$pci_5g_path."ccode=".$ctry_code."\n";*/
    startcmd("nvram set " . $pci_path . "regrev=0");
    startcmd("nvram set " . $pci_path . "ccode=0");
    startcmd("nvram set wl" . $wlif_bss_idx . "_country_code=" . $ctry_code);
    startcmd("nvram set wl" . $wlif_bss_idx . "_country_rev=" . $regrev);
    /* alpha create nvram parameter: it's value include country code and regulatory revision */
    startcmd("nvram set wl" . $wlif_bss_idx . "_alpha_country_code=" . $ctry_code . "/" . $regrev);
}
$ccode = query("/runtime/devdata/countrycode");
if (isdigit($ccode) == 1) {
    TRACE_error("\n\nError\nWe do not support digital country,assign as US\n\n");
    $ccode = "US";
}
if ($ccode == "") {
    TRACE_error("\n\nError\nempty country,assign as US\n\n");
    $ccode = "US";
}
$pci_2g_path = "pci/2/1/";
$pci_5g_path = "pci/1/1/";
/*wl0 is 5G*/
nvram_country_setup(0, $ccode, $pci_5g_path);
/*wl1 is 2.4G*/
nvram_country_setup(1, $ccode, $pci_2g_path);
/*for ap client we need set country to dirver this moment. 
  the site survey will run without wlconfig ifname up
Exemplo n.º 12
0
function check_ppp6($path)
{
    anchor($path);
    /* IP address */
    $static = query("static");
    if ($static == "1") {
        $ipaddr = query("ipaddr");
        if (INET_validv6addr($ipaddr) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP Address"));
            return;
        }
        $type = INET_v6addrtype($ipaddr);
        TRACE_debug("FATLADY: INET_PPP6: ipv6 type = " . $type);
        if ($type == "ANY" || $type == "MULTICAST" || $type == "LOOPBACK" || $type == "LINKLOCAL" || $type == "SITELOCAL") {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IPv6 Address"));
            return;
        }
    } else {
        /* if static is not 1, it should be 0. */
        set("static", "0");
        del("ipaddr");
    }
    /* DNS */
    $cnt = query("dns/count");
    $i = 0;
    while ($i < $cnt) {
        $i++;
        $value = query("dns/entry:" . $i);
        if (INET_validv6addr($value) == 0) {
            set_result("FAILED", $path . "/dns:" . $i, i18n("Invalid DNS address"));
            return;
        }
    }
    /* MTU/MRU */
    $mtu = query("mtu");
    if ($mtu != "") {
        if (isdigit($mtu) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is invalid."));
            return;
        }
        if ($mtu < 1280) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too small, the valid value mustn't be smaller than 1280."));
            return;
        }
        if ($mtu > 1492) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value is 1280 ~ 1492."));
            return;
        }
        $mtu = $mtu + 1 - 1;
        /* convert to number */
        set("mtu", $mtu);
    }
    $mru = query("mru");
    if ($mru != "") {
        if (isdigit($mru) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("The MRU value is invalid."));
            return;
        }
        if ($mru < 576) {
            set_result("FAILED", $path . "/mru", i18n("The MRU value is too small, the valid value is 576 ~ 1492."));
            return;
        }
        if ($mru > 1492) {
            set_result("FAILED", $path . "/mru", i18n("The MRU value is too large, the valid value is 576 ~ 1492."));
            return;
        }
        $mru = $mru + 1 - 1;
        /* convert to number */
        set("mru", $mru);
    }
    /* User Name & Password */
    if (query("username") == "") {
        set_result("FAILED", $path . "/username", i18n("The user name can not be empty"));
        return;
    }
    /* dialup */
    $mode = query("dialup/mode");
    if ($mode != "auto" && $mode != "manual" && $mode != "ondemand") {
        /* no i18n */
        set_result("FAILED", $path . "/dialup/mode", "Invalid value for dial up mode - " . $mode);
        return;
    }
    $tout = query("dialup/idletimeout");
    if ($tout != "") {
        if (isdigit($tout) == "0" || $tout < 0 || $tout > 10000) {
            set_result("FAILED", $path . "/dialup/mode", i18n("Invalid value for idle timeout."));
            return;
        }
    }
    set_result("OK", "", "");
}
Exemplo n.º 13
0
function check_ipv4($path, $needgw)
{
    anchor($path);
    $static = query("static");
    if ($static != "1") {
        set("static", "0");
    }
    TRACE_debug("FATLADY: INET_IPV4: static = " . $static);
    if ($static == "1") {
        $ip = query("ipaddr");
        $mask = query("mask");
        $dhcps4 = INF_getinfinfo($_GLOBALS["FATLADY_INF_UID"], "dhcps4");
        TRACE_debug("FATLADY: INET_IPV4: ip = " . $ip);
        TRACE_debug("FATLADY: INET_IPV4: mask = " . $mask);
        if (INET_validv4addr($ip) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP address"));
            return;
        }
        if ($mask == "") {
            set_result("FAILED", $path . "/mask", i18n("No Subnet Mask value"));
            return;
        }
        if ($mask < 0 || $mask > 32) {
            set_result("FAILED", $path . "/mask", i18n("Invalid Subnet Mask value"));
            return;
        }
        if (INET_validv4host($ip, $mask) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP address"));
            return;
        }
        if (INET_addr_strip0($gw) == $ip) {
            set_result("FAILED", $path . "/gateway", i18n("The IP address and gateway address cannot be the same"));
            return;
        }
        set("ipaddr", INET_addr_strip0($ip));
        $ip = query("ipaddr");
        $gw = query("gateway");
        TRACE_debug("FATLADY: INET_IPV4: gw=" . $gw);
        if ($gw == "") {
            if ($needgw == "1" && $static == "1") {
                set_result("FAILED", $path . "/gateway", i18n("No default gateway IP address"));
                return;
            }
        } else {
            if (INET_validv4host($gw, $mask) == 0) {
                set_result("FAILED", $path . "/gateway", i18n("Invalid default gateway IP address"));
                return;
            }
            if (ipv4networkid($gw, $mask) != ipv4networkid($ip, $mask)) {
                set_result("FAILED", $path . "/gateway", i18n("The default gateway should be in the same network"));
                return;
            }
            if (INET_addr_strip0($gw) == $ip) {
                set_result("FAILED", $path . "/gateway", i18n("The IP address and gateway address cannot be the same"));
                return;
            }
            set("gateway", INET_addr_strip0($gw));
        }
    } else {
        if (query("dhcpplus/enable") != "") {
            /* User Name & Password */
            if (query("dhcpplus/enable") == "1" && query("dhcpplus/username") == "") {
                set_result("FAILED", $path . "/dhcpplus/username", i18n("The user name cannot be empty"));
                return;
            }
        }
    }
    $cnt = query("dns/count");
    $i = 0;
    while ($i < $cnt) {
        $i++;
        $value = query("dns/entry:" . $i);
        TRACE_debug("FATLADY: INET_IPV4: dns" . $i . "=" . $value);
        if (INET_validv4addr($value) == 0) {
            set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
            return;
        }
        set("dns/entry:" . $i, INET_addr_strip0($value));
        if ($static == "1") {
            if (ipv4networkid($value, $mask) == ipv4networkid($ip, $mask)) {
                TRACE_debug("FATLADY: INET_IPV4: dns" . $i . "=" . $value . " is in the same network as IP:" . $ip);
                if (INET_validv4host($value, $mask) == 0) {
                    set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
                    return;
                }
                if ($value == $ip) {
                    set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
                    return;
                }
            }
        }
        if ($i > 1) {
            $j = $i - 1;
            $k = 0;
            while ($k < $j) {
                $k++;
                $dns = query("dns/entry:" . $k);
                if ($value == $dns) {
                    set_result("FAILED", $path . "/dns/entry:2", i18n("Secondary DNS server should not be the same as Primary DNS server."));
                    return;
                }
            }
        }
    }
    $mtu = query("mtu");
    TRACE_debug("FATLADY: INET_IPV4: mtu=" . $mtu);
    if ($mtu != "") {
        if (isdigit($mtu) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is invalid."));
            return;
        }
        if ($mtu < 576) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too small, the valid value is 576 ~ 1500."));
            return;
        }
        if ($mtu > 1500) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value is 576 ~ 1500."));
            return;
        }
    }
    set_result("OK", "", "");
}
Exemplo n.º 14
0
function check_ipv4($path, $needgw)
{
    include "/htdocs/webinc/feature.php";
    anchor($path);
    $static = query("static");
    $ipipmode = query($path . "/ipv4in6/mode");
    if ($ipipmode != "") {
        TRACE_debug("FATLADY: INET_IPV4: IPIP mode :" . $ipipmode);
        $ipipremote = query($path . "/ipv4in6/remote");
        if ($ipipremote != "") {
            TRACE_debug("FATLADY: IPIP remote IPv6 address :" . $ipipremote);
            //if(INET_validv6addr($ipipremote) == 0)
            if (ipv6checkip($ipipremote) != 1) {
                set_result("FAILED", $path . "/ipaddr", i18n("Invalid IPv6 address"));
                return;
            }
            //$type = INET_v6addrtype($ipipremote);
            $type = ipv6addrtype($ipipremote);
            TRACE_debug("FATLADY: IPIP remote IPv6 address type :" . $type);
            if ($type == "ANY" || $type == "MULTICAST" || $type == "LOOPBACK") {
                set_result("FAILED", $path . "/ipaddr", i18n("Invalid IPv6 address type"));
                return;
            }
        }
        $ip = query("ipaddr");
        /* ip address of B4 */
        if ($ip != "") {
            $ip_part = cut($ip, 3, '.');
            if ($ip_part < 2 || $ip_part > 7) {
                set_result("FAILED", $path . "/ipaddr", i18n("The range of B4 IPv4 address is from 192.0.0.2 to 192.0.0.7"));
                return;
            }
        }
        set_result("OK", "", "");
        return;
    }
    if ($static != "1") {
        set("static", "0");
    }
    TRACE_debug("FATLADY: INET_IPV4: static = " . $static);
    if ($static == "1") {
        $ip = query("ipaddr");
        $mask = query("mask");
        $dhcps4 = INF_getinfinfo($_GLOBALS["FATLADY_INF_UID"], "dhcps4");
        TRACE_debug("FATLADY: INET_IPV4: ip = " . $ip);
        TRACE_debug("FATLADY: INET_IPV4: mask = " . $mask);
        if (INET_validv4addr($ip) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP Address"));
            return;
        }
        if ($mask == "") {
            set_result("FAILED", $path . "/mask", i18n("No Subnet Mask value"));
            return;
        }
        if ($mask < 0 || $mask > 32) {
            set_result("FAILED", $path . "/mask", i18n("Invalid Subnet Mask value"));
            return;
        }
        if ($mask < 8) {
            set_result("FAILED", $path . "/mask", i18n("The router would not support the subnet mask which length is less than Class A."));
            return;
        }
        if (INET_validv4host($ip, $mask) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP Address"));
            return;
        }
        if (INET_addr_strip0($gw) == $ip) {
            set_result("FAILED", $path . "/gateway", i18n("The IP address can not be equal to the gateway address"));
            return;
        }
        set("ipaddr", INET_addr_strip0($ip));
        $ip = query("ipaddr");
        $gw = query("gateway");
        TRACE_debug("FATLADY: INET_IPV4: gw=" . $gw);
        if ($gw == "") {
            if ($needgw == "1" && $static == "1") {
                set_result("FAILED", $path . "/gateway", i18n("No  gateway  address"));
                return;
            }
        } else {
            if (INET_validv4host($gw, $mask) == 0) {
                set_result("FAILED", $path . "/gateway", i18n("Invalid Default Gateway address"));
                return;
            }
            if (ipv4networkid($gw, $mask) != ipv4networkid($ip, $mask)) {
                set_result("FAILED", $path . "/gateway", i18n("The default gateway should be in the same network"));
                return;
            }
            if (INET_addr_strip0($gw) == $ip) {
                set_result("FAILED", $path . "/gateway", i18n("The IP address can not be equal to the Default Gateway address"));
                return;
            }
            set("gateway", INET_addr_strip0($gw));
        }
    } else {
        if (query("dhcpplus/enable") != "") {
            /* User Name & Password */
            if (query("dhcpplus/enable") == "1" && query("dhcpplus/username") == "") {
                set_result("FAILED", $path . "/dhcpplus/username", i18n("The user name can not be empty"));
                return;
            }
        }
    }
    $cnt = query("dns/count");
    $i = 0;
    while ($i < $cnt) {
        $i++;
        $value = query("dns/entry:" . $i);
        TRACE_debug("FATLADY: INET_IPV4: dns" . $i . "=" . $value);
        if (INET_validv4addr($value) == 0) {
            set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
            return;
        }
        set("dns/entry:" . $i, INET_addr_strip0($value));
        if ($static == "1") {
            if (ipv4networkid($value, $mask) == ipv4networkid($ip, $mask)) {
                TRACE_debug("FATLADY: INET_IPV4: dns" . $i . "=" . $value . " is in the same network as IP:" . $ip);
                if (INET_validv4host($value, $mask) == 0) {
                    set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
                    return;
                }
                if ($value == $ip) {
                    set_result("FAILED", $path . "/dns/entry:" . $i, i18n("Invalid DNS address"));
                    return;
                }
            }
        }
        if ($i > 1) {
            $j = $i - 1;
            $k = 0;
            while ($k < $j) {
                $k++;
                $dns = query("dns/entry:" . $k);
                if ($value == $dns) {
                    set_result("FAILED", $path . "/dns/entry:2", i18n("Secondary DNS server should not be the same as Primary DNS server."));
                    return;
                }
            }
        }
    }
    $mtu = query("mtu");
    TRACE_debug("FATLADY: INET_IPV4: mtu=" . $mtu);
    if ($mtu != "") {
        if (isdigit($mtu) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is invalid."));
            return;
        }
        if ($mtu < 576 && $FEATURE_NOIPV6 == 1) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too small, the valid value is 576 ~ 1500."));
            return;
        }
        if ($mtu < 1280 && $FEATURE_NOIPV6 == 0) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too small, the valid value is 1280 ~ 1500."));
            return;
        }
        if ($mtu > 1500) {
            if ($FEATURE_NOIPV6 == 0) {
                set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value is 1280 ~ 1500."));
            } else {
                set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value is 576 ~ 1500."));
            }
            return;
        }
    }
    set_result("OK", "", "");
}
Exemplo n.º 15
0
include "/htdocs/phplib/xnode.php";
include "/htdocs/phplib/trace.php";
/* I save the channel list into /runtime/freqrule/channellist/a & runtime/freqrule/channellist/g */
$path_a = "/runtime/freqrule/channellist/a";
$path_g = "/runtime/freqrule/channellist/g";
$c = query("/runtime/devdata/countrycode");
$fcc = query("/runtime/device/fcc");
/*marco*/
$ce = query("/runtime/device/ce");
/*marco*/
if ($c == "") {
    TRACE_error("phplib/getchlist.php - GETCHLIST() ERROR: no Country Code!!! Please check if you board is initialized.");
    return;
}
if (isdigit($c) == 1) {
    TRACE_error("phplib/getchlist.php - GETCHLIST() ERROR: Country Code (" . $c . ") is not in ISO Name!! Please use ISO name insteads of Country Number.");
    return;
}
/* never set the channel list, so do it.*/
if (query($path_a) == "" || query($path_g) == "") {
    /* map the region by country ISO name */
    if ($c == "AU") {
        $list_g = "1,2,3,4,5,6,7,8,9,10,11,12,13";
        $list_a = "36,40,44,48";
        if ($fcc == "1") {
            $list_a = $list_a . ",52,56,60,64,100,104,108,112,116,132,136,140";
        }
        $list_a = $list_a . ",149,153,157,161,165";
    } else {
        if ($c == "CA") {
Exemplo n.º 16
0
function INET_addr_strip0($ip)
{
    $new_ip = "";
    if (cut_count($ip, ".") != 4) {
        return $ip;
    }
    $i = 0;
    while ($i < 4) {
        $part = cut($ip, $i, ".");
        if (isdigit($part) == 0) {
            return $ip;
        }
        $dec = strtoul($part, 10);
        if ($i == 0) {
            $new_ip = $dec;
        } else {
            $new_ip = $new_ip . "." . $dec;
        }
        $i++;
    }
    return $new_ip;
}
Exemplo n.º 17
0
function check_ppp4($path)
{
    anchor($path);
    $over = query("over");
    if ($over != "eth" && $over != "pptp" && $over != "l2tp" && $over != "tty") {
        /* Internal error, no i18n. */
        set_result("FAILED", $path . "/ipaddr", "Illegal value for over : " . $over);
        return;
    }
    /* IP address */
    $static = query("static");
    if ($static == "1") {
        $ipaddr = query("ipaddr");
        if (INET_validv4addr($ipaddr) == 0) {
            set_result("FAILED", $path . "/ipaddr", i18n("Invalid IP address"));
            return;
        }
    } else {
        /* if static is not 1, it should be 0. */
        set("static", "0");
        del("ipaddr");
    }
    /* DNS */
    $cnt = query("dns/count");
    $i = 0;
    while ($i < $cnt) {
        $i++;
        $value = query("dns/entry:" . $i);
        if (INET_validv4addr($value) == 0) {
            set_result("FAILED", $path . "/dns:" . $i, i18n("Invalid DNS address"));
            return;
        }
        set("dns/entry:" . $i, INET_addr_strip0($value));
    }
    /* MTU/MRU */
    $mtu = query("mtu");
    if ($mtu != "") {
        if (isdigit($mtu) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is invalid."));
            return;
        }
        if ($mtu < 576) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too small, the valid value cannot be smaller than 576."));
            return;
        }
        if ($over == "pptp" && $mtu > 1460) {
            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value for pptp is 576 ~ 1460."));
            return;
        } else {
            if ($over == "l2tp" && $mtu > 1460) {
                set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value for l2tp is 576 ~ 1460."));
                return;
            } else {
                if ($mtu > 1492) {
                    if ($over == "tty") {
                        if ($mtu > 1500) {
                            set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value for 3G is 576 ~ 1500."));
                            return;
                        }
                    } else {
                        set_result("FAILED", $path . "/mtu", i18n("The MTU value is too large, the valid value is 576 ~ 1492."));
                        return;
                    }
                }
            }
        }
        $mtu = $mtu + 1 - 1;
        /* convert to number */
        set("mtu", $mtu);
    }
    $mru = query("mru");
    if ($mru != "") {
        if (isdigit($mru) == "0") {
            set_result("FAILED", $path . "/mtu", i18n("Invalid MRU value."));
            return;
        }
        if ($mru < 576) {
            set_result("FAILED", $path . "/mru", i18n("The MRU value is too small, the valid value is 576 ~ 1492."));
            return;
        }
        if ($mru > 1492) {
            set_result("FAILED", $path . "/mru", i18n("The MRU value is too large, the valid value is 576 ~ 1492."));
            return;
        }
        $mru = $mru + 1 - 1;
        /* convert to number */
        set("mru", $mru);
    }
    /* User Name & Password */
    if (query("username") == "" && $over != "tty") {
        set_result("FAILED", $path . "/username", i18n("The user name cannot be empty"));
        return;
    }
    /* dialup */
    $mode = query("dialup/mode");
    if ($mode != "auto" && $mode != "manual" && $mode != "ondemand") {
        /* no i18n */
        set_result("FAILED", $path . "/dialup/mode", "Invalid value for dial up mode - " . $mode);
        return;
    }
    $tout = query("dialup/idletimeout");
    if ($tout != "") {
        if (isdigit($tout) == "0" || $tout < 0 || $tout >= 10000) {
            set_result("FAILED", $path . "/dialup/mode", i18n("Invalid value for idle timeout."));
            return;
        }
    }
    if ($over == "eth") {
        /* should check service name & ac name here. */
    } else {
        if ($over == "pptp") {
            $server = query("pptp/server");
            if ($server == "") {
                set_result("FAILED", $path . "/pptp/server", i18n("No PPTP server."));
                return;
            }
            if (cut_count($server, ".") == 4 && isdigit(cut($server, 0, ".")) == 1 && isdigit(cut($server, 1, ".")) == 1 && isdigit(cut($server, 2, ".")) == 1 && isdigit(cut($server, 3, ".")) == 1) {
                if (INET_validv4addr($server) == 0) {
                    set_result("FAILED", $path . "/pptp/server", i18n("Invalid server IP address"));
                    return;
                } else {
                    set("pptp/server", INET_addr_strip0($server));
                }
            } else {
                if (isdomain($server) != 1) {
                    set_result("FAILED", $path . "/pptp/server", i18n("Invalid server IP address"));
                    return;
                }
            }
        } else {
            if ($over == "l2tp") {
                $server = query("l2tp/server");
                if ($server == "") {
                    set_result("FAILED", $path . "/l2tp/server", i18n("No L2TP server."));
                    return;
                }
                if (cut_count($server, ".") == 4 && isdigit(cut($server, 0, ".")) == 1 && isdigit(cut($server, 1, ".")) == 1 && isdigit(cut($server, 2, ".")) == 1 && isdigit(cut($server, 3, ".")) == 1) {
                    if (INET_validv4addr($server) == 0) {
                        set_result("FAILED", $path . "/l2tp/server", i18n("Invalid server IP address"));
                        return;
                    } else {
                        set("l2tp/server", INET_addr_strip0($server));
                    }
                } else {
                    if (isdomain($server) != 1) {
                        set_result("FAILED", $path . "/l2tp/server", i18n("Invalid server IP address"));
                        return;
                    }
                }
            }
        }
    }
    set_result("OK", "", "");
}