コード例 #1
0
ファイル: HTTP.WAN-1.php プロジェクト: jhbsz/DIR-850L_A1
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;
}
コード例 #2
0
ファイル: HTTP.WAN-1.php プロジェクト: jhbsz/DIR-850L_A1
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;
}
コード例 #3
0
ファイル: SetWanSettings.php プロジェクト: jhbsz/DIR-850L_A1
$Gateway = query($nodebase . "Gateway");
$MTU = query($nodebase . "MTU");
$Username = query($nodebase . "Username");
$Password = query($nodebase . "Password");
$MaxIdleTime = query($nodebase . "MaxIdleTime");
$ServiceName = query($nodebase . "ServiceName");
$AutoReconnect = query($nodebase . "AutoReconnect");
$PriDns = query($nodebase . "DNS/Primary");
$SecDns = query($nodebase . "DNS/Secondary");
$OpenDnsEnable = query($nodebase . "OpenDNS/enable");
$DNScount = 0;
//Check the DNS address is valid or not.
if (INET_validv4addr($PriDns) != 1) {
    $PriDns = "";
}
if (INET_validv4addr($SecDns) != 1) {
    $SecDns = "";
}
//if( $PriDns != "" || $SecDns != "" )
//{
if ($OpenDnsEnable == "true") {
    set("/advdns/enable", 1);
} else {
    set("/advdns/enable", 0);
}
//}
//Maximum idle time is set to 5 minutes default when it¡¦s original value is meaningless.
//if($MaxIdleTime=="" || $MaxIdleTime=="0") $MaxIdleTime=5;
set($path_inf_wan1 . "/active", "1");
if ($Type == "Static") {
    set($path_inf_wan2 . "/active", "0");
コード例 #4
0
ファイル: SETVPNSRRT.php プロジェクト: jhbsz/DIR-850L_A1
 $l_ip = query($rl_infp . "/inet/ipv4/ipaddr");
 $l_mask = query($rl_infp . "/inet/ipv4/mask");
 $l_gw = query($rl_infp . "/inet/ipv4/gateway");
 $l_dev = query($rl_infp . "/devnam");
 if (query($inetp . "/ppp4/over") == "pptp") {
     $server = query($inetp . "/ppp4/pptp/server");
     $domain = query($inetp . "/ppp4/pptp/olddomainip");
     $overtype = "pptp";
 } else {
     if (query($inetp . "/ppp4/over") == "l2tp") {
         $server = query($inetp . "/ppp4/l2tp/server");
         $domain = query($inetp . "/ppp4/l2tp/olddomainip");
         $overtype = "l2tp";
     }
 }
 if (INET_validv4addr($server) != 1) {
     echo "xmldbc -X " . $inetp . "/ppp4/" . $overtype . "/olddomainip\n";
     echo "for i in 0 1 2\n";
     echo "do\n";
     echo "sip=`gethostip -d " . $server . "`\n";
     echo "if [ \"{$sip}\" != \"\" ]; then\n";
     echo "sed -i \"s/" . $server . "/{$sip}/g\" /etc/ppp/options." . $INF . "\n";
     echo "phpsh /etc/scripts/vpnroute.php PATH=" . $inetp . "/ppp4/" . $overtype . "/olddomainip INF=" . $INF . " DOMAINIP=" . $domain . " IP=" . $l_ip . " SERVER={$sip}" . " MASK=" . $l_mask . " DEV=" . $l_dev . " GW=" . $l_gw . "\n";
     echo "break\n";
     echo "else\n";
     echo "sleep 1\n";
     echo "fi\n";
     echo "done\n";
 } else {
     if (INET_validv4network($l_ip, $server, $l_mask) == 1) {
         echo "ip route add " . $server . " dev " . $l_dev . "\n";
コード例 #5
0
ファイル: inet_ppp4.php プロジェクト: jhbsz/DIR-850L_A1
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", "", "");
}
コード例 #6
0
ファイル: inet_ipv4.php プロジェクト: jhbsz/DIR-850L_A1
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", "", "");
}
コード例 #7
0
ファイル: inet_ipv4.php プロジェクト: jhbsz/DIR-850L_A1
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", "", "");
}