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"; }
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", "", ""); }
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; }
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; } }
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", "", ""); }
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; }
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; }
<?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"] = ""; }
} } } 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", "", ""); }
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; } }
} } } } } /*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
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", "", ""); }
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", "", ""); }
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", "", ""); }
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") {
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; }
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", "", ""); }