diff --git a/emhttp/plugins/dynamix/DashStats.page b/emhttp/plugins/dynamix/DashStats.page index b9b6fdf7e..20e17c8d0 100644 --- a/emhttp/plugins/dynamix/DashStats.page +++ b/emhttp/plugins/dynamix/DashStats.page @@ -256,7 +256,7 @@ input[value=Edit]{margin:12px 0 0 0;padding:5px 10px}
-_(Description)_


+_(Model)_


_(Registration)_
Unraid OS

_(Uptime)_
@@ -745,6 +745,29 @@ String.prototype.md5 = function() { } return rh(a)+rh(b)+rh(c)+rh(d); } +jQuery.prototype.hideMe = function() { + var hidden = $.cookie('hidden_content'); + hidden = hidden==null ? [] : hidden.split(';'); + if (hidden.indexOf(this.attr('sort'))>=0) this.find('tr:gt(0)').hide(); +} +jQuery.prototype.mixedView = function(s) { + if (s==0) { + this.find('tr:gt(0)').hide(); + return; + } + this.find('tr:gt(0)').show(); + if (this.attr('data')) { + setTimeout(this.attr('data')); + } + if (this.hasClass('mixed')) { + var select = this.find('select[name^="enter"]'); + select = parseInt(select.val())+1; + this.find('tr:gt(0)').each(function(){ + var names = ($(this).attr('class')||'').split(' '); + for (var n=0,name; name=names[n]; n++) if (/[0-9]/.test(name.slice(-1)) && name.slice(-1)!=select) $(this).hide(); + }); + } +} var ports = []; var cpu = []; @@ -889,11 +912,9 @@ function loadlist(init) { $.post('/webGui/include/DashboardApps.php',{display:'',docker:'',vms:''},function(d) { var data = d.split('\0'); $('#docker_view tr.updated').remove(); - $('#docker_view').append(data[0]); - hideMe($('#docker_view')); + $('#docker_view').append(data[0]).hideMe(); $('#vm_view tr.updated').remove(); - $('#vm_view').append(data[1]); - hideMe($('#vm_view')); + $('#vm_view').append(data[1]).hideMe(); if ($.cookie('my_apps')!=null) $('span.apps.stopped').hide(0,noApps()); if ($.cookie('my_vms')!=null) $('span.vms.stopped').hide(0,noVMs()); }); @@ -1189,24 +1210,6 @@ function setColor(l, t1, t2) { case (t2 > 0 && l >= t2): return 'orangebar'; default: return '';} } -function hideMe(tbody) { - var hidden = $.cookie('hidden_content'); - hidden = hidden==null ? [] : hidden.split(';'); - if (hidden.indexOf(tbody.attr('sort'))>=0) tbody.find('tr:gt(0)').hide(); -} -function mixed(tbody) { - if (tbody.attr('data')) { - setTimeout(tbody.attr('data')); - } - if (tbody.hasClass('mixed')) { - var select = tbody.find('select[name^="enter"]'); - select = parseInt(select.val())+1; - tbody.find('tr:gt(0)').each(function(){ - var names = ($(this).attr('class')||'').split(' '); - for (var n=0,name; name=names[n]; n++) if (/[0-9]/.test(name.slice(-1)) && name.slice(-1)!=select) $(this).hide(); - }); - } -} function openClose(button) { var hidden = $.cookie('hidden_content'); hidden = hidden==null ? [] : hidden.split(';'); @@ -1215,12 +1218,11 @@ function openClose(button) { var tbody = button.closest('tbody'); if (button.hasClass('fa-chevron-up')) { button.removeClass('fa-chevron-up fa-chevron-down').addClass('fa-chevron-down'); - tbody.find('tr:gt(0)').hide(); + tbody.mixedView(0); hidden.push(tbody.attr('sort')); } else { button.removeClass('fa-chevron-up fa-chevron-down').addClass('fa-chevron-up'); - tbody.find('tr:gt(0)').show(); - mixed(tbody); + tbody.mixedView(1); hidden.splice(hidden.indexOf(tbody.attr('sort')),1); } $.cookie('hidden_content',hidden.join(';'),{expires:3650}); @@ -1229,15 +1231,14 @@ function openClose(button) { if (hidden.length==0) { $('div.frame tbody').each(function(){ $(this).find('.openclose').removeClass('fa-chevron-up fa-chevron-down').addClass('fa-chevron-down'); - $(this).find('tr:gt(0)').hide(); + $(this).mixedView(0); hidden.push($(this).attr('sort')); }); $.cookie('hidden_content',hidden.join(';'),{expires:3650}); } else { $('div.frame tbody').each(function(){ $(this).find('.openclose').removeClass('fa-chevron-up fa-chevron-down').addClass('fa-chevron-up'); - $(this).find('tr:gt(0)').show(); - mixed($(this)); + $(this).mixedView(1); }); $.removeCookie('hidden_content'); } @@ -1380,8 +1381,7 @@ dashboard.on('message',function(msg,meta) { var info = moreInfo(data,"_(Array)_"); // array devices $('#array_list tr.updated').remove(); - $('#array_list').append(data[0]); - hideMe($('#array_list')); + $('#array_list').append(data[0]).hideMe(); $('#array_info').parent().css('display',info?'':'none'); $('#array_info').html(info); smartMenu('#array_list'); @@ -1391,8 +1391,7 @@ dashboard.on('message',function(msg,meta) { var data = t.split('\0'); var info = moreInfo(data,"_(Pool)_"); $('#pool_list'+i+' tr.updated').remove(); - $('#pool_list'+i).append(t); - hideMe($('#pool_list'+i)); + $('#pool_list'+i).append(t).hideMe(); $('#pool_info'+i).parent().css('display',info?'':'none'); $('#pool_info'+i).html(info); smartMenu('#pool_list'+i); @@ -1402,8 +1401,7 @@ dashboard.on('message',function(msg,meta) { var data = part[2].split('\0'); var info = moreInfo(data,"_(Unassigned)_"); $('#devs_list tr.updated').remove(); - $('#devs_list').append(data[0]); - hideMe($('#devs_list')); + $('#devs_list').append(data[0]).hideMe(); $('#devs_info').parent().css('display',info?'':'none'); $('#devs_info').html(info); smartMenu('#devs_list'); diff --git a/emhttp/plugins/dynamix/WG0.page b/emhttp/plugins/dynamix/WG0.page index cb9153452..0699423eb 100644 --- a/emhttp/plugins/dynamix/WG0.page +++ b/emhttp/plugins/dynamix/WG0.page @@ -130,7 +130,7 @@ $active = explode(' ',exec('wg show interfaces')); $autostart = explode(' ',@file_get_contents("$etc/autostart")?:''); $build = false; $script = "$docroot/webGui/scripts/upnp_port"; -$services = "$docroot/webGui/scripts/reload_services"; +$services = "$docroot/webGui/scripts/update_services"; $template = "$docroot/webGui/WGX.page"; $tower = _var($var,'NAME'); $ethX = 'eth0'; diff --git a/emhttp/plugins/dynamix/nchan/update_1 b/emhttp/plugins/dynamix/nchan/update_1 index 3937a3830..057263bf9 100755 --- a/emhttp/plugins/dynamix/nchan/update_1 +++ b/emhttp/plugins/dynamix/nchan/update_1 @@ -24,7 +24,7 @@ while (true) { exec("awk '/^c_max|^size/{print \$3}' /proc/spl/kstat/zfs/arcstats 2>/dev/null",$zfs); [$total,$free] = $memory; $used = $total-$free; - $info = max(round(100*(1-$free/$total)),0)."%\0".round(100*($zfs[1]??0)/($zfs[0]??1))."%\0".implode("\0",$sys); + $info = max(round(100*(1-$free/$total)),0)."%\0".min(100,round(100*($zfs[1]??0)/($zfs[0]??1)))."%\0".implode("\0",$sys); $rpms = count($rpms) ? implode(" RPM\0",$rpms).' RPM' : ''; $names = array_keys((array)parse_ini_file("$varroot/shares.ini")); exec("LANG='en_US.UTF8' lsof -Owl /mnt/disk[0-9]* 2>/dev/null|awk '/^shfs/ && \$0!~/\.AppleD(B|ouble)/ && \$5==\"REG\"'|awk -F/ '{print \$4}'",$lsof); diff --git a/emhttp/plugins/dynamix/scripts/reload_services b/emhttp/plugins/dynamix/scripts/reload_services index 36361190e..f3750640e 100755 --- a/emhttp/plugins/dynamix/scripts/reload_services +++ b/emhttp/plugins/dynamix/scripts/reload_services @@ -1,5 +1,5 @@ #!/bin/bash -SERVICES="sshd avahidaemon samba rpc nfsd ntpd nginx" +SERVICES="rpc nfsd ntpd nginx sshd avahidaemon samba" if [[ -n $1 ]]; then [[ ! -e $1 ]] && touch $1 || exit 0 diff --git a/emhttp/plugins/dynamix/scripts/update_services b/emhttp/plugins/dynamix/scripts/update_services new file mode 100755 index 000000000..8dc4b3ef2 --- /dev/null +++ b/emhttp/plugins/dynamix/scripts/update_services @@ -0,0 +1,6 @@ +#!/bin/bash +lock=/tmp/atlock.tmp + +rm -f $lock +echo "sleep ${1:-1};/usr/local/emhttp/webGui/scripts/reload_services $lock"|at -M now 2>/dev/null +exit 0 diff --git a/etc/rc.d/rc.library.source b/etc/rc.d/rc.library.source index 3e071f204..1daeac35d 100644 --- a/etc/rc.d/rc.library.source +++ b/etc/rc.d/rc.library.source @@ -140,12 +140,12 @@ check() { while IFS='\n' read -r net; do net=($net) if [[ "avahi show" =~ $CALLER ]]; then - [[ -n $net ]] && bind+=($net) + [[ -n $net && -z $(good $net) ]] && bind+=($net) [[ -n ${net[1]} ]] && ipv4=yes else # exclude wireguard tunnels for ntp [[ $CALLER == ntp ]] && name=$(show ${net[1]}) || name= - [[ ${name:0:2} != wg && -n ${net[1]} ]] && ipv4=yes bind+=($(sub ${net[1]})) + [[ ${name:0:2} != wg && -n ${net[1]} && -z $(good ${net[1]}) ]] && ipv4=yes bind+=($(sub ${net[1]})) fi done <<< $(ip -br -4 addr|awk '/^(br|bond|eth|wg)[0-9]+(\.[0-9]+)?/ {print $1,$3}') # active ipv6 interfaces (including wireguard) @@ -157,7 +157,7 @@ check() { else # exclude wireguard tunnels for ntp [[ $CALLER == ntp ]] && name=$(show ${net[1]}) || name= - [[ ${name:0:2} != wg && -n ${net[1]} ]] && ipv6=yes bind+=($(sub ${net[1]})) + [[ ${name:0:2} != wg && -n ${net[1]} && -z $(good ${net[1]}) ]] && ipv6=yes bind+=($(sub ${net[1]})) fi done <<< $(ip -br -6 addr|awk '/^(br|bond|eth|wg)[0-9]+(\.[0-9]+)?/ && $3 !~ "^fe80" {print $1,$3}') # add loopback interface diff --git a/sbin/create_network_ini b/sbin/create_network_ini index 1b9cc2fd3..9cdd051b0 100755 --- a/sbin/create_network_ini +++ b/sbin/create_network_ini @@ -11,8 +11,6 @@ ini=/var/local/emhttp/network.ini.new cfg=/boot/config/network.cfg -job=/tmp/atjob.tmp -reload=/usr/local/emhttp/webGui/scripts/reload_services declare -A VLANID USE_DHCP IPADDR NETMASK GATEWAY METRIC USE_DHCP6 IPADDR6 NETMASK6 GATEWAY6 PRIVACY6 METRIC6 DESCRIPTION PROTOCOL @@ -222,8 +220,7 @@ done /usr/bin/mv $ini ${ini%.*} # delayed execution -rm -f $job -echo "sleep 35;$reload $job"|at -M now 2>/dev/null +/usr/local/emhttp/webGui/scripts/update_services 35 # send update information if [[ -n $interface && -n $data && -e /var/run/nginx.socket ]]; then