summaryrefslogblamecommitdiffstats
path: root/src/fbgui/html/js/networkDiscovery.js
blob: 10b4f1919f63d58bb6f886061848e747d3572a3d (plain) (tree)
1
2
3
4
5
6





                                         










                                                                     

 










                                                        

 









                                             

 
                            

                                                      
                                               
                                  

                                             

                     
                  
                       
                          
                                 
                                                                
      


       
















                                             
                                     








                                           

  

 
                                                 
                                                
                     











                                                                               
          
                                                                                                                       
                                       
                                                        

                    
  









                                                                                        
 

                             


                                                
                                           

                                                             
 




                                                                                           
 




                                                                                                                                                                                                                                                      
 




















                                                              
                              



                                                                             

  

 







                                                      
                                    


                                                                   


                                                           




                       
                            



                                                                         

 



                                                     
                                                  

















                                                                                    
                                                           






                                                        
                            



                                                                         

 
                                
                          

  

 







                                                   

 



                                    

 
                                
                          







                                                      
                                                    


  
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: 920, 
      maxHeight: 620,
      modal: true,
      draggable: false,
      closeOnEscape: true,
      open: function(event, ui) {
        $(this).css({'max-height': 620, '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 });
};