%s | %s. Currently the first IPv4 DNS server address is set to '%s'"), $pingServer, gettext("System"), gettext("General Setup"), gettext("DNS"), $config['system']['dnsserver'][0]); $log = 0; $loginfo = array( array( "visible" => TRUE, "desc" => gettext("Extensions"), "logfile" => "{$configuration['rootfolder']}/extensions.txt", "filename" => "extensions.txt", "type" => "plain", "pattern" => "/^(.*)###(.*)###(.*)###(.*)###(.*)###(.*)###(.*)$/", "columns" => array( array("title" => gettext("Extension"), "class" => "listlr", "param" => "align=\"left\" valign=\"middle\" style=\"font-weight:bold\" nowrap", "pmid" => 0), array("title" => gettext("Version"), "class" => "listr", "param" => "align=\"center\" valign=\"middle\"", "pmid" => 1), array("title" => gettext("Description"), "class" => "listr", "param" => "align=\"left\" valign=\"middle\"", "pmid" => 5), array("title" => gettext("Install"), "class" => "listr", "param" => "align=\"center\" valign=\"middle\"", "pmid" => 4) )) ); // create FreeBSD $current_release for min_release check $product_version = explode(".", get_product_version()); $current_release = $product_version[0].".".$product_version[1].$product_version[2].$product_version[3].get_product_revision(); function check_min_release($min_release) { global $current_release; if (is_float(floatval($min_release))) { if ($current_release < floatval($min_release)) return false; // release not supported else return true; // release supported } else return true; // not a float, no release } //$sup="10.3032898"; // CHECK //if (check_min_release($sup)) $savemsg .= "{$sup} = SUPPORTED"; //else $savemsg .= "{$sup} = NOT SUPPORTED"; function log_get_contents($logfile) { $content = array(); if (is_file($logfile)) exec("cat {$logfile}", $extensions); else return; $content = $extensions; return $content; } function log_get_status($cmd_entry) { global $config; $rc_cmd_entry_found = false; if (is_array($config['rc']) && is_array($config['rc']['postinit']) && is_array( $config['rc']['postinit']['cmd'])) { // old rc format $rc_param_count = count($config['rc']['postinit']['cmd']); for ($i = 0; $i < $rc_param_count; $i++) { if (preg_match("/{$cmd_entry}/", $config['rc']['postinit']['cmd'][$i])) { $rc_cmd_entry_found = true; break; } } } if (is_array($config['rc']) && is_array($config['rc']['param'])) { // new rc format 11.x $rc_param_count = count($config['rc']['param']); for ($i = 0; $i < $rc_param_count; $i++) { if (preg_match("/{$cmd_entry}/", $config['rc']['param'][$i]['value'])) { $rc_cmd_entry_found = true; break; } } } if ($rc_cmd_entry_found) return 1; // 0 = no entry, extension is not installed else return 0; // 1 = entry found, extension is already installed } function log_display($loginfo) { global $g, $config, $configuration, $savemsg, $image_path; if (!is_array($loginfo)) return; // Create table header echo ""; foreach ($loginfo['columns'] as $columnk => $columnv) { echo "".htmlspecialchars($columnv['title'])."\n"; } echo ""; // Get file content $content = log_get_contents($loginfo['logfile']); if (empty($content)) return; sort($content); $j = 0; /* * EXTENSIONS.TXT format description: PARAMETER DELIMITER -> ### * PMID COMMENT * name: 0 extension name * version: 1 extension version (base for config entry - could change for newer versions), check for beta releases * xmlstring: 2 config.xml or installation directory * command(list)1: 3 execution of SHELL commands / scripts (e.g. download installer, untar, chmod, ...) * command(list)2: 4 empty ("-") or PHP script name (file MUST exist) * description: 5 plain text which can include HTML tags * unsupported 6 unsupported architecture, plattform, release * architectures: x86, x64, rpi, rpi2, bananapi * platforms: embedded, full, livecd, liveusb * releases: 9.3, 10.2, 10.3032853, 10.3032898, 11.0, ... */ // Create table data foreach ($content as $contentv) { // handle each line => one extension unset($result); $result = explode("###", $contentv); // retrieve extension content (pmid based) if ((FALSE === $result) || (0 == $result)) continue; echo "\n"; for ($i = 0; $i < count($loginfo['columns']); $i++) { // handle pmids (columns) if (!$configuration['show_beta'] && (strpos($result[1], "RELEASE") === false)) continue; //check for beta state else { if ($i == count($loginfo['columns']) - 1) { if (!empty($result[6])) { // something unsupported exist $unsupported = explode(",", str_replace(" ", "", $result[6])); for ($k = 0; $k < count($unsupported); $k++) { // check for unsupported release / architecture / platforms if (!check_min_release($unsupported[$k]) || ($unsupported[$k] == $g['arch']) || ($unsupported[$k] == $g['platform'])) { echo " \n"; continue 2; // unsupported, therefore we leave and proceed to the next extension in the list } } } // check if extension is already installed (existing config.xml or postinit cmd entry) $already_installed = false; echo " "; } echo "\n"; } // EOcount else echo "" . $result[$loginfo['columns'][$i]['pmid']] . "\n"; } //EObeta-check } // EOcolumns echo "\n"; $j++; } } if (isset($_POST['cleanup'], $_POST['name'])) { foreach($_POST['name'] as $line) { if (isset($line['extension'])) { ext_remove_rc_commands($line['extension']); // remove entry from command scripts unset($config[$line['extension']]); // remove entry from config.xml if ($line['extension'] == "plexinit") $line['extension'] = "plex-gui"; // special treatment for plex gui if (file_exists("/usr/local/www/ext/{$line['extension']}/menu.inc")) unlink("/usr/local/www/ext/{$line['extension']}/menu.inc"); // remove entry from extensions menu write_config(); $savemsg .= gettext("Cleanup").": {$line['truename']} ({$line['extension']})"."
"; } } } if (isset($_POST['install'], $_POST['name'])) { foreach($_POST['name'] as $line) { if (isset($line['extension'])) { ext_remove_rc_commands($line['extension']); // to force correct command script entries in case of recovered/changed config/directories for extensions unset($config[$line['extension']]); write_config(); $savemsg .= gettext("Installation").": {$line['truename']}"."
"; unset($result); exec("cd {$configurationStoragePath} && {$line['command1']}", $result, $return_val); if ($return_val == 0) { foreach ($result as $msg) $savemsg .= $msg."
"; // output on success unset($result); if ("{$line['command2']}" != "-") { // check if a PHP script must be executed if (file_exists("{$configurationStoragePath}/{$line['command2']}")) { $savemsg_old = $savemsg; // save messages for use after output buffering ends ob_start(); // start output buffering include("{$configurationStoragePath}/{$line['command2']}"); $ausgabe = ob_get_contents(); // get outputs from include command ob_end_clean(); // close output buffering $savemsg = $savemsg_old; // recover saved messages ... $savemsg .= str_replace("\n", "
", $ausgabe)."
"; // ... and append messages from include command } else $errormsg .= sprintf(gettext("PHP script %s not found!"), "{$configurationStoragePath}/{$line['command2']}")."
"; } } // EOcommand1 OK else { // throw error message for command1 $errormsg .= gettext("Installation error").": {$line['truename']}"."
"; foreach ($result as $msg) $errormsg .= $msg."
"; } // EOcommand1 NOK } // EOisset line } // EOforeach } // EOinstall $configuration = ext_load_config("ext/onebuttoninstaller/onebuttoninstaller.conf"); // to prevent collisions with installed extension definitions // extensions list file handling for => manual update | auto update | missing file | file older than 24 hours if (isset($_POST['update']) || ($configuration['auto_update'] && !isset($_POST['install'])) || !is_file("{$configuration['rootfolder']}/extensions.txt") || filemtime("{$configuration['rootfolder']}/extensions.txt") < time() - 86400) { $return_val = mwexec("fetch -o {$configuration['rootfolder']}/extensions.txt https://raw.github.com/crestAT/nas4free-onebuttoninstaller/master/onebuttoninstaller/extensions.txt", false); if ($return_val == 0) $savemsg .= gettext("New extensions list successfully downloaded!")."
"; else $errormsg .= gettext("Unable to retrieve extensions list from server!")."
"; } // EOupdate if (($message = ext_check_version("{$configuration['rootfolder']}/version_server.txt", "onebuttoninstaller", $configuration['version'], gettext("Maintenance"))) !== false) $savemsg .= $message; if (!is_file("{$configuration['rootfolder']}/extensions.txt")) $errormsg .= sprintf(gettext("File %s not found!"), "{$configuration['rootfolder']}/extensions.txt")."
"; bindtextdomain($domain, $localeOSDirectory); include("fbegin.inc"); bindtextdomain($domain, $localeExtDirectory); ?>
".sprintf(gettext("Option '%s' in '%s' is enabled!"), gettext("Re-install"), gettext("Configuration")).""; if ($configuration['show_beta']) $remarkmsg .= "
  • ".sprintf(gettext("Option '%s' in '%s' is enabled!"), gettext("Beta releases"), gettext("Configuration"))."
  • "; html_remark("storage_path", gettext("Common directory")." - {$configuration['storage_path']}", $remarkmsg); ?>
    ".gettext("Some extensions need to finish their installation procedures on their own extension page before they will be shown as installed!")."

    ");?>    
       

    " value="" onclick="return confirm('')" /> " value="" onclick="return confirm('')" /> " value="" />