(time()-86400) ? 'up-to-date' : 'outdated') : 'unknown'; } foreach (glob($plugins,GLOB_NOSORT) as $plugin_link) { //only consider symlinks $plugin_file = @readlink($plugin_link); if ($plugin_file === false) continue; //plugin name $name = plugin('name',$plugin_file) ?: basename($plugin_file,".plg"); //upgrade or downgrade selected release if ($release) { extract(parse_ini_file('/etc/unraid-version')); $tmp_file = "/var/tmp/$name.plg"; if ($release != $version) { exec("sed -ri 's|^(|' $tmp_file"); echo "$plugin_file\0$tmp_file"; } else { echo "$tmp_file\0$plugin_file"; } return; } //skip system when doing user plugins if (!$system && strpos($name,$builtin)===0) continue; //forced plugin check? $forced = !$audit && !$check; $checked = $forced ? check_plugin(basename($plugin_file)) : true; //switch stable/next/test release? if ($system) { //current version extract(parse_ini_file('/etc/unraid-version')); //category $category = $branch ?: plugin('category',$plugin_file) ?: (strpos($version,'-')===false ? 'stable' : 'next'); if (!$branch && !$source) $source = $category; $releases = []; exec("curl -m 15 $limetech/$category/releases.json 2>/dev/null", $releases); if ($releases) $releases = json_decode(implode("\n",$releases),true); else $releases[] = ['name' => $missing]; $release = strip($releases[0]['name']); if ($release != $missing) { $tmp_plg = "$name-.plg"; $tmp_file = "/var/tmp/$name.plg"; copy($plugin_file,$tmp_file); if ($branch) exec("sed -ri 's|^(|' $tmp_file"); symlink($tmp_file,"/var/log/plugins/$tmp_plg"); if ($release != $version && $branch) { if (check_plugin($tmp_plg)) copy("/tmp/plugins/$tmp_plg", $tmp_file); exec("sed -ri 's|^(|' $tmp_file"); $plugin_file = $tmp_file; } } } else { //plugin version $version = plugin('version',$plugin_file) ?: 'unknown'; } $save = $version; //link/icon $icon = icon($name); if ($launch = plugin('launch',$plugin_file)) $link = ""; else $link = ""; //description $readme = "plugins/{$name}/README.md"; if (file_exists($readme)) $desc = Markdown(file_get_contents($readme)); else $desc = Markdown("**{$name}**"); //author $author = plugin('author',$plugin_file) ?: 'anonymous'; //status $changes_file = $plugin_file; $url = plugin('pluginURL',$plugin_file); if ($url !== false) { $extra = $branch && $branch != $source; $filename = "/tmp/plugins/".(($system && $extra) ? $tmp_plg : basename($url)); $latest = ($checked && file_exists($filename)) ? plugin('version',$filename) : 0; if ($system) { $release = strip($releases[0]['name']); $other = ($release != $missing); if ($extra) { if ($other) $version .= "
$release"; $status = "".make_link('install', $plugin_file,$other?'forced':'disabled').""; } else { $style1 = $style2 = ""; if ($forced && $other && $latest===0) $latest = $release; if (version_compare($latest,$version,'>')) { $style1 = "style='display:none'"; $version .= "
$latest"; $changes_file = $filename; } else { $style2 = "style='display:none'"; } $status = "".file_date($filename).""; $status .= "".make_link('update', $plugin_file, null, 'upgrade').""; $status .= ""; } } else { if (strcmp($latest,$version) > 0) { $version .= "
$latest"; $status = make_link('update', basename($plugin_file), null, 'upgrade'); $changes_file = $filename; $updates++; } else { $status = file_date($filename); } } } $changes = strpos($version,$missing)===false ? plugin('changes',$changes_file) : false; if ($changes !== false) { $txtfile = "/tmp/plugins/".basename($plugin_file,'.plg').".txt"; file_put_contents($txtfile,$changes); $version .= ""; } //write plugin information $empty = false; echo ""; echo "

$link

"; echo "$desc"; echo "$author"; echo "$version"; if ($system) { // available releases $branch = $branch ?: $source; echo ""; $rank = 0; } else { if (strpos($status,'upgrade')!==false) $rank = 0; elseif ($status=='outdated') $rank = 1; elseif ($status=='up-to-date') $rank = 2; else $rank = 3; } echo "$status"; echo ""; if ($system) { echo ""; } else { echo make_link('remove', basename($plugin_file)); } echo ""; echo ""; //remove temporary symlink if ($tmp_plg) unlink("/var/log/plugins/$tmp_plg"); } if ($empty) echo " No plugins installed"; echo "\0".$updates; ?>