Code

Adde timezone check
[gosa.git] / html / index.php
index 38c847ba9cb5f2d444674c30645c87f016d13e2b..77c375bc909e773937b1a4bef44171ac5cfd5cf4 100644 (file)
 /* Load required includes */
 require_once ("../include/php_setup.inc");
 require_once ("functions.inc");
+require_once ("class_log.inc");
 header("Content-type: text/html; charset=UTF-8");
 
 function displayLogin()
 {
   global $smarty,$message,$config,$ssl,$error_collector;
-  error_reporting(E_ALL);
+  error_reporting(E_ALL | E_STRICT);
     /* Fill template with required values */
     $username = "";
     if(isset($_POST["username"])){
@@ -148,12 +149,7 @@ if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))){
 clean_smarty_compile_dir($smarty->compile_dir);
 
 /* Language setup */
-if ($config->data['MAIN']['LANG'] == ""){
-  $lang= get_browser_language();
-} else {
-  $lang= $config->data['MAIN']['LANG'];
-}
-$lang.=".UTF-8";
+$lang= get_browser_language();
 putenv("LANGUAGE=");
 putenv("LANG=$lang");
 setlocale(LC_ALL, $lang);
@@ -221,22 +217,26 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])){
     $recursive = (isset($config->current['RECURSIVE']) && $config->current['RECURSIVE'] == "true");
     $tls =       (isset($config->current['TLS'])       && $config->current['TLS'] == "true");
 
-#    if(!is_schema_readable($config->current['SERVER'], $config->current['ADMIN'], $config->current['PASSWORD'], $recursive, $tls)){
-#
-#      print_red(_("GOsa cannot retrieve information about the installed schema files. Please make sure, that this is possible."));
-#      displayLogin();
-#      exit()  ;
-#    }else{
-#      $str = (schema_check($config->current['SERVER'],$config->current['ADMIN'],$config->current['PASSWORD'], $recursive, $tls, 0, TRUE));
-#      $checkarr = array();
-#      foreach($str as $tr){
-#        if(isset($tr['needonstartup'])){
-#          print_red($tr['msg']."<br>"._("Your ldap setup contains old schema definitions. Please re-run the setup."));
-#          displayLogin();
-#          exit()  ;
-#        }
-#      }
-#    }
+    if(!count($ldap->get_objectclasses())){
+      print_red(_("GOsa cannot retrieve information about the installed schema files. Please make sure, that this is possible."));
+      displayLogin();
+      exit()  ;
+    }else{
+      $cfg = array();
+      $cfg['admin']     = $config->current['ADMIN'];
+      $cfg['password']  = $config->current['PASSWORD'];
+      $cfg['connection']= $config->current['SERVER'];
+      $cfg['tls']       = $tls;
+      $str = check_schema($cfg,isset($config->current['RFC2307BIS']) && preg_match("/(true|yes|on|1)/i",$config->current['RFC2307BIS']));
+      $checkarr = array();
+      foreach($str as $tr){
+        if(isset($tr['IS_MUST_HAVE']) && !$tr['STATUS']){
+          print_red($tr['MSG']."<br>"._("Your ldap setup contains old schema definitions. Please re-run the setup."));
+          displayLogin();
+          exit();
+        }
+      }
+    }
   }
   /* Check for locking area */
   $ldap->cat($config->current['CONFIG'], array("dn"));
@@ -257,10 +257,10 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])){
 
     /* Login as user, initialize user ACL's */
     $ui= ldap_login_user($username, $_POST["password"]);
-    if ($ui === NULL || $ui == 0){
+    if ($ui === NULL || !$ui){
       $message= _("Please check the username/password combination.");
       $smarty->assign ('nextfield', 'password');
-      gosa_log ("Authentication failed for user \"$username\"");
+      new log("security","login","",array(),"Authentication failed for user \"$username\"") ;
     } else {
       /* Remove all locks of this user */
       del_user_locks($ui->dn);
@@ -289,13 +289,13 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])){
         if ($expired == 1){
           $message= _("Account locked. Please contact your system administrator.");
           $smarty->assign ('nextfield', 'password');
-          gosa_log ("Account for user \"$username\" has expired");
+          new log("security","login","",array(),"Account for user \"$username\" has expired") ;
         } elseif ($expired == 3){
             $plist= new pluglist($config, $ui);
             foreach ($plist->dirlist as $key => $value){
               if (preg_match("/\bpassword\b/i",$value)){
                 $plug=$key;
-                gosa_log ("User \"$username\" password forced to change");
+                new log("security","login","",array(),"User \"$username\" password forced to change") ;
                 header ("Location: main.php?plug=$plug&amp;reset=1");
                 exit;
               }
@@ -303,13 +303,13 @@ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])){
           }
 
         /* Not account expired or password forced change go to main page */
-        gosa_log ("User \"$username\" logged in successfully");
+        new log("security","login","",array(),"User \"$username\" logged in successfully") ;
         header ("Location: main.php?global_check=1");
         exit;
         
       } else {
         /* Go to main page */
-        gosa_log ("User \"$username\" logged in successfully");
+        new log("security","login","",array(),"User \"$username\" logged in successfully") ;
         header ("Location: main.php?global_check=1");
         exit;
       }
@@ -361,12 +361,20 @@ if (isset($_SESSION['errors'])){
   $smarty->assign("errors", $_SESSION['errors']);
 }
 if ($error_collector != ""){
-  $smarty->assign("php_errors", $error_collector."</div>");
+  $smarty->assign("php_errors", preg_replace("/%BUGBODY%/",$error_collector_mailto,$error_collector)."</div>");
 } else {
   $smarty->assign("php_errors", "");
 }
-displayLogin();
 
+/* Set focus to the error button if we've an error message */
+$focus= "";
+if (isset($_SESSION['errors']) && $_SESSION['errors'] != ""){
+  $focus= '<script language="JavaScript" type="text/javascript">';
+  $focus.= 'document.forms[0].error_accept.focus();';
+  $focus.= '</script>';
+}
+$smarty->assign("focus", $focus);
+displayLogin();
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>