diff --git a/plugins/dynamix.plugin.manager/PluginHelpers.page b/plugins/dynamix.plugin.manager/PluginHelpers.page index eceb9173f..c279a62b7 100644 --- a/plugins/dynamix.plugin.manager/PluginHelpers.page +++ b/plugins/dynamix.plugin.manager/PluginHelpers.page @@ -24,6 +24,8 @@ a.bannerInfo {cursor:pointer;text-decoration:none;} \ No newline at end of file diff --git a/plugins/dynamix.plugin.manager/scripts/PluginAPI.php b/plugins/dynamix.plugin.manager/scripts/PluginAPI.php index b3b0974e3..6b9b439e5 100644 --- a/plugins/dynamix.plugin.manager/scripts/PluginAPI.php +++ b/plugins/dynamix.plugin.manager/scripts/PluginAPI.php @@ -30,36 +30,57 @@ function download_url($url, $path = "") { return $out ?: false; } +file_put_contents("/tmp/trace",$_POST['action']); +switch ($_POST['action']) { + case 'checkPlugin': + $options = $_POST['options']; + $plugin = $options['plugin']; -$options = $_POST['options']; -$plugin = $options['plugin']; + if ( ! $plugin || ! file_exists("/var/log/plugins/$plugin") ) { + echo json_encode(array("updateAvailable"=>false)); + break; + } -if ( ! $plugin || ! file_exists("/var/log/plugins/$plugin") ) { - echo json_encode(array("updateAvailable"=>false)); - return; -} + exec("mkdir -p /tmp/plugins"); + @unlink("/tmp/plugins/$plugin"); + $url = @plugin("pluginURL","/boot/config/plugins/$plugin"); + download_url($url,"/tmp/plugins/$plugin"); -exec("mkdir -p /tmp/plugins"); -@unlink("/tmp/plugins/$plugin"); -$url = @plugin("pluginURL","/boot/config/plugins/$plugin"); -download_url($url,"/tmp/plugins/$plugin"); + $changes = @plugin("changes","/tmp/plugins/$plugin"); + $version = @plugin("version","/tmp/plugins/$plugin"); + $installedVersion = @plugin("version","/boot/config/plugins/$plugin"); + $min = @plugin("min","/tmp/plugins/$plugin") ?: "6.4.0"; + if ( $changes ) { + file_put_contents("/tmp/plugins/".pathinfo($plugin, PATHINFO_FILENAME).".txt",$changes); + } else { + @unlink("/tmp/plugins/".pathinfo($plugin, PATHINFO_FILENAME).".txt"); + } -$changes = @plugin("changes","/tmp/plugins/$plugin"); -$version = @plugin("version","/tmp/plugins/$plugin"); -$installedVersion = @plugin("version","/boot/config/plugins/$plugin"); -$min = @plugin("min","/tmp/plugins/$plugin") ?: "6.4.0"; -if ( $changes ) { - file_put_contents("/tmp/plugins/".pathinfo($plugin, PATHINFO_FILENAME).".txt",$changes); -} else { - @unlink("/tmp/plugins/".pathinfo($plugin, PATHINFO_FILENAME).".txt"); -} - -$update = false; -if ( strcmp($version,$installedVersion) > 0 ) { - $unraid = parse_ini_file("/etc/unraid-version"); - $update = (version_compare($min,$unraid['version'],">")) ? false : true; -} - -echo json_encode(array("updateAvailable" => $update,"version" => $version,"min"=>$min,"changes"=>$changes,"installedVersion"=>$installedVersion)); + $update = false; + if ( strcmp($version,$installedVersion) > 0 ) { + $unraid = parse_ini_file("/etc/unraid-version"); + $update = (version_compare($min,$unraid['version'],">")) ? false : true; + } + echo json_encode(array("updateAvailable" => $update,"version" => $version,"min"=>$min,"changes"=>$changes,"installedVersion"=>$installedVersion)); + break; + + case 'addRebootNotice': + $message = htmlspecialchars(trim($_POST['message'])); + if (!$message) break; + + $existing = @file("/tmp/reboot_notifications",FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ?: array(); + $existing[] = $message; + + file_put_contents("/tmp/reboot_notifications",implode("\n",array_unique($existing))); + break; + + case 'removeRebootNotice': + $message = htmlspecialchars(trim($_POST['message'])); + $existing = file_get_contents("/tmp/reboot_notifications"); + $newReboots = str_replace($message,"",$existing); + file_put_contents("/tmp/reboot_notifications",$newReboots); + file_put_contents("/tmp/blah","here"); + break; +} ?> diff --git a/plugins/dynamix.vm.manager/VMSettings.page b/plugins/dynamix.vm.manager/VMSettings.page index 15641ba7a..d1290f880 100644 --- a/plugins/dynamix.vm.manager/VMSettings.page +++ b/plugins/dynamix.vm.manager/VMSettings.page @@ -446,7 +446,8 @@ $(function(){ }); } $.post("/plugins/dynamix.vm.manager/include/VMajax.php", {action:'reboot'}, function(data){ - if (data.modified) $('div.notice.reboot').show(); else $('div.notice.reboot').hide(); + var rebootMessage = "VM Settings: A reboot is required to apply changes"; + if (data.modified) addRebootNotice(rebootMessage); else removeRebootNotice(rebootMessage); }); }); diff --git a/plugins/dynamix/CPUvms.page b/plugins/dynamix/CPUvms.page index e6f3d4b9e..725dd3dbd 100644 --- a/plugins/dynamix/CPUvms.page +++ b/plugins/dynamix/CPUvms.page @@ -152,8 +152,9 @@ function is() { } function notice() { // notice to reboot system after changes + var message = "CPU Isolation: A reboot is required to apply changes"; $.post('/webGui/include/CPUset.php',{id:'cmd'},function(d){ - if (d==1) $('div.notice.isol').show(); else $('div.notice.isol').hide(); + if (d==1) addRebootNotice(message); else removeRebootNotice(message); }); } function reset(form) { diff --git a/plugins/dynamix/include/DefaultPageLayout.php b/plugins/dynamix/include/DefaultPageLayout.php index 28b4321a2..aa0e649f1 100644 --- a/plugins/dynamix/include/DefaultPageLayout.php +++ b/plugins/dynamix/include/DefaultPageLayout.php @@ -283,6 +283,23 @@ function showUpgrade(data,noDismiss=false) { osUpgradeWarning = addBannerWarning(data.replace(/(.*)<\/a>/,"$1"),false,noDismiss); } } + +function addRebootNotice(message="You must reboot for changes to take effect") { + addBannerWarning(" "+message,false,true); + + $.post("/plugins/dynamix.plugin.manager/scripts/PluginAPI.php",{action:'addRebootNotice',message:message}); +} + +function removeRebootNotice(message="You must reboot for changes to take effect") { + var bannerIndex = bannerWarnings.indexOf(" "+message); + if ( bannerIndex < 0 ) { + return; + } + console.log(bannerIndex); + removeBannerWarning(bannerIndex); + $.post("/plugins/dynamix.plugin.manager/scripts/PluginAPI.php",{action:'removeRebootNotice',message:message}); +} + function hideUpgrade(set) { removeBannerWarning(osUpgradeWarning); if (set) @@ -388,6 +405,21 @@ $.ajaxPrefilter(function(s, orig, xhr){ s.data += "csrf_token="; } }); + +// add any pre-existing reboot notices +$(function() { + + var rebootMessage = ""; + if ( rebootMessage ) { + addBannerWarning(" "+rebootMessage,false,true); + } + +});