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;
}
}