initial commit of file from CVS for smeserver-horde on Sat Mar 23 16:05:15 AEDT 2024

This commit is contained in:
Trevor Batley
2024-03-23 16:05:15 +11:00
parent 21bc0fdf89
commit 46a910a743
129 changed files with 4154 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
{
# Remove freebusy db entry for all users. Value is now saved directly to LDAP on SME8
foreach my $account ($DB->get_all)
{
next unless ($account->prop('type') eq 'user');
$account->delete_prop('FreeBusy');
}
}

View File

@@ -0,0 +1 @@
public

View File

@@ -0,0 +1 @@
enabled

View File

@@ -0,0 +1 @@
installed

View File

@@ -0,0 +1 @@
enabled

View File

@@ -0,0 +1 @@
service

View File

@@ -0,0 +1 @@
installed

View File

@@ -0,0 +1 @@
disabled

View File

@@ -0,0 +1 @@
service

View File

@@ -0,0 +1,7 @@
{
#remove access entry for imp as we only accept SSL now
$DB->get_prop_and_delete( 'imp', 'access' );
}

View File

@@ -0,0 +1,32 @@
{
my $horderec = $DB->get('horde')
|| $DB->new_record('horde', {type => 'service'});
my $horde_pw = $horderec->prop('DbPassword');
if (not $horde_pw or length($horde_pw) < 57)
{
use MIME::Base64 qw(encode_base64);
$horde_pw = "not set due to error";
if ( open( RANDOM, "/dev/urandom" ) )
{
my $buf;
# 57 bytes is a full line of Base64 coding, and contains
# 456 bits of randomness - given a perfectly random /dev/random
if ( read( RANDOM, $buf, 57 ) != 57 )
{
warn("Short read from /dev/random: $!");
}
else
{
$horde_pw = encode_base64($buf);
chomp $horde_pw;
}
close RANDOM;
}
else
{
warn "Could not open /dev/urandom: $!";
}
$horderec->set_prop('DbPassword', $horde_pw);
}
}

View File

@@ -0,0 +1,32 @@
{
my $horderec = $DB->get('horde')
|| $DB->new_record('horde', {type => 'service'});
my $horde_secret = $horderec->prop('SecretKey');
if (not $horde_secret or length($horde_secret) < 57)
{
use MIME::Base64 qw(encode_base64);
$horde_secret = "not set due to error";
if ( open( RANDOM, "/dev/urandom" ) )
{
my $buf;
# 57 bytes is a full line of Base64 coding, and contains
# 456 bits of randomness - given a perfectly random /dev/random
if ( read( RANDOM, $buf, 57 ) != 57 )
{
warn("Short read from /dev/random: $!");
}
else
{
$horde_secret = encode_base64($buf);
chomp $horde_secret;
}
close RANDOM;
}
else
{
warn "Could not open /dev/urandom: $!";
}
$horderec->set_prop('SecretKey', $horde_secret);
}
}

View File

@@ -0,0 +1,13 @@
#!/bin/sh
status=$(/sbin/e-smith/config getprop horde cache)
if [ "$status" = "enabled" ]
then
chown -R root.www /usr/share/horde/static
chmod -R 770 /usr/share/horde/static
else
chown -R root.root /usr/share/horde/static
chmod -R 700 /usr/share/horde/static
echo "Caching of static horde pages is disabled" >&2
fi

View File

@@ -0,0 +1,117 @@
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 1999, 2000 e-smith, inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Technical support for this program is available from e-smith, inc.
# For details, please visit our web site at www.e-smith.com or
# call us on 1 888 ESMITH 1 (US/Canada toll free) or +1 613 564 8000
#----------------------------------------------------------------------
package esmith;
use strict;
use Errno;
use esmith::ConfigDB;
use esmith::AccountsDB;
use esmith::util;
use Net::LDAP;
my $c = esmith::ConfigDB->open_ro;
my $a = esmith::AccountsDB->open_ro;
my $l = $c->get('ldap');
my $status = $l->prop('status') || "disabled";
unless ($status eq "enabled" )
{
warn "Not running action script $0, LDAP service not enabled!\n";
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;
my @accounts;
my $account;
my $event = shift || die "Event name must be specified";
if ($event eq 'ldap-update')
{
@accounts = ($a->users);
}
else
{
my $userName = shift;
die "Username argument missing." unless defined ($userName);
$account = $a->get($userName);
die "Account $userName not found.\n" unless defined $account;
my $type = $account->prop('type') || "unknown";
die "Account $userName is not a user or group account; " .
"update LDAP entry failed.\n"
unless ($type eq 'user');
@accounts = ($account);
}
#------------------------------------------------------------
# Update LDAP directory entry. First read LDAP password
#------------------------------------------------------------
my $pw = esmith::util::LdapPassword();
#------------------------------------------------------------
# Update LDAP database entry.
#------------------------------------------------------------
my $base = esmith::util::ldapBase ($domain);
my $ldap = Net::LDAP->new('localhost')
or die "$@";
$ldap->bind(
dn => "cn=root,$base",
password => $pw
);
foreach my $acct (@accounts)
{
my $key = $acct->key;
my $type = $acct->prop('type');
next unless ($type eq 'user');
my @attrs = ();
my $fb = 'https://'.$hostname.'.'.$domain.'/horde/kronolith/fb.php?u='.$key.'@'.$domain;
utf8::upgrade($fb);
push @attrs, (calFBURL => $fb) unless $fb =~ /^\s*$/;
my $dn = "uid=$key,ou=Users,$base";
my %attrs = @attrs;
$ldap->modify ($dn, add => {objectClass => 'calEntry'});
my $result = $ldap->modify ($dn, replace => \%attrs);
$result->code &&
warn "failed to modify entry for $dn: ", $result->error ;
}
$ldap->unbind;
exit (0);

View File

@@ -0,0 +1,41 @@
#!/usr/bin/perl -w
package esmith;
use strict;
use Errno;
use esmith::DomainsDB;
use esmith::ConfigDB;
my $event = $ARGV [0];
my $userName = $ARGV [1];
my $cdb = esmith::ConfigDB->open_ro || die("Could not open config db\n");
my $horderemove = $cdb->get('horde');
my $status = $horderemove->prop('RemoveUsers') || "disabled";
unless ($status eq "enabled" )
{
warn "Removal of webmail database settings is disabled, to enable\n";
warn "config setprop horde RemoveUsers enabled ; signal-event email-update\n";
exit(0);
}
die "Username argument missing" unless defined ($userName);
my $db = esmith::DomainsDB->open_ro || die("Could not open domains db\n");
my $DomainName = "";
my @domains = ($DomainName,
map { $_->key }
$db->get_all());
foreach my $domain (@domains)
{
unless ($domain eq "")
{
system("php /usr/bin/horde-remove-user-data -f $userName@" . "$domain" . "> /dev/null");
}
}
exit (0)

View File

@@ -0,0 +1 @@
PERMS=0540

View File

@@ -0,0 +1 @@
PERMS=0540

View File

@@ -0,0 +1,2 @@
PERMS=0640
GID="www"

View File

@@ -0,0 +1,2 @@
PERMS=0640
GID="www"

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
GID="www"
PERMS=0640

View File

@@ -0,0 +1,2 @@
PERMS=0640
GID="www"

View File

@@ -0,0 +1,2 @@
PERMS=0640
GID="www"

View File

@@ -0,0 +1,2 @@
PERMS=0640
GID="www"

View File

@@ -0,0 +1,28 @@
{
$OUT = '';
my $status = $horde{'status'};
my $agendas = $horde{agendas} || "disabled";
$OUT .="# Horde - Daily Agenda Reminders\n";
if (defined $status && $status ne 'enabled')
{
$OUT .= "# horde is not enabled.";
}
elsif (defined $agendas && $agendas eq 'enabled')
{
my $agendatime = $horde{agendatime} || "5";
if ($agendatime <= "24")
{
$OUT .= "0 $agendatime * * * root /usr/bin/php /usr/bin/kronolith-agenda";
} else {
$OUT .= "# disabled - horde daily agendatime value of $horde{agendatime} is greater than 24. Value needs to be 0 - 24\n";
}
} else {
$OUT .= "# disabled\n";
}
}

View File

@@ -0,0 +1,21 @@
{
$OUT = '';
my $status = $horde{'status'};
my $reminders = $horde{reminders} || "enabled";
$OUT .="# Horde - Calendar Alarm Reminders\n";
if (defined $status && $status ne 'enabled')
{
$OUT .= "# horde is not enabled.";
}
elsif ($reminders eq 'enabled')
{
my $remindertime = $horde{remindertime} || "5";
$OUT .="*/$remindertime * * * * root /usr/bin/php /usr/bin/horde-alarms";
} else {
$OUT .= "# disabled\n";
}
}

View File

@@ -0,0 +1,3 @@
#! /bin/sh
exec mysql < /usr/share/horde/smeserver/mysql_migrate_horde.sql

View File

@@ -0,0 +1,3 @@
#! /bin/sh
exec mysql < /usr/share/horde/smeserver/mysql_set_horde_password.sql

View File

@@ -0,0 +1,3 @@
#! /bin/sh
exec mysql < /usr/share/horde/smeserver/horde_mysql_create_db.sql

View File

@@ -0,0 +1,3 @@
#! /bin/sh
exec mysql < /usr/share/horde/smeserver/mysql_update_horde_privs.sql

View File

@@ -0,0 +1,4 @@
#! /bin/sh
/usr/bin/php /usr/bin/horde-db-migrate > /dev/null

View File

@@ -0,0 +1,4 @@
#! /bin/sh
perl /usr/share/horde/smeserver/turba_create_objects.pl

View File

@@ -0,0 +1,5 @@
#! /bin/sh
# Need to run a second time for kronolith tables to properly get upgraded
/usr/bin/php /usr/bin/horde-db-migrate > /dev/null

View File

@@ -0,0 +1,9 @@
#!/bin/sh
UTC=$(/sbin/e-smith/config getprop horde KronolithUTC)
if [ "$UTC" != "yes" ]
then
php /usr/bin/kronolith-convert-to-utc --yes
/sbin/e-smith/config setprop horde KronolithUTC yes
fi

View File

@@ -0,0 +1,6 @@
#! /bin/sh
if [ -f /var/lib/mysql/horde/horde_datatree.frm ]
then
exec /usr/bin/php /usr/share/horde/smeserver/ingo-convert-datatree-shares-to-sql > /dev/null
fi

View File

@@ -0,0 +1,7 @@
#! /bin/sh
if [ -f /var/lib/mysql/horde/horde_datatree.frm ]
then
exec /usr/bin/php /usr/share/horde/smeserver/kronolith-convert-datatree-shares-to-sql > /dev/null
fi

View File

@@ -0,0 +1,6 @@
#! /bin/sh
if [ -f /var/lib/mysql/horde/horde_datatree.frm ]
then
exec /usr/bin/php /usr/share/horde/smeserver/mnemo-convert-datatree-shares-to-sql > /dev/null
fi

View File

@@ -0,0 +1,6 @@
#! /bin/sh
if [ -f /var/lib/mysql/horde/horde_datatree.frm ]
then
exec /usr/bin/php /usr/share/horde/smeserver/nag-convert-datatree-shares-to-sql > /dev/null
fi

View File

@@ -0,0 +1,6 @@
#! /bin/sh
if [ -f /var/lib/mysql/horde/horde_datatree.frm ]
then
exec /usr/bin/php /usr/share/horde/smeserver/turba-convert-datatree-shares-to-sql > /dev/null
fi

View File

@@ -0,0 +1,108 @@
{
use esmith::php;
#--------------------------------------------------------------
# Dependancy check, only execute horde configuration if PHP is
# enabled.
#--------------------------------------------------------------
my $PHPStatus = $php{"status"};
my $status = $horde{'status'};
if (!defined $PHPStatus or $PHPStatus ne 'enabled')
{
$OUT .= "# Error: horde is enabled but PHP is not enabled.";
}
elsif (defined $status && $status eq 'enabled')
{
$OUT .= qq(
# Horde specific configuration files.
<Directory /usr/share/horde/>
SSLRequireSSL
<FilesMatch "test.php\$">
Require all denied
</FilesMatch>
Options Indexes Includes FollowSymLinks
AllowOverride None
);
$OUT .= " ";
$OUT .= ( $horde{access} eq "public" ) ? "Require all granted" : "Require ip $localAccess";
$OUT .= "\n";
if (exists $php{status} and $php{status} eq "enabled" and $phpModule eq "enabled")
{
$OUT .= qq(
AddType application/x-httpd-php .php .php3
php_value include_path '/usr/share/pear-addons:/usr/share/pear'
php_flag magic_quotes_gpc off
php_flag track_vars on
php_flag session.use_trans_sid off
php_admin_flag allow_url_fopen on
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\$ /horde/rampage.php [QSA,L]
);
}
else
{
my $c = esmith::ConfigDB->open_ro || die "Couldn't open the config database";
my $version = PhpFpmVersionToUse($c->get('horde'),'72');
$OUT .= qq(
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=\$1
<FilesMatch \\.php\$>
<If "-f \%\{SCRIPT_FILENAME\}">
SetHandler "proxy:unix:/var/run/php-fpm/php$version-horde.sock|fcgi://localhost"
</If>
</FilesMatch>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\$ /horde/rampage.php [QSA,L]
);
}
$OUT .= qq(
</Directory>
<Directory /usr/share/horde/config>
Require all denied
</Directory>
<Directory /usr/share/horde/content>
Require all denied
</Directory>
<Directory /usr/share/horde/install>
Require all denied
</Directory>
<Directory /usr/share/horde/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/smeserver>
Require all denied
</Directory>
<Directory /usr/share/horde/scripts>
Require all denied
</Directory>
<Directory /usr/share/horde/templates>
Require all denied
</Directory>
<Directory /usr/share/horde/util>
Require all denied
</Directory>
);
}
else
{
$OUT .= "# horde not configured as it is disabled in the config db";
}
}

View File

@@ -0,0 +1,33 @@
{
my $status = $imp{"status"} || "disabled";
if ($status eq 'enabled')
{
$OUT .= qq(
# IMP specific access configuration
<Directory /usr/share/horde/imp/config>
Require all denied
</Directory>
<Directory /usr/share/horde/imp/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/imp/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/imp/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/imp/SSLonly>
Require all denied
</Directory>
<Directory /usr/share/horde/imp/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,29 @@
{
my $status = $imp{status} || 'disabled';
if ($status eq 'enabled')
{
$OUT .= qq(
# INGO specific access configuration
<Directory /usr/share/horde/ingo/config>
Require all denied
</Directory>
<Directory /usr/share/horde/ingo/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/ingo/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/ingo/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/ingo/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,32 @@
{
my $status = $imp{status} || 'disabled';
if ($status eq 'enabled')
{
$OUT .= qq(
# Turba specific access configuration
<Directory /usr/share/horde/turba/config>
Require all denied
</Directory>
<Directory /usr/share/horde/turba/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/turba/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/turba/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/turba/smeserver>
Require all denied
</Directory>
<Directory /usr/share/horde/turba/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,29 @@
{
my $status = $imp{status} || 'disabled';
if ($status eq 'enabled')
{
$OUT .= qq(
# Mnemo specific access configuration
<Directory /usr/share/horde/mnemo/config>
Require all denied
</Directory>
<Directory /usr/share/horde/mnemo/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/mnemo/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/mnemo/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/mnemo/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,37 @@
{
my $status = $imp{status} || 'disabled';
if ($status eq 'enabled')
{
$OUT .= qq(
# Nag specific access configuration
<Directory /usr/share/horde/nag/app>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/config>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/tasks>
Require all denied
</Directory>
<Directory /usr/share/horde/nag/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,41 @@
{
my $status = $imp{status} || 'disabled';
if ($status eq 'enabled')
{
$OUT .= qq(
# Kronolith specific access configuration
<Directory /usr/share/horde/kronolith/calendars>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/config>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/feed>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/lib>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/locale>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/migration>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/resources>
Require all denied
</Directory>
<Directory /usr/share/horde/kronolith/templates>
Require all denied
</Directory>
);
}
}

View File

@@ -0,0 +1,24 @@
{
# vim: ft=perl:
$haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ? 'yes' : 'no';
my $webmailStatus = $imp{'status'} || "disabled";
my $dirs;
$dirs{horde} = '/usr/share/horde';
$dirs{webmail} = "$dirs{horde}";
return " # webmail is disabled in this VirtualHost"
unless $webmailStatus eq 'enabled';
foreach $place ('webmail','horde')
{
if (($port eq "$httpPort") && ($haveSSL eq 'yes') )
{
my $portspec = ($httpsPort eq 443) ? "" : ":$httpsPort";
$OUT .= " RewriteRule ^/$place(/.*|\$) https://%{HTTP_HOST}${portspec}/$place\$1 [L,R]\n";
} else {
$OUT .= " Alias /$place $dirs{$place}\n";
}
}
}

View File

@@ -0,0 +1,23 @@
{
$haveSSL = (exists ${modSSL}{status} and ${modSSL}{status} eq "enabled") ? 'yes' : 'no';
my $webmailStatus = $imp{'status'} || "disabled";
my $syncStatus = $horde{'ActiveSync'} || "disabled";
return " # ActiveSync is disabled"
unless $webmailStatus eq 'enabled' && $syncStatus eq 'enabled';
if (($port eq "$httpPort") && ($syncStatus eq 'enabled') && ($haveSSL eq 'yes') )
{
my $portspec = ($httpsPort eq 443) ? "" : ":$httpsPort";
$OUT .= " RewriteRule ^/Microsoft-Server-ActiveSync(/.*|\$) https://%{HTTP_HOST}${portspec}/webmail/rpc.php\$1 [L,R]\n";
$OUT .= " RewriteRule ^/autodiscover/autodiscover.xml(/.*|\$) https://%{HTTP_HOST}${portspec}/webmail/rpc.php\$1 [L,R]\n";
$OUT .= " RewriteRule ^/Autodiscover/Autodiscover.xml(/.*|\$) https://%{HTTP_HOST}${portspec}/webmail/rpc.php\$1 [L,R]\n";
$OUT .= " RewriteRule ^/AutoDiscover/AutoDiscover.xml(/.*|\$) https://%{HTTP_HOST}${portspec}/webmail/rpc.php\$1 [L,R]\n";
} else {
$OUT .= " Alias /Microsoft-Server-ActiveSync /usr/share/horde/rpc.php\n";
$OUT .= " Alias /autodiscover/autodiscover.xml /usr/share/horde/rpc.php\n";
$OUT .= " Alias /Autodiscover/Autodiscover.xml /usr/share/horde/rpc.php\n";
$OUT .= " Alias /AutoDiscover/AutoDiscover.xml /usr/share/horde/rpc.php\n";
}
}

View File

@@ -0,0 +1,535 @@
# The offical horde OID assigned by IANA is 13040.
#
# This schema depends on:
# - core.schema
# - rfc2739.schema
#
#
# Horde attribute branch 1.3.6.1.4.1.13040.2.1.*
# IMP attribute branch 1.3.6.1.4.1.13040.3.1.*
# Turba attribute branch 1.3.6.1.4.1.13040.4.1.*
# Kronolith attribute branch 1.3.6.1.4.1.13040.5.1.*
# Nag attribute branch 1.3.6.1.4.1.13040.6.1.*
# Gollem attribute branch 1.3.6.1.4.1.13040.7.1.*
# Chora attribute branch 1.3.6.1.4.1.13040.8.1.*
# Mnemo attribute branch 1.3.6.1.4.1.13040.9.1.*
# Klutz attribute branch 1.3.6.1.4.1.13040.11.1.*
# Jonah attribute branch 1.3.6.1.4.1.13040.12.1.*
# Hermes attribute branch 1.3.6.1.4.1.13040.13.1.*
# Trean attribute branch 1.3.6.1.4.1.13040.15.1.*
# Whups attribute branch 1.3.6.1.4.1.13040.16.1.*
# Ingo attribute branch 1.3.6.1.4.1.13040.17.1.*
# Ansel attribute branch 1.3.6.1.4.1.13040.18.1.*
# Genie attribute branch 1.3.6.1.4.1.13040.19.1.*
# Scry attribute branch 1.3.6.1.4.1.13040.20.1.*
# Wicked attribute branch 1.3.6.1.4.1.13040.21.1.*
# Agora attribute branch 1.3.6.1.4.1.13040.22.1.*
# Goops attribute branch 1.3.6.1.4.1.13040.24.1.*
# Merk attribute branch 1.3.6.1.4.1.13040.25.1.*
# MIMP attribute branch 1.3.6.1.4.1.13040.26.1.*
# Mottle attribute branch 1.3.6.1.4.1.13040.27.1.*
# Nic attribute branch 1.3.6.1.4.1.13040.28.1.*
# Occam attribute branch 1.3.6.1.4.1.13040.29.1.*
# Rakim attribute branch 1.3.6.1.4.1.13040.31.1.*
# Sesha attribute branch 1.3.6.1.4.1.13040.32.1.*
# Swoosh attribute branch 1.3.6.1.4.1.13040.33.1.*
# Ulaform attribute branch 1.3.6.1.4.1.13040.35.1.*
# Volos attribute branch 1.3.6.1.4.1.13040.36.1.*
# Jeta attribute branch 1.3.6.1.4.1.13040.37.1.*
# DIMP attribute branch 1.3.6.1.4.1.13040.38.1.*
#
# Horde objectclass branch 1.3.6.1.4.1.13040.2.2.*
# IMP objectclass branch 1.3.6.1.4.1.13040.3.2.*
# Turba objectclass branch 1.3.6.1.4.1.13040.4.2.*
# Kronolith objectclass branch 1.3.6.1.4.1.13040.5.2.*
# Nag objectclass branch 1.3.6.1.4.1.13040.6.2.*
# Gollem objectclass branch 1.3.6.1.4.1.13040.7.2.*
# Chora objectclass branch 1.3.6.1.4.1.13040.8.2.*
# Mnemo objectclass branch 1.3.6.1.4.1.13040.9.2.*
# Klutz objectclass branch 1.3.6.1.4.1.13040.11.2.*
# Jonah objectclass branch 1.3.6.1.4.1.13040.12.2.*
# Hermes objectclass branch 1.3.6.1.4.1.13040.13.2.*
# Trean objectclass branch 1.3.6.1.4.1.13040.15.2.*
# Whups objectclass branch 1.3.6.1.4.1.13040.16.2.*
# Ingo objectclass branch 1.3.6.1.4.1.13040.17.2.*
# Ansel objectclass branch 1.3.6.1.4.1.13040.18.2.*
# Genie objectclass branch 1.3.6.1.4.1.13040.19.2.*
# Scry objectclass branch 1.3.6.1.4.1.13040.20.2.*
# Wicked objectclass branch 1.3.6.1.4.1.13040.21.2.*
# Agora objectclass branch 1.3.6.1.4.1.13040.22.2.*
# Goops objectclass branch 1.3.6.1.4.1.13040.24.2.*
# Merk objectclass branch 1.3.6.1.4.1.13040.25.2.*
# MIMP objectclass branch 1.3.6.1.4.1.13040.26.2.*
# Mottle objectclass branch 1.3.6.1.4.1.13040.27.2.*
# Nic objectclass branch 1.3.6.1.4.1.13040.28.2.*
# Occam objectclass branch 1.3.6.1.4.1.13040.29.2.*
# Rakim objectclass branch 1.3.6.1.4.1.13040.31.2.*
# Sesha objectclass branch 1.3.6.1.4.1.13040.32.2.*
# Swoosh objectclass branch 1.3.6.1.4.1.13040.33.2.*
# Ulaform objectclass branch 1.3.6.1.4.1.13040.35.2.*
# Volos objectclass branch 1.3.6.1.4.1.13040.36.2.*
# Jeta objectclass branch 1.3.6.1.4.1.13040.37.2.*
# DIMP objectclass branch 1.3.6.1.4.1.13040.38.2.*
#
# Horde attribute branch 1.3.6.1.4.1.13040.2.1.*
#
attributetype ( 1.3.6.1.4.1.13040.2.1.1
NAME 'hordePrefs'
DESC 'Horde Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# IMP attribute branch 1.3.6.1.4.1.13040.3.1.*
#
attributetype ( 1.3.6.1.4.1.13040.3.1.1
NAME 'impPrefs'
DESC 'IMP Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Turba attribute branch 1.3.6.1.4.1.13040.4.1.*
#
attributetype ( 1.3.6.1.4.1.13040.4.1.1
NAME 'turbaPrefs'
DESC 'Turba Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
attributetype ( 1.3.6.1.4.1.13040.4.1.2
NAME 'turbaType'
DESC 'Turba Object Type: Contact/List'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{8} )
attributetype ( 1.3.6.1.4.1.13040.4.1.3
NAME 'turbaMembers'
DESC 'Encoded members of a Turba list'
SUP name )
attributetype ( 1.3.6.1.4.1.13040.4.1.4
NAME 'turbaPGPPublicKey'
DESC 'PGP/GPG Public Key'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{4000} )
#
# Kronolith attribute branch 1.3.6.1.4.1.13040.5.1.*
#
attributetype ( 1.3.6.1.4.1.13040.5.1.1
NAME 'kronolithPrefs'
DESC 'Kronolith Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Nag attribute branch 1.3.6.1.4.1.13040.6.1.*
#
attributetype ( 1.3.6.1.4.1.13040.6.1.1
NAME 'nagPrefs'
DESC 'Nag Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Gollem attribute branch 1.3.6.1.4.1.13040.7.1.*
#
attributetype ( 1.3.6.1.4.1.13040.7.1.1
NAME 'gollemPrefs'
DESC 'Gollem Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Chora attribute branch 1.3.6.1.4.1.13040.8.1.*
#
attributetype ( 1.3.6.1.4.1.13040.8.1.1
NAME 'choraPrefs'
DESC 'Chora Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Mnemo attribute branch 1.3.6.1.4.1.13040.9.1.*
#
attributetype ( 1.3.6.1.4.1.13040.9.1.1
NAME 'mnemoPrefs'
DESC 'Mnemo Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Klutz attribute branch 1.3.6.1.4.1.13040.11.1.*
#
attributetype ( 1.3.6.1.4.1.13040.11.1.1
NAME 'klutzPrefs'
DESC 'Klutz Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Jonah attribute branch 1.3.6.1.4.1.13040.12.1.*
#
attributetype ( 1.3.6.1.4.1.13040.12.1.1
NAME 'jonahPrefs'
DESC 'Jonah Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Hermes attribute branch 1.3.6.1.4.1.13040.13.1.*
#
attributetype ( 1.3.6.1.4.1.13040.13.1.1
NAME 'hermesPrefs'
DESC 'Hermes Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Trean attribute branch 1.3.6.1.4.1.13040.15.1.*
#
attributetype ( 1.3.6.1.4.1.13040.15.1.1
NAME 'treanPrefs'
DESC 'Trean Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Whups attribute branch 1.3.6.1.4.1.13040.16.1.*
#
attributetype ( 1.3.6.1.4.1.13040.16.1.1
NAME 'whupsPrefs'
DESC 'Whups Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Ingo attribute branch 1.3.6.1.4.1.13040.17.1.*
#
attributetype ( 1.3.6.1.4.1.13040.17.1.1
NAME 'ingoPrefs'
DESC 'Ingo Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Ansel attribute branch 1.3.6.1.4.1.13040.18.1.*
#
attributetype ( 1.3.6.1.4.1.13040.18.1.1
NAME 'anselPrefs'
DESC 'Ansel Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Genie attribute branch 1.3.6.1.4.1.13040.19.1.*
#
attributetype ( 1.3.6.1.4.1.13040.19.1.1
NAME 'geniePrefs'
DESC 'Genie Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Scry attribute branch 1.3.6.1.4.1.13040.20.1.*
#
attributetype ( 1.3.6.1.4.1.13040.20.1.1
NAME 'scryPrefs'
DESC 'Scry Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Wicked attribute branch 1.3.6.1.4.1.13040.21.1.*
#
attributetype ( 1.3.6.1.4.1.13040.21.1.1
NAME 'wickedPrefs'
DESC 'Wicked Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Agora attribute branch 1.3.6.1.4.1.13040.22.1.*
#
attributetype ( 1.3.6.1.4.1.13040.22.1.1
NAME 'agoraPrefs'
DESC 'Agora Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Goops attribute branch 1.3.6.1.4.1.13040.24.1.*
#
attributetype ( 1.3.6.1.4.1.13040.24.1.1
NAME 'goopsPrefs'
DESC 'Goops Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Merk attribute branch 1.3.6.1.4.1.13040.25.1.*
#
attributetype ( 1.3.6.1.4.1.13040.25.1.1
NAME 'merkPrefs'
DESC 'Merk Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# MIMP attribute branch 1.3.6.1.4.1.13040.26.1.*
#
attributetype ( 1.3.6.1.4.1.13040.26.1.1
NAME 'mimpPrefs'
DESC 'MIMP Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Mottle attribute branch 1.3.6.1.4.1.13040.27.1.*
#
attributetype ( 1.3.6.1.4.1.13040.27.1.1
NAME 'mottlePrefs'
DESC 'Mottle Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Nic attribute branch 1.3.6.1.4.1.13040.28.1.*
#
attributetype ( 1.3.6.1.4.1.13040.28.1.1
NAME 'nicPrefs'
DESC 'NIC Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Occam attribute branch 1.3.6.1.4.1.13040.29.1.*
#
attributetype ( 1.3.6.1.4.1.13040.29.1.1
NAME 'occamPrefs'
DESC 'Occam Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Rakim attribute branch 1.3.6.1.4.1.13040.31.1.*
#
attributetype ( 1.3.6.1.4.1.13040.31.1.1
NAME 'rakimPrefs'
DESC 'Rakim Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Sesha attribute branch 1.3.6.1.4.1.13040.32.1.*
#
attributetype ( 1.3.6.1.4.1.13040.32.1.1
NAME 'seshaPrefs'
DESC 'Sesha Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Swoosh attribute branch 1.3.6.1.4.1.13040.33.1.*
#
attributetype ( 1.3.6.1.4.1.13040.33.1.1
NAME 'swooshPrefs'
DESC 'Swoosh Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Ulaform attribute branch 1.3.6.1.4.1.13040.35.1.*
#
attributetype ( 1.3.6.1.4.1.13040.35.1.1
NAME 'ulaformPrefs'
DESC 'Ulaform Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Volos attribute branch 1.3.6.1.4.1.13040.36.1.*
#
attributetype ( 1.3.6.1.4.1.13040.36.1.1
NAME 'volosPrefs'
DESC 'Volos Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Jeta attribute branch 1.3.6.1.4.1.13040.37.1.*
#
attributetype ( 1.3.6.1.4.1.13040.37.1.1
NAME 'jetaPrefs'
DESC 'Jeta Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# DIMP attribute branch 1.3.6.1.4.1.13040.38.1.*
#
attributetype ( 1.3.6.1.4.1.13040.38.1.1
NAME 'dimpPrefs'
DESC 'DIMP Preferences'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} )
#
# Horde objectclass branch 1.3.6.1.4.1.13040.2.2.*
#
objectclass ( 1.3.6.1.4.1.13040.2.2.1
NAME 'hordePerson'
DESC 'Horde Preferences'
SUP top
AUXILIARY
MAY ( mail $ hordePrefs $ impPrefs $ turbaPrefs $
gollemPrefs $ kronolithPrefs $ mnemoPrefs $
nagPrefs $ klutzPrefs $ jonahPrefs $
hermesPrefs $ treanPrefs $ whupsPrefs $
ingoPrefs $ geniePrefs $ scryPrefs $
anselPrefs $ wickedPrefs $ choraPrefs $
agoraPrefs $ goopsPrefs $ merkPrefs $
volosPrefs $ mimpPrefs $ mottlePrefs $
nicPrefs $ occamPrefs $ rakimPrefs $
seshaPrefs $ swooshPrefs $ ulaformPrefs $
jetaPrefs $ dimpPrefs
) )
objectclass ( 1.3.6.1.4.1.13040.2.2.2
NAME 'hordeGroup'
DESC 'Horde Group'
SUP top
AUXILIARY
MAY ( mail ) )
#
# IMP objectclass branch 1.3.6.1.4.1.13040.3.2.*
#
# Turba objectclass branch 1.3.6.1.4.1.13040.4.2.*
objectclass ( 1.3.6.1.4.1.13040.4.2.1
NAME 'turbaContact'
DESC 'Turba Contact'
SUP top
AUXILIARY
MAY ( turbaType $ turbaMembers $ calFBURL )
)
#
# Kronolith objectclass branch 1.3.6.1.4.1.13040.5.2.*
#
#
# Nag objectclass branch 1.3.6.1.4.1.13040.6.2.*
#
#
# Gollem objectclass branch 1.3.6.1.4.1.13040.7.2.*
#
#
# Chora objectclass branch 1.3.6.1.4.1.13040.8.2.*
#
#
# Mnemo objectclass branch 1.3.6.1.4.1.13040.9.2.*
#
#
# Klutz objectclass branch 1.3.6.1.4.1.13040.11.2.*
#
#
# Jonah objectclass branch 1.3.6.1.4.1.13040.12.2.*
#
#
# Hermes objectclass branch 1.3.6.1.4.1.13040.13.2.*
#
#
# Trean objectclass branch 1.3.6.1.4.1.13040.15.2.*
#
#
# Whups objectclass branch 1.3.6.1.4.1.13040.16.2.*
#
#
# Ingo objectclass branch 1.3.6.1.4.1.13040.17.2.*
#
#
# Ansel objectclass branch 1.3.6.1.4.1.13040.18.2.*
#
#
# Genie objectclass branch 1.3.6.1.4.1.13040.19.2.*
#
#
# Scry objectclass branch 1.3.6.1.4.1.13040.20.2.*
#
#
# Wicked objectclass branch 1.3.6.1.4.1.13040.21.2.*
#
#
# Agora objectclass branch 1.3.6.1.4.1.13040.22.2.*
#
#
# Goops objectclass branch 1.3.6.1.4.1.13040.24.2.*
#
#
# Merk objectclass branch 1.3.6.1.4.1.13040.25.2.*
#
#
# MIMP objectclass branch 1.3.6.1.4.1.13040.26.2.*
#
#
# Mottle objectclass branch 1.3.6.1.4.1.13040.27.2.*
#
#
# Nic objectclass branch 1.3.6.1.4.1.13040.28.2.*
#
#
# Occam objectclass branch 1.3.6.1.4.1.13040.29.2.*
#
#
# Rakim objectclass branch 1.3.6.1.4.1.13040.31.2.*
#
#
# Sesha objectclass branch 1.3.6.1.4.1.13040.32.2.*
#
#
# Swoosh objectclass branch 1.3.6.1.4.1.13040.33.2.*
#
#
# Ulaform objectclass branch 1.3.6.1.4.1.13040.35.2.*
#
#
# Volos objectclass branch 1.3.6.1.4.1.13040.36.2.*
#
#
# Jeta objectclass branch 1.3.6.1.4.1.13040.37.2.*
#
#
# DIMP objectclass branch 1.3.6.1.4.1.13040.38.2.*
#

View File

@@ -0,0 +1,92 @@
{
use esmith::ConfigDB;
use esmith::php;
my $c = esmith::ConfigDB->open_ro || die "Couldn't opeen the configuration database\n";
my $horde = $c->get( "horde" );
my $version = PhpFpmVersionToUse($horde,"72"); #$horde->prop('PHPVersion') || '72';
my $status = $horde->prop('status') || 'disabled';
return unless ($status eq 'enabled' && $version eq $PHP_VERSION);
my $key = $horde->key;
my $pool_name = lc $key;
my $memory_limit = $horde->prop('PHPMemoryLimit') || '128M';
my $max_execution_time = $horde->prop('PHPMaxExecutionTime') || '30';
my $max_input_time = $horde->prop('PHPMaxInputTime') || '60';
my $allow_url_fopen = $horde->prop('PHPAllowUrlFopen') || 'disabled';
my $post_max_size = $horde->prop('PHPPostMaxSize') || '10M';
my $upload_max_filesize = $horde->prop('PHPUploadMaxFilesize') || '10M';
my $file_upload = $horde->prop('PHPFileUpload') || 'enabled';
my $include_path = ".:/usr/share/pear-addons:/usr/share/pear:/usr/share/pear-data/:/usr/share/php".
":/opt/remi/php55/root/usr/share/pear-data/:/opt/remi/php56/root/usr/share/pear-data/".
":/opt/remi/php70/root/usr/share/pear-data/:/opt/remi/php71/root/usr/share/pear-data/:/opt/remi/php72/root/usr/share/pear-data/: /opt/remi/php73/root/usr/share/pear-data/: /opt/remi/php74/root/usr/share/pear-data/".
":/opt/remi/php55/root/usr/share/pear/:/opt/remi/php56/root/usr/share/pear/".
":/opt/remi/php70/root/usr/share/pear/:/opt/remi/php71/root/usr/share/pear/:/opt/remi/php72/root/usr/share/pear/: /opt/remi/php73/root/usr/share/pear/: /opt/remi/php74/root/usr/share/pear/" ;
my $open_basedir = $horde->prop('PHPBaseDir') || '/usr/share/horde' .
':/etc/horde/' .
':/var/lib/php/' . $key .
":$include_path" .
":/etc/resolv.conf".
":/usr/bin/gpg:/usr/bin/gpg2:/usr/bin/hunspell:/usr/bin/openssl:/home/e-smith/ssl.crt/:/usr/bin/convert:/usr/bin/identify:/usr/bin/misc/magic".
":/usr/bin/quota:/bin/grep:/etc/mtab";
# needed for php-fpm 5.4, does not seem to handle the sys_temp_dir
# not that a security concern as systemd use a rooted /tmp
$open_basedir .= ":/tmp/" if $version eq "";
my $disabled_functions = $horde->prop('PHPDisabledFunctions') || 'system,show_source,' .
'symlink,exec,dl,shell_exec,' .
'passthru,phpinfo,' .
'escapeshellarg,escapeshellcmd';
my $MailForceSender = $horde->prop('MailForceSender') || "$name\@$DomainName";
# Format vars
$file_upload = ($file_upload =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$allow_url_fopen = "off" ; # ($allow_url_fopen =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$disabled_functions = join(', ', split /[,;:]/, $disabled_functions);
$open_basedir = join(':', split(/[,;:]/, $open_basedir . ",/usr/share/php"));
$OUT .=<<"_EOF" if ($version eq $PHP_VERSION);
[$pool_name]
user = www
group = www
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/php$version-$pool_name.sock
pm = dynamic
pm.max_children = 15
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 4
pm.max_requests = 1000
slowlog = /var/log/$key/slow.log
php_admin_value[session.save_path] = /var/lib/php/$key/session
php_admin_value[opcache.file_cache] = /var/lib/php/$key/opcache
php_admin_value[upload_tmp_dir] = /var/lib/php/$key/tmp
php_admin_value[sys_temp_dir] = /var/lib/php/$key/tmp
php_admin_value[mail.force_extra_parameters] = '-f $MailForceSender'
php_admin_flag[display_errors] = off
php_admin_value[error_reporting] =E_ERROR | E_WARNING | E_PARSE
php_admin_value[error_log] = /var/log/$key/error.log
php_admin_value[memory_limit] = $memory_limit
php_admin_value[max_execution_time] = $max_execution_time
php_admin_value[post_max_size] = $post_max_size
php_admin_value[upload_max_filesize] = $upload_max_filesize
php_admin_value[max_input_time] = $max_input_time
php_admin_value[disable_functions] = $disabled_functions
php_admin_flag[allow_url_fopen] = $allow_url_fopen
php_admin_flag[file_upload] = $file_upload
php_admin_flag[session.cookie_httponly] = on
php_admin_flag[allow_url_include] = off
php_admin_value[session.save_handler] = files
php_admin_value[open_basedir] = $open_basedir
php_admin_value[auto_prepend_file] = /usr/share/php/auth_translation.php
php_value[include_path] = $include_path
php_flag[magic_quotes_gpc] = off
php_flag[track_vars] = on
php_flag[session.use_trans_sid] = off
_EOF
}

View File

@@ -0,0 +1,10 @@
# horde logging
# first remove noise with php base dir
if $programname == "HORDE" and $msg contains '/home/e-smith/.pearrc' then stop
if $programname == "HORDE" and $msg contains '/gpg) is not within the allowed path' then stop
# then more noise
if $msg contains 'DIGEST-MD5 common mech free' then stop
# horde log
:programname, isequal, "HORDE" /var/log/horde/error.log
& stop

View File

@@ -0,0 +1,6 @@
{
use esmith::util;
$basedn = esmith::util::ldapBase ($DomainName);
$ldapPW = esmith::util::LdapPassword ();
$OUT = '';
}

View File

@@ -0,0 +1,250 @@
//100ConfHordePHP
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Hash: dd22d3283033d73071e7f49fd9e570144d651fcd
// $Id: 5841de7a8bd742b764f603953bef5d16a75a0da4 $
$conf['vhosts'] = false;
$conf['debug_level'] = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
$conf['max_exec_time'] = 0;
$conf['compress_pages'] = true;
$conf['secret_key'] = '{$horde{SecretKey}}';
$conf['umask'] = 077;
$conf['testdisable'] = true;
$conf['use_ssl'] = 2;
$conf['server']['name'] = $_SERVER['SERVER_NAME'];
$conf['urls']['token_lifetime'] = 30;
$conf['urls']['hmac_lifetime'] = 30;
$conf['urls']['pretty'] = false;
$conf['safe_ips'] = array();
$conf['session']['name'] = 'Horde';
{
if (($horde{'Cookies'} || 'enabled') eq 'disabled')
{
$OUT .="\$conf['session']['use_only_cookies'] = false;";
} else {
$OUT .="\$conf['session']['use_only_cookies'] = true;"; }
}
$conf['session']['timeout'] = 0;
$conf['session']['cache_limiter'] = 'nocache';
$conf['session']['max_time'] = 0;
$conf['cookie']['domain'] = $_SERVER['SERVER_NAME'];
$conf['cookie']['path'] = '/horde';
$conf['sql']['username'] = 'horde';
$conf['sql']['password'] = '{$horde{DbPassword}}';
$conf['sql']['socket'] = '/var/lib/mysql/mysql.sock';
$conf['sql']['protocol'] = 'unix';
$conf['sql']['database'] = 'horde';
$conf['sql']['charset'] = 'latin1';
$conf['sql']['ssl'] = false;
$conf['sql']['splitread'] = false;
$conf['sql']['logqueries'] = false;
$conf['sql']['phptype'] = 'mysqli';
$conf['nosql']['phptype'] = false;
{
if (($ldap{'Authentication'} || 'disabled') eq 'enabled')
{
$OUT .= qq(\$conf['ldap']['hostspec'] = 'localhost';) . "\n";
$OUT .= qq(\$conf['ldap']['port'] = 389;) . "\n";
$OUT .= qq(\$conf['ldap']['tls'] = false;) . "\n";
$OUT .= qq(\$conf['ldap']['version'] = 3;) . "\n";
$OUT .= qq(// #May not need next two lines) . "\n";
$OUT .= qq(\$conf['ldap']['binddn'] = 'cn=root,$basedn';) . "\n";
$OUT .= qq(\$conf['ldap']['bindpw'] = '$ldapPW';) . "\n";
$OUT .= qq(\$conf['ldap']['bindas'] = 'anon';) . "\n";
$OUT .= qq(\$conf['ldap']['useldap'] = true;) . "\n";
} else {
$OUT .= qq(\$conf['ldap']['useldap'] = false;) . "\n";
}
}
{
my @HordeAdmins = split /[,:]/, $horde{Admins} || '';
$OUT .= "\$conf['auth']['admins'] = array(";
if (($horde{RemoveUsers} || 'disabled') eq 'enabled')
{
$OUT .= "'adminremoveuser'" . ", " ;
}
$OUT .= "'admin', ";
foreach my $HordeAdmins (sort @HordeAdmins)
{
$OUT .= "'$HordeAdmins'" . ", " ;
}
$OUT .= ");";
}
$conf['auth']['checkip'] = true;
$conf['auth']['checkbrowser'] = true;
$conf['auth']['resetpassword'] = false;
$conf['auth']['alternate_login'] = false;
$conf['auth']['redirect_on_logout'] = false;
$conf['auth']['list_users'] = 'list';
{
if (($ldap{'Authentication'} || 'disabled') eq 'enabled')
{
$OUT .= qq(\$conf['auth']['params']['basedn'] = 'ou=Users,$basedn';) . "\n";
$OUT .= qq(\$conf['auth']['params']['scope'] = 'sub';) . "\n";
$OUT .= qq(\$conf['auth']['params']['ad'] = false;) . "\n";
$OUT .= qq(\$conf['auth']['params']['uid'] = 'uid';) . "\n";
$OUT .= qq(\$conf['auth']['params']['encryption'] = 'ssha';) . "\n";
$OUT .= qq(\$conf['auth']['params']['newuser_objectclass'] = array('shadowAccount', 'inetOrgPerson');) . "\n";
$OUT .= qq(\$conf['auth']['params']['filter'] = '(objectclass=inetOrgPerson)';) . "\n";
$OUT .= qq(\$conf['auth']['params']['password_expiration'] = 'no';) . "\n";
$OUT .= qq(\$conf['auth']['params']['driverconfig'] = 'horde';) . "\n";
$OUT .= qq(\$conf['auth']['driver'] = 'ldap';) . "\n";
} else {
$OUT =<<'HERE';
$conf['auth']['params']['app'] = 'imp';
$conf['auth']['driver'] = 'application';
HERE
}
}
$conf['auth']['params']['count_bad_logins'] = true;
$conf['auth']['params']['login_block'] = true;
$conf['auth']['params']['login_block_count'] = 5;
$conf['auth']['params']['login_block_time'] = 5;
$conf['signup']['allow'] = false;
$conf['log']['priority'] = 'NOTICE';
$conf['log']['ident'] = 'HORDE';
$conf['log']['name'] = LOG_USER;
$conf['log']['type'] = 'syslog';
$conf['log']['enabled'] = true;
$conf['log_accesskeys'] = false;
$conf['prefs']['maxsize'] = 65535;
$conf['prefs']['params']['table'] = 'horde_prefs';
$conf['prefs']['params']['driverconfig'] = 'horde';
$conf['prefs']['driver'] = 'Sql';
$conf['alarms']['params']['table'] = 'horde_alarms';
$conf['alarms']['params']['driverconfig'] = 'horde';
$conf['alarms']['params']['ttl'] = 300;
$conf['alarms']['driver'] = 'Sql';
$conf['group']['params']['driverconfig'] = 'horde';
$conf['group']['driver'] = 'Sql';
$conf['perms']['driverconfig'] = 'horde';
$conf['perms']['driver'] = 'Sql';
$conf['share']['no_sharing'] = false;
$conf['share']['auto_create'] = true;
$conf['share']['world'] = true;
$conf['share']['any_group'] = true;
$conf['share']['hidden'] = false;
$conf['share']['cache'] = false;
$conf['share']['driver'] = 'Sql';
$conf['cache']['default_lifetime'] = 1800;
$conf['cache']['params']['dir'] = '/var/lib/php/horde/tmp/';
$conf['cache']['params']['sub'] = 0;
$conf['cache']['driver'] = 'File';
$conf['cache']['use_memorycache'] = '';
{
if (($horde{'cache'} || 'disabled') eq 'enabled')
{
$OUT =<<'HERE';
$conf['cachecssparams']['driver'] = 'filesystem';
$conf['cachecssparams']['filemtime'] = false;
$conf['cachecssparams']['lifetime'] = 86400;
$conf['cachecss'] = true;
$conf['cachejsparams']['driver'] = 'filesystem';
$conf['cachejsparams']['compress'] = 'php';
$conf['cachejsparams']['lifetime'] = 604800;
$conf['cachejs'] = true;
$conf['cachethemesparams']['check'] = 'appversion';
$conf['cachethemesparams']['lifetime'] = 604800;
$conf['cachethemes'] = true;
HERE
} else {
$OUT =<<'HERE';
$conf['cachecssparams']['url_version_param'] = true;
$conf['cachecss'] = false;
$conf['cachejsparams']['url_version_param'] = true;
$conf['cachejs'] = false;
$conf['cachethemes'] = false;
HERE
}
}
$conf['lock']['driver'] = 'Null';
$conf['token']['driver'] = 'Null';
$conf['history']['params']['driverconfig'] = 'horde';
$conf['history']['driver'] = 'Sql';
$conf['davstorage']['params']['driverconfig'] = 'horde';
$conf['davstorage']['driver'] = 'Sql';
$conf['mailer']['params']['secure'] = 'tls';
$conf['mailer']['params']['auth'] = false;
$conf['mailer']['params']['lmtp'] = false;
$conf['mailer']['type'] = 'smtp';
$conf['vfs']['params']['vfsroot'] = '/var/lib/php/horde/tmp';
$conf['vfs']['type'] = 'File';
$conf['sessionhandler']['type'] = 'Builtin';
$conf['sessionhandler']['hashtable'] = false;
$conf['spell']['params']['path'] = '/usr/bin/hunspell';
$conf['spell']['driver'] = 'aspell';
$conf['gnupg']['path'] = '/usr/bin/gpg';
$conf['gnupg']['keyserver'] = array('pool.sks-keyservers.net', 'subkeys.pgp.net', 'pgp.mit.edu');
$conf['gnupg']['timeout'] = 10;
$conf['openssl']['cafile'] = '/home/e-smith/ssl.crt/{ $SystemName }.{ $DomainName }.crt';
$conf['openssl']['path'] = '/usr/bin/openssl';
$conf['nobase64_img'] = false;
$conf['image']['convert'] = '/usr/bin/convert';
$conf['image']['identify'] = '/usr/bin/identify';
$conf['image']['driver'] = 'Im';
$conf['exif']['driver'] = 'Bundled';
$conf['mime']['magic_db'] = '/usr/share/magic';
$conf['timezone']['location'] = 'ftp://ftp.iana.org/tz/tzdata-latest.tar.gz';
$conf['problems']['email'] = 'admin@{ $DomainName }';
$conf['problems']['maildomain'] = '{ $DomainName }';
$conf['problems']['tickets'] = false;
$conf['problems']['attachments'] = false;
$conf['menu']['links']['help'] = 'authenticated';
$conf['menu']['links']['prefs'] = 'authenticated';
$conf['menu']['links']['problem'] = 'never';
$conf['menu']['links']['login'] = 'all';
$conf['menu']['links']['logout'] = 'authenticated';
$conf['portal']['fixed_blocks'] = array();
$conf['accounts']['params']['quota_path'] = '/usr/bin/quota';
$conf['accounts']['params']['grep_path'] = '/bin/grep';
$conf['accounts']['params']['translateMountPoint'] = false;
$conf['accounts']['params']['translationTable'] = '/etc/mtab';
$conf['accounts']['driver'] = 'localhost';
$conf['user']['verify_from_addr'] = true;
$conf['user']['select_view'] = true;
$conf['facebook']['enabled'] = false;
$conf['twitter']['enabled'] = false;
$conf['urlshortener'] = false;
$conf['weather']['provider'] = false;
$conf['imap']['enabled'] = false;
$conf['imsp']['enabled'] = false;
$conf['kolab']['enabled'] = false;
$conf['hashtable']['driver'] = 'none';
{
if (($horde{'ActiveSync'} || 'disabled') eq 'enabled')
{
$OUT =<<'HERE';
$conf['activesync']['params']['driverconfig'] = 'horde';
$conf['activesync']['storage'] = 'Sql';
$conf['activesync']['emailsync'] = true;
$conf['activesync']['version'] = '14.1';
$conf['activesync']['auth']['type'] = 'basic';
$conf['activesync']['autodiscovery'] = 'user';
$conf['activesync']['outlookdiscovery'] = false;
$conf['activesync']['ping']['heartbeatmin'] = 60;
$conf['activesync']['ping']['heartbeatmax'] = 2700;
$conf['activesync']['ping']['heartbeatdefault'] = 480;
$conf['activesync']['ping']['deviceping'] = true;
$conf['activesync']['ping']['waitinterval'] = 5;
$conf['activesync']['enabled'] = true;
HERE
} else {
$OUT =<<'HERE';
$conf['activesync']['enabled'] = false;
HERE
}
}
{
if (($horde{'DeviceLog'} || 'disabled') eq 'enabled')
{
$OUT =<<'HERE';
$conf['activesync']['logging']['path'] = '/var/lib/php/horde/tmp';
$conf['activesync']['logging']['level'] = '1';
$conf['activesync']['logging']['type'] = 'perdevice';
HERE
} else {
$OUT =<<'HERE';
$conf['activesync']['logging']['type'] = false;
HERE
}
}

View File

@@ -0,0 +1,2 @@
//999Footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@@ -0,0 +1,3 @@
class Horde_Hooks
\{

View File

@@ -0,0 +1,12 @@
public function preauthenticate($userId, $credentials)
\{
# here we filter out @domain.com from login, this will allow someone to still login if they use their full email
# this would be a good place to add an array pseudonyms => user to convert the userID from a list of pseudo:
# $translate = array("jenifer@domain1.net" => "jenny" , "jd"=> "johndavros")
# $userId = ( $translate[$userId] ? translate[$userId] : $userId);
$userId = (strpos($userId, '@')? substr($userId, 0, strpos($userId, '@')) : $userId );
return array(
'userId' => Horde_String::lower($userId),
'credentials' => $credentials);
\}

View File

@@ -0,0 +1,7 @@
public function authusername($userId, $toHorde)
\{
# we only want a userid as login for horde and smeserver imap
$userId = (strpos($userId, '@')? substr($userId, 0, strpos($userId, '@')) : $userId );
return ltrim(rtrim(Horde_String::lower($userId))) ;
\}

View File

@@ -0,0 +1,65 @@
public function prefs_init($pref, $value, $username, $scope_ob)
\{
if (is_null($username)) \{ // not logged in
return $value;
\}
# get the virtualhost
$vdomain = getenv('HTTP_HOST');
# if it is an ip, let's use the Primary domain
if (filter_var($vdomain, FILTER_VALIDATE_IP)) \{
$vdomain = "{$DomainName}";
\} else\{ # else filter the virtual domain to remove unwanted parts
{
my @filtered = split /[;,: ]/, $horde{SubdomainFilter} || "www,mail,webmail";
$OUT .= " \$patterns = array();\n";
foreach my $filter (sort @filtered)
{
$OUT .= " array_push(\$patterns,'|^$filter\\.|i');\n";
}
}
$vdomain = preg_replace($patterns, '', $vdomain);
\}
$vdomain = Horde_String::lower($vdomain);
{ # override to Primary Domain
my $UsePrimary = $horde{ForcePrimaryDomain} || "disabled";
$OUT .= ($UsePrimary eq "enabled") ? " \$vdomain = '$DomainName';\n" : " # ForcePrimaryDomain disabled\n # \$vdomain = '$DomainName';\n" ;
my $basedn = esmith::util::ldapBase ($DomainName);
$OUT .= " \$ldapServer = 'localhost';
\$ldapPort = '389';
\$searchBase = 'ou=Users,$basedn';
\$ds = \@ldap_connect(\$ldapServer, \$ldapPort);
if (\@ldap_bind(\$ds )) {
\$searchResult = \@ldap_search(\$ds, \$searchBase, 'uid=' . \$username);
}
\$information = \@ldap_get_entries(\$ds, \$searchResult);";
}
switch ($pref) \{
case 'default_share' :
if (is_null($username)) \{
return $value;
\}
return $username;
case 'from_addr':
if($value == '') \{
$value = "$username@$vdomain";
\}
return $value;
case 'fullname':
if($value == '') \{
$value = "$username";
\}
if (($information['count'] > 0) && ($information[0]['displayname'][0] != '') ) \{
$value = $information[0]['displayname'][0];
\} else \{
$value = "$username";
\}
return $value;
\}
\}

View File

@@ -0,0 +1,102 @@
$mime_drivers = array(
/* MS Word display.
* This driver requires AbiWord to be installed.
* AbiWord homepage: http://www.abisource.com/ */
'msword' => array(
// Disabled by default
{
if (($horde{inlineMSWord} || "false") eq "true") {
$OUT .=" 'disable' => false,";
} else {
$OUT .=" 'disable' => true,";
}
}
'handles' => array(
'application/msword',
'application/vnd.ms-word'
),
'icons' => array(
'default' => 'msword.png'
),
// REQUIRED: Location of the AbiWord binary
'location' => '/usr/bin/abiword'
),
/* MS Excel display.
* This driver requires Gnumeric to be installed.
* Gnumeric homepage: http://projects.gnome.org/gnumeric/ */
'msexcel' => array(
// Disabled by default
{
if (($horde{inlineMSExcel} || "false") eq "true") {
$OUT .=" 'disable' => false,";
} else {
$OUT .=" 'disable' => true,";
}
}
'handles' => array(
'application/msexcel',
'application/x-msexcel',
'application/vnd.ms-excel'
),
'icons' => array(
'default' => 'msexcel.png'
),
// REQUIRED: Location of the ssconvert binary
'location' => '/usr/bin/ssconvert'
),
/* MS Powerpoint display.
* This driver requires ppthtml, included with xlhtml, to be installed.
* xlhtml homepage: http://chicago.sourceforge.net/xlhtml/ */
'mspowerpoint' => array(
// Disabled by default
{
if (($horde{inlineMSPowerpoint} || "false") eq "true") {
$OUT .=" 'disable' => false,";
} else {
$OUT .=" 'disable' => true,";
}
}
'handles' => array(
'application/mspowerpoint',
'application/vnd.ms-powerpoint'
),
'icons' => array(
'default' => 'mspowerpoint.png'
),
// REQUIRED: Location of the ppthtml binary
'location' => '/usr/bin/ppthtml'
),
/* WordPerfect document display.
* This driver requires wpd2html to be installed.
* libwpd homepage: http://libwpd.sourceforge.net/ */
'wordperfect' => array(
// Disabled by default
{
if (($horde{inlineWordperfect} || "false") eq "true") {
$OUT .=" 'disable' => false,";
} else {
$OUT .=" 'disable' => true,";
}
}
'handles' => array(
'application/vnd.wordperfect',
'application/wordperf',
'application/wordperfect',
'application/wpd',
'application/x-wpwin'
),
'icons' => array(
'default' => 'wordperfect.png'
),
// REQUIRED: location of the wpd2html binary
'location' => '/usr/bin/wpd2html'
),
);

View File

@@ -0,0 +1,4 @@
$_prefs['initial_application']['value'] = 'imp';
$_prefs['sidebar_width']['value'] = 225;

View File

@@ -0,0 +1,4 @@
$_prefs['id']['value'] = 'Default Identity';
$_prefs['fullname']['hook'] = true;
$_prefs['from_addr']['hook'] = true;

View File

@@ -0,0 +1,3 @@
// 100webRoot
$app_webroot = '/horde';

View File

@@ -0,0 +1,3 @@
$this->applications['ingo']['menu_parent'] = '';

View File

@@ -0,0 +1,3 @@
//100Overrides
$servers['imap']['disabled'] = true;

View File

@@ -0,0 +1,59 @@
//120IMAPServers
{
use esmith::DomainsDB;
my $db = esmith::DomainsDB->open_ro;
my @domains = ($DomainName,
map { $_->key }
grep { my $p = $_->prop('SystemPrimaryDomain') || ''; $p ne 'yes' }
$db->get_all());
foreach my $domain (@domains)
{
$OUT .= "\$servers['$domain'] = array(\n";
$OUT .= " 'disabled' => false,\n";
$OUT .= " 'name' => 'IMAP Server',\n";
$OUT .= " 'hostspec' => 'localhost',\n";
$OUT .= " 'hordeauth' => true,\n";
$OUT .= " 'protocol' => 'imap',\n";
$OUT .= " 'port' => '143',\n";
$OUT .= " 'secure' => 'notls',\n";
$OUT .= " 'maildomain' => '$domain',\n";
$OUT .= " 'smtphost' => 'localhost',\n";
if (defined($smtpd))
{
$OUT .= " 'smtpport' => '$smtpd{TCPPort}',\n";
} else {
$OUT .= " 'smtpport' => '$qpsmtpd{TCPPort}',\n";
}
$OUT .= " 'cache' => false,\n";
if (($dovecot{'SharedMailbox'} || 'disabled') eq 'enabled')
{
$OUT .= " 'acl' => true, \n";
}
if (($horde{'quota'} || 'disabled') eq 'enabled')
{
$OUT .= " 'quota' => array(\n";
$OUT .= " 'driver' => 'imap',\n";
$OUT .= " 'params' => array(\n";
$OUT .= " 'hide_when_unlimited' => true,\n";
$OUT .= " 'unit' => 'GB',\n";
$OUT .= " 'interval' => 0,\n";
$OUT .= " )\n";
$OUT .= " ),\n";
}
if (($spamassassin{'UseBayes'} || '0') eq '1' and (($spamassassin{'SpamLearning'} || 'disabled') eq 'enabled'))
{
$OUT .= " 'spam' => array(\n";
$OUT .= " 'innocent' => array(\n";
$OUT .= " 'display' => true,\n";
$OUT .= " 'program' => '/usr/bin/spamc -C revoke -u %l',\n";
$OUT .= " ),\n";
$OUT .= " 'spam' => array(\n";
$OUT .= " 'display' => false,\n";
$OUT .= " 'program' => '/usr/bin/spamc -C report -u %l',\n";
$OUT .= " )\n";
$OUT .= " ),\n";
}
$OUT .= ");\n";
}
}

View File

@@ -0,0 +1,30 @@
// 100ConfImpPHP
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 48bf0b4cc99e7941b4432a29e70e145b8d654cc7 $
$conf['user']['allow_view_source'] = true;
$conf['server']['server_list'] = 'none';
$conf['compose']['use_vfs'] = false;
$conf['compose']['link_attachments'] = false;
$conf['compose']['attach_size_limit'] = 0;
$conf['compose']['attach_count_limit'] = 0;
$conf['compose']['reply_limit'] = 0;
$conf['compose']['ac_threshold'] = 3;
$conf['compose']['htmlsig_img_size'] = 30000;
$conf['pgp']['keylength'] = 2048;
$conf['maillog']['driver'] = 'history';
{
if (($horde{'LogMessages'} || 'disabled') eq 'enabled')
{
$OUT .="\$conf['sentmail']['params']['threshold'] = 60;" . "\n";
$OUT .="\$conf['sentmail']['params']['limit_period'] = 24;" . "\n";
$OUT .="\$conf['sentmail']['params']['table'] = 'imp_sentmail';" . "\n";
$OUT .="\$conf['sentmail']['params']['driverconfig'] = 'horde';" . "\n";
$OUT .="\$conf['sentmail']['driver'] = 'Sql';"
} else {
$OUT .="\$conf['sentmail']['driver'] = 'Null';";
}
}
$conf['contactsimage']['backends'] = array('IMP_Contacts_Avatar_Addressbook');
$conf['tasklist']['use_tasklist'] = true;
$conf['notepad']['use_notepad'] = true;

View File

@@ -0,0 +1,2 @@
// 999footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@@ -0,0 +1,14 @@
//10mime_drivers.local.php
{
$Inline = (defined $horde{Limitinlinesize})
? $horde{Limitinlinesize}
: 1048576;
$OUT = qq(\$mime_drivers['plain']['limit_inline_size'] = $Inline;);
}
$mime_drivers['plain']['pgp_inline'] = true;
$mime_drivers['html']['inline'] = { $horde{inlineHTML} || 'true' };
$mime_drivers['images']['inline'] = { $horde{inlineImages} || 'true' };

View File

@@ -0,0 +1,6 @@
$_prefs['atc_flag']['value'] = 1;
$_prefs['ckeditor_buttons'] = array(
'value' => "[['Source','Maximize','-','Templates'],['Cut','Copy','Paste'],['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],'/',['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],['Link','Unlink'],['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar'],'/',['Styles','Format','Font','FontSize'],['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],['TextColor','BGColor']]",);
$_prefs['subscribe']['value'] = 0;

View File

@@ -0,0 +1,22 @@
{
my $SievePort = $sieve{TCPPort} || '4190';
my @SieveHosts = split /[,: ]/, $sieve{Listen} || 'localhost';
if (($sieve{'status'} || 'disabled') eq 'enabled')
{
$OUT .= "\$backends['imap']['disabled'] = true;\n";
$OUT .= "\$backends['sieve']['disabled'] = false;\n";
$OUT .= "\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] = ";
foreach my $SieveHosts (sort @SieveHosts)
{
$OUT .= "'$SieveHosts' ";
}
$OUT .= ";\n";
$OUT .= "\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['logintype'] = 'PLAIN';\n";
$OUT .= "\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['port'] = '$SievePort';\n";
$OUT .= "\$backends['sieve']['transport'][Ingo::RULE_ALL]['params']['usetls'] = false;\n";
$OUT .= "\$backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = true;\n";
} else {
$OUT = "\$backends['imap']['preferred'] = '$DomainName';";
}
}

View File

@@ -0,0 +1,15 @@
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 48142d13ef06c07f56427fe5b43981631bdbfdb0 $
$conf['storage']['params']['driverconfig'] = 'horde';
{
if (($horde{'IngoSqlPrefs'} || 'disabled') eq 'enabled')
{
$OUT .="\$conf['storage']['driver'] = 'sql';";
} else {
$OUT .="\$conf['storage']['driver'] = 'prefs';"; }
}
$conf['rules']['userheader'] = true;
$conf['spam']['header'] = 'X-Spam-Level';
$conf['spam']['char'] = '*';
$conf['spam']['compare'] = 'string';

View File

@@ -0,0 +1,3 @@
//999footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@@ -0,0 +1,26 @@
//100KronolithConfPHP
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 380230c774efc2661b03a58bd71824d28cdc6040 $
$conf['calendar']['params']['table'] = 'kronolith_events';
$conf['calendar']['params']['driverconfig'] = 'horde';
$conf['calendar']['params']['utc'] = true;
$conf['calendar']['driver'] = 'sql';
$conf['storage']['default_domain'] = '{$DomainName}';
$conf['storage']['params']['table'] = 'kronolith_storage';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['calendars']['driver'] = 'default';
$conf['resource']['params']['table'] = 'kronolith_resources';
$conf['resource']['params']['driverconfig'] = 'horde';
$conf['resource']['params']['utc'] = true;
$conf['resource']['driver'] = 'sql';
$conf['reminder']['server_name'] = 'www.{$DomainName}';
$conf['reminder']['from_addr'] = 'reminders@{$DomainName}';
$conf['autoshare']['shareperms'] = 'read';
$conf['share']['notify'] = true;
$conf['holidays']['enable'] = true;
$conf['menu']['import_export'] = true;
$conf['maps']['providers'] = array('Google');
$conf['maps']['geocoder'] = 'Google';
$conf['maps']['geodriver'] = false;
$conf['maps']['driver'] = 'Horde';

View File

@@ -0,0 +1,3 @@
// 999footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@@ -0,0 +1,8 @@
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: d97e56b407852ff0a86c7d88c9a57c8f3089e82f $
$conf['storage']['params']['table'] = 'mnemo_memos';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['notepads']['driver'] = 'default';
$conf['menu']['import_export'] = true;

View File

@@ -0,0 +1,3 @@
// 999footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

View File

@@ -0,0 +1,8 @@
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
// $Id: 7a2eb8e9002cee73d99d618dfb6509a56ab639ec $
$conf['storage']['params']['table'] = 'nag_tasks';
$conf['storage']['params']['driverconfig'] = 'horde';
$conf['storage']['driver'] = 'sql';
$conf['tasklists']['driver'] = 'default';
$conf['menu']['import_export'] = true;

View File

@@ -0,0 +1,3 @@
// 999footer
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */

Some files were not shown because too many files have changed in this diff Show More