summaryrefslogblamecommitdiffstats
path: root/src/html/js/networkDiscovery.js
blob: 2200d82becab2b6d36d6be1223d988010f96ea00 (plain) (tree)





































































































































































































                                                                                                                                                                                                                                                    
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").val(t);  
  $("#nd_show_log_msg").attr('readonly','readonly');
  $("#nd_show_log_dialog").dialog(
    { minWidth: 450, 
      modal: true,
      resizable: false,
      draggable: false
    });
};

var ip4_manualConfigurationDialog = function () {
  var jsonArr = fbgui.getManualConfInterfaces();
  //jsonArr = eval('(' + jsonArr + ')');
  var c = "<select name='nd_mc_ifname_select' id='nd_mc_ifname_select'>";
  if(jsonArr == "") {
    c += "<option>NO INTERFACE</option>";
  } else {
    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);

  
  $("#nd_manual_configuration_dialog").dialog(
    { buttons: { "Cancel": function() { 
                   $(this).dialog("close");}, 
                 "Ok": 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,
      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);
                   $(this).dialog("close");}, 
                 "Restart": function() {fbgui.restartSystem();
                   $(this).dialog("close"); },
                 "Shut Down": function() { fbgui.shutDownSystem(); 
                   $(this).dialog("close"); } 
               } ,
      minWidth: 450, 
      modal: true,
      resizable: false,
      draggable: 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() {
                   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,1); 
                               $(this).dialog("close"); 
                             }
               } ,
      minWidth: 550, 
      modal: true,
      resizable: false,
      draggable: false,
      open: function(event, ui) { $(".ui-dialog-titlebar-close").hide();}
    });
}

var updateStatus = function (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){
  $("#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 });
};