You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			151 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
| function msgShow(retcode,msg) {
 | |
|     if(retcode == 0) {
 | |
|         var alertType = 'success';
 | |
|     } else if(retcode == 2 || retcode == 1) {
 | |
|         var alertType = 'danger';
 | |
|     }
 | |
|     var htmlMsg = '<div class="alert alert-'+alertType+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>'+msg+'</div>';
 | |
|     return htmlMsg;
 | |
| }
 | |
| 
 | |
| function createNetmaskAddr(bitCount) {
 | |
|   var mask=[];
 | |
|   for(i=0;i<4;i++) {
 | |
|     var n = Math.min(bitCount, 8);
 | |
|     mask.push(256 - Math.pow(2, 8-n));
 | |
|     bitCount -= n;
 | |
|   }
 | |
|   return mask.join('.');
 | |
| }
 | |
| 
 | |
| function loadSummary(strInterface) {
 | |
|     $.post('/ajax/networking/get_ip_summary.php',{interface:strInterface,csrf_token:csrf},function(data){
 | |
|         jsonData = JSON.parse(data);
 | |
|         console.log(jsonData);
 | |
|         if(jsonData['return'] == 0) {
 | |
|             $('#'+strInterface+'-summary').html(jsonData['output'].join('<br />'));
 | |
|         } else if(jsonData['return'] == 2) {
 | |
|             $('#'+strInterface+'-summary').append('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>'+jsonData['output'].join('<br />')+'</div>');
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function getAllInterfaces() {
 | |
|     $.get('/ajax/networking/get_all_interfaces.php',function(data){
 | |
|         jsonData = JSON.parse(data);
 | |
|         $.each(jsonData,function(ind,value){
 | |
|             loadSummary(value)
 | |
|         });
 | |
|     });
 | |
| }
 | |
| 
 | |
| function setupTabs() {
 | |
|     $('a[data-toggle="tab"]').on('shown.bs.tab',function(e){
 | |
|         var target = $(e.target).attr('href');
 | |
|         if(!target.match('summary')) {
 | |
|             var int = target.replace("#","");
 | |
|             loadCurrentSettings(int);
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function loadCurrentSettings(strInterface) {
 | |
|     $.post('/ajax/networking/get_int_config.php',{interface:strInterface,csrf_token:csrf},function(data){
 | |
|         jsonData = JSON.parse(data);
 | |
|         $.each(jsonData['output'],function(i,v) {
 | |
|             var int = v['interface'];
 | |
|             $.each(v,function(i2,v2) {
 | |
|                 switch(i2) {
 | |
|                     case "static":
 | |
|                         if(v2 == 'true') {
 | |
|                             $('#'+int+'-static').click();
 | |
|                             $('#'+int+'-nofailover').click();
 | |
|                         } else {
 | |
|                             $('#'+int+'-dhcp').click();
 | |
|                         }
 | |
|                     break;
 | |
|                     case "failover":
 | |
|                         if(v2 === 'true') {
 | |
|                             $('#'+int+'-failover').click();
 | |
|                         } else {
 | |
|                             $('#'+int+'-nofailover').click();
 | |
|                         }
 | |
|                     break;
 | |
|                     case "ip_address":
 | |
|                         var arrIPNetmask = v2.split('/');
 | |
|                         $('#'+int+'-ipaddress').val(arrIPNetmask[0]);
 | |
|                         $('#'+int+'-netmask').val(createNetmaskAddr(arrIPNetmask[1]));
 | |
|                     break;
 | |
|                     case "routers":
 | |
|                         $('#'+int+'-gateway').val(v2);
 | |
|                     break;
 | |
|                     case "domain_name_server":
 | |
|                         svrsDNS = v2.split(" ");
 | |
|                         $('#'+int+'-dnssvr').val(svrsDNS[0]);
 | |
|                         $('#'+int+'-dnssvralt').val(svrsDNS[1]);
 | |
|                     break;
 | |
|                 }
 | |
|             });
 | |
|         });
 | |
|     });
 | |
| }
 | |
| 
 | |
| function saveNetworkSettings(int) {
 | |
| 
 | |
|         var frmInt = $('#frm-'+int).find(':input');
 | |
|         var arrFormData = {};
 | |
|         $.each(frmInt,function(i3,v3){
 | |
|             if($(v3).attr('type') == 'radio') {
 | |
|                 arrFormData[$(v3).attr('id')] = $(v3).prop('checked');
 | |
|             } else {
 | |
|                 arrFormData[$(v3).attr('id')] = $(v3).val();
 | |
|             }
 | |
|         });
 | |
|         arrFormData['interface'] = int;
 | |
|         arrFormData['csrf_token'] = csrf;
 | |
|         $.post('/ajax/networking/save_int_config.php',arrFormData,function(data){
 | |
|             //console.log(data);
 | |
|             var jsonData = JSON.parse(data);
 | |
|             $('#msgNetworking').html(msgShow(jsonData['return'],jsonData['output']));
 | |
|         });
 | |
| }
 | |
| 
 | |
| function applyNetworkSettings() {
 | |
|         var int = $(this).data('int');
 | |
|         arrFormData = {};
 | |
|         arrFormData['csrf_token'] = csrf;
 | |
|         arrFormData['generate'] = '';
 | |
|         $.post('/ajax/networking/gen_int_config.php',arrFormData,function(data){
 | |
|             console.log(data);
 | |
|             var jsonData = JSON.parse(data);
 | |
|             $('#msgNetworking').html(msgShow(jsonData['return'],jsonData['output']));
 | |
|         });
 | |
| }
 | |
| 
 | |
| function setupBtns() {
 | |
|     $('#btnSummaryRefresh').click(function(){getAllInterfaces();});
 | |
| 
 | |
|     $('.intsave').click(function(){
 | |
|         var int = $(this).data('int');
 | |
|         saveNetworkSettings(int);
 | |
|     });
 | |
| 
 | |
|     $('.intapply').click(function(){
 | |
|         applyNetworkSettings();
 | |
|     });
 | |
| }
 | |
| 
 | |
| $().ready(function(){
 | |
|     csrf = $('#csrf_token').val();
 | |
|     pageCurrent = window.location.href.split("?")[1].split("=")[1];
 | |
|     pageCurrent = pageCurrent.replace("#","");
 | |
|     $('#side-menu').metisMenu();
 | |
|     switch(pageCurrent) {
 | |
|         case "network_conf":
 | |
|             getAllInterfaces();
 | |
|             setupTabs();
 | |
|             setupBtns();
 | |
|         break;
 | |
|     }
 | |
| });
 |