diff options
Diffstat (limited to 'src/fbgui/html/js/networkDiscovery.js')
-rw-r--r-- | src/fbgui/html/js/networkDiscovery.js | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/src/fbgui/html/js/networkDiscovery.js b/src/fbgui/html/js/networkDiscovery.js new file mode 100644 index 0000000..2aaea11 --- /dev/null +++ b/src/fbgui/html/js/networkDiscovery.js @@ -0,0 +1,278 @@ +var hideProgressIndicator = function () { + $("#ajaxBusy").hide(); +}; + + + +var updateTips = function ( t ) { + $( ".validateTips" ) + .text( t ) + .addClass( "ui-state-highlight" ); + setTimeout( + function() { + $( ".validateTips" ).removeClass( "ui-state-highlight", 1500 ); + }, + 500 ); +}; + + + +var checkLength = function ( o, n, min, max ) { + if ( o.val().length > max || o.val().length < min ) { + o.addClass( "ui-state-error" ); + updateTips( "Length of " + n + " must be between " + + min + " and " + max + "." ); + return false; + } else { + return true; + } +}; + + + +var checkRegexp = function ( o, regexp, n ) { + if ( !( regexp.test( o.val() ) ) ) { + o.addClass( "ui-state-error" ); + updateTips( n ); + return false; + } else { + return true; + } +}; + + + +var showLog = function (t) { + $("#nd_show_log_msg").html(t); + //$("#nd_show_log_msg").attr('readonly','readonly'); + $('#nd_show_log_dialog').resizable("enable"); + $("#nd_show_log_dialog").dialog( + { buttons: { "Cancel": function() { + $(this).dialog("close");}}, + minWidth: 600, + maxHeight: 400, + modal: true, + draggable: false, + closeOnEscape: false, + open: function(event, ui) { + $(this).css({'max-height': 400, 'overflow-y': 'auto'}); + }, + }); +}; + + + +var getInterfaceConfOnChange = function (i) { + var n = i.options[i.selectedIndex].text; + var jsonObj = fbgui.getInterfaceConf(n); + if (!jQuery.isEmptyObject(jsonObj)) { + $("#ipaddr").val(jsonObj.ipaddr); + $("#netmask").val(jsonObj.netmask); + $("#broadcast").val(jsonObj.broadcast); + $("#gateway").val(jsonObj.gateway); + $("#dns").val(jsonObj.dns); + } + +}; + + + +var getInterfaceConf = function (i) { + var jsonObj = fbgui.getInterfaceConf(i); + if (!jQuery.isEmptyObject(jsonObj)) { + $("#ipaddr").val(jsonObj.ipaddr); + $("#netmask").val(jsonObj.netmask); + $("#broadcast").val(jsonObj.broadcast); + $("#gateway").val(jsonObj.gateway); + $("#dns").val(jsonObj.dns); + } + +}; + + + +var ip4_manualConfigurationDialog = function () { + var jsonArr = fbgui.getManualConfInterfaces(); + if(jsonArr == "") { + var c = "<p>Have not found usable interfaces for manual configuration</p>"; + $("#nd_manual_configuration_dialog").html(c); + $("#nd_manual_configuration_dialog").dialog( + { buttons: { "Cancel": function() { + $(this).dialog("close");}}, + minWidth: 450, + modal: true, + resizable: false, + draggable: false, + open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();} + }); + + } else { + var c = "<select name='nd_mc_ifname_select' id='nd_mc_ifname_select' onChange='getInterfaceConfOnChange(this)'>"; + jQuery.each(jsonArr, function() { + c += " <option>"+ this +"</option>"; + } + ); + + c += "</select>"; + $("#nd_mc_ifname").html(c); + + var ifname = $("#nd_mc_ifname_select :selected").text(), + ipaddr = $("#ipaddr"), + netmask = $("#netmask"), + broadcast = $("#broadcast"), + gateway = $("#gateway"), + dns = $("#dns"), + allFields = $([]).add(ipaddr).add(netmask).add(broadcast).add(gateway).add(dns); + + getInterfaceConf(ifname); + + $("#nd_manual_configuration_dialog").dialog( + { buttons: { "Cancel": function() { + $(this).dialog("close");}, + "Continue": function() { + var bValid = true; + allFields.removeClass("ui-state-error"); + + bValid = bValid && checkLength(ipaddr, "IP-Address", 7, 15); + bValid = bValid && checkLength(netmask, "Netmask Address", 7, 15); + bValid = bValid && checkLength(broadcast, "Broadcast Address", 7, 15); + bValid = bValid && checkLength(gateway, "Gateway Address", 7, 15); + bValid = bValid && checkLength(dns, "DNS Address", 7, 15); + + bValid = bValid && checkRegexp(ipaddr, /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/, "Is not a valid IP-Address! Format has to be e.g.: 192.168.1.2 (max value is 255)"); + bValid = bValid && checkRegexp(netmask, /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/, "Is not a valid IP-Address! Format has to be e.g.: 255.255.255.0 (max value is 255)"); + bValid = bValid && checkRegexp(broadcast, /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/, "Is not a valid IP-Address! Format has to be e.g.: 192.168.1.255 (max value is 255)"); + bValid = bValid && checkRegexp(gateway, /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/, "Is not a valid IP-Address! Format has to be e.g.: 192.168.1.254 (max value is 255)"); + bValid = bValid && checkRegexp(dns, /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/, "Is not a valid IP-Address! Format has to be e.g.: 192.168.1.111 (max value is 255)"); + + if (bValid) { + // put variables into a json object + // send to qt networkdiscovery + var o = {"ifname" : ifname, + "ipaddr" : ipaddr.val(), + "netmask" : netmask.val(), + "broadcast" : broadcast.val(), + "gateway" : gateway.val(), + "dns" : dns.val() } + try { + fbgui.ip4_setManualConfiguration(o); + } catch (e) { + fbgui.notifyCall(e); + } + $(this).dialog("close"); + } } + } , + minWidth: 450, + modal: true, + resizable: false, + draggable: false, + closeOnEscape: false, + close: function() {allFields.val("").removeClass("ui-state-error");}, + open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();} + }); + } +}; + + + +var abortBootDialog = function (m) { + fbgui.notifyCall("abortBootDialog"); + $("#nd_abort_boot_msg").html(m); + $("#nd_abort_boot_dialog").dialog( + { buttons: { "Manual Configure": function() { + ip4_manualConfigurationDialog();}, + "Show Log": function() { + var text = fbgui.readLogFile(); + showLog(text);}, + "Restart": function() {fbgui.restartSystem(); + $(this).dialog("close"); }, + "Shut Down": function() { fbgui.shutDownSystem(); + $(this).dialog("close"); }, + "Try Again": function() {fbgui.tryAgain(); + $(this).dialog("close"); } + } , + minWidth: 450, + modal: true, + resizable: false, + draggable: false, + closeOnEscape: false, + open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();} + }); +}; + + + +var chooseInterfaceDialog = function (i) { + var cb = "<label> Choose your interface: </label>"+ + "<select id='nd_ifName_select'>"; + jQuery.each(i, function() { + updateIfProgressBar(this, 100); + cb += " <option>"+ this +"</option>"; + } + ); + cb += "</select>"; + + $("#nd_choose_interface_msg").html(cb); + $("#nd_choose_interface_dialog").dialog( + { buttons: { "Manual Configure": function() { + ip4_manualConfigurationDialog();}, + "Show Log": function() { + var text = fbgui.readLogFile(); + showLog(text);}, + "Restart": function() {fbgui.restartSystem(); + $(this).dialog("close"); }, + "Shut Down": function() { fbgui.shutDownSystem(); + $(this).dialog("close"); }, + "Continue": function() { + var ifName = $("#nd_ifName_select :selected").text(); + fbgui.continueBoot(ifName); + $(this).dialog("close"); + } + } , + minWidth: 550, + modal: true, + resizable: false, + draggable: false, + closeOnEscape: false, + open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();} + }); +} + + + +var updateStatus = function (s){ + $("#nd_status").html(s); +}; + + + +var updateIfProgressBar = function (i, p){ + if (p >= 0 && p <= 100){ + $("#"+i+"_progress").progressbar({ value: p }); + }else{ + $("#"+i+"_progress").progressbar({ value: 0 }); + } +}; + + + +var updateIfStatus = function(i, s){ + $("#"+i+"_status").html(s); +}; + + + +var addInterface = function (i){ + hideProgressIndicator(); + $("#nd_progress_container").append( + "<div class='interface'>"+ + " Interface: " +i+ + " <span id='"+i+"_status'>Start DHCP </span>" + + " <div id='"+i+"_progress' class='progressbar' "+ + " style='height: 10px;'></div>"+ + "</div>" + ); + //$("#"+i+"_progress").progressbar({ value: 33 }); +}; + + |