Code

Updated locales
[gosa.git] / gosa-core / include / class_core.inc
1 <?php
3 /*
4  *   How to use plugin::plInfo()
5  *   ===================
6  *   
7  *   The function returns a descriptive array of the plugin,
8  *    which will then be used by GOsa to populate the plugin, its ACLs, 
9  *    its properties, its schema requirements aso.
10  *
11  *
12  *   The following values can be set:
13  *   ================================
14  *
15  *   plShortName    |-> The name of the plugin in short (e.g. Posix)
16  *                  |   This short-name will be shown for example in the ACL definitions.
17  *                  | 
18  *                  | 
19  *   plDescription  |-> A descriptive text for the plugin (e.g. User posix account extension)
20  *                  |   This will be shown in the ACL definitions.   
21  *                  | 
22  *                  | 
23  *   plSelfModify   |-> If set to true this plugin allows to set 'self' ACLs.
24  *                  |   For exampe to allow to change the users own password, but not the others.
25  *                  | 
26  *                  | 
27  *   plDepends      |-> The plugins dependencies to other classes (e.g. sambaAccount requires posixAccount)
28  *                  |  
29  *                  | 
30  *   plPriority     |-> The priority of the plugin, this influences the ACL listings only.
31  *                  | 
32  *                  | 
33  *   plSection      |-> The section of this plugin 'administration', 'personal', 'addons'
34  *                  | 
35  *                  | 
36  *   plCategory     |-> The plugin category this plugins belongs to (e.g. users, groups, departments) 
37  *                  | 
38  *                  | 
39  *   plRequirements |-> Plugin requirements. 
40  *                  | |
41  *                  | |-> [activePlugin]           The schame checks will only be performed if the given plugin is enabled
42  *                  | |                             in the gosa.conf definitions.
43  *                  | |                            Defaults to the current class name if empty.
44  *                  | |
45  *                  | |-> [ldapSchema]             An array of objectClass requirements.
46  *                  | |                            Syntax [[objectClass => 'version'], ... ]
47  *                  | |                            Version can be emtpy which just checks for the existence of the class.
48  *                  | |
49  *                  | |-> [onFailureDisablePlugin] A list of plugins that which will be disabled if the 
50  *                  |                               requirements couldn't be fillfulled.
51  *                  |
52  *                  |      ---------------------------------------------
53  *                  |      EXAMPLE:
54  *                  |      ---------------------------------------------
55  *                  |      "plRequirements"=> array(
56  *                  |         'activePlugin' => 'applicationManagement', 
57  *                  |         'ldapSchema' => array(
58  *                  |             'gosaObject' => '',
59  *                  |             'gosaAccount' => '>=2.7',
60  *                  |             'gosaLockEntry' => '>=2.7',
61  *                  |             'gosaDepartment' => '>=2.7',
62  *                  |             'gosaCacheEntry' => '>=2.7',
63  *                  |             'gosaProperties' => '>=2.7',
64  *                  |             'gosaConfig' => '>=2.7'
65  *                  |             ),
66  *                  |         'onFailureDisablePlugin' => array(get_class(), 'someClassName')
67  *                  |         ),
68  *                  |      ---------------------------------------------
69  *                  |
70  *                  |
71  *                  |         
72  *   plProvidedAcls |-> The ACLs provided by this plugin
73  *                  |
74  *                  |      ---------------------------------------------
75  *                  |      EXAMPLE:
76  *                  |      ---------------------------------------------
77  *                  |      "plProvidedAcls"=> array(
78  *                  |          'cn'             => _('Name'),
79  *                  |          'uid'            => _('Uid'),
80  *                  |          'phoneNumber'    => _('Phone number')
81  *                  |          ),
82  *                  |      ---------------------------------------------
83  *                  |
84  *                  |
85  *                  | 
86  *   plProperties   |-> Properties used by the plugin.
87  *                  |   Properties which are defined here will be modifyable using the property editor.
88  *                  |   To read properties you can use $config->get_cfg_value(className, propertyName)
89  *                  | 
90  *                  |      ---------------------------------------------
91  *                  |      EXAMPLE:
92  *                  |      ---------------------------------------------
93  *                  |      "plProperties"=> array(
94  *                  |         array(
95  *                  |             "name"          => "htaccessAuthentication",
96  *                  |             "type"          => "bool",
97  *                  |             "default"       => "false",
98  *                  |             "description"   => _("A description..."),
99  *                  |             "check"         => "gosaProperty::isBool",
100  *                  |             "migrate"       => "",
101  *                  |             "group"         => "authentification",
102  *                  |             "mandatory"     => TRUE
103  *                  |             ),
104  *                  |         ),
105  *                  |   See class_core.inc for a huge amount of examples.
106  */
109 class all extends plugin {
110     static function plInfo()
111     {
112         return (array(
113                     "plShortName"   => _("All"),
114                     "plDescription" => _("All objects"),
115                     "plSelfModify"  => TRUE,
116                     "plDepends"     => array(),
117                     "plPriority"    => 0,
118                     "plSection"     => array("administration"),
119                     "plCategory"    => array("all" => array("description" => '*&nbsp;'._("All"))),
120                     "plProvidedAcls"    => array())
121                );
122     }
125 class core extends plugin {
127     static function getPropertyValues($class,$name,$value,$type)
128     {
129         $list = array();
130         switch($name){
131             case 'idAllocationMethod':
132                 $list = array('traditional' => _('Traditional'), 'pool' => _('Use samba pool'));
133                 break;
134             case 'passwordDefaultHash':
135                 $tmp = passwordMethod::get_available_methods();
136                 foreach($tmp['name'] as $id => $method){
137                     $desc = $tmp[$id]['name'];
138                     $list[$method] = $desc;
139                 }
140                 break;
141             case 'theme':
142                 $cmd = "cd ../ihtml/themes; find . -name 'img.styles' | sed s/'^[^\/]*\/\([^\/]*\).*'/'\\1'/g";
143                 $res = `$cmd`  ; 
144                 $list = array();
145                 foreach(preg_split("/\n/",$res) as $entry){
146                     if(!empty($entry)){
147                         $list[$entry] = $entry;
148                     }
149                 }
150                 break;
151             case 'accountPrimaryAttribute':
152                 $list = array('uid' => 'uid', 'cn' => 'cn');
153                 break;
154             case 'loginAttribute':
155                 $list = array(
156                             'uid' => 'uid',
157                             'mail' => 'mail',
158                             'both' => 'uid & mail');
159                 break;
160             case 'timezone': 
161                 $tmp = timezone::_get_tz_zones();
162                 foreach($tmp['TIMEZONES'] as $name => $offset){
163                     if($offset >= 0){
164                         $list[$name] = $name." ( + ".sprintf("%0.2f",$offset/(60*60))." "._("hours").")";
165                     }else{
166                         $offset = $offset * -1;
167                         $list[$name] = $name." ( - ".sprintf("%0.2f",($offset/(60*60)))." "._("hours").")";
168                     }
169                 }
170                 break;
171             case 'mailAttribute':
172                 $list = array('mail' => 'mail','uid' => 'uid');
173                 break;
174             case 'mailMethod': 
175                 $tmp = array();
176                 if(class_available('mailMethod')){
177                     $tmp = mailMethod::get_methods();
178                 }
179                 $list =array();
180                 foreach($tmp as $name => $value){
181                     $name = preg_replace('/^mailMethod/','', $name);
182                     $list[$name] = $value;
183                 }
184                 $list[''] = _("None");
185                 break;
186             case 'language':
187                 $tmp = get_languages(TRUE);
188                 $list[""] = _("Automatic");
189                 foreach($tmp as $key => $desc){
190                     $list[$key] = $desc;
191                 }
192                 break;
193             case 'modificationDetectionAttribute': 
194                 $list = array('entryCSN' => 'entryCSN (OpenLdap)','textCSN'=>'textCSN (Sun DS)');
195                 break;
196             default: echo $name." ";$list = array();
197         }
199         if(!isset($list[$value])){
200             $list[$value] = $value." ("._("User value").")";
201         }
203         return($list);
204     }
206     static function plInfo()
207     {
208         return (array(
209                     "plShortName" => _("Core"),
210                     "plDescription" => _("GOsa core plugin"),
211                     "plSelfModify"  => FALSE,
212                     "plDepends"     => array(),
213                     "plPriority"    => 0,
214                     "plSection"     => array("administration"),
216                     "plRequirements"=> array(
217                         'ldapSchema' => array(
218                             'gosaObject' => '>=2.7',
219                             'gosaAccount' => '>=2.7',
220                             'gosaLockEntry' => '>=2.7',
221                             'gosaDepartment' => '>=2.7',
222                             'gosaCacheEntry' => '>=2.7',
223                             'gosaProperties' => '>=2.7',
224                             'gosaConfig' => '>=2.7'
225                             ),
226                         'onFailureDisablePlugin' => array(get_class())
227                         ),
231                     "plCategory"    => array("all"),
232                     "plProperties"  => array(
234                         array(
235                             "name"          => "htaccessAuthentication",
236                             "type"          => "bool",
237                             "default"       => "false",
238                             "description"   => _("Enables htaccess instead of LDAP authentication. This can be used to enable other authentication mechanisms like Kerberos for the GOsa login."),
239                             "check"         => "gosaProperty::isBool",
240                             "migrate"       => "",
241                             "group"         => "authentification",
242                             "mandatory"     => TRUE),
244                         array(
245                             "name"          => "statsDatabaseEnabled",
246                             "type"          => "bool",
247                             "default"       => "false",
248                             "description"   => _("Enables the usage statistics module."),
249                             "check"         => "gosaProperty::isBool",
250                             "migrate"       => "",
251                             "group"         => "core",
252                             "mandatory"     => TRUE),
254                         array(
255                                 "name"          => "statsDatabaseDirectory",
256                                 "type"          => "path",
257                                 "default"       => "/var/spool/gosa/stats",
258                                 "description"   => _("Database file to be used by the usage statistics module."),
259                                 "check"         => "gosaProperty::isWriteablePath",
260                                 "migrate"       => "",
261                                 "group"         => "core",
262                                 "mandatory"     => TRUE),
264                         array(
265                             "name"          => "logging",
266                             "type"          => "bool",
267                             "default"       => "true",
268                             "description"   => _("Enables event logging in GOsa. Setting it to 'On' make GOsa log every action a user performs via syslog. If you use this in combination with rsyslog and configure it to MySQL logging, you can browse all events in GOsa."),
270                             "check"         => "gosaProperty::isBool",
271                             "migrate"       => "",
272                             "group"         => "core",
273                             "mandatory"     => TRUE),
275                         array(
276                                 "name"          => "listSummary",
277                                 "type"          => "bool",
278                                 "default"       => "true",
279                                 "description"   => _("Enables a status bar on the bottom of lists displaying a summary of type and number of elements in the list."),
280                                 "check"         => "gosaProperty::isBool",
281                                 "migrate"       => "",
282                                 "group"         => "visual",
283                                 "mandatory"     => FALSE),
285                         array(
286                                 "name"          => "passwordMinLength",
287                                 "type"          => "integer",
288                                 "default"       => "",
289                                 "description"   => _("Specify the minimum length for newly entered passwords."),
290                                 "check"         => "gosaProperty::isInteger",
291                                 "migrate"       => "",
292                                 "group"         => "password",
293                                 "mandatory"     => FALSE),
295                         array(
296                                 "name"          => "passwordMinDiffer",
297                                 "type"          => "integer",
298                                 "default"       => "",
299                                 "description"   => _("Specify the minimum number of characters that have to differ between old and newly entered passwords."),
300                                 "check"         => "gosaProperty::isInteger",
301                                 "migrate"       => "",
302                                 "group"         => "password",
303                                 "mandatory"     => FALSE),
305                         array(
306                                 "name"          => "passwordProposalHook",
307                                 "type"          => "command",
308                                 "default"       => "",
309                                 "description"   => _("Command to generate password proposals. If a command has been specified, the user can decide whether to use an automatic password or a manually specified one.")." "._("Example").": /usr/bin/apg -n1",
310                                 "check"         => "gosaProperty::isCommand",
311                                 "migrate"       => "",
312                                 "group"         => "password",
313                                 "mandatory"     => FALSE),
315                         array(
316                                 "name"          => "displayErrors",
317                                 "type"          => "bool",
318                                 "default"       => "false",
319                                 "description"   => _("Enable display of PHP errors on the top of the page. Disable this feature in production environments to avoid the exposure of sensitive data.")." ".sprintf(_("Related option").": developmentMode"),
320                                 "check"         => "gosaProperty::isBool",
321                                 "migrate"       => "",
322                                 "group"         => "debug",
323                                 "mandatory"     => TRUE),
325                         array(
326                                 "name"          => "developmentMode",
327                                 "type"          => "bool",
328                                 "default"       => "false",
329                                 "description"   => _("Show messages that may assist plugin development. Be aware that this option may produce some ACL related false error messages!"),
330                                 "check"         => "gosaProperty::isBool",
331                                 "migrate"       => "",
332                                 "group"         => "debug",
333                                 "mandatory"     => TRUE),
336                         array(
337                                 "name"          => "schemaCheck",
338                                 "type"          => "bool",
339                                 "default"       => "true",
340                                 "description"   => _("Enable LDAP schema verification during login. The recommended setting is 'On' because it enables efficient methods to create missing subtrees in the LDAP."),
341                                 "check"         => "gosaProperty::isBool",
342                                 "migrate"       => "",
343                                 "group"         => "debug",
344                                 "mandatory"     => TRUE),
346                         array(
347                                 "name"          => "copyPaste",
348                                 "type"          => "bool",
349                                 "default"       => "false",
350                                 "description"   => _("Enable copy and paste for most objects managed by GOsa."),
351                                 "check"         => "gosaProperty::isBool",
352                                 "migrate"       => "",
353                                 "group"         => "copyPaste",
354                                 "mandatory"     => TRUE),
356                         array(
357                                 "name"          => "forceGlobals",
358                                 "type"          => "noLdap",
359                                 "default"       => "false",
360                                 "description"   => _("Enable PHP security checks for disabled register_global settings."),
361                                 "check"         => "gosaProperty::isBool",
362                                 "migrate"       => "",
363                                 "group"         => "security",
364                                 "mandatory"     => TRUE),
366                         array(
367                                 "name"          => "forceSSL",
368                                 "type"          => "noLdap",
369                                 "default"       => "false",
370                                 "description"   => _("Enable automatic redirection to HTTPS based administration."),
371                                 "check"         => "gosaProperty::isBool",
372                                 "migrate"       => "",
373                                 "group"         => "security",
374                                 "mandatory"     => TRUE),
376                         array(
377                                 "name"          => "ldapStats",
378                                 "type"          => "bool",
379                                 "default"       => "false",
380                                 "description"   => _("Enable logging of detailed information of LDAP operations."),
381                                 "check"         => "gosaProperty::isBool",
382                                 "migrate"       => "",
383                                 "group"         => "debug",
384                                 "mandatory"     => FALSE),
386                         array(
387                                 "name"          => "ldapFollowReferrals",
388                                 "type"          => "bool",
389                                 "default"       => "false",
390                                 "description"   => _("Enable LDAP referral chasing."),
391                                 "check"         => "gosaProperty::isBool",
392                                 "migrate"       => "",
393                                 "group"         => "ldap",
394                                 "mandatory"     => TRUE),
396                         array(
397                                 "name"          => "ldapFilterNestingLimit",
398                                 "type"          => "integer",
399                                 "default"       => 200,
400                                 "description"   => _("Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up group queries by putting several queries into a single query. This is known to produce problems on some LDAP servers (i.e. Sun DS) and needs to be lowered or disabled."),
401                                 "check"         => "gosaProperty::isInteger",
402                                 "migrate"       => "",
403                                 "group"         => "ldap",
404                                 "mandatory"     => TRUE),
406                         array(
407                                 "name"          => "ldapSizelimit",
408                                 "type"          => "integer",
409                                 "default"       => 200,
410                                 "description"   => _("Specify the maximum number of entries GOsa will request from an LDAP server. A warning is displayed if this limit is exceeded."), 
411                                 "check"         => "gosaProperty::isInteger",
412                                 "migrate"       => "",
413                                 "group"         => "core",
414                                 "mandatory"     => TRUE),
416                         array(
417                                 "name"          => "ldapSizeIgnore",
418                                 "type"          => "bool",
419                                 "default"       => "false",
420                                 "description"   => _("Disable checks for LDAP size limits."),
421                                 "check"         => "gosaProperty::isBool",
422                                 "migrate"       => "",
423                                 "group"         => "core",
424                                 "mandatory"     => FALSE),
426                         array(
427                                 "name"          => "warnSSL",
428                                 "type"          => "noLdap",
429                                 "default"       => "true",
430                                 "description"   => _("Enable warnings for non encrypted connections."),
431                                 "check"         => "gosaProperty::isBool",
432                                 "migrate"       => "",
433                                 "group"         => "security",
434                                 "mandatory"     => TRUE),
436                         array(
437                                 "name"          => "ppdGzip",
438                                 "type"          => "bool",
439                                 "default"       => "true",
440                                 "description"   => _("Enable compression for PPD files."),
441                                 "check"         => "gosaProperty::isBool",
442                                 "migrate"       => "",
443                                 "group"         => "ppd",
444                                 "mandatory"     => FALSE),
447                         array(
448                                 "name"          => "ignoreAcl",
449                                 "type"          => "dn",
450                                 "default"       => "",
451                                 "description"   => _("DN of user with ACL checks disabled. This should only be used to restore lost administrative ACLs."),
452                                 "check"         => "gosaProperty::isDN",
453                                 "migrate"       => "",
454                                 "group"         => "debug",
455                                 "mandatory"     => FALSE),
458                         array(
459                                 "name"          => "ppdPath",
460                                 "type"          => "path",
461                                 "default"       => "/var/spool/ppd",
462                                 "description"   => _("Storage path for PPD files."),
463                                 "check"         => "gosaProperty::isPath",
464                                 "migrate"       => "",
465                                 "group"         => "ppd",
466                                 "mandatory"     => FALSE),
468                         array(
469                                 "name"          => "ldapMaxQueryTime",
470                                 "type"          => "integer",
471                                 "default"       => "",
472                                 "description"   => _("Number of seconds a LDAP query is allowed to take until GOsa aborts the request."),
473                                 "check"         => "gosaProperty::isInteger",
474                                 "migrate"       => "",
475                                 "group"         => "debug",
476                                 "mandatory"     => FALSE),
478                         array(
479                                 "name"          => "storeFilterSettings",
480                                 "type"          => "bool",
481                                 "default"       => "true",
482                                 "description"   => _("Enables storing of user filters in browser cookies."),
483                                 "check"         => "gosaProperty::isBool",
484                                 "migrate"       => "",
485                                 "group"         => "core",
486                                 "mandatory"     => FALSE),
488                         array(
489                                 "name"          => "sendCompressedOutput",
490                                 "type"          => "bool",
491                                 "default"       => "true",
492                                 "description"   => _("Enables sending of compressed web page content."),
493                                 "check"         => "gosaProperty::isBool",
494                                 "migrate"       => "",
495                                 "group"         => "core",
496                                 "mandatory"     => FALSE),
498                         array(
499                                 "name"          => "modificationDetectionAttribute",
500                                 "type"          => "switch",
501                                 "default"       => "entryCSN",
502                                 "defaults"      => "core::getPropertyValues",
503                                 "description"   => _("LDAP attribute which is used to detect changes."),
504                                 "check"         => "",
505                                 "migrate"       => "",
506                                 "group"         => "core",
507                                 "mandatory"     => TRUE),
509                         array(
510                                 "name"          => "language",
511                                 "type"          => "switch",
512                                 "default"       => "",
513                                 "defaults"      => "core::getPropertyValues",
514                                 "description"   => _("ISO language code which is used to override the automatic language detection."),
515                                 "check"         => "",
516                                 "migrate"       => "",
517                                 "group"         => "core",
518                                 "mandatory"     => FALSE),
520                         array(
521                                 "name"          => "theme",
522                                 "type"          => "switch",
523                                 "default"       => "default",
524                                 "defaults"      => "core::getPropertyValues",
525                                 "description"   => _("CSS and template theme to be used."),
526                                 "check"         => "",
527                                 "migrate"       => "",
528                                 "group"         => "visual",
529                                 "mandatory"     => TRUE),
531                         array(
532                                 "name"          => "sessionLifetime",
533                                 "type"          => "integer",
534                                 "default"       => 600,
535                                 "description"   => _("Number of seconds after an inactive session expires. This may be overridden by some systems php.ini/crontab mechanism."),
536                                 "check"         => "gosaProperty::isInteger",
537                                 "migrate"       => "",
538                                 "group"         => "security",
539                                 "mandatory"     => FALSE),
541                         array(
542                                 "name"          => "templateCompileDirectory",
543                                 "type"          => "path",
544                                 "default"       => "/var/spool/gosa",
545                                 "description"   => _("Template engine compile directory."),
546                                 "check"         => "gosaProperty::isWriteablePath",
547                                 "migrate"       => "",
548                                 "group"         => "core",
549                                 "mandatory"     => TRUE),
551                         array(
552                                 "name"          => "debugLevel",
553                                 "type"          => "integer",
554                                 "default"       => 0,
555                                 "description"   => sprintf(_("Logical AND of the integer values below that controls the debug output on every page load: %s"),
558 DEBUG_TRACE   = 1
559 DEBUG_LDAP    = 2
560 DEBUG_MYSQL   = 4
561 DEBUG_SHELL   = 8
562 DEBUG_POST    = 16
563 DEBUG_SESSION = 32
564 DEBUG_CONFIG  = 64
565 DEBUG_ACL     = 128
566 DEBUG_SI      = 256"),
567                                 "check"         => "gosaProperty::isInteger",
568                                 "migrate"       => "",
569                                 "group"         => "debug",
570                                 "mandatory"     => FALSE),
572                         array(
573                                 "name"          => "sambaHashHook",
574                                 "type"          => "command",
575                                 "default"       => "perl -MCrypt::SmbHash -e \"print join(q[:], ntlmgen \\\$ARGV[0]), $/;\"",
576                                 "description"   => _("Command to create Samba NT/LM hashes. Required for password synchronization if you don't use supplementary services."),
577                                 "check"         => "gosaProperty::isCommand",
578                                 "migrate"       => "",
579                                 "group"         => "samba",
580                                 "mandatory"     => FALSE),
582                         array(
583                                 "name"          => "passwordDefaultHash",
584                                 "type"          => "switch",
585                                 "default"       => "crypt/md5",
586                                 "defaults"      => "core::getPropertyValues",
587                                 "description"   => _("Default hash to be used for newly created user passwords."),
588                                 "check"         => "",
589                                 "migrate"       => "",
590                                 "group"         => "password",
591                                 "mandatory"     => FALSE),
592                         array(
593                                 "name"          => "strictPasswordRules",
594                                 "type"          => "bool",
595                                 "default"       => "true",
596                                 "description"   => _("Enable checking for the presence of problematic unicode characters in passwords."),
597                                 "check"         => "gosaProperty::isBool",
598                                 "migrate"       => "",
599                                 "group"         => "password",
600                                 "mandatory"     => FALSE),
602                         array(
603                                 "name"          => "accountPrimaryAttribute",
604                                 "type"          => "switch",
605                                 "default"       => "cn",
606                                 "defaults"      => "core::getPropertyValues",
607                                 "description"   => _("Specify whether 'cn' or 'uid' style user DNs are generated. For more sophisticated control use the 'accountRDN' setting."),
608                                 "check"         => "",
609                                 "migrate"       => "",
610                                 "group"         => "security",
611                                 "mandatory"     => TRUE),
613                         array(
614                                 "name"          => "userRDN",
615                                 "type"          => "rdn",
616                                 "default"       => "ou=people,",
617                                 "description"   => _("Location component for user storage inside of departments."),
618                                 "check"         => "gosaProperty::isRdn",
619                                 "migrate"       => "migrate_userRDN", 
620                                 "group"         => "user",
621                                 "mandatory"     => FALSE),
623                         array(
624                                 "name"          => "groupRDN",
625                                 "type"          => "rdn",
626                                 "default"       => "ou=groups,",
627                                 "description"   => _("Location component for group storage inside of departments."),
628                                 "check"         => "gosaProperty::isRdn",
629                                 "migrate"       => "migrate_groupRDN",
630                                 "group"         => "group",
631                                 "mandatory"     => FALSE),
633                         array(
634                                 "name"          => "gidNumberBase",
635                                 "type"          => "integer",
636                                 "default"       => "1000",
637                                 "description"   => _("Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' setting."),
638                                 "check"         => "gosaProperty::isInteger",
639                                 "migrate"       => "",
640                                 "group"         => "id",
641                                 "mandatory"     => TRUE),
643                        array(
644                                 "name"          => "baseIdHook",
645                                 "type"          => "command",
646                                 "default"       => "",
647                                 "description"   => _("Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' setting."),
648                                 "check"         => "gosaProperty::isCommand",
649                                 "migrate"       => "",
650                                 "group"         => "id",
651                                 "mandatory"     => FALSE),
653                         array(
654                                 "name"          => "gidNumberPoolMin",
655                                 "type"          => "integer",
656                                 "default"       => 10000,
657                                 "description"   => _("Lowest assignable group ID for use with the idAllocationMethod set to 'pool'."),
658                                 "check"         => "gosaProperty::isInteger",
659                                 "migrate"       => "",
660                                 "group"         => "id",
661                                 "mandatory"     => FALSE),
663                         array(
664                                 "name"          => "gidNumberPoolMax",
665                                 "type"          => "integer",
666                                 "default"       => 40000,
667                                 "description"   => _("Highest assignable group ID for use with the idAllocationMethod set to 'pool'."),
668                                 "check"         => "gosaProperty::isInteger",
669                                 "migrate"       => "",
670                                 "group"         => "id",
671                                 "mandatory"     => FALSE),
673                         array(
674                                 "name"          => "uidNumberPoolMin",
675                                 "type"          => "integer",
676                                 "default"       => 10000,
677                                 "description"   => _("Lowest assignable user ID for use with the idAllocationMethod set to 'pool'."),
678                                 "check"         => "gosaProperty::isInteger",
679                                 "migrate"       => "",
680                                 "group"         => "id",
681                                 "mandatory"     => FALSE),
683                         array(
684                                 "name"          => "uidNumberPoolMax",
685                                 "type"          => "integer",
686                                 "default"       => 40000,
687                                 "description"   => _("Highest assignable user ID for use with the idAllocationMethod set to 'pool'."),
688                                 "check"         => "gosaProperty::isInteger",
689                                 "migrate"       => "",
690                                 "group"         => "id",
691                                 "mandatory"     => FALSE),
693                         array(
694                                 "name"          => "uidNumberBase",
695                                 "type"          => "integer",
696                                 "default"       => "1000",
697                                 "description"   => _("Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' setting."),
698                                 "check"         => "gosaProperty::isInteger",
699                                 "migrate"       => "",
700                                 "group"         => "id",
701                                 "mandatory"     => FALSE),
703                         array(
704                                 "name"          => "gosaRpcServer",
705                                 "type"          => "string",
706                                 "default"       => "",
707                                 "description"   => _("Connection URL for use with the gosa-ng service."),
708                                 "check"         => "jsonRPC::testConnectionProperties",
709                                 "migrate"       => "",
710                                 "group"         => "rpc",
711                                 "mandatory"     => FALSE),
713                         array(
714                                 "name"          => "gosaRpcUser",
715                                 "type"          => "string",
716                                 "default"       => "admin",
717                                 "description"   => _("User name used to connect to the 'gosaRpcServer'."),
718                                 "check"         => "",
719                                 "migrate"       => "",
720                                 "group"         => "rpc",
721                                 "mandatory"     => FALSE),
723                         array(
724                                 "name"          => "gosaRpcPassword",
725                                 "type"          => "string",
726                                 "default"       => "tester",
727                                 "description"   => _("Password used to connect to the 'gosaRpcServer'."),
728                                 "check"         => "",
729                                 "migrate"       => "",
730                                 "group"         => "rpc",
731                                 "mandatory"     => FALSE),
733                         array(
734                                 "name"          => "gosaSupportURI",
735                                 "type"          => "string",
736                                 "default"       => "",
737                                 "description"   => _("Connection URI for use with the gosa-si service (obsolete)."),
738                                 "check"         => "",
739                                 "migrate"       => "",
740                                 "group"         => "gosa-si",
741                                 "mandatory"     => FALSE),
743                         array(
744                                 "name"          => "gosaSupportTimeout",
745                                 "type"          => "integer",
746                                 "default"       => 15,
747                                 "description"   => _("Number of seconds after a gosa-si connection is considered 'dead'."),
748                                 "check"         => "gosaProperty::isInteger",
749                                 "migrate"       => "",
750                                 "group"         => "gosa-si",
751                                 "mandatory"     => FALSE),
753                         array(
754                                 "name"          => "loginAttribute",
755                                 "type"          => "switch",
756                                 "default"       => "uid",
757                                 "defaults"      => "core::getPropertyValues",
758                                 "description"   => _("User attribute which is used for log in."),
759                                 "check"         => "",
760                                 "migrate"       => "",
761                                 "group"         => "security",
762                                 "mandatory"     => TRUE),
764                         array(
765                                 "name"          => "timezone",
766                                 "type"          => "switch",
767                                 "default"       => "",
768                                 "defaults"      => "core::getPropertyValues",
769                                 "description"   => _("Local time zone."),
770                                 "check"         => "",
771                                 "migrate"       => "",
772                                 "group"         => "core",
773                                 "mandatory"     => FALSE),
775                         array(
776                                 "name"          => "honourUnitTags",
777                                 "type"          => "bool",
778                                 "default"       => "false",
779                                 "description"   => _("Enable tagging of administrative units. This can be used in conjunction with ACLs (obsolete)."),
780                                 "check"         => "",
781                                 "migrate"       => "",
782                                 "group"         => "core",
783                                 "mandatory"     => FALSE),
785                         array(
786                                 "name"          => "useSaslForKerberos",
787                                 "type"          => "bool",
788                                 "default"       => "true",
789                                 "description"   => _("Enable the use of {sasl} instead of {kerberos} for user realms."),
790                                 "check"         => "gosaProperty::isBool",
791                                 "migrate"       => "",
792                                 "group"         => "password",
793                                 "mandatory"     => FALSE),
795                         array(
796                                 "name"          => "rfc2307bis",
797                                 "type"          => "bool",
798                                 "default"       => "false",
799                                 "description"   => _("Enable RFC 2307bis style groups. This combines the use of 'member' and 'memberUid' attributes."),
800                                 "check"         => "gosaProperty::isBool",
801                                 "migrate"       => "",
802                                 "group"         => "core",
803                                 "mandatory"     => FALSE),
805                         array(
806                                 "name"          => "personalTitleInDN",
807                                 "type"          => "bool",
808                                 "default"       => "false",
809                                 "description"   => _("Adjusts the user DN generation to include the users personal title (only in conjunction with accountPrimaryAttribute)."),
810                                 "check"         => "gosaProperty::isBool",
811                                 "migrate"       => "",
812                                 "group"         => "storage location",
813                                 "mandatory"     => FALSE),
815                         array(
816                                 "name"          => "nextIdHook",
817                                 "type"          => "command",
818                                 "default"       => "",
819                                 "description"   => _("Script to be called for finding the next free id for groups or users."),
820                                 "check"         => "gosaProperty::isCommand",
821                                 "migrate"       => "",
822                                 "group"         => "id",
823                                 "mandatory"     => FALSE),
824                         array(
825                                 "name"          => "idGenerator",
826                                 "type"          => "string",
827                                 "default"       => "{%sn}-{%givenName[2-4]}",
828                                 "description"   => _("Descriptive string for the automatic ID generator. Please read the FAQ file for more information."),
829                                 "check"         => "",
830                                 "migrate"       => "",
831                                 "group"         => "core",
832                                 "mandatory"     => FALSE),
834                         array(
835                                 "name"          => "strictNamingRules",
836                                 "type"          => "bool",
837                                 "default"       => "true",
838                                 "description"   => _("Enable strict checking for user IDs and group names."),
839                                 "check"         => "gosaProperty::isBool",
840                                 "migrate"       => "",
841                                 "group"         => "core",
842                                 "mandatory"     => FALSE),
844                         array(
845                                 "name"          => "minId",
846                                 "type"          => "integer",
847                                 "default"       => 40,
848                                 "description"   => _("Lowest assignable user or group ID. Only active if idAllocationMethod is set to 'traditional'."),
849                                 "check"         => "gosaProperty::isInteger",
850                                 "migrate"       => "",
851                                 "group"         => "id",
852                                 "mandatory"     => FALSE),
854                         array(
855                                 "name"          => "mailAttribute",
856                                 "type"          => "switch",
857                                 "default"       => "mail",
858                                 "defaults"      => "core::getPropertyValues",
859                                 "description"   => _("Attribute to be used for primary mail addresses."),
860                                 "check"         => "",
861                                 "migrate"       => "",
862                                 "group"         => "mail",
863                                 "mandatory"     => FALSE),
865                         array(
866                                 "name"          => "gosaSharedPrefix",
867                                 "type"          => "string",
868                                 "default"       => "",
869                                 "description"   => _("Namespace used for shared folders."),
870                                 "check"         => "",
871                                 "migrate"       => "",
872                                 "group"         => "mail",
873                                 "mandatory"     => FALSE),
875                         array(
876                                 "name"          => "mailUserCreation",
877                                 "type"          => "string",
878                                 "default"       => "",
879                                 "description"   => _("Namespace rule to create user folders. Please read the FAQ file for more information."),
880                                 "check"         => "",
881                                 "migrate"       => "",
882                                 "group"         => "mail",
883                                 "mandatory"     => FALSE),
885                         array(
886                                 "name"          => "mailFolderCreation",
887                                 "type"          => "string",
888                                 "default"       => "",
889                                 "description"   => _("Namespace rule to create folders. Please read the FAQ file for more information."),
890                                 "check"         => "",
891                                 "migrate"       => "",
892                                 "group"         => "mail",
893                                 "mandatory"     => FALSE),
895                         array(
896                                 "name"          => "imapTimeout",
897                                 "type"          => "integer",
898                                 "default"       => 10,
899                                 "description"   => _("Seconds after an IMAP connection is considered dead."),
900                                 "check"         => "gosaProperty::isInteger",
901                                 "migrate"       => "",
902                                 "group"         => "mail",
903                                 "mandatory"     => FALSE),
905                         array(
906                                 "name"          => "mailMethod",
907                                 "type"          => "switch",
908                                 "default"       => "",
909                                 "defaults"      => "core::getPropertyValues",
910                                 "description"   => _("Class name of the mail method to be used."),
911                                 "check"         => "",
912                                 "migrate"       => "",
913                                 "group"         => "mail",
914                                 "mandatory"     => FALSE),
916                         array(
917                                 "name"          => "cyrusUseSlashes",
918                                 "type"          => "bool",
919                                 "default"       => "true",
920                                 "description"   => _("Enable slashes instead of dots as a name space separator for Cyrus IMAP."),
921                                 "check"         => "gosaProperty::isBool",
922                                 "migrate"       => "",
923                                 "group"         => "mail",
924                                 "mandatory"     => FALSE),
926                         array(
927                                 "name"          => "vacationTemplateDirectory",
928                                 "type"          => "path",
929                                 "default"       => "/etc/gosa/vacation",
930                                 "description"   => _("Directory to store vacation templates. Please read the FAQ file for more information."),
931                                 "check"         => "gosaProperty::isWriteablePath",
932                                 "migrate"       => "",
933                                 "group"         => "mail",
934                                 "mandatory"     => FALSE),
936                         array(
937                                 "name"          => "ldapTLS",
938                                 "type"          => "bool",
939                                 "default"       => "false",
940                                 "description"   => _("Enable TLS for LDAP connections."),
941                                 "check"         => "gosaProperty::isBool",
942                                 "migrate"       => "",
943                                 "group"         => "security",
944                                 "mandatory"     => TRUE),
946                         array(
947                                 "name"          => "honourIvbbAttributes",
948                                 "type"          => "bool",
949                                 "default"       => "false",
950                                 "description"   => _("Enable IVBB used by german authorities."),
951                                 "check"         => "gosaProperty::isBool",
952                                 "migrate"       => "",
953                                 "group"         => "core",
954                                 "mandatory"     => FALSE),
956                         array(
957                                 "name"          => "sambaIdMapping",
958                                 "type"          => "bool",
959                                 "default"       => "false",
960                                 "description"   => _("Maintain sambaIdmapEntry objects to improve performance on some Samba versions."),
961                                 "check"         => "gosaProperty::isBool",
962                                 "migrate"       => "",
963                                 "group"         => "samba",
964                                 "mandatory"     => FALSE),
966                         array(
967                                 "name"          => "handleExpiredAccounts",
968                                 "type"          => "bool",
969                                 "default"       => "true",
970                                 "description"   => _("Enable checks to determine whether an account is expired or not."),
971                                 "check"         => "gosaProperty::isBool",
972                                 "migrate"       => "",
973                                 "group"         => "core",
974                                 "mandatory"     => FALSE),
976                         array(
977                                 "name"          => "sambaSID",
978                                 "type"          => "string",
979                                 "default"       => "",
980                                 "description"   => _("String containing the SID for Samba setups without the Domain object in LDAP."),
981                                 "check"         => "",
982                                 "migrate"       => "",
983                                 "group"         => "samba",
984                                 "mandatory"     => FALSE),
986                         array(
987                                 "name"          => "sambaRidBase",
988                                 "type"          => "integer",
989                                 "default"       => "",
990                                 "description"   => _("String containing the RID base for Samba setups without the Domain object in LDAP."),
991                                 "check"         => "gosaProperty::isInteger",
992                                 "migrate"       => "",
993                                 "group"         => "samba",
994                                 "mandatory"     => FALSE),
996                         array(
997                                 "name"          => "enableSnapshots",
998                                 "type"          => "bool",
999                                 "default"       => "false",
1000                                 "description"   => _("Enable manual object snapshots."),
1001                                 "check"         => "gosaProperty::isBool",
1002                                 "migrate"       => "",
1003                                 "group"         => "snapshot",
1004                                 "mandatory"     => TRUE),
1006                         array(
1007                                 "name"          => "snapshotBase",
1008                                 "type"          => "dn",
1009                                 "default"       => "ou=snapshots,dc=localhost,dc=de",
1010                                 "description"   => _("Base DN for snapshot storage."),
1011                                 "check"         => "gosaProperty::isDn",
1012                                 "migrate"       => "",
1013                                 "group"         => "snapshot",
1014                                 "mandatory"     => FALSE),
1016                         array(
1017                                 "name"          => "snapshotAdminDn",
1018                                 "type"          => "dn",
1019                                 "default"       => "cn=admin,dc=localhost,dc=de",
1020                                 "description"   => _("DN of the snapshot administrator."),
1021                                 "check"         => "gosaProperty::isDn",
1022                                 "migrate"       => "",
1023                                 "group"         => "snapshot",
1024                                 "mandatory"     => FALSE),
1026                         array(
1027                                 "name"          => "snapshotAdminPassword",
1028                                 "type"          => "string",
1029                                 "default"       => "secret",
1030                                 "description"   => _("Password of the snapshot administrator."),
1031                                 "check"         => "",
1032                                 "migrate"       => "",
1033                                 "group"         => "snapshot",
1034                                 "mandatory"     => FALSE),
1036                         array(
1037                                 "name"          => "idAllocationMethod",
1038                                 "type"          => "switch",
1039                                 "default"       => "traditional",
1040                                 "defaults"      => "core::getPropertyValues",
1041                                 "description"   => _("Method for user and group ID generation. Note: only the 'traditional' method is safe due to PHP limitations."),
1042                                 "check"         => "",
1043                                 "migrate"       => "",
1044                                 "group"         => "id",
1045                                 "mandatory"     => TRUE),
1046                         array(
1047                                 "name"          => "snapshotURI",
1048                                 "type"          => "uri",
1049                                 "default"       => "ldap://localhost:389",
1050                                 "description"   => _("URI of server to be used for snapshots."),
1051                                 "check"         => "",
1052                                 "migrate"       => "",
1053                                 "group"         => "snapshot",
1054                                 "mandatory"     => FALSE)
1055                             )));
1056     }
1058 ?>