commit
deb24f27cb
62 changed files with 926 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||||||
|
#!/usr/bin/perl -w |
||||||
|
|
||||||
|
use esmith::Build::CreateLinks qw(:all); |
||||||
|
|
||||||
|
service_link_enhanced("memcached-sogo", "S55", "7"); |
||||||
|
service_link_enhanced("sogod", "S85", "7"); |
||||||
|
|
||||||
|
templates2events("/etc/e-smith/sql/init/30sogo_mysql_create_database", qw(email-update bootstrap-console-save)); |
||||||
|
templates2events("/etc/e-smith/sql/init/31sogo_mysql_update_privileges", qw(email-update bootstrap-console-save)); |
||||||
|
templates2events("/home/sogo/smeserver/sogo_mysql_update_privileges.sql", qw(email-update bootstrap-console-save)); |
||||||
|
templates2events("/etc/cron.d/sogo-alarm", qw(email-update bootstrap-console-save)); |
||||||
|
templates2events("/home/sogo/GNUstep/Defaults/.GNUstepDefaults", qw(email-update bootstrap-console-save pre-backup)); |
||||||
|
templates2events("/etc/sysconfig/sogo", qw(email-update bootstrap-console-save)); |
||||||
|
templates2events("/etc/logrotate.d/sogo", qw(email-update bootstrap-console-save)); |
||||||
|
|
||||||
|
safe_symlink("restart", "root/etc/e-smith/events/email-update/services2adjust/sogod"); |
||||||
|
safe_symlink("restart", "root/etc/e-smith/events/email-update/services2adjust/memcached-sogo"); |
||||||
|
safe_symlink("restart", "root/etc/e-smith/events/email-update/services2adjust/mysql.init"); |
||||||
|
|
||||||
|
event_link("sogo-delete-backup", "pre-backup", "60"); |
||||||
|
event_link("sogo-delete-backup", "post-backup", "60"); |
||||||
|
event_link("sogo-backup", "pre-backup", "70"); |
||||||
|
|
||||||
|
panel_link("sogo", "manager"); |
||||||
|
|
||||||
|
safe_touch("root/var/service/memcached-sogo/down"); |
||||||
|
safe_symlink("../daemontools" , 'root/etc/rc.d/init.d/supervise/memcached-sogo'); |
||||||
|
safe_symlink("/var/service/memcached-sogo" , 'root/service/memcached-sogo'); |
||||||
|
|
@ -0,0 +1,145 @@ |
|||||||
|
|
||||||
|
%define version 0.2.0 |
||||||
|
%define release 1.beta3 |
||||||
|
%define name ipasserelle-groupware |
||||||
|
|
||||||
|
Name: %{name} |
||||||
|
Version: %{version} |
||||||
|
Release: %{release}%{?dist} |
||||||
|
Summary: iPasserelle Groupware module |
||||||
|
Group: Networking/Daemons |
||||||
|
License: GPLv3+ |
||||||
|
URL: http://www.ipasserelle.com |
||||||
|
Source0: %{name}-%{version}.tar.gz |
||||||
|
|
||||||
|
BuildArch: noarch |
||||||
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) |
||||||
|
|
||||||
|
BuildRequires: e-smith-devtools |
||||||
|
Requires: smeserver-release >= 8 |
||||||
|
Requires: e-smith-ldap >= 5.2.0-19 |
||||||
|
Requires: sogo >= 1.3.9 |
||||||
|
Requires: sogo-tool |
||||||
|
Requires: sope49-gdl1-mysql |
||||||
|
Requires: sogo-ealarms-notify |
||||||
|
Requires: ipasserelle-base |
||||||
|
|
||||||
|
Obsoletes: smeserver-sogo |
||||||
|
Provides: smeserver-sogo |
||||||
|
|
||||||
|
%description |
||||||
|
iPasserelle module for the groupware application. |
||||||
|
Based on smeserver-sogo from nethesis |
||||||
|
|
||||||
|
|
||||||
|
%changelog |
||||||
|
* Wed Mar 14 2012 Daniel Berteaud <daniel@firewall-services.com> - 0.2.0-1.sme |
||||||
|
- Migrate to git |
||||||
|
|
||||||
|
* Wed Feb 15 2012 Daniel Berteaud <daniel@firewall-services.com> - 0.1-16.sme |
||||||
|
- Purge old (default to 24h) sessions from database |
||||||
|
- Use a unix socket to connect to memcached |
||||||
|
|
||||||
|
* Tue Feb 14 2012 Daniel Berteaud <daniel@firewall-services.com> - 0.1-15.sme |
||||||
|
- Fix sogo-ealarm-notify path in cron job |
||||||
|
|
||||||
|
* Fri Nov 18 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1-14.sme |
||||||
|
- Adjust number of prefork (1 for 15 users, 3 workers minimum) |
||||||
|
- Enable sieve if available (smeserver-dovecot is needed for this) |
||||||
|
- Change display name of LDAP address books |
||||||
|
- Reorder configuration directives |
||||||
|
- Split templates in separated files |
||||||
|
- Requires sogo-tool |
||||||
|
- Remove default forward mechanism as attached (go back to inline) |
||||||
|
- Backup with sogo-tool |
||||||
|
- Don't force access using $SystemName.$DomainName |
||||||
|
- Set default charset to UTF8 |
||||||
|
- Remove Priority column |
||||||
|
|
||||||
|
* Tue Nov 01 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1-13.sme |
||||||
|
- Compatibility with SOGo 1.3.9 |
||||||
|
|
||||||
|
* Fri Oct 07 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1-12.sme |
||||||
|
- Also apply the filter to group addressbook |
||||||
|
|
||||||
|
* Thu Sep 01 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1-11.sme |
||||||
|
- Change SOGo spool path to /var/spool/sogo |
||||||
|
|
||||||
|
* Mon Jun 20 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1-10.sme |
||||||
|
- FR locale corrections |
||||||
|
|
||||||
|
* Thu Jun 09 2011 Daniel B. <daniel@firewall-services.com> - 0.1-9.sme |
||||||
|
- Access restriction based on group membership |
||||||
|
- Small panel to configure SOGo |
||||||
|
- Replace SOGo logo with iPasserelle one on the login page |
||||||
|
|
||||||
|
* Thu Apr 07 2011 Daniel B. <daniel@firewall-services.com> - 0.1-8.sme |
||||||
|
- Templates /etc/sysconfig/sogo and default prefork to 5 |
||||||
|
|
||||||
|
* Fri Mar 25 2011 Daniel B. <daniel@firewall-services.com> - 0.1-7.sme |
||||||
|
- Fix RewriteRules for SSL vhosts |
||||||
|
|
||||||
|
* Fri Mar 25 2011 Daniel B. <daniel@firewall-services.com> - 0.1-6.sme |
||||||
|
- RewriteRule to $SystemName.$DomainName |
||||||
|
|
||||||
|
* Wed Mar 23 2011 Daniel B. <daniel@firewall-services.com> - 0.1-5.sme |
||||||
|
- Allow custom WebServerRessources folder |
||||||
|
|
||||||
|
* Wed Mar 16 2011 Daniel B. <daniel@firewall-services.com> - 0.1-4.sme |
||||||
|
- Rewrite /sogo to /SOGo (using a rewriterule) |
||||||
|
|
||||||
|
* Wed Mar 16 2011 Daniel B. <daniel@firewall-services.com> - 0.1-3.sme |
||||||
|
- Fix week number (first week of year) |
||||||
|
|
||||||
|
* Mon Mar 14 2011 Daniel B. <daniel@firewall-services.com> - 0.1-2.sme |
||||||
|
- Re-add x-webobjects-server-url (needed for images) |
||||||
|
|
||||||
|
* Fri Feb 4 2011 Daniel B. <daniel@firewall-services.com> - 0.1-1.sme |
||||||
|
- Fork from smeserver-sogo-0.5.3 |
||||||
|
- Add OCSSessionsFolderURL (compatibility with sogo-1.3.5) |
||||||
|
- Add support for Apple CardDav |
||||||
|
- Remove sogo-modify event (use email-update instead) |
||||||
|
- Don't redirect to https://systemname.domainname/SOGo |
||||||
|
- Prop to enable email alarms |
||||||
|
- Prop to enable public access |
||||||
|
- Prop to enable aux accounts |
||||||
|
- Default to check messages every 10 min |
||||||
|
- First day of week is monday |
||||||
|
- Change default fwd mode to attached |
||||||
|
|
||||||
|
|
||||||
|
%prep |
||||||
|
%setup -q |
||||||
|
|
||||||
|
%build |
||||||
|
%{__mkdir_p} root/var/log/memcached-sogo |
||||||
|
perl ./createlinks |
||||||
|
|
||||||
|
%install |
||||||
|
rm -rf $RPM_BUILD_ROOT |
||||||
|
rm -f %{name}-%{version}-filelist |
||||||
|
|
||||||
|
(cd root ; /usr/bin/find . -depth -print | /bin/cpio -dump $RPM_BUILD_ROOT) |
||||||
|
|
||||||
|
%{__mkdir_p} $RPM_BUILD_ROOT/home/e-smith/db/sogo |
||||||
|
|
||||||
|
/sbin/e-smith/genfilelist \ |
||||||
|
--dir /home/sogo 'attr(0700,sogo,sogo)' \ |
||||||
|
--dir /home/sogo/GNUstep 'attr(0755,sogo,sogo)' \ |
||||||
|
--dir /home/sogo/GNUstep/Defaults 'attr(0755,sogo,sogo)' \ |
||||||
|
--dir /home/e-smith/db/sogo 'attr(0700, sogo, sogo)' \ |
||||||
|
--file /var/service/memcached-sogo/run 'attr(0755, root, root)' \ |
||||||
|
--file /var/service/memcached-sogo/log/run 'attr(0755, root, root)' \ |
||||||
|
--dir /var/log/memcached-sogo 'attr(0700, sogo, sogo)' \ |
||||||
|
--file /etc/cron.hourly/sogo-sessions 'attr(0755, root, root)' \ |
||||||
|
$RPM_BUILD_ROOT > %{name}-%{version}-%{release}-filelist |
||||||
|
|
||||||
|
%files -f %{name}-%{version}-%{release}-filelist |
||||||
|
|
||||||
|
%clean |
||||||
|
rm -rf $RPM_BUILD_ROOT |
||||||
|
|
||||||
|
%post |
||||||
|
|
||||||
|
%postun |
||||||
|
|
@ -0,0 +1,7 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
TIME=$(/sbin/e-smith/db configuration getprop sogod SessionDuration || echo 1440) |
||||||
|
TIME=$(($TIME*60)) |
||||||
|
|
||||||
|
# Remove old SOGo sessions entries |
||||||
|
/usr/bin/mysql sogo -e "delete from sogo_sessions_folder where unix_timestamp(now())-c_lastseen > $TIME;" |
@ -0,0 +1 @@ |
|||||||
|
8843 |
@ -0,0 +1 @@ |
|||||||
|
public |
@ -0,0 +1 @@ |
|||||||
|
enabled |
@ -0,0 +1 @@ |
|||||||
|
service |
@ -0,0 +1 @@ |
|||||||
|
enabled |
@ -0,0 +1 @@ |
|||||||
|
service |
@ -0,0 +1 @@ |
|||||||
|
no |
@ -0,0 +1 @@ |
|||||||
|
admin |
@ -0,0 +1 @@ |
|||||||
|
no |
@ -0,0 +1 @@ |
|||||||
|
Drafts |
@ -0,0 +1 @@ |
|||||||
|
no |
@ -0,0 +1 @@ |
|||||||
|
no |
@ -0,0 +1 @@ |
|||||||
|
Sent |
@ -0,0 +1 @@ |
|||||||
|
20000 |
@ -0,0 +1 @@ |
|||||||
|
enabled |
@ -0,0 +1 @@ |
|||||||
|
service |
@ -0,0 +1,33 @@ |
|||||||
|
{ |
||||||
|
my $sogodrec = $DB->get('sogod') |
||||||
|
|| $DB->new_record('sogod', {type => 'service'}); |
||||||
|
my $sogod_pw = $sogodrec->prop('DbPassword'); |
||||||
|
if (not $sogod_pw or length($sogod_pw) < 57) |
||||||
|
{ |
||||||
|
use MIME::Base64 qw(encode_base64); |
||||||
|
|
||||||
|
$sogod_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 |
||||||
|
{ |
||||||
|
$sogod_pw = encode_base64($buf); |
||||||
|
chomp $sogod_pw; |
||||||
|
$sogod_pw =~ s/\//\./g; # SOGo hates passwords with slashes |
||||||
|
} |
||||||
|
close RANDOM; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
warn "Could not open /dev/urandom: $!"; |
||||||
|
} |
||||||
|
$sogodrec->set_prop('DbPassword', $sogod_pw); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
su - sogo -c "/usr/sbin/sogo-tool backup /home/e-smith/db/sogo ALL" > /dev/null 2>&1 |
||||||
|
|
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
exec /bin/rm -f /home/e-smith/db/sogo/* |
||||||
|
|
@ -0,0 +1,62 @@ |
|||||||
|
<lexicon lang="fr"> |
||||||
|
<entry> |
||||||
|
<base>Groupware</base> |
||||||
|
<trans>Collecticiel</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>FORM_TITLE</base> |
||||||
|
<trans>Configuration du collecticiel SOGo</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>STATUS_DESC</base> |
||||||
|
<trans>Vous pouvez choisir de désactiver entièrement le service</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>STATUS</base> |
||||||
|
<trans>État</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>SEND_ACL_MAIL_DESC</base> |
||||||
|
<trans>Lorsqu'un utilisateur donne des droits (sur un agenda ou carnet d'adresse), SOGo peut prévenir automatiquement les personnes concernées que de nouvelles données sont accessibles, en leur envoyant un mail. Voulez-vous activer cette fonction ?</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>SEND_ACL_MAIL</base> |
||||||
|
<trans>Notification des changements de droit d'accès</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>MAIL_ALARM_DESC</base> |
||||||
|
<trans>Par défaut, SOGo affiche un pop-up pour vous rappeler vos rendez-vous. Si vous activez cette fonction, les utilisateurs pourront également recevoir un mail de rappel</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>MAIL_ALARM</base> |
||||||
|
<trans>Rappel par mail</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>AUX_ACCOUNTS_DESC</base> |
||||||
|
<trans>Si cette fonction est activée, les utilisateurs pourront s'abonner à des comptes IMAP externes. Ils pourront ainsi gérer tous leurs comptes emails depuis l'interface web. Souhaitez-vous activer cette fonction ?</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>AUX_ACCOUNTS</base> |
||||||
|
<trans>Comptes externes</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>PUBLIC_ACCESS_DESC</base> |
||||||
|
<trans>Si cette fonction est activée, les utilisateurs pourront partager certaines ressources publiquement (sans aucune authentification). Souhaitez-vous activer cette fonction ?</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>PUBLIC_ACCESS</base> |
||||||
|
<trans>Accès public</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>ALLOWED_GROUPS_DESC</base> |
||||||
|
<trans>Vous pouvez restreindre l'accès à SOGo à une liste de groupes. Si au moins un groupe est coché, seuls les membres du/des groupe(s) sélectionnés pourront utiliser SOGo. Si aucun groupe n'est coché, alors tous les utilisateurs pourront l'utiliser</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>ALLOWED_GROUPS</base> |
||||||
|
<trans>Groupes autorisés</trans> |
||||||
|
</entry> |
||||||
|
<entry> |
||||||
|
<base>ALLOWED_OR_NOT</base> |
||||||
|
<trans>Autorisé ?</trans> |
||||||
|
</entry> |
||||||
|
</lexicon> |
@ -0,0 +1 @@ |
|||||||
|
PERMS=0540 |
@ -0,0 +1 @@ |
|||||||
|
PERMS=0540 |
@ -0,0 +1 @@ |
|||||||
|
PERMS=0540 |
@ -0,0 +1,3 @@ |
|||||||
|
UID="sogo" |
||||||
|
GID="sogo" |
||||||
|
PERMS=0600 |
@ -0,0 +1,7 @@ |
|||||||
|
# SOGo Email Alarms |
||||||
|
{ |
||||||
|
if (($sogod{'EMailAlarms'} || 'no') =~ m/^no$/i){ |
||||||
|
$OUT .= "# Email alarms are disabled\n# "; |
||||||
|
} |
||||||
|
$OUT .= "* * * * * sogo /usr/sbin/sogo-ealarms-notify\n"; |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
#! /bin/sh |
||||||
|
|
||||||
|
exec mysql < /home/sogo/smeserver/sogo_mysql_create_database.sql |
@ -0,0 +1,3 @@ |
|||||||
|
#! /bin/sh |
||||||
|
|
||||||
|
exec mysql < /home/sogo/smeserver/sogo_mysql_update_privileges.sql |
@ -0,0 +1,3 @@ |
|||||||
|
#! /bin/sh |
||||||
|
|
||||||
|
exec /etc/e-smith/events/actions/sogo_upgrade |
@ -0,0 +1,15 @@ |
|||||||
|
{ |
||||||
|
|
||||||
|
my $applePort = ${'apple-carddav'}{'TCPPort'} || "8843"; |
||||||
|
my $sogoStatus = $sogod{'status'} || "enabled"; |
||||||
|
my $appleStatus = ${'apple-carddav'}{'status'} || "enabled"; |
||||||
|
|
||||||
|
if (($sogoStatus eq 'enabled') && ($appleStatus eq 'enabled')){ |
||||||
|
$OUT .=<<"EOF"; |
||||||
|
|
||||||
|
Listen 0.0.0.0:$applePort |
||||||
|
|
||||||
|
EOF |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
{ |
||||||
|
|
||||||
|
my $applePort = ${'apple-carddav'}{'TCPPort'} || "8843"; |
||||||
|
my $sogoStatus = $sogod{'status'} || "enabled"; |
||||||
|
my $appleStatus = ${'apple-carddav'}{'status'} || "enabled"; |
||||||
|
|
||||||
|
if (($sogoStatus eq 'enabled') && ($appleStatus eq 'enabled')){ |
||||||
|
$OUT .=<<"EOF"; |
||||||
|
|
||||||
|
NameVirtualHost 0.0.0.0:$applePort |
||||||
|
|
||||||
|
EOF |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
# SOGo Groupware |
||||||
|
{ |
||||||
|
$sogoStatus = $sogod{'status'} || "disabled"; |
||||||
|
$webmailStatus = $imp{'status'} || "disabled"; |
||||||
|
$style = $sogod{'WebServerResources'} || '/usr/lib/GNUstep/SOGo/WebServerResources/'; |
||||||
|
$style = '/usr/lib/GNUstep/SOGo/WebServerResources/' unless ( -d $style); |
||||||
|
$style =~ s#$#/# unless ( $style =~ m#/$# ); |
||||||
|
|
||||||
|
$OUT = ""; |
||||||
|
} |
||||||
|
|
||||||
|
ProxyPass /SOGo http://127.0.0.1:{$sogod{'TCPPort'}}/SOGo |
||||||
|
ProxyPassReverse /SOGo http://127.0.0.1:{$sogod{'TCPPort'}}/SOGo |
||||||
|
SetEnvIf Host (.*) REQUEST_HOST=$1 |
||||||
|
<Location /SOGo> |
||||||
|
order deny,allow |
||||||
|
deny from all |
||||||
|
allow from all |
||||||
|
SSLRequireSSL on |
||||||
|
AddDefaultCharset UTF-8 |
||||||
|
RequestHeader set "x-webobjects-server-url" "https://%\{REQUEST_HOST\}e/SOGo" |
||||||
|
</Location> |
||||||
|
|
||||||
|
Alias /.woa/WebServerResources/ {"$style";} |
||||||
|
Alias /SOGo.woa/WebServerResources/ {"$style";} |
||||||
|
Alias /SOGo/WebServerResources/ {"$style";} |
||||||
|
AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*) /usr/lib/GNUstep/SOGo/$1.SOGo/Resources/$2 |
||||||
|
|
||||||
|
<Directory {"\"$style\"";}> |
||||||
|
AllowOverride None |
||||||
|
Options +ExecCGI -Includes |
||||||
|
Order allow,deny |
||||||
|
Allow from all |
||||||
|
</Directory> |
||||||
|
|
@ -0,0 +1,40 @@ |
|||||||
|
{ |
||||||
|
|
||||||
|
my $sogoPort = $sogod{'TCPPort'} || "20000"; |
||||||
|
my $applePort = ${'apple-carddav'}{'TCPPort'} || "8843"; |
||||||
|
my $sogoStatus = $sogod{'status'} || "enabled"; |
||||||
|
my $appleStatus = ${'apple-carddav'}{'status'} || "enabled"; |
||||||
|
|
||||||
|
if (($sogoStatus eq 'enabled') && ($appleStatus eq 'enabled')){ |
||||||
|
$OUT .=<<"EOF"; |
||||||
|
|
||||||
|
<VirtualHost 0.0.0.0:$applePort> |
||||||
|
ServerName $SystemName.$DomainName |
||||||
|
SSLEngine On |
||||||
|
ProxyRequests Off |
||||||
|
SetEnv proxy-nokeepalive 1 |
||||||
|
ProxyPreserveHost On |
||||||
|
ProxyPassInterpolateEnv On |
||||||
|
RewriteEngine On |
||||||
|
RewriteRule /principals(.*) /\$1 [L,R] |
||||||
|
RewriteRule /SOGo/dav(.*) /\$1 [L,R] |
||||||
|
ProxyPass / http://127.0.0.1:$sogoPort/SOGo/dav/ interpolate |
||||||
|
|
||||||
|
<Proxy http://127.0.0.1:$sogoPort> |
||||||
|
RequestHeader set "x-webobjects-server-port" "$applePort" |
||||||
|
RequestHeader set "x-webobjects-server-name" "$SystemName.$DomainName:$applePort" |
||||||
|
RequestHeader set "x-webobjects-server-url" "https://$SystemName.$DomainName:$applePort" |
||||||
|
RequestHeader set "x-webobjects-server-protocol" "HTTP/1.0" |
||||||
|
RequestHeader set "x-webobjects-remote-host" "127.0.0.1" |
||||||
|
AddDefaultCharset UTF-8 |
||||||
|
Order allow,deny |
||||||
|
Allow from all |
||||||
|
</Proxy> |
||||||
|
</VirtualHost> |
||||||
|
|
||||||
|
EOF |
||||||
|
} |
||||||
|
else{ |
||||||
|
$OUT .= ""; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
{ |
||||||
|
my $sslport = $modSSL{'TCPPort'} || '443'; |
||||||
|
my $webmailstatus = $horde{'status'} || 'disabled'; |
||||||
|
my $sogostatus = $sogod{'status'} || 'disabled'; |
||||||
|
|
||||||
|
$OUT .= " RewriteEngine on\n"; |
||||||
|
$OUT .= " RewriteRule ^/sogo(/.*|\$) https://%{HTTP_HOST}/SOGo\$1 \[L,R\]\n"; |
||||||
|
|
||||||
|
if (($webmailstatus eq 'disabled') and ($sogostatus eq 'enabled')) { |
||||||
|
$OUT .= " RewriteRule ^/webmail(.*|\$) https://%{HTTP_HOST}/SOGo\$1\n"; |
||||||
|
} |
||||||
|
|
||||||
|
if ($port ne $sslport){ |
||||||
|
## Redirect Web Address to Secure Address |
||||||
|
$OUT .= " RewriteRule ^/SOGo(/.*|\$) https://%{HTTP_HOST}/SOGo\$1 \[L,R\]\n"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,8 @@ |
|||||||
|
/var/log/sogo/*.log \{ |
||||||
|
missingok |
||||||
|
weekly |
||||||
|
rotate 24 |
||||||
|
compress |
||||||
|
notifempty |
||||||
|
copytruncate |
||||||
|
\} |
@ -0,0 +1,11 @@ |
|||||||
|
{ |
||||||
|
|
||||||
|
use esmith::AccountsDB; |
||||||
|
my $a = esmith::AccountsDB->open_ro || die "Couldn't open AccountsDB\n"; |
||||||
|
my $users = scalar($a->users()); |
||||||
|
my $fork = int($users/15); |
||||||
|
$fork = 3 if ($fork < 3); |
||||||
|
|
||||||
|
$OUT .= "PREFORK=$fork"; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
\{ |
||||||
|
NSGlobalDomain = \{ |
||||||
|
\}; |
||||||
|
sogod = \{ |
||||||
|
|
@ -0,0 +1,4 @@ |
|||||||
|
OCSFolderInfoURL = "mysql://sogo:{$sogod{'DbPassword'}}@localhost/sogo/sogo_folder_info"; |
||||||
|
OCSSessionsFolderURL = "mysql://sogo:{$sogod{'DbPassword'}}@localhost/sogo/sogo_sessions_folder"; |
||||||
|
OCSEMailAlarmsFolderURL = "mysql://sogo:{$sogod{'DbPassword'}}@localhost/sogo/sogo_alarms_folder"; |
||||||
|
SOGoProfileURL = "mysql://sogo:{$sogod{'DbPassword'}}@localhost/sogo/sogo_user_profile"; |
@ -0,0 +1 @@ |
|||||||
|
SOGoMemcachedHost = "/var/run/sogo/memcached.sock"; |
@ -0,0 +1,11 @@ |
|||||||
|
SOGoMailSpoolPath = "/var/spool/sogo"; |
||||||
|
SOGoMailDomain = {$DomainName}; |
||||||
|
SOGoMailingMechanism = smtp; |
||||||
|
SOGoSMTPServer = localhost; |
||||||
|
SOGoIMAPServer = "imap://localhost:{$imap{'TCPPort'} || '143'}"; |
||||||
|
SOGoDraftsFolderName = {($sogod{'DraftsFolder'} || "Drafts")}; |
||||||
|
SOGoSentFolderName = {($sogod{'SentFolder'} || "Sent")}; |
||||||
|
SOGoTrashFolderName = {($sogod{'TrashFolder'} || "Trash")}; |
||||||
|
SOGoMailListViewColumnsOrder = ( |
||||||
|
Flagged, Attachment, Subject, From, Unread, Date, Size |
||||||
|
); |
@ -0,0 +1,6 @@ |
|||||||
|
SOGoEnableEMailAlarms = {uc($sogod{'EMailAlarms'} || "no")}; |
||||||
|
SOGoACLsSendEMailNotifications = {uc($sogod{'ACLsSendEMailNotifications'} || "no")}; |
||||||
|
SOGoAppointmentSendEMailNotifications = YES; |
||||||
|
SOGoAppointmentSendEMailReceipts = YES; |
||||||
|
SOGoFoldersSendEMailNotifications = NO; |
||||||
|
|
@ -0,0 +1,3 @@ |
|||||||
|
SOGoMailMessageCheck = "every_10_minutes"; |
||||||
|
SOGoFirstDayOfWeek = "1"; |
||||||
|
SOGoFirstWeekOfYear = "FirstFullWeek"; |
@ -0,0 +1,2 @@ |
|||||||
|
SOGoMailAuxiliaryUserAccountsEnabled = {uc($sogod{'AuxiliaryUserAccounts'} || "no")}; |
||||||
|
SOGoEnablePublicAccess = {uc($sogod{'PublicAccess'} || "no")}; |
@ -0,0 +1,11 @@ |
|||||||
|
{ |
||||||
|
if (($sieve{'status'} || 'disabled') eq 'enabled'){ |
||||||
|
my $sieveport = $sieve{'TCPPort'} || '4190'; |
||||||
|
$OUT .=<<"HERE"; |
||||||
|
SOGoSieveServer = "sieve://localhost:$sieveport"; |
||||||
|
SOGoVacationEnabled = YES; |
||||||
|
SOGoForwardEnabled = YES; |
||||||
|
SOGoSieveScriptsEnabled = YES; |
||||||
|
HERE |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
SOGoSuperUsernames = ( |
||||||
|
{($sogod{'AdminUsers'} || 'admin')} |
||||||
|
); |
@ -0,0 +1 @@ |
|||||||
|
SOGoTimeZone = {$TimeZone}; |
@ -0,0 +1,58 @@ |
|||||||
|
SOGoUserSources = ( |
||||||
|
\{ |
||||||
|
{ |
||||||
|
# If AllowedGroups prop is set, build a LDAP filter |
||||||
|
# based on the posixMemberOf attribute |
||||||
|
# (Only available on iPasserelle) |
||||||
|
|
||||||
|
my @groups = split(/[;,]/, ($sogod{'AllowedGroups'} || '')); |
||||||
|
$filter = ''; |
||||||
|
if (scalar(@groups) == 1){ |
||||||
|
$filter = "(posixMemberOf=$groups[0])"; |
||||||
|
} |
||||||
|
elsif (scalar(@groups) gt 1){ |
||||||
|
$filter = '('; |
||||||
|
my $i = 0; |
||||||
|
foreach (@groups){ |
||||||
|
$i++; |
||||||
|
$filter .= "(posixMemberOf=$_)"; |
||||||
|
$filter .= ' OR ' if ($i < scalar(@groups)); |
||||||
|
} |
||||||
|
$filter .= ')'; |
||||||
|
} |
||||||
|
$OUT .= ($filter eq '') ? '' : ' filter = "' . $filter . '";'; |
||||||
|
} |
||||||
|
CNFieldName = cn; |
||||||
|
IDFieldName = uid; |
||||||
|
UIDFieldName = uid; |
||||||
|
baseDN = "ou=Users,{ esmith::util::ldapBase($DomainName); }"; |
||||||
|
bindFields = uid; |
||||||
|
canAuthenticate = YES; |
||||||
|
displayName = "{($sogo{'LDAPUserSourceName'} || 'Utilisateurs')}"; |
||||||
|
hostname = localhost; |
||||||
|
id = users; |
||||||
|
isAddressBook = YES; |
||||||
|
port = {$ldap{'TCPPort'}}; |
||||||
|
type = ldap; |
||||||
|
\}, |
||||||
|
\{ |
||||||
|
{ |
||||||
|
# Use the same filter, against the cn attr |
||||||
|
$filter =~ s/posixMemberOf=/cn=/g; |
||||||
|
$OUT .= ($filter eq '') ? '' : ' filter = "' . $filter . '";'; |
||||||
|
} |
||||||
|
CNFieldName = cn; |
||||||
|
IDFieldName = cn; |
||||||
|
UIDFieldName = cn; |
||||||
|
baseDN = "ou=Groups,{ esmith::util::ldapBase($DomainName); }"; |
||||||
|
bindFields = cn; |
||||||
|
canAuthenticate = YES; |
||||||
|
displayName = "{($sogo{'LDAPGroupSourceName'} || 'Groupes')}"; |
||||||
|
hostname = localhost; |
||||||
|
id = groups; |
||||||
|
isAddressBook = YES; |
||||||
|
port = {$ldap{'TCPPort'}}; |
||||||
|
type = ldap; |
||||||
|
\} |
||||||
|
); |
||||||
|
|
@ -0,0 +1,5 @@ |
|||||||
|
NGUseUTF8AsURLEncoding = YES; |
||||||
|
WOMessageUseUTF8 = YES; |
||||||
|
WOParsersUseUTF8 = YES; |
||||||
|
WOPort = 127.0.0.1:{$sogod{'TCPPort'}}; |
||||||
|
WOUseRelativeURLs = YES; |
@ -0,0 +1,2 @@ |
|||||||
|
\}; |
||||||
|
\} |
@ -0,0 +1,5 @@ |
|||||||
|
/* |
||||||
|
{ |
||||||
|
$OUT = Text::Template::_load_text("/etc/e-smith/templates-default/template-begin"); |
||||||
|
$OUT =~ s/^#/ * /gm |
||||||
|
} */ |
@ -0,0 +1,22 @@ |
|||||||
|
CONNECT mysql; |
||||||
|
|
||||||
|
REPLACE INTO user (host, user, password) |
||||||
|
VALUES ( |
||||||
|
'localhost', |
||||||
|
'sogo', |
||||||
|
password('{$sogod{DbPassword}}') |
||||||
|
); |
||||||
|
|
||||||
|
REPLACE INTO db (host, db, user, select_priv, insert_priv, update_priv, |
||||||
|
delete_priv, create_priv, drop_priv, alter_priv, index_priv, |
||||||
|
references_priv) |
||||||
|
VALUES ( |
||||||
|
'localhost', |
||||||
|
'sogo', |
||||||
|
'sogo', |
||||||
|
'Y', 'Y', 'Y', 'Y', |
||||||
|
'Y', 'Y', 'Y', 'Y', |
||||||
|
'Y' |
||||||
|
); |
||||||
|
|
||||||
|
FLUSH PRIVILEGES; |
@ -0,0 +1,75 @@ |
|||||||
|
#!/usr/bin/perl -wT |
||||||
|
|
||||||
|
# vim: ft=xml ts=4 sw=4 et: |
||||||
|
#---------------------------------------------------------------------- |
||||||
|
# heading : Collaboration |
||||||
|
# description : Groupware |
||||||
|
# navigation : 2000 3000 |
||||||
|
#---------------------------------------------------------------------- |
||||||
|
#---------------------------------------------------------------------- |
||||||
|
# copyright (C) 2011 Firewall-Services |
||||||
|
# |
||||||
|
# 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 |
||||||
|
# |
||||||
|
#---------------------------------------------------------------------- |
||||||
|
|
||||||
|
use strict; |
||||||
|
use esmith::FormMagick::Panel::sogo; |
||||||
|
|
||||||
|
my $fm = esmith::FormMagick::Panel::sogo->new(); |
||||||
|
|
||||||
|
$fm->display(); |
||||||
|
|
||||||
|
__DATA__ |
||||||
|
<form title="FORM_TITLE" header="/etc/e-smith/web/common/head.tmpl" footer="/etc/e-smith/web/common/foot.tmpl"> |
||||||
|
<page name="First" pre-event="print_status_message()" post-event="apply()"> |
||||||
|
<field type="select" id="status" options="'enabled' => |
||||||
|
'ENABLED', 'disabled' => 'DISABLED'" |
||||||
|
value="get_prop('status')"> |
||||||
|
<description>STATUS_DESC</description> |
||||||
|
<label>STATUS</label> |
||||||
|
</field> |
||||||
|
<field type="select" id="aclSendMail" options="'yes' => |
||||||
|
'YES', 'no' => 'NO'" |
||||||
|
value="get_prop('ACLsSendEMailNotifications')"> |
||||||
|
<description>SEND_ACL_MAIL_DESC</description> |
||||||
|
<label>SEND_ACL_MAIL</label> |
||||||
|
</field> |
||||||
|
<field type="select" id="mailAlarm" options="'yes' => |
||||||
|
'YES', 'no' => 'NO'" |
||||||
|
value="get_prop('EMailAlarms')"> |
||||||
|
<description>MAIL_ALARM_DESC</description> |
||||||
|
<label>MAIL_ALARM</label> |
||||||
|
</field> |
||||||
|
<field type="select" id="auxAccounts" options="'yes' => |
||||||
|
'YES', 'no' => 'NO'" |
||||||
|
value="get_prop('AuxiliaryUserAccounts')"> |
||||||
|
<description>AUX_ACCOUNTS_DESC</description> |
||||||
|
<label>AUX_ACCOUNTS</label> |
||||||
|
</field> |
||||||
|
<field type="select" id="publicAccess" options="'yes' => |
||||||
|
'YES', 'no' => 'NO'" |
||||||
|
value="get_prop('PublicAccess')"> |
||||||
|
<description>PUBLIC_ACCESS_DESC</description> |
||||||
|
<label>PUBLIC_ACCESS</label> |
||||||
|
</field> |
||||||
|
<field type="literal" id="allowed_groups_desc" |
||||||
|
value=""> |
||||||
|
<description>ALLOWED_GROUPS_DESC</description> |
||||||
|
</field> |
||||||
|
<subroutine src="print_allowed_groups()" /> |
||||||
|
<subroutine src="print_button('SAVE')" /> |
||||||
|
</page> |
||||||
|
</form> |
@ -0,0 +1,6 @@ |
|||||||
|
{ |
||||||
|
NSGlobalDomain = { |
||||||
|
}; |
||||||
|
sogod = { |
||||||
|
}; |
||||||
|
} |
@ -0,0 +1,78 @@ |
|||||||
|
<?xml version="1.0" standalone="yes"?> |
||||||
|
<!DOCTYPE var:component> |
||||||
|
<var:component |
||||||
|
className="UIxPageFrame" |
||||||
|
xmlns="http://www.w3.org/1999/xhtml" |
||||||
|
xmlns:var="http://www.skyrix.com/od/binding" |
||||||
|
xmlns:const="http://www.skyrix.com/od/constant" |
||||||
|
xmlns:rsrc="OGo:url" |
||||||
|
xmlns:label="OGo:label" |
||||||
|
const:jsFiles="PasswordPolicy.js" |
||||||
|
const:popup="YES" |
||||||
|
><var:string var:value="doctype" const:escapeHTML="NO"/> |
||||||
|
<div id="aboutBox" style="display:none;"> |
||||||
|
<div> |
||||||
|
<p class="logo"><img const:alt="SOGo" rsrc:src="sogo-logo.png"/></p> |
||||||
|
<p>Version <var:string value="version"/> <span class="buildDate">(<var:string value="buildDate" />)</span></p> |
||||||
|
<p class="scroll"><var:string label:value="AboutBox" const:escapeHTML="NO"/></p> |
||||||
|
<img const:alt="Inverse" rsrc:src="inverse.png"/> |
||||||
|
<p class="links"><a href="http://www.sogo.nu/" target="_new">www.sogo.nu</a> / |
||||||
|
<a href="http://www.inverse.ca/" target="_new">www.inverse.ca</a></p> |
||||||
|
<p><a id="aboutClose" href="#" class="button"> |
||||||
|
<span><var:string label:value="OK" /></span></a></p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div id="linkBanner" class="linkbanner"> |
||||||
|
<a id="about" href="#"><var:string label:value="About" /></a> |
||||||
|
</div> |
||||||
|
<form id="connectForm" var:href="connectURL"> |
||||||
|
<div id="loginScreen"> |
||||||
|
<var:if condition="hasLoginSuffix"><script |
||||||
|
type="text/javascript">var loginSuffix = '<var:string value="loginSuffix"/>';</script |
||||||
|
></var:if> |
||||||
|
<table width="560"> |
||||||
|
<tr> |
||||||
|
<td> |
||||||
|
<img const:alt="*" id="splash" rsrc:src="/logo_ipasserelle.png"/> |
||||||
|
</td> |
||||||
|
<td id="loginCell" width="230"> |
||||||
|
<label><var:string label:value="Username:"/><br/> |
||||||
|
<input class="textField" id="userName" name="userName" |
||||||
|
type="text" var:value="cookieUsername" /></label> |
||||||
|
<label><var:string label:value="Password:"/><br/> |
||||||
|
<input class="textField" id="password" |
||||||
|
name="password" type="password" var:value="password" /></label> |
||||||
|
<label><var:string label:value="Language:"/><br/> |
||||||
|
<var:popup const:id="language" const:name="language" |
||||||
|
list="languages" |
||||||
|
item="item" |
||||||
|
var:selection="item" |
||||||
|
var:value="item" |
||||||
|
string="languageText" |
||||||
|
label:noSelectionString="choose" |
||||||
|
/></label> |
||||||
|
<var:if condition="hasLoginDomains"> |
||||||
|
<label><var:string label:value="Domain:"/><br/> |
||||||
|
<var:popup const:id="domain" const:name="domain" |
||||||
|
list="loginDomains" |
||||||
|
item="item" |
||||||
|
var:selection="item" |
||||||
|
var:value="item" |
||||||
|
string="item" |
||||||
|
/></label> |
||||||
|
</var:if> |
||||||
|
<label><input id="rememberLogin" type="checkbox" class="checkBox" var:checked="rememberLogin"/> <var:string label:value="Remember username"/></label> |
||||||
|
<label> |
||||||
|
<a href="#" class="button" id="submit" name="submit"> |
||||||
|
<span><var:string label:value="Connect" /></span></a> |
||||||
|
</label> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<tr><td colspan="2"><label id="animation"><!-- busy.gif! --></label></td></tr> |
||||||
|
</table> |
||||||
|
<p id="errorMessage"><!-- space --></p> |
||||||
|
</div> |
||||||
|
</form |
||||||
|
><img const:alt="*" id="preparedAnimation" rsrc:src="busy.gif"/> |
||||||
|
</var:component> |
||||||
|
|
@ -0,0 +1,29 @@ |
|||||||
|
-- SOGo Database Creation |
||||||
|
|
||||||
|
CREATE DATABASE IF NOT EXISTS `sogo`; |
||||||
|
|
||||||
|
CONNECT `sogo`; |
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `sogo_folder_info` ( |
||||||
|
`c_folder_id` bigint(20) unsigned NOT NULL auto_increment, |
||||||
|
`c_path` varchar(255) NOT NULL, |
||||||
|
`c_path1` varchar(255) NOT NULL, |
||||||
|
`c_path2` varchar(255) default NULL, |
||||||
|
`c_path3` varchar(255) default NULL, |
||||||
|
`c_path4` varchar(255) default NULL, |
||||||
|
`c_foldername` varchar(255) NOT NULL, |
||||||
|
`c_location` varchar(2048) NOT NULL, |
||||||
|
`c_quick_location` varchar(2048) default NULL, |
||||||
|
`c_acl_location` varchar(2048) default NULL, |
||||||
|
`c_folder_type` varchar(255) NOT NULL, |
||||||
|
PRIMARY KEY (`c_path`), |
||||||
|
UNIQUE KEY `c_folder_id` (`c_folder_id`) |
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `sogo_user_profile` ( |
||||||
|
`c_uid` varchar(255) NOT NULL, |
||||||
|
`c_defaults` text, |
||||||
|
`c_settings` text, |
||||||
|
PRIMARY KEY (`c_uid`) |
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
||||||
|
|
@ -0,0 +1 @@ |
|||||||
|
-- sogo_mysql_privileges.sql template |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,122 @@ |
|||||||
|
#!/usr/bin/perl -w |
||||||
|
|
||||||
|
#---------------------------------------------------------------------- |
||||||
|
# copyright (C) 2011 Firewall-Services |
||||||
|
# |
||||||
|
# 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 |
||||||
|
#---------------------------------------------------------------------- |
||||||
|
package esmith::FormMagick::Panel::sogo; |
||||||
|
|
||||||
|
use strict; |
||||||
|
|
||||||
|
use esmith::FormMagick; |
||||||
|
use esmith::AccountsDB; |
||||||
|
use esmith::ConfigDB; |
||||||
|
use esmith::cgi; |
||||||
|
use esmith::util; |
||||||
|
use Exporter; |
||||||
|
use Carp qw(verbose); |
||||||
|
|
||||||
|
our @ISA = qw(esmith::FormMagick Exporter); |
||||||
|
|
||||||
|
our @EXPORT = qw( |
||||||
|
get_prop |
||||||
|
print_allowed_groups |
||||||
|
apply |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
our $accountdb = esmith::AccountsDB->open(); |
||||||
|
our $configdb = esmith::ConfigDB->open(); |
||||||
|
|
||||||
|
sub new { |
||||||
|
shift; |
||||||
|
my $self = esmith::FormMagick->new(); |
||||||
|
$self->{calling_package} = (caller)[0]; |
||||||
|
bless $self; |
||||||
|
return $self; |
||||||
|
} |
||||||
|
|
||||||
|
sub get_prop{ |
||||||
|
my ($fm, $prop, $default) = @_; |
||||||
|
return $configdb->get_prop("sogod", $prop) || $default; |
||||||
|
} |
||||||
|
|
||||||
|
sub print_allowed_groups { |
||||||
|
my ($self) = @_; |
||||||
|
my $q = $self->{cgi}; |
||||||
|
|
||||||
|
my @allowedGroups = split(/[,;]/, (get_prop($self, 'AllowedGroups', ''))); |
||||||
|
|
||||||
|
if (my @groups = $accountdb->groups()) { |
||||||
|
|
||||||
|
print "<tr><td class=\"sme-noborders-label\">", |
||||||
|
$self->localise('ALLOWED_GROUPS'), |
||||||
|
"</td><td>\n"; |
||||||
|
|
||||||
|
print $q->start_table({-class => "sme-border"}),"\n"; |
||||||
|
print $q->Tr( |
||||||
|
esmith::cgi::genSmallCell($q, $self->localise('ALLOWED_OR_NOT'),"header"), |
||||||
|
esmith::cgi::genSmallCell($q, $self->localise('GROUP'),"header"), |
||||||
|
esmith::cgi::genSmallCell($q, $self->localise('DESCRIPTION'),"header") |
||||||
|
); |
||||||
|
|
||||||
|
foreach my $g (@groups) { |
||||||
|
my $groupname = $g->key(); |
||||||
|
my $checked; |
||||||
|
if (grep { $groupname eq $_ } @allowedGroups) { |
||||||
|
$checked = 'checked'; |
||||||
|
} else { |
||||||
|
$checked = ''; |
||||||
|
} |
||||||
|
|
||||||
|
print $q->Tr( |
||||||
|
$q->td( |
||||||
|
"<input type=\"checkbox\"" |
||||||
|
. " name=\"allowedGroups\"" |
||||||
|
. " $checked value=\"$groupname\">" |
||||||
|
), |
||||||
|
esmith::cgi::genSmallCell($q, $groupname,"normal"), |
||||||
|
esmith::cgi::genSmallCell( $q, $accountdb->get($groupname)->prop("Description"),"normal") |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
print "</table></td></tr>\n"; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
return undef; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
sub apply { |
||||||
|
my ($self) = @_; |
||||||
|
my $q = $self->{cgi}; |
||||||
|
|
||||||
|
$configdb->set_prop('sogod', 'status', $q->param("status")); |
||||||
|
$configdb->set_prop('sogod', 'ACLsSendEMailNotifications', $q->param("aclSendMail")); |
||||||
|
$configdb->set_prop('sogod', 'EMailAlarms', $q->param("mailAlarm")); |
||||||
|
$configdb->set_prop('sogod', 'AuxiliaryUserAccounts', $q->param("auxAccounts")); |
||||||
|
$configdb->set_prop('sogod', 'PublicAccess', $q->param("publicAccess")); |
||||||
|
$configdb->set_prop('sogod', 'AllowedGroups', join(',', $q->param("allowedGroups"))); |
||||||
|
|
||||||
|
unless ( system ("/sbin/e-smith/signal-event", "email-update") == 0 ){ |
||||||
|
return $self->error('ERROR_OCCURED', 'FIRST');; |
||||||
|
} |
||||||
|
|
||||||
|
return $self->success('SUCCESS','FIRST'); |
||||||
|
} |
||||||
|
|
||||||
|
1; |
@ -0,0 +1,7 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
exec \ |
||||||
|
/usr/local/bin/setuidgid sogo \ |
||||||
|
/usr/local/bin/multilog t s5000000 \ |
||||||
|
/var/log/memcached-sogo |
||||||
|
|
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
exec 2>&1 |
||||||
|
|
||||||
|
exec memcached -u sogo -v -s /var/run/sogo/memcached.sock -a 600 |
Loading…
Reference in new issue