diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-update mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-update --- e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-update 2008-04-01 10:44:02.000000000 -0600 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/events/actions/ldap-update 2008-04-01 10:42:02.000000000 -0600 @@ -42,6 +42,10 @@ exit(0); } +my $hostname = $c->get('SystemName') + || die("Couldn't determine system name"); + $hostname = $hostname->value; + my $domain = $c->get('DomainName') || die("Couldn't determine domain name"); $domain = $domain->value; @@ -114,6 +118,9 @@ utf8::upgrade($city); my $street = $acct->prop('Street') || ''; utf8::upgrade($street); + my $freebusy = $acct->prop('FreeBusy') || + 'https://'.$hostname.'.'.$domain.'/horde/kronolith/fb.php?u='.$key.'@'.$domain; + utf8::upgrade($freebusy); push @attrs, (objectClass => ['person', 'organizationalPerson', 'inetOrgPerson']); @@ -128,6 +135,7 @@ push @attrs, (ou => $dept) unless $dept =~ /^\s*$/; push @attrs, (l => $city) unless $city =~ /^\s*$/; push @attrs, (street => $street) unless $street =~ /^\s*$/; + push @attrs, (calFBURL => $freebusy) unless $freebusy =~ /^\s*$/; } elsif ($type eq 'group') { diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/useraccounts mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/useraccounts --- e-smith-base+ldap-4.19.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/useraccounts 2008-03-26 10:49:00.000000000 -0600 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/useraccounts 2008-04-01 10:42:02.000000000 -0600 @@ -377,4 +377,19 @@ An error occurred while trying to delete the user. + + FREEBUSY_URL + Calendar Free/Busy URL + + + FREEBUSY_DESCRIPTION + + + https://www.domain.com/horde/kronolith/fb.php?u=user%40domain.com.  Note: + %40 translates to the @ character.
+

+ ]]> +
+
diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/etc/openldap/slapd.conf/10schema mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/etc/openldap/slapd.conf/10schema --- e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/etc/openldap/slapd.conf/10schema 2008-04-01 10:44:03.000000000 -0600 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/templates/etc/openldap/slapd.conf/10schema 2008-04-01 10:43:46.000000000 -0600 @@ -5,4 +5,5 @@ include /etc/openldap/schema/nis.schema include /etc/openldap/schema/redhat/rfc822-MailMember.schema include /etc/openldap/schema/redhat/autofs.schema +include /etc/openldap/schema/rfc2739.schema include /etc/openldap/schema/samba.schema diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/e-smith/web/functions/useraccounts mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/web/functions/useraccounts --- e-smith-base+ldap-4.19.1/root/etc/e-smith/web/functions/useraccounts 2007-01-19 14:33:22.000000000 -0700 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/e-smith/web/functions/useraccounts 2008-04-01 10:42:02.000000000 -0600 @@ -213,6 +213,11 @@ > + + + FREEBUSY_DESCRIPTION + diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/etc/openldap/schema/rfc2739.schema mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/openldap/schema/rfc2739.schema --- e-smith-base+ldap-4.19.1/root/etc/openldap/schema/rfc2739.schema 1969-12-31 17:00:00.000000000 -0700 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/etc/openldap/schema/rfc2739.schema 2008-04-01 10:42:02.000000000 -0600 @@ -0,0 +1,98 @@ +# +# http://www.faqs.org/rfcs/rfc2739.html +# +# From the RFC: +# The calCalURI contains the URI to a snapshot of the user's entire +# default calendar. The calFBURL contains the URI to the user's default +# busy time data. The calCAPURI represents contains a URI that can be +# used to communicate with the user's calendar. The calCalAdrURI +# contains a URI that points to the location to which event requests +# should be sent for that user. +# +# The calOtherCalURIs is a multi-valued property containing URIs to +# snapshots of other calendars that the user may have. The +# calOtherFBURLs is a multi-valued property containing URIs to other +# free/busy data that the user may have. The calOtherCAPURIs attribute +# is a multi-valued property containing URIs to other calendars that +# the user may have. The calOtherCalAdrURIs attribute is a multi-valued +# property containing URIs to other locations that a user may want +# event requests sent to. +# +# There is no predetermined order to the values in either multi-valued +# property. + +# EQUALITY caseIgnoreIA5Match + +attribute (1.2.840.113556.1.4.478 + NAME 'calCalURI' + DESC 'Snapshot of users entire default calendar' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.479 + NAME 'calFBURL' + DESC 'URI of the uses free and busy information' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.480 + NAME 'calCAPURI' + DESC 'URI used to communicate with the users calendar' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.481 + NAME 'calCalAdrURI' + DESC 'URI to which event requests should be sent for the user' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.482 + NAME 'calOtherCalURIs' + DESC 'URIs to non-default calendars belonging to the user' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.483 + NAME 'calOtherFBURLs' + DESC 'URIs to non-default free and busy information files' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.484 + NAME 'calOtherCAPURIs' + DESC 'URIs for communicating with non-default calendars' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +attribute (1.2.840.113556.1.4.485 + NAME 'calOtherCalAdrURIs' + DESC 'Destinations for event requests to non-default calendars' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + ) + +objectclass (1.2.840.113556.1.5.87 + NAME 'calEntry' + DESC 'Calendering and Free Busy information' + SUP top AUXILIARY + MAY (calCalURI $ calFBURL $ calCAPURI $ calCalAdrURI $ + calOtherCalURIs $ calOtherFBURLs $ calOtherCAPURIs $ + calOtherCalAdrURIs + ) + ) diff -Nur -x '*.orig' -x '*.rej' e-smith-base+ldap-4.19.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/useraccounts.pm mezzanine_patched_e-smith-base+ldap-4.19.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/useraccounts.pm --- e-smith-base+ldap-4.19.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/useraccounts.pm 2008-03-26 10:49:00.000000000 -0600 +++ mezzanine_patched_e-smith-base+ldap-4.19.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/useraccounts.pm 2008-04-01 10:42:02.000000000 -0600 @@ -54,6 +54,7 @@ print_save_or_add_button get_pptp_value print_ipsec_client_section + get_prop system_password_compare system_valid_password @@ -283,6 +283,9 @@ my $fwd = $cgi->param('ForwardAddress') ? $cgi->param('ForwardAddress') : ($rec ? ($rec->prop('ForwardAddress')) : ''); + my $fb = $cgi->param('FreeBusy') ? + $cgi->param('FreeBusy') : + ($rec ? ($rec->prop('FreeBusy')) : ''); my $pptp = $cgi->param('VPNClientAccess') ? $cgi->param('VPNClientAccess') : ($rec ? ($rec->prop('VPNClientAccess')) : 'no'); @@ -296,6 +299,7 @@ $cgi->param(-name=>'Phone', -value=>$phone); $cgi->param(-name=>'EmailForward', -value=>$emf); $cgi->param(-name=>'ForwardAddress', -value=>$fwd); + $cgi->param(-name=>'FreeBusy', -value=>$fb); $cgi->param(-name=>'VPNClientAccess', -value=>$pptp); } else { print qq( @@ -752,6 +756,7 @@ 'Street' => $self->{cgi}->param('Street'), 'EmailForward' => $self->{cgi}->param('EmailForward'), 'ForwardAddress' => $self->{cgi}->param('ForwardAddress'), + 'FreeBusy' => $self->{cgi}->param('FreeBusy'), 'VPNClientAccess'=> $self->{cgi}->param('VPNClientAccess'), ); $acct->merge_props(%newProperties); @@ -807,7 +812,7 @@ my %userprops; foreach my $field ( qw( FirstName LastName Phone Company Dept - City Street EmailForward ForwardAddress VPNClientAccess) ) + City Street EmailForward ForwardAddress FreeBusy VPNClientAccess) ) { $userprops{$field} = $q->param($field); } @@ -1108,6 +1109,20 @@ } +=head2 get_prop ITEM PROP + +A simple accessor for esmith::ConfigDB::Record::prop + +=cut + +sub get_prop +{ + my ($fm, $item, $prop, $default) = @_; + + return $configdb->get_prop($item, $prop) || $default; +} + + =head1 System Password manipulation routines XXX FIXME - These should be merged with the useraccouts versions