]> git.mxchange.org Git - mailer.git/blobdiff - 0.2.1/inc/modules/admin.php
win32 to unix line delimiters changed
[mailer.git] / 0.2.1 / inc / modules / admin.php
index 5d610190e703696d3fb71eac5f7ea9d3df6231f7..5719f09af05de6b5cf520e50e5314fadf848cd50 100644 (file)
-<?php\r
-/************************************************************************\r
- * MXChange v0.2.1                                    Start: 08/31/2003 *\r
- * ===============                              Last change: 07/02/2004 *\r
- *                                                                      *\r
- * -------------------------------------------------------------------- *\r
- * File              : admin.php                                        *\r
- * -------------------------------------------------------------------- *\r
- * Short description : Administration module                            *\r
- * -------------------------------------------------------------------- *\r
- * Kurzbeschreibung  : Administrationsmodul                             *\r
- * -------------------------------------------------------------------- *\r
- *                                                                      *\r
- * -------------------------------------------------------------------- *\r
- * Copyright (c) 2003 - 2008 by Roland Haeder                           *\r
- * For more information visit: http://www.mxchange.org                  *\r
- *                                                                      *\r
- * This program is free software; you can redistribute it and/or modify *\r
- * it under the terms of the GNU General Public License as published by *\r
- * the Free Software Foundation; either version 2 of the License, or    *\r
- * (at your option) any later version.                                  *\r
- *                                                                      *\r
- * This program is distributed in the hope that it will be useful,      *\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
- * GNU General Public License for more details.                         *\r
- *                                                                      *\r
- * You should have received a copy of the GNU General Public License    *\r
- * along with this program; if not, write to the Free Software          *\r
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
- * MA  02110-1301  USA                                                  *\r
- ************************************************************************/\r
-\r
-// Some security stuff...\r
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
-{\r
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";\r
-       require($INC);\r
-}\r
-\r
-// Login is default\r
-if ((empty($GLOBALS['action'])) && ($check == "admin_only"))\r
-{\r
-       // Redirect to right URL\r
-       LOAD_URL(URL."/modules.php?module=admin&amp;action=login");\r
-}\r
-\r
-// Load include file\r
-require_once(PATH."inc/modules/admin/admin-inc.php");\r
-\r
-// Fix "deleted" cookies in PHP4 (PHP5 does remove them, PHP4 sets them to deleted!)\r
-FIX_DELETED_COOKIES(array('admin_login', 'admin_md5', 'admin_last', 'admin_to'));\r
-\r
-// Is the logout empty?\r
-if (empty($_GET['logout'])) $_GET['logout'] = "";\r
-\r
-if (!admin_registered)\r
-{\r
-       // Admin is not registered so we have to inform the user\r
-       if ((isset($_POST['ok'])) && ((empty($_POST['login'])) || (empty($_POST['pass'])) || (strlen($_POST['pass']) < 4))) $_POST['ok'] = "***";\r
-       if ((isset($_POST['ok'])) && ($_POST['ok'] != "***"))\r
-       {\r
-               // Hash the password with our new generateHash() function\r
-               $hashedPass = generateHash($_POST['pass']);\r
-\r
-               // If the password has not been hashed we have to fall-back to md5()\r
-               if ($hashedPass == $_POST['pass']) $hashedPass = md5($hashedPass);\r
-\r
-               // Do registration\r
-               $ret = REGISTER_ADMIN($_POST['login'], $hashedPass);\r
-               switch ($ret)\r
-               {\r
-               case "done":\r
-                       admin_WriteData(PATH."inc/config.php", "ADMIN-SETUP", "define ('admin_registered', ", ");", "true", 0);\r
-                       if (!_FATAL)\r
-                       {\r
-                               $URL = URL."/modules.php?module=admin&amp;action=login&register=done";\r
-                               LOAD_URL($URL);\r
-                               die($URL);\r
-                       }\r
-                        else\r
-                       {\r
-                               $ret = ADMIN_CANNOT_COMPLETE;\r
-                       }\r
-                       break;\r
-\r
-               case "failed":\r
-                       $ret = ADMIN_REGISTER_FAILED;\r
-                       break;\r
-\r
-               case "already":\r
-               default:\r
-                       if ($ret == "already")\r
-                       {\r
-                               // Admin does already exists!\r
-                               $ret = ADMIN_LOGIN_ALREADY_REG;\r
-                       }\r
-                        else\r
-                       {\r
-                               // Any other kind\r
-                               $ret = "done";\r
-                       }\r
-                       if (!admin_registered)\r
-                       {\r
-                               // Write to config that registration is done\r
-                               admin_WriteData(PATH."inc/config.php", "ADMIN-SETUP", "define ('admin_registered', ", ");", "true", 0);\r
-\r
-                               // Load URL for login\r
-                               $URL = URL."/modules.php?module=admin&amp;action=login";\r
-                               LOAD_URL($URL);\r
-                       }\r
-                       break;\r
-               }\r
-       }\r
-       if ($ret != "done")\r
-       {\r
-               // Fixes another "Notice"\r
-               if (!empty($_POST['login'])) {\r
-                       define('__LOGIN_VALUE', $_POST['login']);\r
-               } else {\r
-                       define('__LOGIN_VALUE', "");\r
-               }\r
-\r
-               // Yet-another "Notice" fix\r
-               if ((!empty($_POST['ok'])) && ($_POST['ok'] == "***"))\r
-               {\r
-                       // No login entered?\r
-                       if (empty($_POST['login'])) $MSG1 = ADMIN_NO_LOGIN;\r
-\r
-                       // An error comes back from registration?\r
-                       if (!empty($ret)) $MSG1 = $ret;\r
-\r
-                       // No password entered?\r
-                       if (empty($_POST['pass'])) $MSG2 = ADMIN_NO_PASS;\r
-\r
-                       // Or password too short?\r
-                       if (strlen($_POST['pass']) < 4) $MSG2 = ADMIN_SHORT_PASS;\r
-\r
-                       // Output error messages\r
-                       define('__MSG_LOGIN', LOAD_TEMPLATE("admin_login_msg", true, $MSG1));\r
-                       define('__MSG_PASS',  LOAD_TEMPLATE("admin_login_msg", true, $MSG2));\r
-\r
-                       // Reset variables\r
-                       $MSG1 = ""; $MSG2 = "";\r
-               }\r
-                else\r
-               {\r
-                       // Reset values to nothing\r
-                       define('__MSG_LOGIN', "");\r
-                       define('__MSG_PASS' , "");\r
-               }\r
-\r
-               // Load register template\r
-               LOAD_TEMPLATE("admin_reg_form");\r
-       }\r
-}\r
- elseif ((empty($_COOKIE['admin_login'])) || (empty($_COOKIE['admin_md5'])) || (empty($_COOKIE['admin_last'])) || (empty($_COOKIE['admin_to'])) || (($_COOKIE['admin_last'] + bigintval($_COOKIE['admin_to']) * 3600 * 24) < time()))\r
-{\r
-       // At leat one administrator account was created\r
-       if ((!empty($_COOKIE['admin_login'])) && (!empty($_COOKIE['admin_md5'])) && (!empty($_COOKIE['admin_last'])) && (!empty($_COOKIE['admin_to'])))\r
-       {\r
-               // Timeout for last login, we have to logout first!\r
-               $URL = URL."/modules.php?module=admin&amp;action=login&amp;logout=1";\r
-               LOAD_URL($URL);\r
-       }\r
-       if (!empty($_GET['register']))\r
-       {\r
-               // Registration of first admin is done\r
-               if ($_GET['register'] == "done") OUTPUT_HTML ("<STRONG class=\"admin\">".ADMIN_REGISTER_DONE."</STRONG>");\r
-       }\r
-\r
-       // Check if the admin has submitted data or not\r
-       $ret = "";\r
-       if ((isset($_POST['ok'])) && ((empty($_POST['login'])) || (empty($_POST['pass'])) || (strlen($_POST['pass']) < 4))) $_POST['ok'] = "***";\r
-       if ((isset($_POST['ok'])) && ($_POST['ok'] != "***"))\r
-       {\r
-               // All required data was entered so we check his account\r
-               $ret = CHECK_ADMIN_LOGIN($_POST['login'], $_POST['pass']);\r
-               switch ($ret)\r
-               {\r
-               case "done": // Admin and password are okay, so we log in now\r
-                       $TIMEOUT = time() + (3600 * 24 * $_POST['timeout']);\r
-                       if ((@setcookie("admin_md5", generatePassString(generateHash($_POST['pass'], __SALT)), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_login", $_POST['login'], $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_last", time(), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_to", $_POST['timeout'], $TIMEOUT, COOKIE_PATH)))\r
-                       {\r
-                               // Construct URL and redirect\r
-                               $URL = URL."/modules.php?module=admin&amp;";\r
-\r
-                               // Rewrite overview module\r
-                               if ($GLOBALS['what'] == "overview") {\r
-                                       $GLOBALS['action'] = GET_ACTION($GLOBALS['module'], $GLOBALS['what']);\r
-                               }\r
-\r
-                               // Add data to URL\r
-                               if (!empty($GLOBALS['what'])) $URL .= "what=".$GLOBALS['what'];\r
-                                elseif (!empty($GLOBALS['action'])) $URL .= "action=".$GLOBALS['action'];\r
-                                elseif (!empty($_GET['area'])) $URL .= "area=".$_GET['area'];\r
-\r
-                               // Load URL\r
-                               LOAD_URL($URL);\r
-                       }\r
-                        else\r
-                       {\r
-                               OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGIN_FAILED."</STRONG>");\r
-                               ADD_FATAL(CANNOT_REGISTER_SESS);\r
-                       }\r
-                       break;\r
-\r
-               case "404": // Administrator login not found\r
-                       $_POST['ok'] = $ret;\r
-                       $ret = ADMIN_NOT_FOUND;\r
-                       break;\r
-\r
-               case "pass": // Wrong password\r
-                       $_POST['ok'] = $ret;\r
-                       $ret = WRONG_PASS;\r
-                       break;\r
-               }\r
-       }\r
-       if ($ret != "done")\r
-       {\r
-               if (!empty($_POST['login']))\r
-               {\r
-                       define('__LOGIN_VALUE', $_POST['login']);\r
-               }\r
-                else\r
-               {\r
-                       define('__LOGIN_VALUE', "");\r
-               }\r
-\r
-               if (isset($_POST['ok']))\r
-               {\r
-                       // Set messages to zero\r
-\r
-                       $MSG1 = ""; $MSG2 = "";\r
-                       // No login entered?\r
-                       if (empty($_POST['login'])) $MSG1 = ADMIN_NO_LOGIN;\r
-\r
-                       // An error comes back from login?\r
-                       if ((!empty($ret)) && ($_POST['ok'] == "404")) $MSG1 = $ret;\r
-\r
-                       // No password entered?\r
-                       if (empty($_POST['pass'])) $MSG2 = ADMIN_NO_PASS;\r
-\r
-                       // Or password too short?\r
-                       if (strlen($_POST['pass']) < 4) $MSG2 = ADMIN_SHORT_PASS;\r
-\r
-                       // An error comes back from login?\r
-                       if ((!empty($ret)) && ($_POST['ok'] == "pass")) $MSG2 = $ret;\r
-\r
-                       // Load message template\r
-                       define('__MSG_LOGIN', LOAD_TEMPLATE("admin_login_msg", true, $MSG1));\r
-                       define('__MSG_PASS' , LOAD_TEMPLATE("admin_login_msg", true, $MSG2));\r
-\r
-                       // Reset variables\r
-                       $MSG1 = ""; $MSG2 = "";\r
-               }\r
-                else\r
-               {\r
-                       // Set constants to empty for hiding them\r
-                       define('__MSG_LOGIN', "");\r
-                       define('__MSG_PASS' , "");\r
-               }\r
-\r
-               // Load login form\r
-               if (!empty($GLOBALS['what']))\r
-               {\r
-                       // Restore old what value\r
-                       $content = array('target' => "what", 'value' => $GLOBALS['what']);\r
-               }\r
-                elseif (!empty($GLOBALS['action']))\r
-               {\r
-                       if ($GLOBALS['action'] != "logout")\r
-                       {\r
-                               // Restore old action value\r
-                               $content = array('target' => "action", 'value' => $GLOBALS['action']);\r
-                       }\r
-                        else\r
-                       {\r
-                               // Set default values\r
-                               $content = array('target' => "action", 'value' => "login");\r
-                       }\r
-               }\r
-                elseif (!empty($_GET['area']))\r
-               {\r
-                       // Restore old area value\r
-                       $content = array('target' => "area", 'value' => $_GET['area']);\r
-               }\r
-                else\r
-               {\r
-                       // Set default values\r
-                       $content = array('target' => "action", 'value' => "login");\r
-               }\r
-\r
-               // Load login form template\r
-               LOAD_TEMPLATE("admin_login_form", false, $content);\r
-       }\r
-}\r
- elseif ($_GET['logout'] == "1")\r
-{\r
-       // Only try to remove cookies\r
-       if (@setcookie("admin_login", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_md5", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_last", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_to", "", (time() - 3600), COOKIE_PATH))\r
-       {\r
-               // Also remove array elements\r
-               unset($_COOKIE['admin_login']);\r
-               unset($_COOKIE['admin_md5']);\r
-               unset($_COOKIE['admin_last']);\r
-               unset($_COOKIE['admin_to']);\r
-\r
-               // Destroy session\r
-               @session_destroy();\r
-\r
-               // Load logout template\r
-               LOAD_TEMPLATE("admin_logout");\r
-       }\r
-        else\r
-       {\r
-               // Something went wrong here...\r
-               OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGOUT_FAILED."</STRONG>");\r
-\r
-               // Add fatal message\r
-               ADD_FATAL(CANNOT_UNREG_SESS);\r
-       }\r
-}\r
- else\r
-{\r
-       // Maybe an Admin want's to login?\r
-       $ret = CHECK_ADMIN_COOKIES(SQL_ESCAPE($_COOKIE['admin_login']), SQL_ESCAPE($_COOKIE['admin_md5']));\r
-       switch ($ret)\r
-       {\r
-       case "done":\r
-               // Cookie-Data accepted\r
-               $TIMEOUT = time() + bigintval($_COOKIE['admin_to']);\r
-               if ((@setcookie("admin_md5", SQL_ESCAPE($_COOKIE['admin_md5']), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_login", SQL_ESCAPE($_COOKIE['admin_login']), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_last", time(), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_to", bigintval($_COOKIE['admin_to']), $TIMEOUT, COOKIE_PATH)))\r
-               {\r
-                       // Ok, Cookie-Update done\r
-                       if ((EXT_IS_ACTIVE("admins")) && (GET_EXT_VERSION("admins") > "0.2"))\r
-                       {\r
-                               // Check if action GET variable was set\r
-                               $act = SQL_ESCAPE($GLOBALS['action']);\r
-                               if (!empty($GLOBALS['what'])) {\r
-                                       // Get action value by what-value\r
-                                       $act = GET_ACTION("admin", $GLOBALS['what']);\r
-                               }\r
-\r
-                               // Check for access control line of current menu entry\r
-                               define('__ACL_ALLOW', ADMINS_CHECK_ACL($act, $GLOBALS['what']));\r
-                       }\r
-                        else\r
-                       {\r
-                               // Extension not installed so it's always allowed to access everywhere!\r
-                               define('__ACL_ALLOW', true);\r
-                       }\r
-\r
-                       // When type of admin menu is not set fallback to old menu system\r
-                       if (empty($CONFIG['admin_menu'])) $CONFIG['admin_menu'] = "OLD";\r
-\r
-                       // Check for version and switch between old menu system and new "intelligent menu system"\r
-                       if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (file_exists(PATH."inc/modules/admin/la_sys-inc.php")))\r
-                       {\r
-                               // Default area is the entrance, of course\r
-                               $area = "entrance";\r
-\r
-                               // Check for similar URL variable\r
-                               if (!empty($_GET['area'])) $area = $_GET['area'];\r
-\r
-                               // Load "logical-area menu-system" file\r
-                               require_once(PATH."inc/modules/admin/la_sys-inc.php");\r
-\r
-                               // Create new-style menu system will "logical areas"\r
-                               ADMIN_LOGICAL_AREA_SYSTEM($area, $act, $GLOBALS['what']);\r
-                       }\r
-                        else\r
-                       {\r
-                               // This little call constructs the whole default old and lacky menu system\r
-                               // on left side\r
-                               ADMIN_DO_ACTION($GLOBALS['what']);\r
-                       }\r
-               }\r
-                else\r
-               {\r
-                       // Login failed (cookies enabled?)\r
-                       OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGIN_FAILED."</STRONG>");\r
-                       ADD_FATAL(CANNOT_RE_REGISTER_SESS);\r
-               }\r
-               break;\r
-\r
-       case "404": // Administrator login not found\r
-               $_POST['ok'] = $ret;\r
-               ADD_FATAL(ADMIN_NOT_FOUND);\r
-               break;\r
-\r
-       case "pass": // Wrong password\r
-               $_POST['ok'] = $ret;\r
-               ADD_FATAL(WRONG_PASS);\r
-               break;\r
-       }\r
-}\r
-\r
-if (admin_registered)\r
-{\r
-       // Check config.php and inc directory for right access rights\r
-       if (is_INCWritable("config"))     ADD_FATAL(FATAL_CONFIG_WRITABLE);\r
-       if (is_INCWritable("dummy"))      ADD_FATAL(FATAL_INC_WRITABLE);\r
-}\r
-//\r
-?>\r
+<?php
+/************************************************************************
+ * MXChange v0.2.1                                    Start: 08/31/2003 *
+ * ===============                              Last change: 07/02/2004 *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * File              : admin.php                                        *
+ * -------------------------------------------------------------------- *
+ * Short description : Administration module                            *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung  : Administrationsmodul                             *
+ * -------------------------------------------------------------------- *
+ *                                                                      *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * For more information visit: http://www.mxchange.org                  *
+ *                                                                      *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or    *
+ * (at your option) any later version.                                  *
+ *                                                                      *
+ * This program is distributed in the hope that it will be useful,      *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
+ * GNU General Public License for more details.                         *
+ *                                                                      *
+ * You should have received a copy of the GNU General Public License    *
+ * along with this program; if not, write to the Free Software          *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
+ * MA  02110-1301  USA                                                  *
+ ************************************************************************/
+
+// Some security stuff...
+if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
+{
+       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+       require($INC);
+}
+
+// Login is default
+if ((empty($GLOBALS['action'])) && ($check == "admin_only"))
+{
+       // Redirect to right URL
+       LOAD_URL(URL."/modules.php?module=admin&amp;action=login");
+}
+
+// Load include file
+require_once(PATH."inc/modules/admin/admin-inc.php");
+
+// Fix "deleted" cookies in PHP4 (PHP5 does remove them, PHP4 sets them to deleted!)
+FIX_DELETED_COOKIES(array('admin_login', 'admin_md5', 'admin_last', 'admin_to'));
+
+// Is the logout empty?
+if (empty($_GET['logout'])) $_GET['logout'] = "";
+
+if (!admin_registered)
+{
+       // Admin is not registered so we have to inform the user
+       if ((isset($_POST['ok'])) && ((empty($_POST['login'])) || (empty($_POST['pass'])) || (strlen($_POST['pass']) < 4))) $_POST['ok'] = "***";
+       if ((isset($_POST['ok'])) && ($_POST['ok'] != "***"))
+       {
+               // Hash the password with our new generateHash() function
+               $hashedPass = generateHash($_POST['pass']);
+
+               // If the password has not been hashed we have to fall-back to md5()
+               if ($hashedPass == $_POST['pass']) $hashedPass = md5($hashedPass);
+
+               // Do registration
+               $ret = REGISTER_ADMIN($_POST['login'], $hashedPass);
+               switch ($ret)
+               {
+               case "done":
+                       admin_WriteData(PATH."inc/config.php", "ADMIN-SETUP", "define ('admin_registered', ", ");", "true", 0);
+                       if (!_FATAL)
+                       {
+                               $URL = URL."/modules.php?module=admin&amp;action=login&register=done";
+                               LOAD_URL($URL);
+                               die($URL);
+                       }
+                        else
+                       {
+                               $ret = ADMIN_CANNOT_COMPLETE;
+                       }
+                       break;
+
+               case "failed":
+                       $ret = ADMIN_REGISTER_FAILED;
+                       break;
+
+               case "already":
+               default:
+                       if ($ret == "already")
+                       {
+                               // Admin does already exists!
+                               $ret = ADMIN_LOGIN_ALREADY_REG;
+                       }
+                        else
+                       {
+                               // Any other kind
+                               $ret = "done";
+                       }
+                       if (!admin_registered)
+                       {
+                               // Write to config that registration is done
+                               admin_WriteData(PATH."inc/config.php", "ADMIN-SETUP", "define ('admin_registered', ", ");", "true", 0);
+
+                               // Load URL for login
+                               $URL = URL."/modules.php?module=admin&amp;action=login";
+                               LOAD_URL($URL);
+                       }
+                       break;
+               }
+       }
+       if ($ret != "done")
+       {
+               // Fixes another "Notice"
+               if (!empty($_POST['login'])) {
+                       define('__LOGIN_VALUE', $_POST['login']);
+               } else {
+                       define('__LOGIN_VALUE', "");
+               }
+
+               // Yet-another "Notice" fix
+               if ((!empty($_POST['ok'])) && ($_POST['ok'] == "***"))
+               {
+                       // No login entered?
+                       if (empty($_POST['login'])) $MSG1 = ADMIN_NO_LOGIN;
+
+                       // An error comes back from registration?
+                       if (!empty($ret)) $MSG1 = $ret;
+
+                       // No password entered?
+                       if (empty($_POST['pass'])) $MSG2 = ADMIN_NO_PASS;
+
+                       // Or password too short?
+                       if (strlen($_POST['pass']) < 4) $MSG2 = ADMIN_SHORT_PASS;
+
+                       // Output error messages
+                       define('__MSG_LOGIN', LOAD_TEMPLATE("admin_login_msg", true, $MSG1));
+                       define('__MSG_PASS',  LOAD_TEMPLATE("admin_login_msg", true, $MSG2));
+
+                       // Reset variables
+                       $MSG1 = ""; $MSG2 = "";
+               }
+                else
+               {
+                       // Reset values to nothing
+                       define('__MSG_LOGIN', "");
+                       define('__MSG_PASS' , "");
+               }
+
+               // Load register template
+               LOAD_TEMPLATE("admin_reg_form");
+       }
+}
+ elseif ((empty($_COOKIE['admin_login'])) || (empty($_COOKIE['admin_md5'])) || (empty($_COOKIE['admin_last'])) || (empty($_COOKIE['admin_to'])) || (($_COOKIE['admin_last'] + bigintval($_COOKIE['admin_to']) * 3600 * 24) < time()))
+{
+       // At leat one administrator account was created
+       if ((!empty($_COOKIE['admin_login'])) && (!empty($_COOKIE['admin_md5'])) && (!empty($_COOKIE['admin_last'])) && (!empty($_COOKIE['admin_to'])))
+       {
+               // Timeout for last login, we have to logout first!
+               $URL = URL."/modules.php?module=admin&amp;action=login&amp;logout=1";
+               LOAD_URL($URL);
+       }
+       if (!empty($_GET['register']))
+       {
+               // Registration of first admin is done
+               if ($_GET['register'] == "done") OUTPUT_HTML ("<STRONG class=\"admin\">".ADMIN_REGISTER_DONE."</STRONG>");
+       }
+
+       // Check if the admin has submitted data or not
+       $ret = "";
+       if ((isset($_POST['ok'])) && ((empty($_POST['login'])) || (empty($_POST['pass'])) || (strlen($_POST['pass']) < 4))) $_POST['ok'] = "***";
+       if ((isset($_POST['ok'])) && ($_POST['ok'] != "***"))
+       {
+               // All required data was entered so we check his account
+               $ret = CHECK_ADMIN_LOGIN($_POST['login'], $_POST['pass']);
+               switch ($ret)
+               {
+               case "done": // Admin and password are okay, so we log in now
+                       $TIMEOUT = time() + (3600 * 24 * $_POST['timeout']);
+                       if ((@setcookie("admin_md5", generatePassString(generateHash($_POST['pass'], __SALT)), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_login", $_POST['login'], $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_last", time(), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_to", $_POST['timeout'], $TIMEOUT, COOKIE_PATH)))
+                       {
+                               // Construct URL and redirect
+                               $URL = URL."/modules.php?module=admin&amp;";
+
+                               // Rewrite overview module
+                               if ($GLOBALS['what'] == "overview") {
+                                       $GLOBALS['action'] = GET_ACTION($GLOBALS['module'], $GLOBALS['what']);
+                               }
+
+                               // Add data to URL
+                               if (!empty($GLOBALS['what'])) $URL .= "what=".$GLOBALS['what'];
+                                elseif (!empty($GLOBALS['action'])) $URL .= "action=".$GLOBALS['action'];
+                                elseif (!empty($_GET['area'])) $URL .= "area=".$_GET['area'];
+
+                               // Load URL
+                               LOAD_URL($URL);
+                       }
+                        else
+                       {
+                               OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGIN_FAILED."</STRONG>");
+                               ADD_FATAL(CANNOT_REGISTER_SESS);
+                       }
+                       break;
+
+               case "404": // Administrator login not found
+                       $_POST['ok'] = $ret;
+                       $ret = ADMIN_NOT_FOUND;
+                       break;
+
+               case "pass": // Wrong password
+                       $_POST['ok'] = $ret;
+                       $ret = WRONG_PASS;
+                       break;
+               }
+       }
+       if ($ret != "done")
+       {
+               if (!empty($_POST['login']))
+               {
+                       define('__LOGIN_VALUE', $_POST['login']);
+               }
+                else
+               {
+                       define('__LOGIN_VALUE', "");
+               }
+
+               if (isset($_POST['ok']))
+               {
+                       // Set messages to zero
+
+                       $MSG1 = ""; $MSG2 = "";
+                       // No login entered?
+                       if (empty($_POST['login'])) $MSG1 = ADMIN_NO_LOGIN;
+
+                       // An error comes back from login?
+                       if ((!empty($ret)) && ($_POST['ok'] == "404")) $MSG1 = $ret;
+
+                       // No password entered?
+                       if (empty($_POST['pass'])) $MSG2 = ADMIN_NO_PASS;
+
+                       // Or password too short?
+                       if (strlen($_POST['pass']) < 4) $MSG2 = ADMIN_SHORT_PASS;
+
+                       // An error comes back from login?
+                       if ((!empty($ret)) && ($_POST['ok'] == "pass")) $MSG2 = $ret;
+
+                       // Load message template
+                       define('__MSG_LOGIN', LOAD_TEMPLATE("admin_login_msg", true, $MSG1));
+                       define('__MSG_PASS' , LOAD_TEMPLATE("admin_login_msg", true, $MSG2));
+
+                       // Reset variables
+                       $MSG1 = ""; $MSG2 = "";
+               }
+                else
+               {
+                       // Set constants to empty for hiding them
+                       define('__MSG_LOGIN', "");
+                       define('__MSG_PASS' , "");
+               }
+
+               // Load login form
+               if (!empty($GLOBALS['what']))
+               {
+                       // Restore old what value
+                       $content = array('target' => "what", 'value' => $GLOBALS['what']);
+               }
+                elseif (!empty($GLOBALS['action']))
+               {
+                       if ($GLOBALS['action'] != "logout")
+                       {
+                               // Restore old action value
+                               $content = array('target' => "action", 'value' => $GLOBALS['action']);
+                       }
+                        else
+                       {
+                               // Set default values
+                               $content = array('target' => "action", 'value' => "login");
+                       }
+               }
+                elseif (!empty($_GET['area']))
+               {
+                       // Restore old area value
+                       $content = array('target' => "area", 'value' => $_GET['area']);
+               }
+                else
+               {
+                       // Set default values
+                       $content = array('target' => "action", 'value' => "login");
+               }
+
+               // Load login form template
+               LOAD_TEMPLATE("admin_login_form", false, $content);
+       }
+}
+ elseif ($_GET['logout'] == "1")
+{
+       // Only try to remove cookies
+       if (@setcookie("admin_login", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_md5", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_last", "", (time() - 3600), COOKIE_PATH) && @setcookie("admin_to", "", (time() - 3600), COOKIE_PATH))
+       {
+               // Also remove array elements
+               unset($_COOKIE['admin_login']);
+               unset($_COOKIE['admin_md5']);
+               unset($_COOKIE['admin_last']);
+               unset($_COOKIE['admin_to']);
+
+               // Destroy session
+               @session_destroy();
+
+               // Load logout template
+               LOAD_TEMPLATE("admin_logout");
+       }
+        else
+       {
+               // Something went wrong here...
+               OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGOUT_FAILED."</STRONG>");
+
+               // Add fatal message
+               ADD_FATAL(CANNOT_UNREG_SESS);
+       }
+}
+ else
+{
+       // Maybe an Admin want's to login?
+       $ret = CHECK_ADMIN_COOKIES(SQL_ESCAPE($_COOKIE['admin_login']), SQL_ESCAPE($_COOKIE['admin_md5']));
+       switch ($ret)
+       {
+       case "done":
+               // Cookie-Data accepted
+               $TIMEOUT = time() + bigintval($_COOKIE['admin_to']);
+               if ((@setcookie("admin_md5", SQL_ESCAPE($_COOKIE['admin_md5']), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_login", SQL_ESCAPE($_COOKIE['admin_login']), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_last", time(), $TIMEOUT, COOKIE_PATH)) && (@setcookie("admin_to", bigintval($_COOKIE['admin_to']), $TIMEOUT, COOKIE_PATH)))
+               {
+                       // Ok, Cookie-Update done
+                       if ((EXT_IS_ACTIVE("admins")) && (GET_EXT_VERSION("admins") > "0.2"))
+                       {
+                               // Check if action GET variable was set
+                               $act = SQL_ESCAPE($GLOBALS['action']);
+                               if (!empty($GLOBALS['what'])) {
+                                       // Get action value by what-value
+                                       $act = GET_ACTION("admin", $GLOBALS['what']);
+                               }
+
+                               // Check for access control line of current menu entry
+                               define('__ACL_ALLOW', ADMINS_CHECK_ACL($act, $GLOBALS['what']));
+                       }
+                        else
+                       {
+                               // Extension not installed so it's always allowed to access everywhere!
+                               define('__ACL_ALLOW', true);
+                       }
+
+                       // When type of admin menu is not set fallback to old menu system
+                       if (empty($CONFIG['admin_menu'])) $CONFIG['admin_menu'] = "OLD";
+
+                       // Check for version and switch between old menu system and new "intelligent menu system"
+                       if ((ADMIN_CHECK_MENU_MODE() == "NEW") && (file_exists(PATH."inc/modules/admin/la_sys-inc.php")))
+                       {
+                               // Default area is the entrance, of course
+                               $area = "entrance";
+
+                               // Check for similar URL variable
+                               if (!empty($_GET['area'])) $area = $_GET['area'];
+
+                               // Load "logical-area menu-system" file
+                               require_once(PATH."inc/modules/admin/la_sys-inc.php");
+
+                               // Create new-style menu system will "logical areas"
+                               ADMIN_LOGICAL_AREA_SYSTEM($area, $act, $GLOBALS['what']);
+                       }
+                        else
+                       {
+                               // This little call constructs the whole default old and lacky menu system
+                               // on left side
+                               ADMIN_DO_ACTION($GLOBALS['what']);
+                       }
+               }
+                else
+               {
+                       // Login failed (cookies enabled?)
+                       OUTPUT_HTML ("<STRONG class=\"admin_fatal\">".ADMIN_LOGIN_FAILED."</STRONG>");
+                       ADD_FATAL(CANNOT_RE_REGISTER_SESS);
+               }
+               break;
+
+       case "404": // Administrator login not found
+               $_POST['ok'] = $ret;
+               ADD_FATAL(ADMIN_NOT_FOUND);
+               break;
+
+       case "pass": // Wrong password
+               $_POST['ok'] = $ret;
+               ADD_FATAL(WRONG_PASS);
+               break;
+       }
+}
+
+if (admin_registered)
+{
+       // Check config.php and inc directory for right access rights
+       if (is_INCWritable("config"))     ADD_FATAL(FATAL_CONFIG_WRITABLE);
+       if (is_INCWritable("dummy"))      ADD_FATAL(FATAL_INC_WRITABLE);
+}
+//
+?>