61e48653345a096f9c2d87e31dd42a9fc47dd2aa
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" => '* '._("All"))),
120 "plProvidedAcls" => array())
121 );
122 }
123 }
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 $tzname => $offset){
163 if($offset >= 0){
164 $list[$tzname] = $tzname." ( + ".sprintf("%0.2f",$offset/(60*60))." "._("hours").")";
165 }else{
166 $offset = $offset * -1;
167 $list[$tzname] = $tzname." ( - ".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 $vName => $vValue){
181 $vName = preg_replace('/^mailMethod/','', $vName);
182 $list[$vName] = $vValue;
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" => "allowUidProposalModification",
500 "type" => "bool",
501 "default" => "false",
502 "description" => _("Allows to modify uid-proposals when creating a new user from a user-template."),
503 "check" => "gosaProperty::isBool",
504 "migrate" => "",
505 "group" => "core",
506 "mandatory" => FALSE),
508 array(
509 "name" => "modificationDetectionAttribute",
510 "type" => "switch",
511 "default" => "entryCSN",
512 "defaults" => "core::getPropertyValues",
513 "description" => _("LDAP attribute which is used to detect changes."),
514 "check" => "",
515 "migrate" => "",
516 "group" => "core",
517 "mandatory" => TRUE),
519 array(
520 "name" => "language",
521 "type" => "switch",
522 "default" => "",
523 "defaults" => "core::getPropertyValues",
524 "description" => _("ISO language code which is used to override the automatic language detection."),
525 "check" => "",
526 "migrate" => "",
527 "group" => "core",
528 "mandatory" => FALSE),
530 array(
531 "name" => "theme",
532 "type" => "switch",
533 "default" => "default",
534 "defaults" => "core::getPropertyValues",
535 "description" => _("CSS and template theme to be used."),
536 "check" => "",
537 "migrate" => "",
538 "group" => "visual",
539 "mandatory" => TRUE),
541 array(
542 "name" => "sessionLifetime",
543 "type" => "integer",
544 "default" => 600,
545 "description" => _("Number of seconds after an inactive session expires. This may be overridden by some systems php.ini/crontab mechanism."),
546 "check" => "gosaProperty::isInteger",
547 "migrate" => "",
548 "group" => "security",
549 "mandatory" => FALSE),
551 array(
552 "name" => "templateCompileDirectory",
553 "type" => "path",
554 "default" => "/var/spool/gosa",
555 "description" => _("Template engine compile directory."),
556 "check" => "gosaProperty::isWriteablePath",
557 "migrate" => "",
558 "group" => "core",
559 "mandatory" => TRUE),
561 array(
562 "name" => "debugLevel",
563 "type" => "integer",
564 "default" => 0,
565 "description" => sprintf(_("Logical AND of the integer values below that controls the debug output on every page load: %s"),
566 "
568 DEBUG_TRACE = 1
569 DEBUG_LDAP = 2
570 DEBUG_MYSQL = 4
571 DEBUG_SHELL = 8
572 DEBUG_POST = 16
573 DEBUG_SESSION = 32
574 DEBUG_CONFIG = 64
575 DEBUG_ACL = 128
576 DEBUG_SI = 256"),
577 "check" => "gosaProperty::isInteger",
578 "migrate" => "",
579 "group" => "debug",
580 "mandatory" => FALSE),
582 array(
583 "name" => "sambaHashHook",
584 "type" => "command",
585 "default" => "perl -MCrypt::SmbHash -e \"print join(q[:], ntlmgen %password), $/;\"",
586 "description" => _("Command to create Samba NT/LM hashes. Required for password synchronization if you don't use supplementary services."),
587 "check" => "gosaProperty::isCommand",
588 "migrate" => "",
589 "group" => "samba",
590 "mandatory" => FALSE),
592 array(
593 "name" => "passwordDefaultHash",
594 "type" => "switch",
595 "default" => "crypt/md5",
596 "defaults" => "core::getPropertyValues",
597 "description" => _("Default hash to be used for newly created user passwords."),
598 "check" => "",
599 "migrate" => "",
600 "group" => "password",
601 "mandatory" => FALSE),
602 array(
603 "name" => "strictPasswordRules",
604 "type" => "bool",
605 "default" => "true",
606 "description" => _("Enable checking for the presence of problematic unicode characters in passwords."),
607 "check" => "gosaProperty::isBool",
608 "migrate" => "",
609 "group" => "password",
610 "mandatory" => FALSE),
612 array(
613 "name" => "accountPrimaryAttribute",
614 "type" => "switch",
615 "default" => "cn",
616 "defaults" => "core::getPropertyValues",
617 "description" => _("Specify whether 'cn' or 'uid' style user DNs are generated. For more sophisticated control use the 'accountRDN' setting."),
618 "check" => "",
619 "migrate" => "",
620 "group" => "security",
621 "mandatory" => TRUE),
623 array(
624 "name" => "userRDN",
625 "type" => "rdn",
626 "default" => "ou=people,",
627 "description" => _("Location component for user storage inside of departments."),
628 "check" => "gosaProperty::isRdn",
629 "migrate" => "migrate_userRDN",
630 "group" => "user",
631 "mandatory" => FALSE),
633 array(
634 "name" => "groupRDN",
635 "type" => "rdn",
636 "default" => "ou=groups,",
637 "description" => _("Location component for group storage inside of departments."),
638 "check" => "gosaProperty::isRdn",
639 "migrate" => "migrate_groupRDN",
640 "group" => "group",
641 "mandatory" => FALSE),
643 array(
644 "name" => "gidNumberBase",
645 "type" => "integer",
646 "default" => "1000",
647 "description" => _("Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' setting."),
648 "check" => "gosaProperty::isInteger",
649 "migrate" => "",
650 "group" => "id",
651 "mandatory" => TRUE),
653 array(
654 "name" => "baseIdHook",
655 "type" => "command",
656 "default" => "",
657 "description" => _("Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' setting."),
658 "check" => "gosaProperty::isCommand",
659 "migrate" => "",
660 "group" => "id",
661 "mandatory" => FALSE),
663 array(
664 "name" => "gidNumberPoolMin",
665 "type" => "integer",
666 "default" => 10000,
667 "description" => _("Lowest 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" => "gidNumberPoolMax",
675 "type" => "integer",
676 "default" => 40000,
677 "description" => _("Highest assignable group 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" => "uidNumberPoolMin",
685 "type" => "integer",
686 "default" => 10000,
687 "description" => _("Lowest 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" => "uidNumberPoolMax",
695 "type" => "integer",
696 "default" => 40000,
697 "description" => _("Highest assignable user ID for use with the idAllocationMethod set to 'pool'."),
698 "check" => "gosaProperty::isInteger",
699 "migrate" => "",
700 "group" => "id",
701 "mandatory" => FALSE),
703 array(
704 "name" => "uidNumberBase",
705 "type" => "integer",
706 "default" => "1000",
707 "description" => _("Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' setting."),
708 "check" => "gosaProperty::isInteger",
709 "migrate" => "",
710 "group" => "id",
711 "mandatory" => FALSE),
713 array(
714 "name" => "gosaRpcServer",
715 "type" => "string",
716 "default" => "",
717 "description" => _("Connection URL for use with the gosa-ng service."),
718 "check" => "jsonRPC::testConnectionProperties",
719 "migrate" => "",
720 "group" => "rpc",
721 "mandatory" => FALSE),
723 array(
724 "name" => "gosaRpcUser",
725 "type" => "string",
726 "default" => "admin",
727 "description" => _("User name used to connect to the 'gosaRpcServer'."),
728 "check" => "",
729 "migrate" => "",
730 "group" => "rpc",
731 "mandatory" => FALSE),
733 array(
734 "name" => "gosaRpcPassword",
735 "type" => "string",
736 "default" => "tester",
737 "description" => _("Password used to connect to the 'gosaRpcServer'."),
738 "check" => "",
739 "migrate" => "",
740 "group" => "rpc",
741 "mandatory" => FALSE),
743 array(
744 "name" => "gosaSupportURI",
745 "type" => "string",
746 "default" => "",
747 "description" => _("Connection URI for use with the gosa-si service (obsolete)."),
748 "check" => "",
749 "migrate" => "",
750 "group" => "gosa-si",
751 "mandatory" => FALSE),
753 array(
754 "name" => "gosaSupportTimeout",
755 "type" => "integer",
756 "default" => 15,
757 "description" => _("Number of seconds after a gosa-si connection is considered 'dead'."),
758 "check" => "gosaProperty::isInteger",
759 "migrate" => "",
760 "group" => "gosa-si",
761 "mandatory" => FALSE),
763 array(
764 "name" => "loginAttribute",
765 "type" => "switch",
766 "default" => "uid",
767 "defaults" => "core::getPropertyValues",
768 "description" => _("User attribute which is used for log in."),
769 "check" => "",
770 "migrate" => "",
771 "group" => "security",
772 "mandatory" => TRUE),
774 array(
775 "name" => "timezone",
776 "type" => "switch",
777 "default" => "",
778 "defaults" => "core::getPropertyValues",
779 "description" => _("Local time zone."),
780 "check" => "",
781 "migrate" => "",
782 "group" => "core",
783 "mandatory" => FALSE),
785 array(
786 "name" => "honourUnitTags",
787 "type" => "bool",
788 "default" => "false",
789 "description" => _("Enable tagging of administrative units. This can be used in conjunction with ACLs (obsolete)."),
790 "check" => "",
791 "migrate" => "",
792 "group" => "core",
793 "mandatory" => FALSE),
795 array(
796 "name" => "useSaslForKerberos",
797 "type" => "bool",
798 "default" => "true",
799 "description" => _("Enable the use of {sasl} instead of {kerberos} for user realms."),
800 "check" => "gosaProperty::isBool",
801 "migrate" => "",
802 "group" => "password",
803 "mandatory" => FALSE),
805 array(
806 "name" => "rfc2307bis",
807 "type" => "bool",
808 "default" => "false",
809 "description" => _("Enable RFC 2307bis style groups. This combines the use of 'member' and 'memberUid' attributes."),
810 "check" => "gosaProperty::isBool",
811 "migrate" => "",
812 "group" => "core",
813 "mandatory" => FALSE),
815 array(
816 "name" => "personalTitleInDN",
817 "type" => "bool",
818 "default" => "false",
819 "description" => _("Adjusts the user DN generation to include the users personal title (only in conjunction with accountPrimaryAttribute)."),
820 "check" => "gosaProperty::isBool",
821 "migrate" => "",
822 "group" => "storage location",
823 "mandatory" => FALSE),
825 array(
826 "name" => "nextIdHook",
827 "type" => "command",
828 "default" => "",
829 "description" => _("Script to be called for finding the next free id for groups or users."),
830 "check" => "gosaProperty::isCommand",
831 "migrate" => "",
832 "group" => "id",
833 "mandatory" => FALSE),
834 array(
835 "name" => "idGenerator",
836 "type" => "string",
837 "default" => "{%sn}-{%givenName[2-4]}",
838 "description" => _("Descriptive string for the automatic ID generator. Please read the FAQ file for more information."),
839 "check" => "",
840 "migrate" => "",
841 "group" => "core",
842 "mandatory" => FALSE),
844 array(
845 "name" => "strictNamingRules",
846 "type" => "bool",
847 "default" => "true",
848 "description" => _("Enable strict checking for user IDs and group names."),
849 "check" => "gosaProperty::isBool",
850 "migrate" => "",
851 "group" => "core",
852 "mandatory" => FALSE),
854 array(
855 "name" => "minId",
856 "type" => "integer",
857 "default" => 40,
858 "description" => _("Lowest assignable user or group ID. Only active if idAllocationMethod is set to 'traditional'."),
859 "check" => "gosaProperty::isInteger",
860 "migrate" => "",
861 "group" => "id",
862 "mandatory" => FALSE),
864 array(
865 "name" => "mailAttribute",
866 "type" => "switch",
867 "default" => "mail",
868 "defaults" => "core::getPropertyValues",
869 "description" => _("Attribute to be used for primary mail addresses."),
870 "check" => "",
871 "migrate" => "",
872 "group" => "mail",
873 "mandatory" => FALSE),
875 array(
876 "name" => "gosaSharedPrefix",
877 "type" => "string",
878 "default" => "",
879 "description" => _("Namespace used for shared folders."),
880 "check" => "",
881 "migrate" => "",
882 "group" => "mail",
883 "mandatory" => FALSE),
885 array(
886 "name" => "mailUserCreation",
887 "type" => "string",
888 "default" => "",
889 "description" => _("Namespace rule to create user folders. Please read the FAQ file for more information."),
890 "check" => "",
891 "migrate" => "",
892 "group" => "mail",
893 "mandatory" => FALSE),
895 array(
896 "name" => "mailFolderCreation",
897 "type" => "string",
898 "default" => "",
899 "description" => _("Namespace rule to create folders. Please read the FAQ file for more information."),
900 "check" => "",
901 "migrate" => "",
902 "group" => "mail",
903 "mandatory" => FALSE),
905 array(
906 "name" => "imapTimeout",
907 "type" => "integer",
908 "default" => 10,
909 "description" => _("Seconds after an IMAP connection is considered dead."),
910 "check" => "gosaProperty::isInteger",
911 "migrate" => "",
912 "group" => "mail",
913 "mandatory" => FALSE),
915 array(
916 "name" => "mailMethod",
917 "type" => "switch",
918 "default" => "",
919 "defaults" => "core::getPropertyValues",
920 "description" => _("Class name of the mail method to be used."),
921 "check" => "",
922 "migrate" => "",
923 "group" => "mail",
924 "mandatory" => FALSE),
926 array(
927 "name" => "cyrusUseSlashes",
928 "type" => "bool",
929 "default" => "true",
930 "description" => _("Enable slashes instead of dots as a name space separator for Cyrus IMAP."),
931 "check" => "gosaProperty::isBool",
932 "migrate" => "",
933 "group" => "mail",
934 "mandatory" => FALSE),
936 array(
937 "name" => "vacationTemplateDirectory",
938 "type" => "path",
939 "default" => "/etc/gosa/vacation",
940 "description" => _("Directory to store vacation templates. Please read the FAQ file for more information."),
941 "check" => "gosaProperty::isWriteablePath",
942 "migrate" => "",
943 "group" => "mail",
944 "mandatory" => FALSE),
946 array(
947 "name" => "ldapTLS",
948 "type" => "bool",
949 "default" => "false",
950 "description" => _("Enable TLS for LDAP connections."),
951 "check" => "gosaProperty::isBool",
952 "migrate" => "",
953 "group" => "security",
954 "mandatory" => TRUE),
956 array(
957 "name" => "honourIvbbAttributes",
958 "type" => "bool",
959 "default" => "false",
960 "description" => _("Enable IVBB used by german authorities."),
961 "check" => "gosaProperty::isBool",
962 "migrate" => "",
963 "group" => "core",
964 "mandatory" => FALSE),
966 array(
967 "name" => "sambaIdMapping",
968 "type" => "bool",
969 "default" => "false",
970 "description" => _("Maintain sambaIdmapEntry objects to improve performance on some Samba versions."),
971 "check" => "gosaProperty::isBool",
972 "migrate" => "",
973 "group" => "samba",
974 "mandatory" => FALSE),
976 array(
977 "name" => "handleExpiredAccounts",
978 "type" => "bool",
979 "default" => "true",
980 "description" => _("Enable checks to determine whether an account is expired or not."),
981 "check" => "gosaProperty::isBool",
982 "migrate" => "",
983 "group" => "core",
984 "mandatory" => FALSE),
986 array(
987 "name" => "sambaSID",
988 "type" => "string",
989 "default" => "",
990 "description" => _("String containing the SID for Samba setups without the Domain object in LDAP."),
991 "check" => "",
992 "migrate" => "",
993 "group" => "samba",
994 "mandatory" => FALSE),
996 array(
997 "name" => "sambaRidBase",
998 "type" => "integer",
999 "default" => "",
1000 "description" => _("String containing the RID base for Samba setups without the Domain object in LDAP."),
1001 "check" => "gosaProperty::isInteger",
1002 "migrate" => "",
1003 "group" => "samba",
1004 "mandatory" => FALSE),
1006 array(
1007 "name" => "enableSnapshots",
1008 "type" => "bool",
1009 "default" => "false",
1010 "description" => _("Enable manual object snapshots."),
1011 "check" => "gosaProperty::isBool",
1012 "migrate" => "",
1013 "group" => "snapshot",
1014 "mandatory" => TRUE),
1016 array(
1017 "name" => "snapshotBase",
1018 "type" => "dn",
1019 "default" => "ou=snapshots,dc=localhost,dc=de",
1020 "description" => _("Base DN for snapshot storage."),
1021 "check" => "gosaProperty::isDn",
1022 "migrate" => "",
1023 "group" => "snapshot",
1024 "mandatory" => FALSE),
1026 array(
1027 "name" => "snapshotAdminDn",
1028 "type" => "dn",
1029 "default" => "cn=admin,dc=localhost,dc=de",
1030 "description" => _("DN of the snapshot administrator."),
1031 "check" => "gosaProperty::isDn",
1032 "migrate" => "",
1033 "group" => "snapshot",
1034 "mandatory" => FALSE),
1036 array(
1037 "name" => "snapshotAdminPassword",
1038 "type" => "string",
1039 "default" => "secret",
1040 "description" => _("Password of the snapshot administrator."),
1041 "check" => "",
1042 "migrate" => "",
1043 "group" => "snapshot",
1044 "mandatory" => FALSE),
1046 array(
1047 "name" => "idAllocationMethod",
1048 "type" => "switch",
1049 "default" => "traditional",
1050 "defaults" => "core::getPropertyValues",
1051 "description" => _("Method for user and group ID generation. Note: only the 'traditional' method is safe due to PHP limitations."),
1052 "check" => "",
1053 "migrate" => "",
1054 "group" => "id",
1055 "mandatory" => TRUE),
1056 array(
1057 "name" => "snapshotURI",
1058 "type" => "uri",
1059 "default" => "ldap://localhost:389",
1060 "description" => _("URI of server to be used for snapshots."),
1061 "check" => "",
1062 "migrate" => "",
1063 "group" => "snapshot",
1064 "mandatory" => FALSE),
1065 array(
1066 "name" => "forceTranslit",
1067 "type" => "bool",
1068 "default" => "false",
1069 "description" => _("Enable transliteration of cyrillic characters for UID generation."),
1070 "check" => "gosaProperty::isBool",
1071 "migrate" => "",
1072 "group" => "core",
1073 "mandatory" => TRUE)
1074 )));
1075 }
1076 }
1077 ?>