function doAction($mod, $act, $log = false) { global $mos; if ($mod == '') { return; } $m = array(); $m = parse_ini_file($mos . '/etc/pm/installed', true); $opts = $m[$mod]; if (loadModuleOptions($mod, $opts) !== false) { $st = $opts['_status']; $init = $mos . '/etc/init/' . $opts['init']; $haveInit = is_file($init); } else { $st = 'noinstall'; $init = ''; $haveInit = false; } if ($act == 'start') { if ($haveInit) { doCommand("{$init} start", $log); } } elseif ($act == 'stop') { if ($haveInit) { if ($st == 'start' or $st == 'enable') { doCommand("{$init} stop", $log); } } } elseif ($act == 'restart') { if ($haveInit) { doCommand("{$init} stop", $log); doCommand("{$init} start", $log); } } elseif ($act == 'enable') { if ($haveInit) { chmod($init, 0755); doCommand("{$init} enable", $log); } } elseif ($act == 'disable') { if ($haveInit) { if (is_executable("{$init}")) { if ($st != 'stop') { doCommand("{$init} stop", $log); } doCommand("{$init} disable", $log); chmod($init, 0644); } } } elseif ($act == 'delete') { if ($haveInit) { if (is_executable("{$init}")) { if ($st != 'stop') { doCommand("{$init} stop", $log); } } chmod($init, 0755); doCommand("{$init} disable", $log); } removeMod($mod, $log); getPagesMsgs(); } elseif ($act == 'install') { if (installMod($mod, $log)) { doAction($mod, 'enable', $log); doAction($mod, 'start', $log); getPagesMsgs(); } } elseif ($act == 'update') { // store status, activity if ($st != 'disable') { if (($s = $opts['config_before']) != '') { doCommand("{$init} {$s}", $log); } // stopping, disable module doAction($mod, 'disable', $log); } // store backup if (($bc = $opts['backup']) != '') { doCommand("tar -cf /tmp/backup_{$mod}.tar -C {$mos}/ {$bc}", $log); $bc = "backup_{$mod}.tar"; } // update package if (doCommand("{$mos}/bin/pm update {$mod}", $log) == 0) { // restore backup if ($bc != '') { doCommand("tar -xf /tmp/{$bc} -C {$mos}/", $log); doCommand("rm -Rf /tmp/{$bc}", $log); } } // restore status if ($st != 'disable') { doAction($mod, 'enable', $log); if ($st != 'stop') { doAction($mod, 'start', $log); } getPagesMsgs(); } else { if ($haveInit) { chmod($init, 0644); } } } else { if (strpos($opts['actions'], $act) !== false) { if ($haveInit) { if (is_executable("{$init}")) { doCommand("{$init} " . $act, $log); } } } } }
$nav_options = parse_ini_file($mos . '/etc/core.ini', false); // define language $nav_lang = 'en'; if (isset($nav_options['language'])) { $nav_lang = $nav_options['language']; } // doing non-html actions $nav_log = false; include 'core_functions.php'; include 'core_actions.php'; if (isset($_REQUEST['do'])) { include 'core_does.php'; } // ------------------------------------ // define pages and msg arrays getPagesMsgs(); // ------------------------------------ // define actual page $npage = isset($_GET['page']) ? $_GET['page'] : $_default_page; $nav_page = isset($nav_pages[$npage]) ? $nav_pages[$npage] : $nav_pages[$_default_page]; // ------------------------------------ // load module if (isset($nav_page['load'])) { $fn = 'modules/' . $nav_page['module'] . '/' . $nav_page['load']; if (file_exists($fn)) { include $fn; } } // ------------------------------------ // define type of page $ntype = isset($nav_page['type']) ? $nav_page['type'] : 'html';