summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5626283)
raw | patch | inline | side by side (parent: 5626283)
author | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 27 May 2010 15:06:08 +0000 (15:06 +0000) | ||
committer | hickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8> | |
Thu, 27 May 2010 15:06:08 +0000 (15:06 +0000) |
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@18777 594d385d-05f5-0310-b6e9-bd551577e9d8
gosa-core/setup/class_setup.inc | patch | blob | history | |
gosa-core/setup/class_setupStep_Schema.inc | patch | blob | history | |
gosa-core/setup/setup_schema.tpl | patch | blob | history |
index 66068b142b6e398e4abf8b653d17455aebc41c29..6d0061d95728d423cb0444eb174be3039da4751e 100644 (file)
$this->o_steps[$i++] = new Step_Checks();
$this->o_steps[$i++] = new Step_License();
$this->o_steps[$i++] = new Step_Ldap();
-# $this->o_steps[$i++] = new Step_Schema();
+ $this->o_steps[$i++] = new Step_Schema();
$this->o_steps[$i++] = new Step_Migrate();
$this->o_steps[$i++] = new Step_Feedback();
$this->o_steps[$i++] = new Step_Finish();
diff --git a/gosa-core/setup/class_setupStep_Schema.inc b/gosa-core/setup/class_setupStep_Schema.inc
index c4784593f6d927503cc4bad9b4534662807c0828..fc7fd84a990e15a66d669161ec394e6161e7db84 100644 (file)
class Step_Schema extends setup_step
{
- var $checked = array();
- var $not_checked = array();
- var $schema_readable = FALSE;
- var $attributes = array("enable_schema_check","samba_version");
- var $enable_schema_check = TRUE;
- var $samba_version = 3;
-
- var $found_ocs = 0;
-
- function Step_Schema()
- {
- $this->update_strings();
- }
-
-
- function update_strings()
- {
- $this->s_title = _("LDAP schema check");
- $this->s_title_long = _("LDAP schema check");
- $this->s_info = _("Perform test on your current LDAP schema");
- }
-
-
- function execute()
- {
- $this->check_schema();
- $failed_checks = 0 ;
- foreach($this->checked as $val) {
- if(!$val['STATUS']){
- $failed_checks ++;
- }
+ var $checked = array();
+ var $not_checked = array();
+ var $b_displayCheckbutton = true;
+
+ function Step_Schema()
+ {
+ $this->update_strings();
}
- if($failed_checks == 0){
- $this->is_completed = TRUE;
- }else{
- $this->is_completed = TRUE;
+
+ function update_strings()
+ {
+ $this->s_title = _("LDAP schema check");
+ $this->s_title_long = _("LDAP schema check");
+ $this->s_info = _("Perform test on your current LDAP schema");
}
+
+
+ function execute()
+ {
+ // Establish ldap connection
+ $cv = $this->parent->captured_values;
+ $ldap_l = new LDAP($cv['admin'],
+ $cv['password'],
+ $cv['connection'],
+ FALSE,
+ $cv['tls']);
+
+ // Detect Schema Info
+ $ldap = new ldapMultiplexer($ldap_l);
+ $ldap->cd($cv['base']);
+ $objectclasses = $ldap->get_objectclasses();
+
+ // Check if we can find something
+ $ldap->set_size_limit(1);
+ $res = $ldap->search("(objectClass=*)");
+ $ldap->set_size_limit(0);
- /* Check if the database is already initialised.
- * If the root object is missing we can't read any schema informations.
- * In this case we should display a message.
- */
- $cv = $this->parent->captured_values;
-
- /* Establish ldap connection */
- $ldap_l = new LDAP($cv['admin'],
- $cv['password'],
- $cv['connection'],
- FALSE,
- $cv['tls']);
-
- $ldap = new ldapMultiplexer($ldap_l);
-
- /* Check if root object exists */
- $ldap->cd($cv['base']);
- $ldap->set_size_limit(1);
- $res = $ldap->search("(objectClass=*)");
- $ldap->set_size_limit(0);
-
- $smarty = get_smarty();
- $smarty->assign("bool",array(FALSE => _("No"), TRUE => _("Yes")));
- $smarty->assign("database_initialised", ($res == TRUE));
- $smarty->assign("found_ocs", $this->found_ocs);
- $smarty->assign("schema_readable",$this->schema_readable);
- $smarty->assign("enable_schema_check",$this->enable_schema_check);
- $smarty->assign("checks",$this->checked);
- $smarty->assign("not_checked",$this->not_checked);
- $smarty->assign("failed_checks",$failed_checks);
- return($smarty -> fetch (get_template_path("../setup/setup_schema.tpl")));
- }
-
- function save_object()
- {
- if(isset($_POST['step7_posted'])){
-
- /* Get attributes */
- foreach($this->attributes as $attr){
- if(isset($_POST[$attr])){
- $this->$attr = validate($_POST[$attr]);
+ // Validate schema
+ $cR = new configRegistry(NULL);;
+ $cR->setObjectClasses($objectclasses);
+ $cR->_validateSchemata(TRUE,TRUE);
+ $info = $cR->getSchemaResults();
+ $disabled = $cR->getDisabledPlugins();
+
+ // Check if the 'AT LEAST' required classes are available.
+ $smarty = get_smarty();
+ $smarty->assign('message', "");
+ $smarty->assign('database_initialised', ($res==TRUE));
+ $smarty->assign('ocCount', count($objectclasses));
+
+ // We are fine here once we got object classes.
+ $this->is_completed = count($objectclasses);
+
+ // Now check if the core requirements are fulfilled.
+ if(in_array('core', $disabled)){
+ $message = "";
+ $this->is_completed = FALSE;
+ $coreDefs = core::plInfo();
+ $coreRequired = $coreDefs['plRequirements']['ldapSchema'];
+ $missing = $version = array();
+ foreach($coreRequired as $oc => $requirement){
+ if(isset($info['missing'][$oc])){
+ $missing[$oc] = $info['missing'][$oc];
+ }
+ if(isset($info['versionMismatch'][$oc])){
+ $version[$oc] = $info['versionMismatch'][$oc];
+ }
+ }
+
+ $message .= "<hr>";
+ if(count($missing)){
+ $message.= _("The following object classes are missing:").msgPool::buildList(array_values($missing));
+ }
+ if(count($version)){
+ $message.= _("The following object classes are outdated:").msgPool::buildList(array_values($version));
+ }
+ $smarty->assign('message', $message);
}
- }
- }
- }
-
- function check_schema()
- {
- $cfg = $this->parent->captured_values;
-
- /* Get objectclasses */
- $ldap = new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE,$cfg['tls']);
- $objectclasses = $ldap->get_objectclasses(TRUE);
- $this->found_ocs = count($objectclasses);
- $rfc2307bis = $cfg['rfc2307bis'];
- $this->checked = check_schema($cfg,$rfc2307bis);
-
- /* Which samba version do we use? */
- if(isset($objectclasses['sambaSamAccount'])){
- $this->samba_version = 3;
- } elseif(isset($objectclasses['sambaAccount'])) {
- $this->samba_version = 2;
- }else{
- $this->samba_version = 0;
+ $smarty->assign('checkFailed', !$this->is_completed);
+ return($smarty->fetch (get_template_path("../setup/setup_schema.tpl")));
}
- }
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
index 8a2f6995274e6be6425cecb6766f96d44faf0498..b9fdbb7c6a915dd010c0a127d13ab799502fb0f8 100644 (file)
-<div class='default'>
- <p>
- <b>{t}Schema specific settings{/t}</b>
- </p>
- <div class='step4_container'>
- <div class='step4_name' style='width:30%'>
- {t}Enable schema validation when logging in{/t}
- </div>
- <div class='step4_value'>
- <select name='enable_schema_check' size=1>
- {html_options options=$bool selected=$enable_schema_check}
- </select>
- </div>
- </div>
- <p>
- <b>{t}Check status{/t}</b>
- </p>
- <div>
- {if $failed_checks == 0}
- <font style="color:green">{t}Schema check succeeded{/t}</font>
- {else}
- <img src='images/small_warning.png' class='center'>
- <font style="color:red">{t}Schema check failed{/t}</font>
+<h3>{t}Schema specific settings{/t}</h3>
+{if !$checkFailed}
+ <font style="color:green">{t}Schema check succeeded{/t}</font>
+{else}
+ <img alt='' src='images/small_warning.png' class='center'>
+ <font style="color:red">{t}Schema check failed{/t}</font>
+
+ {if $ocCount == 0}
+ <p>
+ {t}Could not read any schema informations, all checks skipped. Adjust your ldap acls.{/t}
+ {if !$database_initialised}
+ {t}It seems that your ldap database wasn't initialized yet. This maybe the reason, why GOsa can't read your schema configuration!{/t}
+ {/if}
+ </p>
+ {else}
+ {$message}
+ {/if}
+{/if}
- {/if}
- </div>
- <div style="margin-left:20px;">
- {if $found_ocs == 0}
- <b>{t}Could not read any schema informations, all checks skipped. Adjust your ldap acls.{/t}</b>
- <br>
- {if !$database_initialised}
- <br>
- {t}It seems that your ldap database wasn't initialized yet. This maybe the reason, why GOsa can't read your schema configuration!{/t}
- {/if}
- {else}
- {foreach from=$checks item=val key=key}
- {if !$checks[$key].STATUS}
- <br>
- {if $checks[$key].IS_MUST_HAVE}
- <font color='red'>{$checks[$key].MSG}</font>
- {else}
- {$checks[$key].MSG}
- {/if}
- <br>
- {/if}
- {/foreach}
- {/if}
- </div>
-</div>
<input type='hidden' value='1' name='step7_posted'>