summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d470e30)
raw | patch | inline | side by side (parent: d470e30)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 10 May 2007 09:08:02 +0000 (09:08 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 10 May 2007 09:08:02 +0000 (09:08 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@6335 594d385d-05f5-0310-b6e9-bd551577e9d8
diff --git a/html/index.php b/html/index.php
index 38c847ba9cb5f2d444674c30645c87f016d13e2b..5468b8d9af55c75e99a522dc2b8e730474a67e66 100644 (file)
--- a/html/index.php
+++ b/html/index.php
$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"));
diff --git a/include/class_ldap.inc b/include/class_ldap.inc
index c1869a9f966efdf8bc9e4dfc09fb8dda14136b61..126aabbad27a562be5207cd82998a291f78e8399 100644 (file)
--- a/include/class_ldap.inc
+++ b/include/class_ldap.inc
}
}
-
return $objectclasses;
}
diff --git a/include/functions.inc b/include/functions.inc
index 835d6636ea1847c7f49b7d5688bd294a86e86069..ef1139f16f2b37c03dc019df0bfae0ce665942e1 100644 (file)
--- a/include/functions.inc
+++ b/include/functions.inc
}
}
+/* Schema validation functions */
+
+function check_schema_version($class, $version)
+{
+ return preg_match("/\(v$version\)/", $class['DESC']);
+}
+
+function check_schema($cfg,$rfc2307bis = FALSE)
+{
+ $messages= array();
+
+ /* Get objectclasses */
+ $ldap = new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE,$cfg['tls']);
+ $objectclasses = $ldap->get_objectclasses();
+ if(count($objectclasses) == 0){
+ print_red(_("Can't get schema information from server. No schema check possible!"));
+ }
+
+ /* This is the default block used for each entry.
+ * to avoid unset indexes.
+ */
+ $def_check = array("REQUIRED_VERSION" => "0",
+ "SCHEMA_FILES" => array(),
+ "CLASSES_REQUIRED" => array(),
+ "STATUS" => FALSE,
+ "IS_MUST_HAVE" => FALSE,
+ "MSG" => "",
+ "INFO" => "");#_("There is currently no information specified for this schema extension."));
+
+ /* The gosa base schema */
+ $checks['gosaObject'] = $def_check;
+ $checks['gosaObject']['REQUIRED_VERSION'] = "2.4";
+ $checks['gosaObject']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema");
+ $checks['gosaObject']['CLASSES_REQUIRED'] = array("gosaObject");
+ $checks['gosaObject']['IS_MUST_HAVE'] = TRUE;
+
+ /* GOsa Account class */
+ $checks["gosaAccount"]["REQUIRED_VERSION"]= "2.4";
+ $checks["gosaAccount"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema");
+ $checks["gosaAccount"]["CLASSES_REQUIRED"]= array("gosaAccount");
+ $checks["gosaAccount"]["IS_MUST_HAVE"] = TRUE;
+ $checks["gosaAccount"]["INFO"] = _("Used to store account specific informations.");
+
+ /* GOsa lock entry, used to mark currently edited objects as 'in use' */
+ $checks["gosaLockEntry"]["REQUIRED_VERSION"] = "2.4";
+ $checks["gosaLockEntry"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema");
+ $checks["gosaLockEntry"]["CLASSES_REQUIRED"] = array("gosaLockEntry");
+ $checks["gosaLockEntry"]["IS_MUST_HAVE"] = TRUE;
+ $checks["gosaLockEntry"]["INFO"] = _("Used to lock currently edited entries to avoid multiple changes at the same time.");
+
+ /* Some other checks */
+ foreach(array(
+ "gosaCacheEntry" => array("version" => "2.4"),
+ "gosaDepartment" => array("version" => "2.4"),
+ "goFaxAccount" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
+ "goFaxSBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
+ "goFaxRBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
+ "gosaUserTemplate" => array("version" => "2.4", "class" => "posixAccount","file" => "nis.schema"),
+ "gosaMailAccount" => array("version" => "2.4", "class" => "mailAccount","file" => "gosa+samba3.schema"),
+ "gosaProxyAccount" => array("version" => "2.4", "class" => "proxyAccount","file" => "gosa+samba3.schema"),
+ "gosaApplication" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"),
+ "gosaApplicationGroup" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"),
+ "GOhard" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"),
+ "gotoTerminal" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"),
+ "goServer" => array("version" => "2.4","class" => "server","file" => "goserver.schema"),
+ "goTerminalServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
+ "goShareServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
+ "goNtpServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
+ "goSyslogServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
+ "goLdapServer" => array("version" => "2.4"),
+ "goCupsServer" => array("version" => "2.4", "class" => array("posixAccount", "terminals"),),
+ "goImapServer" => array("version" => "2.4", "class" => array("mailAccount", "mailgroup"),"file" => "gosa+samba3. schema"),
+ "goKrbServer" => array("version" => "2.4"),
+ "goFaxServer" => array("version" => "2.4", "class" => "gofaxAccount","file" => "gofax.schema"),
+ ) as $name => $values){
+
+ $checks[$name] = $def_check;
+ if(isset($values['version'])){
+ $checks[$name]["REQUIRED_VERSION"] = $values['version'];
+ }
+ if(isset($values['file'])){
+ $checks[$name]["SCHEMA_FILES"] = array($values['file']);
+ }
+ $checks[$name]["CLASSES_REQUIRED"] = array($name);
+ }
+ foreach($checks as $name => $value){
+ foreach($value['CLASSES_REQUIRED'] as $class){
+
+ if(!isset($objectclasses[$name])){
+ $checks[$name]['STATUS'] = FALSE;
+ if($value['IS_MUST_HAVE']){
+ $checks[$name]['MSG'] = sprintf(_("The required objectClass '%s' is not present in your schema setup"),$class);
+ }else{
+ $checks[$name]['MSG'] = sprintf(_("The optional objectClass '%s' is not present in your schema setup"),$class);
+ }
+ }elseif(!check_schema_version($objectclasses[$name],$value['REQUIRED_VERSION'])){
+ $checks[$name]['STATUS'] = FALSE;
+
+ if($value['IS_MUST_HAVE']){
+ $checks[$name]['MSG'] = sprintf(_("The required objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']);
+ }else{
+ $checks[$name]['MSG'] = sprintf(_("The optional objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']);
+ }
+ }else{
+ $checks[$name]['STATUS'] = TRUE;
+ $checks[$name]['MSG'] = sprintf(_("Class(es) available"));
+ }
+ }
+ }
+
+ $tmp = $objectclasses;
+
+ /* The gosa base schema */
+ $checks['posixGroup'] = $def_check;
+ $checks['posixGroup']['REQUIRED_VERSION'] = "2.4";
+ $checks['posixGroup']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema");
+ $checks['posixGroup']['CLASSES_REQUIRED'] = array("posixGroup");
+ $checks['posixGroup']['STATUS'] = TRUE;
+ $checks['posixGroup']['IS_MUST_HAVE'] = TRUE;
+ $checks['posixGroup']['MSG'] = "";
+ $checks['posixGroup']['INFO'] = "";
+
+ /* Depending on selected rfc2307bis mode, we need different schema configurations */
+ if(isset($tmp['posixGroup'])){
+
+ if($rfc2307bis && isset($tmp['posixGroup']['STRUCTURAL'])){
+ $checks['posixGroup']['STATUS'] = FALSE;
+ $checks['posixGroup']['MSG'] = _("You have enabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option.");
+ $checks['posixGroup']['INFO'] = _("In order to use rfc2307bis conform groups the objectClass 'posixGroup' must be AUXILIARY");
+ }
+ if(!$rfc2307bis && !isset($tmp['posixGroup']['STRUCTURAL'])){
+ $checks['posixGroup']['STATUS'] = FALSE;
+ $checks['posixGroup']['MSG'] = _("You have disabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option.");
+ $checks['posixGroup']['INFO'] = _("The objectClass 'posixGroup' must be STRUCTURAL");
+ }
+ }
+
+ return($checks);
+}
+
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>
index c982eec68a4db0de8366ba778339970fc7ff40a9..c5365ff59b20dd3ea9e71019d761f45309fd112d 100644 (file)
if(isset($_POST[$attr])){
if(in_array($attr,array("base","connection")) && $this->$attr != get_post($attr)){
- $this->parent->disable_steps_from($this->parent->step_name_to_id(get_class($this)));
+ $this->parent->disable_steps_from(($this->parent->step_name_to_id(get_class($this))) +1);
}
$this->$attr = get_post($attr);
}
index 8d22f6ed60e352384a9620edfc653969862a57f7..2008128a4253fb173439d7ec2ce69a83478e85ef 100644 (file)
return($smarty -> fetch (get_template_path("../setup/setup_schema.tpl")));
}
- function check_schema_version($class, $version)
- {
- return preg_match("/\(v$version\)/", $class['DESC']);
- }
-
-
function save_object()
{
if(isset($_POST['step7_posted'])){
}
}
-
function check_schema()
{
$cfg = $this->parent->captured_values;
- $messages= array();
+ $rfc2307bis = $cfg['rfc2307bis'];
+ $this->checked = check_schema($cfg,$rfc2307bis);
/* Get objectclasses */
$ldap = new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE,$cfg['tls']);
print_red(_("Can't get schema information from server. No schema check possible!"));
}
-
/* Which samba version do we use? */
if(isset($objectclasses['sambaSamAccount'])){
$this->samba_version = 3;
}else{
$this->samba_version = 0;
}
-
- /* This is the default block used for each entry.
- * to avoid unset indexes.
- */
- $def_check = array("REQUIRED_VERSION" => "0",
- "SCHEMA_FILES" => array(),
- "CLASSES_REQUIRED" => array(),
- "STATUS" => FALSE,
- "IS_MUST_HAVE" => FALSE,
- "MSG" => "",
- "INFO" => "");#_("There is currently no information specified for this schema extension."));
-
-
- /* The gosa base schema */
- $checks['gosaObject'] = $def_check;
- $checks['gosaObject']['REQUIRED_VERSION'] = "2.4";
- $checks['gosaObject']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema");
- $checks['gosaObject']['CLASSES_REQUIRED'] = array("gosaObject");
- $checks['gosaObject']['IS_MUST_HAVE'] = TRUE;
-
- /* GOsa Account class */
- $checks["gosaAccount"]["REQUIRED_VERSION"]= "2.4";
- $checks["gosaAccount"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema");
- $checks["gosaAccount"]["CLASSES_REQUIRED"]= array("gosaAccount");
- $checks["gosaAccount"]["IS_MUST_HAVE"] = TRUE;
- $checks["gosaAccount"]["INFO"] = _("Used to store account specific informations.");
-
- /* GOsa lock entry, used to mark currently edited objects as 'in use' */
- $checks["gosaLockEntry"]["REQUIRED_VERSION"] = "2.4";
- $checks["gosaLockEntry"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema");
- $checks["gosaLockEntry"]["CLASSES_REQUIRED"] = array("gosaLockEntry");
- $checks["gosaLockEntry"]["IS_MUST_HAVE"] = TRUE;
- $checks["gosaLockEntry"]["INFO"] = _("Used to lock currently edited entries to avoid multiple changes at the same time.");
-
- /* Some other checks */
- foreach(array(
- "gosaCacheEntry" => array("version" => "2.4"),
- "gosaDepartment" => array("version" => "2.4"),
- "goFaxAccount" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
- "goFaxSBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
- "goFaxRBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"),
- "gosaUserTemplate" => array("version" => "2.4", "class" => "posixAccount","file" => "nis.schema"),
- "gosaMailAccount" => array("version" => "2.4", "class" => "mailAccount","file" => "gosa+samba3.schema"),
- "gosaProxyAccount" => array("version" => "2.4", "class" => "proxyAccount","file" => "gosa+samba3.schema"),
- "gosaApplication" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"),
- "gosaApplicationGroup" => array("version" => "2.4", "class" => "appgroup","file" => "gosa.schema"),
- "GOhard" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"),
- "gotoTerminal" => array("version" => "2.5", "class" => "terminals","file" => "goto.schema"),
- "goServer" => array("version" => "2.4","class" => "server","file" => "goserver.schema"),
- "goTerminalServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
- "goShareServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
- "goNtpServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
- "goSyslogServer" => array("version" => "2.4", "class" => "terminals","file" => "goto.schema"),
- "goLdapServer" => array("version" => "2.4"),
- "goCupsServer" => array("version" => "2.4", "class" => array("posixAccount", "terminals"),),
- "goImapServer" => array("version" => "2.4", "class" => array("mailAccount", "mailgroup"),"file" => "gosa+samba3.schema"),
- "goKrbServer" => array("version" => "2.4"),
- "goFaxServer" => array("version" => "2.4", "class" => "gofaxAccount","file" => "gofax.schema"),
- ) as $name => $values){
-
- $checks[$name] = $def_check;
- if(isset($values['version'])){
- $checks[$name]["REQUIRED_VERSION"] = $values['version'];
- }
- if(isset($values['file'])){
- $checks[$name]["SCHEMA_FILES"] = array($values['file']);
- }
- $checks[$name]["CLASSES_REQUIRED"] = array($name);
- }
-
- foreach($checks as $name => $value){
- foreach($value['CLASSES_REQUIRED'] as $class){
-
- if(!isset($objectclasses[$name])){
- $checks[$name]['STATUS'] = FALSE;
- if($value['IS_MUST_HAVE']){
- $checks[$name]['MSG'] = sprintf(_("The required objectClass '%s' is not present in your schema setup"),$class);
- }else{
- $checks[$name]['MSG'] = sprintf(_("The optional objectClass '%s' is not present in your schema setup"),$class);
- }
- }elseif(!$this->check_schema_version($objectclasses[$name],$value['REQUIRED_VERSION'])){
- $checks[$name]['STATUS'] = FALSE;
-
- if($value['IS_MUST_HAVE']){
- $checks[$name]['MSG'] = sprintf(_("The required objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']);
- }else{
- $checks[$name]['MSG'] = sprintf(_("The optional objectclass '%s' does not have version %s"), $class, $value['REQUIRED_VERSION']);
- }
- }else{
- $checks[$name]['STATUS'] = TRUE;
- $checks[$name]['MSG'] = sprintf(_("Class(es) available"));
- }
- }
- }
-
- $tmp = $objectclasses;
-
- /* Depending on selected rfc2307bis mode, we need different schema configurations */
- $rfc2307bis = $this->parent->captured_values['rfc2307bis'];
-
-
- /* The gosa base schema */
- $checks['posixGroup'] = $def_check;
- $checks['posixGroup']['REQUIRED_VERSION'] = "2.4";
- $checks['posixGroup']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema");
- $checks['posixGroup']['CLASSES_REQUIRED'] = array("posixGroup");
- $checks['posixGroup']['STATUS'] = TRUE;
- $checks['posixGroup']['IS_MUST_HAVE'] = TRUE;
- $checks['posixGroup']['MSG'] = "";
- $checks['posixGroup']['INFO'] = "";
-
- if(isset($tmp['posixGroup'])){
-
- if($rfc2307bis && isset($tmp['posixGroup']['STRUCTURAL'])){
- $checks['posixGroup']['STATUS'] = FALSE;
- $checks['posixGroup']['MSG'] = _("You have enabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option.");
- $checks['posixGroup']['INFO'] = _("In order to use rfc2307bis conform groups the objectClass 'posixGroup' must be AUXILIARY");
- }
- if(!$rfc2307bis && !isset($tmp['posixGroup']['STRUCTURAL'])){
- $checks['posixGroup']['STATUS'] = FALSE;
- $checks['posixGroup']['MSG'] = _("You have disabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option.");
- $checks['posixGroup']['INFO'] = _("The objectClass 'posixGroup' must be STRUCTURAL");
- }
- }
-
- $this->checked = $checks;
}
}