Run(PHP_LOCATION . " -q $file_location", 7, false); } } function true_time($filePath) { $time = filemtime($filePath); $isDST = (date('I', $time) == 1); $systemDST = (date('I') == 1); $adjustment = 0; if($isDST == false && $systemDST == true) $adjustment = 3600; else if($isDST == true && $systemDST == false) $adjustment = -3600; else $adjustment = 0; return ($time + $adjustment); } function cookie_logout($whereto = 'index.php') { global $plugin; $plugin->run_hooks("core_logout"); if (@$_GET['do'] == 'logout') { $plugin->run_hooks("core_logout_main"); setcookie ("fieme_uname", "", time() - 3600); setcookie ("fieme_uid", "", time() - 3600); setcookie ("fieme_pass_hash", "", time() - 3600); session_destroy(); #header( "refresh:0;url=$whereto" ); header("Location: $whereto"); } if (@$_GET['do'] == 'removecook') { $plugin->run_hooks("core_logout_cookies"); setcookie ("fieme_uname", "", time() - 3600); setcookie ("fieme_uid", "", time() - 3600); setcookie ("fieme_pass_hash", "", time() - 3600); #header( "refresh:0;url=$whereto" ); header("Location: $whereto"); } if (@$_GET['do'] == 'logout_admin') { $plugin->run_hooks("core_logout_admin"); unset($_SESSION['fieme_a_auth']); unset($_SESSION['fieme_a_uname']); unset($_SESSION['fieme_a_uid']); unset($_SESSION['fieme_a_adminlevel']); #header( "refresh:0;url=$whereto" ); header("Location: $whereto"); } } function maintainance_functions() { global $settings, $cache, $fiemecp, $plugin; $plugin->run_hooks("core_maintainance_functions_start"); if ($cache->read("LAST_GROOM", 43200) === FALSE) //let's groom our script. Make sure things are running ok, right? { $plugin->run_hooks("core_maintainance_functions_groom_start"); $this->refresh_settings(); if ($settings->security_auto_hide == 1) { //Let's start our log: $groom_notes = "Last groom completed on: " . date("jS M Y \a\\t H:i", time()) . "
\r\n" ; //protect the cache and include directories. $deny_htaccess = $settings->security_auto_hide_htaccess; if (($cache->read('.htaccess', '-1') === FALSE) || ($settings->security_auto_hide_overwrite == 1)) { $cache->write(".htaccess", $deny_htaccess); $groom_notes .= "Successfully protected the cache directory
\r\n\r\n"; } else { $groom_notes .= "Cache directory was already protected, so it was not protected
\r\n"; } if (($cache->read('.htaccess', '-1', 'includes//') === FALSE) || ($settings->security_auto_hide_overwrite == 1)) { $cache->write(".htaccess", $deny_htaccess, 'includes//'); $groom_notes .= "Successfully protected the includes directory
\r\n"; } else { $groom_notes .= "Includes directory was already protected, so it was not protected
\r\n"; } //let's clean out the login logs: if ($settings->logging_logins_storetime != 0) //if we are supposed to groom, then let's! { if (sqlsrv_query($fiemecp->dbacc, "DELETE FROM [Account].[dbo].[fLoginLog] WHERE time <" . ( (time()) - $settings->logging_logins_storetime), array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET))) { $groom_notes .= "Successfully cleaned out all entries older than " . $settings->logging_logins_storetime . "seconds in the Login Logs
\r\n"; } else { $groom_notes .= "Something went wrong when pruning the user login logs. If this error continues, please contact a fiemeCP developer to have it fixed
\r\n"; } } //let's clean out the user CP logs: $settings->load('usercp'); if ($settings->keep_usercp_logs != 0) //if we are supposed to groom, then let's! { if (sqlsrv_query($fiemecp->dbacc, "DELETE FROM [Account].[dbo].[fUserCPLog] WHERE time <" . ( (time()) - $settings->keep_usercp_logs), array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET))) { $groom_notes .= "Successfully cleaned out all entries older than " . $settings->keep_usercp_logs . "seconds in the UserCP Logs
\r\n"; } else { $groom_notes .= "Something went wrong when pruning the user CP logs. If this error continues, please contact a fiemeCP developer to have it fixed
\r\n"; } } //let's clean out the plugins: if (sqlsrv_query($fiemecp->dbacc, "DELETE FROM [Account].[dbo].[fPlugins] WHERE active = 0", array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET))) { $groom_notes .= "Successfully cleaned out all deinstalled and deactivated plugins from the database
\r\n"; } else { $groom_notes .= "Something went wrong when pruning the plugins. If persistent, please contact fiemeCP developers
\r\n"; } if (FIEME_DEV == 1) { sleep(1); //make sure windows writes the file before reading it global $dev_content; $dev_content .= $cache->read("LAST_GROOM"); } } $plugin->run_hooks("core_maintainance_functions_groom_end"); $cache->write("LAST_GROOM", $groom_notes); } $this->check_server(); $plugin->run_hooks("core_maintainance_functions_end"); } function update_plugins() { //let's update the plugin cache! global $fiemecp, $cache; $content = "dbacc, "SELECT * FROM fPlugins WHERE active = '1' or active='2'", array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET)); while ($row = sqlsrv_fetch_array($result)) { if (file_exists(FIEME_ROOT . "includes/plugins/$row[plugin_name].php")) { if ($row['active'] == 1) { $content .= "\$p_c['active']['$row[plugin_name]'] = \"ACTIVE\";\r\n"; } elseif ($row['active'] == 2) { $content .= "\$p_c['deactive']['$row[plugin_name]'] = \"STILL INSTALLED\";\r\n"; } } else { $content .= "//Failed to load $row[plugin_name]\r\n"; } } $cache->write("plugins", $content . "\r\n?>"); } function refresh_settings($what = "___all") { global $fiemecp, $cache; if ($what == "___all") { $query = sqlsrv_query($fiemecp->dbacc, "SELECT setting_group FROM fSettings GROUP BY setting_group", array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET)); $i = 1; while ($row = sqlsrv_fetch_array($query)) { $i = $row['setting_group']; $query2 = sqlsrv_query($fiemecp->dbacc, "SELECT * FROM dbo.fSettings WHERE setting_group = ?", array($row['setting_group']), array( "Scrollable" => SQLSRV_CURSOR_KEYSET)); $content = "refresh_settings Page: s.$i.php AUTOMATED: " . date("jS M Y \a\\t H:i", time()) . " */\r\n\r\n"; while ($row2 = sqlsrv_fetch_array($query2)) { $content .= "\$s['$row2[setting_save_name]'] = \"$row2[setting_value]\";\r\n"; } $cache->write("s.$i.php", $content, "includes\settings\\"); } } else { $query2 = sqlsrv_query($fiemecp->dbacc, "SELECT * FROM dbo.fSettings WHERE setting_group = ?", array($what), array( "Scrollable" => SQLSRV_CURSOR_KEYSET)); $content = "refresh_settings Page: s.$what.php AUTOMATED: " . date("jS M Y \a\\t H:i", time()) . " */\r\n\r\n"; while ($row2 = sqlsrv_fetch_array($query2)) { $content .= "\$s['$row2[setting_save_name]'] = \"$row2[setting_value]\";\r\n"; } $cache->write("s.$what.php", $content, "includes\settings\\"); } } function check_server() { //this does various checks to make sure the server is up to date, and stuff. global $cfg, $cache, $fiemecp; //footer_built if (($cache->read("LAST_SRVR_UPDATE", 43200) === FALSE) || ($cache->read("footer_built", 43200) === FALSE)) //performed every 12 hours { eval(@file_get_contents("http://dario-ml.com/create/fiemecp/api/update.php?serial=$cfg[serial]&rev_code=" . FIEME_REV_CODE)); } } function update_status() { //Fuck, this is old shit. Need to be replaced with new method. Check sheet with AdminCP layout!exec("sc query Apache2.2 |FIND /I \"STATE\""); #global $game_server; global $cache, $lang, $plugin, $game_server; $plugin->run_hooks("core_update_status_start"); $content = "$info) { if (preg_match("/running/i", exec("sc query $info[service] | FIND /I \"STATE\""))) { //found, thus online $content .= "\$game_server['$server_name']['status'] = '\$lang->server_online';\r\n"; } else { //not found, thus offline $content .= "\$game_server['$server_name']['status'] = '\$lang->server_offline';\r\n"; } } $plugin->run_hooks("core_update_status_end"); $cache->write("server_status", $content); } } function output_page($content, $show_dev = 1) { global $dev_content; echo $content . ( ($show_dev == 1) ? $dev_content : ''); } //function from php.net function dsprintf() { $data = func_get_args(); // get all the arguments $string = array_shift($data); // the string is the first one if (is_array(func_get_arg(1))) { // if the second one is an array, use that $data = func_get_arg(1); } $used_keys = array(); // get the matches, and feed them to our function $string = preg_replace('/\%\((.*?)\)(.)/e', 'dsprintfMatch(\'$1\',\'$2\',\$data,$used_keys)',$string); $data = array_diff_key($data,$used_keys); // diff the data with the used_keys return vsprintf($string,$data); // yeah! } //function from php.net function dsprintfMatch($m1,$m2,&$data,&$used_keys) { if (isset($data[$m1])) { // if the key is there $str = $data[$m1]; $used_keys[$m1] = $m1; // dont unset it, it can be used multiple times return sprintf("%".$m2,$str); // sprintf the string, so %s, or %d works like it should } else { return "%".$m2; // else, return a regular %s, or %d or whatever is used } }