patching GOsa for seamless eGroupWare integration
"-------- Original-Nachricht --------" Betreff: Re: [GOsa] gosa+samba3.schema conflicts with evolutionPerson.schema Datum: Tue, 5 Jun 2007 15:23:31 +0200 Von: Cajus Pollmeier <pollmeier@gonicus.de> An: GONICUS site administration project <gosa@oss.gonicus.de> These are from two different RFCs, I guess. Bad luck. GOsa uses dateOfBirth internally. So, the simpliest way would be to remove the definition from the gosa+samba3.schema and add the alias 'dateOfBirth' to the evolutionPerson.schema's definition. I can't tell you if they store it in the suggested way. They use a maximum size of 128, strange. Just try it. Am Dienstag 05 Juni 2007 15:05:35 schrieb Christoph Haas: > the gosa+samba3.schema conflicts with the evolutionPerson.schema, which > I need also quite urgently in the attributetype 'dob'. > > gosa+samba3.schema > --- snip --- > attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) > DESC 'Date of birth in ISO 8601 format' > EQUALITY caseIgnoreMatch > SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} > SINGLE-VALUE ) > --- snap --- > > evolutionPerson.schema: > --- snip --- > attributetype ( 1.3.6.1.4.1.8506.1.2.11 > NAME ( 'birthDate' 'dob' ) > EQUALITY caseIgnoreMatch > SUBSTR caseIgnoreSubstringsMatch > SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} ) > --- snap --- > > is there a way for me to modify the objectclass 'gosaAccount', so that > it utilizes in the MAY-section the birthDate from the > evolutionPerson.schema instead? > > --- snip --- > objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.6 NAME 'gosaAccount' SUP top > AUXILIARY > DESC 'Objectclass for GOsa Accounts (v2.4)' > MUST ( uid ) > MAY ( sambaLMPassword $ sambaNTPassword $ sambaPwdLastSet $ > gosaDefaultPrinter $gosaDefaultLanguage $ academicTitle $ > personalTitle $ gosaHostACL $ dateOfBirth $ > sambaBadPasswordCount $ sambaBadPasswordTime $ gender )) > --- snip --- > > Thanks and cheers > Christoph. -- * Dipl.-Ing. Cajus Pollmeier <pollmeier@GONICUS.de> * GONICUS GmbH * Stahlgruberring 54 * D-81829 München * Tel.:+49(0)89 / 12 02 12 79 - 0 * Fax.:+49 (0)29 32 /9 16-223 * http://www.GONICUS.de * * Sitz der Gesellschaft: Moehnestrasse 11-17 * D-59755 Arnsberg * Geschaeftsfuehrer: Rainer Luelsdorf, Alfred Schroeder * Vorsitzender des Beirats: Juergen Michels * Amtsgericht Arnsberg * HRB 1968
So I ended up in patching GOsa, since I didn't know whether eGroupWare also uses birthDate internally in the MySQL-database …
Basically it's just replacing in GOsa and it's corresponding ldap-schemas „dateOfBirth“ with „birthDate“. The patches below were generated from GOsa 2.5.11a. Be careful, if newer GOsa-versions need to be patched on other places too!
gosa-ldapschema2egw_addressbook.patch:
--- /etc/openldap/schema/gosa/gosa.schema.org 2007-03-23 14:00:00.000000000 +0100 +++ /etc/openldap/schema/gosa/gosa.schema 2007-06-05 17:15:00.000000000 +0200 @@ -234,11 +234,11 @@ attributetype ( 1.3.6.1.4.1.15305.2.1 NA SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1} SINGLE-VALUE ) -attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) - DESC 'Date of birth in ISO 8601 format' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} - SINGLE-VALUE ) +#attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) +# DESC 'Date of birth in ISO 8601 format' +# EQUALITY caseIgnoreMatch +# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} +# SINGLE-VALUE ) # cyrus imapd access control list # acls work with users and groups @@ -277,7 +277,7 @@ objectclass ( 1.3.6.1.4.1.10098.1.2.1.19 DESC 'Objectclass for GOsa Accounts (v2.4)' MUST ( uid ) MAY ( lmPassword $ ntPassword $ pwdLastSet $ gosaDefaultPrinter $ gosaDefaultLanguage $ - academicTitle $ personalTitle $ gosaHostACL $ dateOfBirth $ gender )) + academicTitle $ personalTitle $ gosaHostACL $ birthDate $ gender )) objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.7 NAME 'gosaHost' SUP top AUXILIARY DESC 'Objectclass for GOsa Hosts (v2.4)' --- /etc/openldap/schema/gosa/gosa+samba3.schema.org 2007-03-23 14:00:00.000000000 +0100 +++ /etc/openldap/schema/gosa/gosa+samba3.schema 2007-06-05 17:16:00.000000000 +0200 @@ -236,11 +236,11 @@ attributetype ( 1.3.6.1.4.1.15305.2.1 NA SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1} SINGLE-VALUE ) -attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) - DESC 'Date of birth in ISO 8601 format' - EQUALITY caseIgnoreMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} - SINGLE-VALUE ) +#attributetype ( 1.3.6.1.4.1.15305.2.2 NAME ( 'dateOfBirth' 'dob' ) +# DESC 'Date of birth in ISO 8601 format' +# EQUALITY caseIgnoreMatch +# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{10} +# SINGLE-VALUE ) # cyrus imapd access control list # acls work with users and groups @@ -279,7 +279,7 @@ objectclass ( 1.3.6.1.4.1.10098.1.2.1.19 DESC 'Objectclass for GOsa Accounts (v2.4)' MUST ( uid ) MAY ( sambaLMPassword $ sambaNTPassword $ sambaPwdLastSet $ gosaDefaultPrinter $ - gosaDefaultLanguage $ academicTitle $ personalTitle $ gosaHostACL $ dateOfBirth $ + gosaDefaultLanguage $ academicTitle $ personalTitle $ gosaHostACL $ birthDate $ sambaBadPasswordCount $ sambaBadPasswordTime $ gender )) objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.7 NAME 'gosaHost' SUP top AUXILIARY
gosa2egw_addressbook.patch:
--- gosa/html/getxls.php.org 2006-09-08 10:10:05.000000000 +0200 +++ gosa/html/getxls.php 2007-06-05 17:20:56.000000000 +0200 @@ -61,7 +61,7 @@ function dump_ldap ($mode= 0) switch ($d){ case "ou=people," : - $user= $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $user= $ldap->gen_xls($dn,"(objectClass=*)",array("uid","birthDate","gender","givenName","preferredLanguage")); $intitul=array(_("Birthday").":", _("Sex").":", _("Surname")."/"._("Given name").":",_("Language").":"); //name of the xls file @@ -220,7 +220,7 @@ function dump_ldap ($mode= 0) $dn = base64_decode($_GET['dn']); //data about users - $user= $ldap->gen_xls("ou=people,".$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $user= $ldap->gen_xls("ou=people,".$dn,"(objectClass=*)",array("uid","birthDate","gender","givenName","preferredLanguage")); $user_intitul=array(_("Day of birth").":",_("Sex").":",_("Surname")."/"._("Given name").":",_("Language").":"); //data about groups $groups= $ldap->gen_xls("ou=groups,".$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); --- gosa/plugins/personal/generic/generic.tpl.org 2006-08-11 12:43:05.000000000 +0200 +++ gosa/plugins/personal/generic/generic.tpl 2007-06-05 17:09:00.000000000 +0200 @@ -85,19 +85,19 @@ <td> <div style="height:10px;"></div> {if $use_dob eq 1} - <select id="day" name=day onChange="createResult(this.form,this.form.dateOfBirth);" {$dateOfBirthACL}> + <select id="day" name=day onChange="createResult(this.form,this.form.birthDate);" {$birthDateACL}> {html_options values=$days output=$days selected=$day} </select> - <select name=month onChange="populate(this.form,this.form.dateOfBirth);" {$dateOfBirthACL}> + <select name=month onChange="populate(this.form,this.form.birthDate);" {$birthDateACL}> {html_options options=$months selected=$month} </select> - <select name=year onChange="populate(this.form,this.form.dateOfBirth);" {$dateOfBirthACL}> + <select name=year onChange="populate(this.form,this.form.birthDate);" {$birthDateACL}> {html_options values=$years output=$years selected=$year} </select> - <input type="hidden" name="dateOfBirth" value="{$dateOfBirth}"> - <input type="submit" name="set_dob" value="-" {$dateOfBirthACL}> + <input type="hidden" name="birthDate" value="{$birthDate}"> + <input type="submit" name="set_dob" value="-" {$birthDateACL}> {else} - <input type="submit" name="set_dob" value="{t}Set{/t}" {$dateOfBirthACL}> + <input type="submit" name="set_dob" value="{t}Set{/t}" {$birthDateACL}> {/if} </td> </tr> @@ -434,7 +434,7 @@ <!-- // First input field on page document.mainform.sn.focus(); if (document.mainform.yearSel != "") - populate(document.mainform,document.mainform.dateOfBirth); + populate(document.mainform,document.mainform.birthDate); --> </script> --- gosa/plugins/personal/mail/class_mailAccount.inc.org 2007-05-04 13:30:35.000000000 +0200 +++ gosa/plugins/personal/mail/class_mailAccount.inc 2007-06-05 17:09:44.000000000 +0200 @@ -441,9 +441,9 @@ class mailAccount extends plugin $attrs= $this->parent->by_object['user']->attributes; foreach ($attrs as $val){ - if(preg_match("/dateOfBirth/",$val)){ + if(preg_match("/birthDate/",$val)){ if($this->parent->by_object['user']->use_dob){ - $contents= preg_replace("/%$val/",date("Y-d-m",$this->parent->by_object['user']->dateOfBirth),$contents); + $contents= preg_replace("/%$val/",date("Y-d-m",$this->parent->by_object['user']->birthDate),$contents); } }else { $contents= preg_replace("/%$val/", --- gosa/plugins/personal/connectivity/class_opengwAccount.inc.org 2007-01-29 14:59:42.000000000 +0100 +++ gosa/plugins/personal/connectivity/class_opengwAccount.inc 2007-06-05 17:07:44.000000000 +0200 @@ -18,7 +18,7 @@ class opengwAccount extends plugin "firstname" =>"givenName", "login" =>"uid", "degree" =>"academicTitle", - "birthday" =>"dateOfBirth", + "birthday" =>"birthDate", "sex" =>"gender", "street" =>"street", "zip" =>"postalCode", --- gosa/plugins/personal/generic/class_user.inc.org 2007-06-04 07:07:44.000000000 +0200 +++ gosa/plugins/personal/generic/class_user.inc 2007-06-05 17:08:19.000000000 +0200 @@ -39,7 +39,7 @@ class user extends plugin var $l= ""; var $st= ""; var $postalAddress= ""; - var $dateOfBirth; + var $birthDate; var $use_dob= "0"; var $gender="0"; var $preferredLanguage="0"; @@ -82,7 +82,7 @@ class user extends plugin /* attribute list for save action */ var $attributes= array("sn", "givenName", "uid", "personalTitle", "academicTitle", - "homePostalAddress", "homePhone", "labeledURI", "ou", "o", "dateOfBirth", "gender","preferredLanguage", + "homePostalAddress", "homePhone", "labeledURI", "ou", "o", "birthDate", "gender","preferredLanguage", "departmentNumber", "employeeNumber", "employeeType", "l", "st","jpegPhoto", "roomNumber", "telephoneNumber", "mobile", "pager", "cn", "userPKCS12", "postalAddress", "facsimileTelephoneNumber", "userSMIMECertificate"); @@ -184,12 +184,12 @@ class user extends plugin $this->last_pw_storage= $this->pw_storage; } - /* Generate dateOfBirth entry */ - if (isset ($this->attrs['dateOfBirth'])){ + /* Generate birthDate entry */ + if (isset ($this->attrs['birthDate'])){ /* This entry is ISO 8601 conform */ - list($year, $month, $day)= split("-", $this->attrs['dateOfBirth'][0], 3); + list($year, $month, $day)= split("-", $this->attrs['birthDate'][0], 3); - $this->dateOfBirth=array( 'mon'=> $month,"mday"=> $day,"year"=> $year); + $this->birthDate=array( 'mon'=> $month,"mday"=> $day,"year"=> $year); $this->use_dob= "1"; } else { $this->use_dob= "0"; @@ -213,18 +213,18 @@ class user extends plugin $smarty= get_smarty(); /* Fill calendar */ - if ($this->dateOfBirth == "0"){ + if ($this->birthDate == "0"){ $date= getdate(); } else { - if(is_array($this->dateOfBirth)){ - $date = $this->dateOfBirth; + if(is_array($this->birthDate)){ + $date = $this->birthDate; // Trigger on dates like 1985-04-01, getdate only understands timestamps - } else if (!empty($this->dateOfBirth) && !is_numeric($this->dateOfBirth)){ - $date= getdate(strtotime($this->dateOfBirth)); + } else if (!empty($this->birthDate) && !is_numeric($this->birthDate)){ + $date= getdate(strtotime($this->birthDate)); } else { - $date = getdate($this->dateOfBirth); + $date = getdate($this->birthDate); } } @@ -355,7 +355,7 @@ class user extends plugin $this->dialog= FALSE; } - /* Toggle dateOfBirth information */ + /* Toggle birthDate information */ if (isset($_POST['set_dob'])){ $this->use_dob= ($this->use_dob == "0")?"1":"0"; } @@ -697,8 +697,8 @@ class user extends plugin if ($this->use_dob == "1"){ /* If it is an array, the generic page has never been loaded - so there's no difference. Using an array would cause an error btw. */ - if(!is_array($this->attrs['dateOfBirth'])) { - $this->attrs['dateOfBirth']= date("Y-m-d", $this->attrs['dateOfBirth']); + if(!is_array($this->attrs['birthDate'])) { + $this->attrs['birthDate']= date("Y-m-d", $this->attrs['birthDate']); } } /* Remove additional objectClasses */ @@ -759,12 +759,12 @@ class user extends plugin $remove_userCertificate= true; } - /* Special handling for dateOfBirth value */ + /* Special handling for birthDate value */ if ($this->use_dob != "1"){ if ($this->new) { - unset($this->attrs["dateOfBirth"]); + unset($this->attrs["birthDate"]); } else { - $this->attrs["dateOfBirth"]= array(); + $this->attrs["birthDate"]= array(); } } if (!$this->gender){
You can either patch GOsa before you build your RPM-file in patching the spec-file:
# patch -p0 < gosa.spec.patch
gosa.spec.patch:
--- gosa.spec 2007-07-18 09:22:00.000000000 +0200
+++ gosa.spec.egw 2007-07-18 09:22:16.000000000 +0200
@@ -15,6 +15,8 @@
Release: 1
License: GPL
Source: ftp://oss.GONICUS.de/pub/gosa/%{sourcename}.tar.bz2
+ Patch0: gosa-ldapschema2egw_addressbook.patch
+ Patch1: gosa2egw_addressbook.patch
URL: http://www.gosa-project.org
Group: System/Administration
Vendor: GONICUS GmbH
@@ -101,6 +103,8 @@
%prep
%setup -q -n %{sourcename}
find . -depth -name CVS -type d | xargs rm -rf
+ %patch0 -p 0
+ %patch1 -p 0
%build
or after installation:
patch -p0 < gosa2egw_addressbook.patch patch -p0 < gosa-ldap2egw_addressbook.patch
← index