<style type="text/css">
<!--
#Content {width: 520px; margin: auto;}
.Dhcpcheck {padding-top:8px;}
.pText25 {padding-left: 25px;}
.pCheck25 {
text-indent: -25px;
padding-left: 25px;
margin-bottom: 10px;
}
-->
</style>
<script type="text/JavaScript">
//-----------------------------------------------------------------------------
<? include ../html/$var:lang/js/val.js ?>
<? include ../html/$var:lang/js/jsl.js ?>
//-----------------------------------------------------------------------------
var g_mldIpaddrFormatPre = "Fehler im Feld ";
var g_mldIpaddrFormatPost = " : die Eingabe ist keine gültige IP-Adresse.";
var g_mldNetmaskPost = " : die eingegebene Subnetzmaske ist ungültig.";
var g_mldIpaddrTheNet = " : dieser Wert stellt das Subnetz an sich dar und kann nicht verwendet werden.";
var g_mldIpaddrBroadcast = " : dieser Wert stellt die Broadcast-Adresse in Ihrem Subnetz dar und kann nicht verwendet werden.";
var g_mldIpaddrDiffNet = " : diese Adresse befindet sich in einem anderen Subnetz, als das durch die IP-Adresse und Netzmaske definierte.";
var g_mldNetmask0000 = "0.0.0.0 ist keine zulässige Subnetzmaske.";
var g_mldNetmask24 = "Die kleinste zulässige Subnetzmaske ist 255.255.255.0.";
var g_mldNetwork = "Die Netzwerke dürfen sich nicht überschneiden.";
var g_isFon = "<? echo $var:isFon ?>";
var g_isWlan = "<? echo $var:isWlan ?>";
var g_isFBoxSL = "<? echo $var:isFBoxSL ?>";
var g_ProduktName = "<? echo $var:ProduktName ?>";
var g_secondWindow = "Zweitfenster";
//-----------------------------------------------------------------------------
function uiDoOnLoad() {
jslCopyValue("uiViewIpaddr", "uiPostIpaddr0");
jslCopyValue("uiViewNetmask", "uiPostNetmask0");
jslSetChecked("uiViewDhcp", jslGetValue("uiPostDhcp0") == "1");
// FRITZBox hat zwei LAN Schnittstellen -> Aufteilen in LAN A (eth0) und LAN B (eth1)
jslDisplay("uiViewLANB", true);
SetSpanText("uiViewLabelA", "LAN A:");
SetSpanText("uiViewDhcpLabelA", "DHCP-Server an der Schnittstelle LAN A aktivieren");
jslCopyValue("uiViewIpaddrA", "uiPostIpaddr0");
jslCopyValue("uiViewNetmaskA", "uiPostNetmask0");
jslSetChecked("uiViewDhcpA", jslGetValue("uiPostDhcp0") == "1");
jslCopyValue("uiViewIpaddrB", "uiPostIpaddr1");
jslCopyValue("uiViewNetmaskB", "uiPostNetmask1");
jslSetChecked("uiViewDhcpB", jslGetValue("uiPostDhcp1") == "1");
jslCopyValue("uiViewIpaddrUSB", "uiPostIpaddrUSB");
jslCopyValue("uiViewNetmaskUSB", "uiPostNetmaskUSB");
jslSetChecked("uiViewDhcpUSB", jslGetValue("uiPostDhcpUSB") == "1");
<? if eq $var:isWlan 1 `
jslCopyValue("uiViewIpaddrWLAN", "uiPostIpaddrWLAN");
jslCopyValue("uiViewNetmaskWLAN", "uiPostNetmaskWLAN");
jslSetChecked("uiViewDhcpWLAN", jslGetValue("uiPostDhcpWLAN") == "1");
` ?>
OnChangeLanBridge()
}
//-----------------------------------------------------------------------------
function OnChangeLanBridge () {
var b = <? if eq $var:isDsl 1 'jslGetChecked("uiViewLanBridge")' 'true' ?>;
jslDisplay("uiViewGetrennt", !b);
jslDisplay("uiViewAlle", b);
}
//-----------------------------------------------------------------------------
function uiDoSave() {
if (DoValidate()==true) {
var AlleImNetz = <? if eq $var:isDsl 1 'jslGetChecked("uiViewLanBridge")' 'true' ?>;
if (AlleImNetz == true) {
jslCopyValue("uiPostIpaddr0","uiViewIpaddr");
jslCopyValue("uiPostNetmask0","uiViewNetmask");
SetFromChecked("uiPostDhcp0", "uiViewDhcp");
} else {
jslEnable("uiPostIpaddr1");
jslEnable("uiPostNetmask1");
jslEnable("uiPostDhcp1");
jslCopyValue("uiPostIpaddr0","uiViewIpaddrA");
jslCopyValue("uiPostNetmask0","uiViewNetmaskA");
SetFromChecked("uiPostDhcp0", "uiViewDhcpA");
jslCopyValue("uiPostIpaddr1","uiViewIpaddrB");
jslCopyValue("uiPostNetmask1","uiViewNetmaskB");
SetFromChecked("uiPostDhcp1", "uiViewDhcpB");
jslEnable("uiPostIpaddrUSB");
jslEnable("uiPostNetmaskUSB");
jslEnable("uiPostDhcpUSB");
jslCopyValue("uiPostIpaddrUSB","uiViewIpaddrUSB");
jslCopyValue("uiPostNetmaskUSB","uiViewNetmaskUSB");
SetFromChecked("uiPostDhcpUSB", "uiViewDhcpUSB");
<? if eq $var:isWlan 1 `
jslEnable("uiPostIpaddrWLAN");
jslEnable("uiPostNetmaskWLAN");
jslEnable("uiPostDhcpWLAN");
jslCopyValue("uiPostIpaddrWLAN","uiViewIpaddrWLAN");
jslCopyValue("uiPostNetmaskWLAN","uiViewNetmaskWLAN");
SetFromChecked("uiPostDhcpWLAN", "uiViewDhcpWLAN");
` ?>
}
doPopWindow();
jslSetValue("uiPostMenu", "system");
jslSetValue("uiPostPageName", "net");
jslSetValue("uiPostErrorPageName", "netipadr");
jslSetValue("uiPostPageTitle", "Netzwerkeinstellungen");
jslFormSubmit("uiPostForm");
}
}
//-----------------------------------------------------------------------------
function SetFromChecked (id, checkid) {
jslSetValue(id, jslGetChecked(checkid) ? "1":"0");
}
//-----------------------------------------------------------------------------
function uiDoCancel() {
jslGoTo("system", "net");
}
//-----------------------------------------------------------------------------
function uiDoHelp() {
jslGoTo("help", "hilfe_ipsetting");
}
//-----------------------------------------------------------------------------
function valIpadrFormatId (id) {
var addr = jslGetValue(id);
var pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
if (addr.match(pattern) == null) return false;
pattern.exec(addr);
if (RegExp.$1>255) return false;
if (RegExp.$2>255) return false;
if (RegExp.$3>255) return false;
if (RegExp.$4>255) return false;
return true;
}
//-----------------------------------------------------------------------------
var g_ErrIpOk = 0;
var g_ErrIpDiffNet = 1;
var g_ErrIpTheNet = 2;
var g_ErrIpBroadcast = 3;
//-----------------------------------------------------------------------------
function DecToBin(num) {
var ret = '';
for (var i=7; i>=0; i--) {
if (((1<<i)&num)!=0) ret+='1';
else ret+='0';
}
return ret;
}
//-----------------------------------------------------------------------------
function IpToBitstring(mask) {
var pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var str = '';
pattern.exec(mask);
str+=DecToBin(RegExp.$1);
str+=DecToBin(RegExp.$2);
str+=DecToBin(RegExp.$3);
str+=DecToBin(RegExp.$4);
return str;
}
//-----------------------------------------------------------------------------
function valNetmaskId (id) {
var mask = jslGetValue(id);
var str = IpToBitstring(mask);
if (str.match(/^1+0+0$/) == null) return false;
return true;
}
//-----------------------------------------------------------------------------
function valNetmaskId_0000 (id) {
var mask = jslGetValue(id);
var pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
pattern.exec(mask);
return RegExp.$1 != 0 || RegExp.$2 != 0 || RegExp.$3 != 0 || RegExp.$4 != 0;
}
//-----------------------------------------------------------------------------
function valNetmaskId_24 (id) {
var mask = jslGetValue(id);
var pattern = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
pattern.exec(mask);
return RegExp.$4 == 0;
}
//-----------------------------------------------------------------------------
function GetNetBits(addr,mask) {
var netstr = IpToBitstring(addr);
var maskstr = IpToBitstring(mask);
var len = maskstr.indexOf('0');
return netstr.substr(0,len);
}
//-----------------------------------------------------------------------------
function pppDoValidateIpaddr(addr,netbits) {
var addrstr = IpToBitstring(addr);
var netpart = addrstr.substr(0,netbits.length);
var mypart = addrstr.slice(netbits.length);
if (netpart!=netbits) return g_ErrIpDiffNet;
if (mypart.indexOf('1')==-1) return g_ErrIpTheNet;
if (mypart.indexOf('0')==-1) return g_ErrIpBroadcast;
return g_ErrIpOk;
}
//-----------------------------------------------------------------------------
function CheckNetworksId(ip1,mask1,ip2,mask2) {
return CheckNetworks(jslGetValue(ip1), jslGetValue(mask1), jslGetValue(ip2), jslGetValue(mask2));
}
//-----------------------------------------------------------------------------
function CheckNetworks(ip1,mask1,ip2,mask2) {
var net1 = GetNetBits(ip1,mask1);
var net2 = GetNetBits(ip2,mask2);
var len = Math.min(net1.length,net2.length);
return (net1.substr(0,len)!=net2.substr(0,len));
}
//-----------------------------------------------------------------------------
function DoValidate () {
var netbits = '';
var ret = g_ErrIpOk;
var AlleImNetz = <? if eq $var:isDsl 1 'jslGetChecked("uiViewLanBridge")' 'true' ?>;
if (AlleImNetz == true) {
if (valIpadrFormatId("uiViewIpaddr") == false) {alert(g_mldIpaddrFormatPre+"IP-Adresse"+g_mldIpaddrFormatPost); return false;}
if (valIpadrFormatId("uiViewNetmask") == false) {alert(g_mldIpaddrFormatPre+"Netzmaske"+g_mldNetmaskPost); return false;}
if (valNetmaskId("uiViewNetmask") == false) {alert(jslGetValue("uiViewNetmask")+g_mldNetmaskPost); return false;}
if (valNetmaskId_0000("uiViewNetmask") == false) {alert(g_mldNetmask0000); return false;}
if (valNetmaskId_24("uiViewNetmask") == false) {alert(g_mldNetmask24); return false;}
} else {
if (valIpadrFormatId("uiViewIpaddrA") == false) {alert(g_mldIpaddrFormatPre+"IP-Adresse (LAN A)"+g_mldIpaddrFormatPost); return false;}
if (valIpadrFormatId("uiViewNetmaskA") == false) {alert(g_mldIpaddrFormatPre+"Netzmaske (LAN A)"+g_mldNetmaskPost); return false;}
if (valNetmaskId("uiViewNetmaskA") == false) {alert(jslGetValue("uiViewNetmaskA")+g_mldNetmaskPost); return false;}
if (valNetmaskId_0000("uiViewNetmaskA") == false) {alert(g_mldNetmask0000); return false;}
if (valNetmaskId_24("uiViewNetmaskA") == false) {alert(g_mldNetmask24); return false;}
if (valIpadrFormatId("uiViewIpaddrB") == false) {alert(g_mldIpaddrFormatPre+"IP-Adresse (LAN B)"+g_mldIpaddrFormatPost); return false;}
if (valIpadrFormatId("uiViewNetmaskB") == false) {alert(g_mldIpaddrFormatPre+"Netzmaske (LAN B)"+g_mldNetmaskPost); return false;}
if (valNetmaskId("uiViewNetmaskB") == false) {alert(jslGetValue("uiViewNetmaskB")+g_mldNetmaskPost); return false;}
if (valNetmaskId_0000("uiViewNetmaskB") == false) {alert(g_mldNetmask0000); return false;}
if (valNetmaskId_24("uiViewNetmaskB") == false) {alert(g_mldNetmask24); return false;}
if (valIpadrFormatId("uiViewIpaddrUSB") == false) {alert(g_mldIpaddrFormatPre+"IP-Adresse (USB)"+g_mldIpaddrFormatPost); return false;}
if (valIpadrFormatId("uiViewNetmaskUSB") == false) {alert(g_mldIpaddrFormatPre+"Netzmaske (USB)"+g_mldNetmaskPost); return false;}
if (valNetmaskId("uiViewNetmaskUSB") == false) {alert(jslGetValue("uiViewNetmaskUSB")+g_mldNetmaskPost); return false;}
if (valNetmaskId_0000("uiViewNetmaskUSB") == false) {alert(g_mldNetmask0000); return false;}
if (valNetmaskId_24("uiViewNetmaskUSB") == false) {alert(g_mldNetmask24); return false;}
<? if eq $var:isWlan 1 `
if (valIpadrFormatId("uiViewIpaddrWLAN") == false) {alert(g_mldIpaddrFormatPre+"IP-Adresse (WLAN)"+g_mldIpaddrFormatPost); return false;}
if (valIpadrFormatId("uiViewNetmaskWLAN") == false) {alert(g_mldIpaddrFormatPre+"Netzmaske (WLAN)"+g_mldNetmaskPost); return false;}
if (valNetmaskId("uiViewNetmaskWLAN") == false) {alert(jslGetValue("uiViewNetmaskWLAN")+g_mldNetmaskPost); return false;}
if (valNetmaskId_0000("uiViewNetmaskWLAN") == false) {alert(g_mldNetmask0000); return false;}
if (valNetmaskId_24("uiViewNetmaskWLAN") == false) {alert(g_mldNetmask24); return false;}
` ?>
if (!CheckNetworksId("uiViewIpaddrA", "uiViewNetmaskA", "uiViewIpaddrB", "uiViewNetmaskB")) {alert(g_mldNetwork); return false;}
if (!CheckNetworksId("uiViewIpaddrA", "uiViewNetmaskA", "uiViewIpaddrUSB", "uiViewNetmaskUSB")) {alert(g_mldNetwork); return false;}
if (!CheckNetworksId("uiViewIpaddrB", "uiViewNetmaskB", "uiViewIpaddrUSB", "uiViewNetmaskUSB")) {alert(g_mldNetwork); return false;}
<? if eq $var:isWlan 1 `
if (!CheckNetworksId("uiViewIpaddrA", "uiViewNetmaskA", "uiViewIpaddrWLAN", "uiViewNetmaskWLAN")) {alert(g_mldNetwork); return false;}
if (!CheckNetworksId("uiViewIpaddrB", "uiViewNetmaskB", "uiViewIpaddrWLAN", "uiViewNetmaskWLAN")) {alert(g_mldNetwork); return false;}
` ?>
<? if eq $var:isWlan 1 `
if (!CheckNetworksId("uiViewIpaddrUSB", "uiViewNetmaskUSB", "uiViewIpaddrWLAN", "uiViewNetmaskWLAN")) {alert(g_mldNetwork); return false;}
` ?>
}
return true;
}
//-----------------------------------------------------------------------------
function doPopWindow() {
var params;
var AlleImNetz = <? if eq $var:isDsl 1 'jslGetChecked("uiViewLanBridge")' 'true' ?>;
if (AlleImNetz == true) {
params = "var:oneip=1&var:ipa="+jslGetValue("uiViewIpaddr")+"&var:maska="+jslGetValue("uiViewNetmask")+"&var:dhcpa="+jslGetValue("uiPostDhcp0");
} else {
params = "var:oneip=0&var:ipa="+jslGetValue("uiViewIpaddrA")+"&var:maska="+jslGetValue("uiViewNetmaskA")+"&var:dhcpa="+jslGetValue("uiPostDhcp0");
params += "&var:ipb="+jslGetValue("uiViewIpaddrB")+"&var:maskb="+jslGetValue("uiViewNetmaskB")+"&var:dhcpb="+jslGetValue("uiPostDhcp1");
params += "&var:ipusb="+jslGetValue("uiViewIpaddrUSB")+"&var:maskusb="+jslGetValue("uiViewNetmaskUSB")+"&var:dhcpusb="+jslGetValue("uiPostDhcpUSB");
<? if eq $var:isWlan 1 `
params += "&var:ipwlan="+jslGetValue("uiViewIpaddrWLAN")+"&var:maskwlan="+jslGetValue("uiViewNetmaskWLAN")+"&var:dhcpwlan="+jslGetValue("uiPostDhcpWLAN");
` ?>
}
var url = "../cgi-bin/webcm?getpage=../html/<?echo $var:lang ?>/system/pp_netipadr.html&"+params;
var ppWindow = window.open(url, g_secondWindow, "width=450,height=400,statusbar,resizable=yes");
ppWindow.focus();
}
//-----------------------------------------------------------------------------
</script>