initial commit of file from CVS for smeserver-vacation on Sat Sep 7 21:13:49 AEST 2024

This commit is contained in:
Trevor Batley 2024-09-07 21:13:49 +10:00
parent 7cb4cb28ec
commit aa21fb54b3
48 changed files with 4838 additions and 2 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
*.rpm
*.log
*spec-20*
*.tar.xz

21
Makefile Normal file
View File

@ -0,0 +1,21 @@
# Makefile for source rpm: smeserver-vacation
# $Id: Makefile,v 1.1 2020/04/14 14:42:37 brianr Exp $
NAME := smeserver-vacation
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attept a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@ -1,3 +1,15 @@
# smeserver-vacation # <img src="https://www.koozali.org/images/koozali/Logo/Png/Koozali_logo_2016.png" width="25%" vertical="auto" style="vertical-align:bottom"> smeserver-vacation
SMEServer Koozali developed git repo for smeserver-vacation smecontribs SMEServer Koozali developed git repo for smeserver-vacation smecontribs
## Wiki
<br />https://wiki.koozali.org/Vacation
## Bugzilla
Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-vacation&product=SME%20Contribs&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED)
## Description
<br />*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
*Once it has been checked, then this comment will be deleted*
<br />

340
additional/COPYING Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

1
contriborbase Normal file
View File

@ -0,0 +1 @@
contribs10

9
createlinks Normal file
View File

@ -0,0 +1,9 @@
#!/usr/bin/perl -w
use esmith::Build::CreateLinks qw(:all);
use File::Basename;
use File::Path;
panel_link("uservacations", "manager");
event_link("contribs-possible-restart-smanager","smeserver-vacation-update","10");

11
root/etc/cron.d/vacation Normal file
View File

@ -0,0 +1,11 @@
# Check each user account if a vacation message should be enabled
# or disabled based on the given From/To vacation dates
# Do it shortly after midnight on every day
#
# Comment or edit the following line if you want to receive a status mail
# everytime this cron script runs
MAILTO=""
#
SHELL=/bin/sh
PATH=/sbin/e-smith:/sbin:/bin:/usr/sbin:/usr/bin
5 0 * * * root /sbin/e-smith/vacation/check_vacation_dates.sh

View File

@ -0,0 +1,8 @@
#!/bin/sh
if (systemctl list-unit-files |grep smanager) then
echo "Restarting smanager"
/sbin/e-smith/signal-event manager2-refresh;
systemctl restart smanager
else
echo "Smanager not loaded"
fi

View File

@ -0,0 +1,62 @@
<lexicon lang="bg">
<entry>
<base>User vacations</base>
<trans>Отсъствие на потребител</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Съобщение при отсъствие</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Промяна на настройките за отсъствие</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Можете да променяте съобщение на потребителя при отсъствие като щракнете на връзката от дясно на името му.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Отсъствие</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Въведете съобщение при отсъствие тук. Можете да използвате "$SUBJECT" навсякъде в текста, което ще бъде заменено с полето "относно" от съобщението, което е активирало автоматичния отговор. </p> <p> Това съобщение трябва да бъде сглобено от две част, разделени с празен ред. Първата ще бъде интегрирана в заглавната част на съобщението-отговор, и затова се уверете че сте оставили поне празен ред преди текста на съобщението. </p> <p> Основният домейн ще бъде добавен към адреса автоматично, или можете да вмъкнете виртуален домейн като замените частта за домейн на адреса на изпращача на първия ред от съобщението с виртуалния домейн (например, заменете стандартното "From: user@primary.domain" с "From: user@virtual.domain"). За да промените съобщението отново в стандартното, напишете "reset". </p> <p> Можете също да попълните полетата "Включи отсъствие от" and "Изключи отсъствие от" за да включите и изключите автоматично изпращането на съобщение за този потребител на определена дата. </p> <p> Форматът, който се използва е ГГГГММДД (четири цифри за година, две цифри за месец, две цифри за ден) и датите в двете полета не трябва да са еднакви. Ако искате да използвате тази функционалност, оставете настройката "Включи съобщение при отсъствие" на "Не" - то автоматично ще се активира на база на зададените дати. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Включи отсъствие от (ГГГГММДД)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Изключи отсъствие от (ГГГГММДД)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Съобщение за отсъствие</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Включи съобщения при отсъствие</trans>
</entry>
<entry>
<base>FROM</base>
<trans>От:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Няма да мога да прочета пощата си за известно време. Вашето съобщение относно $SUBJECT ще бъде прочетено, когато се завърна.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>Няма потребители в групата(ите), които сте упълномощен да управлявате.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Отг: $SUBJECT - няма достъп до пощата</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="da">
<entry>
<base>User vacations</base>
<trans>Bruger fravær</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Fraværsbesked</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Skift indstillinger for brugers fravær</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Du kan ændre en brugers fraværsbesked ved at klikke på linket til højre for deres navn.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Fravær</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Skriv en fraværsbesked her. Du kan bruge "$SUBJECT" overalt i teksten som vil blive erstattet med indholdet i emnelinjen i den e mail som har aktiveret autosvaret. </p> <p> Denne besked skal bestå af to dele, adskilt af en blank linje. Den først del vil blive integreret ind i overskriften på e mail svaret, du må derfor sikre dig, at du indsætter mindst én blank linje før du skriver din besked.</p> <p> Det primære domæne bliver automatisk tilføjet til adressen, eller du kan indsætte et virtuelt domæne ved at erstatte domæne delen i afsender adressen i den første linje med det virtuelle navn (f.eks. erstat standard "Fra: user@primære.domæne" med "Fra: bruger@virtuelt.domæne"). For at skifte fraværsbeskeden tilbage til standard, skal du skrive "reset". </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Aktiver fraværsbesked den (ååååmmdd)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Deaktiver fraværsbesked den (ååååmmdd)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Fraværsbesked</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Aktiver fraværsbesked</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Fra:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>jeg kan ikke læse mine e mail i et stykke tid. Din e-mail om $SUBJECT vil jeg først læse, når jeg kommer tilbage.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>Der er ingen brugere i den gruppe du har tilladelse til at administrere.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Sv: $SUBJECT - Væk fra mine e-mail </trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="de">
<entry>
<base>User vacations</base>
<trans>Abwesenheitsnotizen</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Abwesenheitsnotiz</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Einstellungen zur Benutzerabwesenheit ändern</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Die Abwesenheitsnotiz eines Benutzers können Sie ändern, indem Sie auf den Link rechts neben dem jeweiligen Benutzernamen klicken.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Abwesenheitsnotiz</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Geben Sie eine Abwesenheitsnotiz ein. Der Parameter <b>"$SUBJECT"</b> enthält den Betreff der empfangenen E-Mail und kann an beliebiger Stelle im Text der automatischen Antwort platziert werden. </p> <p>Eine vollständige Abwesenheitsnotiz besteht aus zwei Teilen, die voneinander durch eine Leerzeile getrennt sein müssen: der gesamte Text bis zur ersten freien Zeile wird in die Kopfzeile der E-Mail-Antwort aufgenommen. Lassen Sie deshalb mindestens eine Zeile frei, bevor Sie den eigentlichen Text Ihrer Abwesenheitsnotiz eingeben. </p> <p> Die Haupt-Domäne wird der Adresse automatisch hinzugefügt. Sie können aber auch eine Adresse aus einer virtuellen Domäne verwenden, indem Sie für die Absenderadresse in der ersten Zeile der Abwesenheitsnotiz die Hauptdomäne durch eine virtuelle Domäne ersetzen (ersetzen Sie z.B. die voreingestellte Adresse: "From: benutzer@hauptdomaene.xx" durch "From: benutzer@virtuelledomaene.xx"). Um die Abwesenheitsnotiz auf den Standard-Text zurück zu setzen geben sie "reset" ein.</p><p>Sie können auch die entsprechenden Felder ausfüllen, um die Abwesenheitsnachricht für diesen Benutzer zu einem bestimmten Datum automatisch ein- und auszuschalten.</p><p>Geben Sie jeweils das entsprechende Datum im Format JJJJMMDD (vierstellige Jahreszahl, zweistellige Monatsnummer, zweistellige Tageszahl) ein. In beiden Feldern darf nicht das selbe Datum stehen. <br />Verwenden Sie für eintägige Abwesenheit das Datum des Folgetages für die Deaktivierung der Abwesenheitsnotiz. </p><p>Wenn Sie ein Datum für die automatische Aktivierung angegeben haben belassen Sie die Schaltfläche "Abwesenheitsnotiz aktivieren" auf "Nein" - die Aktivierung erfolgt automatisch am gewählten Datum.]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>automatisch aktivieren am (JJJJMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>automatisch deaktivieren am (JJJJMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Abwesenheitsnotiz</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Abwesenheitsnotiz aktivieren</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Von:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="el">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,94 @@
<lexicon lang="en-us">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>
You can modify a users vacation message by clicking
on the link to the right of their name below.
</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans> <![CDATA[
<p>
Enter a vacation message here. You can use "$SUBJECT"
anywhere in the text to be replaced with the subject line
from the email that activated the auto-reply.
</p>
<p>
This message must be composed of two parts separated by a blank line.
The first will be integrated into the headings of the email reply,
you must thus ensure you leave at least a blank line before typing your message.
</p>
<p>
The primary domain is added to the address automatically,
or you can insert a virtual domain by replacing the domain part of the sender address
in the first line of the message with the virtual domain name (eg. replace the default
"From: user@primary.domain" with "From: user@virtual.domain").
To change the vacation message back to the default type "reset".
</p>
<p>
You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to
automatically enable and disable sending of the vacation message for this user account on the given dates.
</p>
<p>
The format used is YYYYMMDD (four digit year, two digit month, two digit day)
and the dates in the two fields must not be the same.
If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given.
</p>
</p>
]]>
</trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email </trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="es">
<entry>
<base>User vacations</base>
<trans>Ausencia</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Mensaje de Ausencia</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Cambiar configuración de ausencia</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Puede modificar el mensaje de ausencia de los usuarios haciendo click sobre el enlace a la derecha del nombre.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Ausencia</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Mensaje de ausencia</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Habilitar ausencia</trans>
</entry>
<entry>
<base>FROM</base>
<trans>De:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Estoy momentáneamente ausente y ésta es una respuesta automática. Por tal motivo no podré contestar el email. En relación a su email $SUBJECT lo leeré a mi regreso.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - momentáneamente ausente</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="et">
<entry>
<base>User vacations</base>
<trans>Kasutajate automaatvastused</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Automaatvastus</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Muuda kasutaja automaatvastuse seadeid</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Sa saad muuta kasutajate automaatvastust kui klikid lingile nende nime kõrval.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Automaatvastus</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Automaatvastuse teade</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Luba automaatvastus</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Kellelt:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="fr">
<entry>
<base>User vacations</base>
<trans>Utilisateurs absents</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Message d'absence</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Modifier les messages d'absence des utilisateurs</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Vous pouvez modifier le message d'absence d'un utilisateur en cliquant sur le lien correspondant à côté de son nom.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Absent(e)</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Tapez votre message d'absence ici. Vous pouvez utiliser à votre guise dans ce message le terme "$SUBJECT" : il sera remplacé dans la réponse automatique par le sujet du courriel auquel il fait référence. </p> <p> Ce message doit être composé de deux parties séparées par une ligne vide. La première sera intégrée aux en-têtes du courriel de réponse ; vous devez donc vous assurer de laisser au moins une ligne vide avant de taper votre message d'absence. </p> <p> Par défaut, l'adresse de courriel de l'utilisateur sera celle du domaine principal, mais vous pouvez la redéfinir avec un domaine virtuel en remplaçant la partie de domaine de l'adresse de l'expéditeur dans la première ligne du message, avec le nom de domaine virtuel (par exemple remplacer le défaut "From: user@primary.domain" avec "From: user@virtual.domain"). Pour revenir au message d'absence par défaut, tapez "reset". </p><p> Vous pouvez également remplir les champs "Activer le message de vacance» et «Désactiver le message de vacances afin d'activer et désactiver automatiquement l'envoi du message d'absence pour ce compte utilisateur aux dates indiquées. </p> <p> Le format utilisé est AAAAMMJJ (quatre chiffres pour l'année, deux chiffres pour le mois, deux chiffres pour le Jour) et les dates dans les deux champs ne doivent pas être les mêmes. Si vous souhaitez utiliser cette fonctionnalité, laissez la case "Activer le message de vacance" sur "Non, il sera automatiquement activé le jour de la date donnée.</p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Activer le message d'absence le (AAAAMMJJ)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Désctiver le message d'absence le (AAAAMMJJ)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Message d'absence</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Activer le message d'absence</trans>
</entry>
<entry>
<base>FROM</base>
<trans>De:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Je n'ai, pour l'instant, pas accès à ma messagerie. Je n'aurais connaissance qu'à mon retour de votre courriel concernant : $SUBJECT</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>Il n'y a aucun utilisateur dans le(s) groupe(s) que vous êtes autoriser à gérer.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Je suis actuellement absent(e)</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="he">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="hu">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="id">
<entry>
<base>User vacations</base>
<trans>Pesan liburan pengguna</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Pesan Liburan</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Ubah setting liburan pengguna.</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Anda dapat mengubah pesan liburan dengan meng-klik pada link di sebelah kanan nama pengguna dibawah ini.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Liburan</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Pesan liburan</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable-kan pesan liburan</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Dari:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Saya tidak akan membaca email saya untuk beberapa saat. Email anda tentang $SUBJECT akan saya baca saat saya kembali.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="it">
<entry>
<base>User vacations</base>
<trans>Assenze utente</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Messaggio utente assente</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Modifica le impostazioni per utente assente</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Il messaggio per l'utente assente può essere modificato cliccando sul link a destra del nome.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Assente</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Inserire qui il messaggio utente assente. Si può utilizzare la variabile "$SUBJECT" in qualunque punto del messaggio per richiamare l'oggetto del messaggio che ha attivato l'auto-risposta. </p> <p> Il messaggio deve essere composto di due parti separate da una riga vuota. La prima parte sarà integrata nell'intestazione della risposta, perciò assicuratevi di lasciare una riga vuota prima del messaggio vero e proprio. </p> <p> Il dominio primario viene aggiunto automaticamente al messaggio, oppure è possibile inserire un dominio virtuale sostituendo la parte del dominio dell'indirizzo del mittente nella prima riga del messaggio con il nome di dominio virtuale (ad esempio, sostituire il predefinito "From: user@primary.domain" con "From: user@virtual.domain"). Per ripristinare il messaggio di utente assente al valore di default selezionare "reset". </p> <p> E' anche possibile compilare i campi "Abilita assenza il" e "Disabilita assenza il" al fine di attivare e disattivare l'invio del messaggio di assenza per questo account utente per le date indicate automaticamente. </p> <p> Il formato utilizzato è YYYYMMDD (4 numeri per l'anno (Y), due numeri per il mese (M) e due numeri per il giorno (D)) e le date nei due campi non possono essere le stesse. Se si vuole utilizzare questa funzionalità lasciare "Abilita messaggi di vacanza" impostato a "No", sarà automaticamente attivato in base alla data indicata. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Abilita messaggio utente assente il (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disabilita messaggio utente assente il (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Messagio utente assente</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Abilita messaggio utente assente</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Da:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Non potrò leggere la mia posta per un po' di tempo. Il vostro messaggio con oggetto $SUBJECT verrà letto al mio ritorno.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>Non ci sono uenti nel gruppo(i) che vi è consentito gestire</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Non posso leggere la mia posta</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="ja">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="nb">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="nl">
<entry>
<base>User vacations</base>
<trans>Gebruiker afwezigheid</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Afwezigheidsbericht</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Verander gebruiker vakantie instellingen</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>U kunt een gebruikers vakantie bericht wijzigen door op de koppeling te klikken rechts naast de betreffende naam hieronder.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vakantie</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Voer uw afwezigheidsbericht hier in. U kunt "$SUBJECT" overal in de tekst gebruiken, het zal worden vervangen door de onderwerp regel van de e-mail welke deze automatische antwoord service heeft geactiveerd. </p> <p> Het bericht dient uit twee delen te bestaan, gescheiden door een lege regel. Het eerste deel wordt geïntegreerd in de kopregels van de antwoord e-mail, zorg er vervolgens voor dat er minimaal een lege regel aanwezig is voor dat het bericht wordt getypt. </p> <p> De primaire domeinnaam wordt automatisch toegevoegd aan het adres, of er kan een virtueel domein worden gebruikt door het vervangen van het domein gedeelte van het afzender adres in de eerste regel van het bericht met dit virtuele domein (bijv. de standaard "From: user@primary.domain" te vervangen door "From: user@virtual.domain"). Om het standaard afwezigheidsbericht te herstellen dient u "reset" in te typen. </ p> <p> U kunt ook de "Afwezigheids bericht aanzeten op" en "Afwezeigheids bericht uitzetten op" velden invullen om de vakantie boodschap automatisch aan en uit te zetten op de opgegegen datum's voor deze gebruikersaccount. </ p> <p> Het gebruikte formaat is JJJJMMDD (vier cijfers jaar, twee cijfers maand, twee cijfers voor de dag) en de datum in de twee velden mag niet hetzelfde zijn. Om deze functionaliteit te gebruiken, laat U de instelling "Vakantie berichten inschakelen" op "Nee" - het wordt automatisch geactiveerd op basis van de datum gegeven.</p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Afwezigheids bericht aanzetten op (JJJJMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Afwezigheids bericht uitzetten op (JJJJMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Afwezigheidsbericht</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Afwezigheidsbericht activeren</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Van:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Ik ben op het moment niet in staat uw e-mail betreffende $SUBJECT te lezen Zodra ik weer terug ben zal ik deze lezen.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>In de toegestane management groepen zijn geen gebruikers</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Afwezigheidsbericht </trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="pl">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="pt-br">
<entry>
<base>User vacations</base>
<trans>Férias do Usuário</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Mensagem de Férias</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Mudar as configurações de férias do usuário</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Você pode mudar a mensagem de férias de um usuário clicando no link a direita do nome na listagem abaixo.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Férias</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Digite a mensagem de férias aqui. Você pode usar "$SUBJECT" em qualquer lugar do texto e será substituído pela linha de assunto do e-mail que ativou a auto-resposta. </p> <p> Esta mensagem deve ser composta de duas partes separadas por uma linha em branco. A primeira parte fará parte dos cabeçalhos do e-mail de resposta, você precisa lembrar de deixar ao menos uma linha antes de digitar sua mensagem. </p> <p> O domínio primário é adicionado ao endereço automaticamente, ou você pode inserir um domínio virtual substituindo a parte do domínio na primeira linha da mensagem com o nome do domínio virtual. (exemplo: substituir o padrão "From: usuario@dominioprimario.com" com "From: usuario@dominiovirtual.com"). Para resetar a mensagem de volta a mensagem padrão, tecle "reset" e salve. </p> <p> Você também pode preencher os campos "Habilitar férias em" e "Desabilitar férias em" para habilitar e desabilitar a mensagem de férias para este usuário nas datas fornecidas.</p> <p> O formato de data usado é AAAAMMDD (ano com quatro dígitos, mês com dois dígitos e dia com dois dias) e a data nos dois campos não pode ser a mesma. Se você quer usar essa funcionalidade, deixe "Habilitar mensagem de férias" configurado como "Não", isto será ativado automaticamente baseado nas datas fornecidas. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Habilitar mensagem de férias em (AAAAMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Desabilitar mensagem de férias em (AAAAMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Mensagem de férias</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Habilitar mensagens de férias</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Não estou lendo meu e-mail por um período. Seu e-mail com o assunto $SUBJECT será lido quando eu retornar.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>Não há usuários no(s) grupo(s) que você gerencia.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Não lendo e-mail</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="pt">
<entry>
<base>User vacations</base>
<trans>Férias do Usuário</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Mensagem de Férias</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Mudar as configurações de férias do usuário</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Você pode mudar a mensagem de férias de um usuário clicando no link a direita do nome na listagem abaixo.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Férias</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Mensagem de férias</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Habilitar mensagens de férias</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Não estou lendo meu e-mail por um período. Seu e-mail com o assunto $SUBJECT será lido quando eu retornar</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="ro">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="ru">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>От:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="sl">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="sv">
<entry>
<base>User vacations</base>
<trans>Användarfrånvaro</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Frånvaromeddelande</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Ändra användares frånvaromeddelande</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Du kan ändra en användares frånvaromeddelande genom att klicka till höger om deras namn nedan.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Frånvaro</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Frånvaromeddelande</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Aktivera frånvaromeddelanden</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Från:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Jag kan inte läsa ditt e-postmeddelande på ett tag. Ditt meddelande angående $SUBJECT kommer att läsas när jag är tillbaka.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Sv: $SUBJECT - Frånvarande.</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="th">
<entry>
<base>User vacations</base>
<trans>User vacations</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Vacation Message</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Change user vacation settings</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>You can modify a users vacation message by clicking on the link to the right of their name below.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Vacation</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Vacation message</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Enable vacation messages</trans>
</entry>
<entry>
<base>FROM</base>
<trans>From:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="tr">
<entry>
<base>User vacations</base>
<trans>Kuallnıcının tatil modları</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>Tatil modu mesajı</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>Kullanıcı tatil modu ayarları</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>Kullanıcıların tatil modu mesajlarını, isimlerinin sağına tıklayarak değiştirebilirsiniz.</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>Tatil modu</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>Tatil modu mesajı</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>Tatil modu mesajlarını etkinleştir</trans>
</entry>
<entry>
<base>FROM</base>
<trans>Kimden:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>Bu yüzden e-posta mesajlarımı okuyamıyorum. $SUBJECT başlıklı mesajınızı döndüğümde okuyacağım.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - E-posta hesabımdan uzaktayım</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="zh-cn">
<entry>
<base>User vacations</base>
<trans>用户假期</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>假日留言</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>更改用户休假设置</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>您可以点击用户名右边的链接修改用户的假期留言。</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>假期</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p> Enter a vacation message here. You can use "$SUBJECT" anywhere in the text to be replaced with the subject line from the email that activated the auto-reply. </p> <p> This message must be composed of two parts separated by a blank line. The first will be integrated into the headings of the email reply, you must thus ensure you leave at least a blank line before typing your message. </p> <p> The primary domain is added to the address automatically, or you can insert a virtual domain by replacing the domain part of the sender address in the first line of the message with the virtual domain name (eg. replace the default "From: user@primary.domain" with "From: user@virtual.domain"). To change the vacation message back to the default type "reset". </p> <p> You can also fill out the "Enable vacation on" and "Disable vacation on" fields in order to automatically enable and disable sending of the vacation message for this user account on the given dates. </p> <p> The format used is YYYYMMDD (four digit year, two digit month, two digit day) and the dates in the two fields must not be the same. If you want to use this functionality, leave the "Enable vacation messages" setting at "No" - it will be automatically activated based on the date given. </p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>Enable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>Disable vacation on (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>假期留言</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>启用假期留言</trans>
</entry>
<entry>
<base>FROM</base>
<trans>来自:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,62 @@
<lexicon lang="zh-tw">
<entry>
<base>User vacations</base>
<trans>使用者假期</trans>
</entry>
<entry>
<base>Vacation Message</base>
<trans>假期留言</trans>
</entry>
<entry>
<base>FORM_TITLE</base>
<trans>更改使用者假期設定</trans>
</entry>
<entry>
<base>DESCRIPTION</base>
<trans>您可以透過按下使用者右側連結改變使用者假期留言</trans>
</entry>
<entry>
<base>LABEL_VACATION</base>
<trans>假期</trans>
</entry>
<entry>
<base>MODIFY_DESCRIPTION</base>
<trans><![CDATA[ <p>請於此處輸入假期訊息。您可於文字中任意使用 "$SUBJECT" 以便取代主動回覆郵件中的主旨欄。 </p> <p> 此訊息由兩部分空白行組成。前面的部分將被整合到,您必須確認輸入訊息之前至少留一空白行。</p> <p>主域名將主動加入位址,或者您亦可手動輸入虛擬網域以取代寄件訊息第一行的位址之網域部分 (例如:以 "From: user@virtual.domain"取代預設值 "From: user@primary.domain" with) 。改變假期訊息回到預設值請按"reset"。</p> <p> 您亦可位使用者帳號給定的日期填入 "允許假期" 與 "關閉假期" 區域以自動允許與關閉來寄出假期訊息。</p> <p> 使用的格式為 YYYYMMDD (4位數年2位數月2位數日) 而且該兩區域的日期必需不同。倘若您想使用此功能,讓 "允許假期留言" 設定為 "不要" - 它將基於給定的日期自動啟用。</p> </p> ]]></trans>
</entry>
<entry>
<base>VACATION_FROM</base>
<trans>允許假期 (YYYYMMDD)</trans>
</entry>
<entry>
<base>VACATION_TO</base>
<trans>關閉假期 (YYYYMMDD)</trans>
</entry>
<entry>
<base>MESSAGE</base>
<trans>假期留言</trans>
</entry>
<entry>
<base>VACATION_STATUS</base>
<trans>允許假期留言</trans>
</entry>
<entry>
<base>FROM</base>
<trans>從:</trans>
</entry>
<!-- this is read into a ~/.vacation.msg verbatim
leave a blank line after the subject line but not before,
and don't translate $SUBJECT -->
<entry>
<base>AWAY_FROM_MAIL</base>
<trans>我暫時無法讀取我的電郵。當我回來後,您的郵件 $SUBJECT 將被讀取。</trans>
</entry>
<entry>
<base>NO_USERS_IN_GRANTED_GROUPS</base>
<trans>There are no users in the group(s) that you are granted to manage.</trans>
</entry>
<entry>
<base>ANSWER_TO_OBJECT_SENDER</base>
<trans>Re: $SUBJECT - Away from my email</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,15 @@
{
if ($qmail{FilterOrder})
{
my $VacationDelay = $qmail{VacationDelay} || '';
if ($props{EmailVacation})
{
return "| /usr/local/bin/vacation -j $VacationDelay $USERNAME"
if ($props{EmailVacation} eq 'yes');
}
return '# Vacation Message not set'
}
}

View File

@ -0,0 +1,18 @@
{
if ($qmail{FilterOrder})
{
return '# qmail FilterOrder enabled - vacation'
}
else
{
my $VacationDelay = $qmail{VacationDelay} || '';
if ($props{EmailVacation})
{
return "| /usr/local/bin/vacation -j $VacationDelay $USERNAME"
if ($props{EmailVacation} eq 'yes');
}
return '# Vacation Message not set'
}
}

View File

@ -0,0 +1,72 @@
#!/usr/bin/perl -wT
#----------------------------------------------------------------------
# heading : Your Settings
# description : Vacation Message
# longdesc : create an autoresponse message
# navigation : 100 600
#
# Copyright (c) 2001 Daniel van Raay <danielvr@caa.org.au>
# Modified (c) 2002,2006 Stephen Noble <stephen@dungog.net>
#
# 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.
#
# uses the FormMagick Panel for uservacations
# but pulls username from $ENV{'REMOTE_USER'};
# rather then being selected from a table
#
#----------------------------------------------------------------------
use strict;
use warnings;
use esmith::FormMagick::Panel::uservacations;
my $fm = esmith::FormMagick::Panel::uservacations->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="userpanel_change_settings()" >
<description>MODIFY_DESCRIPTION</description>
<field type="literal" id="User" value="get_panel_user()">
<label>ACCOUNT</label>
</field>
<field type="literal" id="FullName" value="get_full_name()">
<label>USER_NAME</label>
</field>
<field type="text" id="EmailVacationFrom" value="get_vacation_date_from()">
<label>VACATION_FROM</label>
</field>
<field type="text" id="EmailVacationTo" value="get_vacation_date_to()">
<label>VACATION_TO</label>
</field>
<subroutine src="userpanel_get_vacation_text()" />
<field
type="select"
id="EmailVacation"
options="'no' => 'NO', 'yes' => 'YES'"
value="get_vacation_status()">
<label>VACATION_STATUS</label>
</field>
<subroutine src="print_button('SAVE')" />
</page>
</form>

View File

@ -0,0 +1,79 @@
#!/usr/bin/perl -wT
#----------------------------------------------------------------------
# heading : Collaboration
# description : User vacations
# navigation : 3000 3150
#
# Copyright (c) 2001 Daniel van Raay <danielvr@caa.org.au>
# Modified (c) 2002,2006 Stephen Noble <stephen@dungog.net>
#
# 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.
#
#----------------------------------------------------------------------
use strict;
use warnings;
use esmith::FormMagick::Panel::uservacations;
my $fm = esmith::FormMagick::Panel::uservacations->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()">
<!-- <field type="literal" display="user_accounts_exist()" >
<label>DESCRIPTION</label>
</field> -->
<subroutine src="user_accounts_exist()" />
<subroutine src="print_vacation_table" />
</page>
<page
name="VACATION_PAGE_MODIFY"
pre-event="turn_off_buttons()"
post-event="change_settings()" >
<description>MODIFY_DESCRIPTION</description>
<field type="literal" id="User" >
<label>ACCOUNT</label>
</field>
<field type="literal" id="FullName">
<label>USER_NAME</label>
</field>
<field type="text" id="EmailVacationFrom">
<label>VACATION_FROM</label>
</field>
<field type="text" id="EmailVacationTo">
<label>VACATION_TO</label>
</field>
<subroutine src="get_vacation_text()" />
<field
type="select"
id="EmailVacation"
options="'no' => 'NO', 'yes' => 'YES'"
value="EmailVacation">
<label>VACATION_STATUS</label>
</field>
<subroutine src="print_button('SAVE')" />
</page>
</form>

View File

@ -0,0 +1,39 @@
#!/bin/bash
CURRENT_DATE=`date +%Y%m%d`
echo "Checking vacation changes on $CURRENT_DATE"
# iterate over users
for key in `db accounts keys`
do
if [ `db accounts gettype $key` == "user" ]
then
# check for EmailVacationProperty
if [ -z `db accounts getprop $key EmailVacation` ]
then
echo "$key never went on vacation before."
# if both fields are empty or contain the same value, do nothing
elif [ `db accounts getprop $key EmailVacationFrom` == `db accounts getprop $key EmailVacationTo` ]
then
echo "Both fields empty or same date, not changing anything for $key"
# db accounts setprop $key EmailVacation no
elif [ `db accounts getprop $key EmailVacationFrom` == $CURRENT_DATE ]
then
echo "Happy holidays, $key"
db accounts setprop $key EmailVacation yes
/etc/e-smith/events/actions/qmail-update-user event $key
elif [ `db accounts getprop $key EmailVacationTo` == $CURRENT_DATE ]
then
echo "Back to work, $key"
db accounts setprop $key EmailVacation no
/etc/e-smith/events/actions/qmail-update-user event $key
else
echo "Nothing to do for $key"
fi
fi
done

511
root/usr/local/bin/vacation Normal file
View File

@ -0,0 +1,511 @@
#!/usr/bin/perl
#
# $Id: vacation.pl,v 1.3 1999/01/04 04:28:17 psamuel Exp $
#
# Vacation program for qmail. Based on the original version for
# sendmail by Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> and Tom
# Christiansen <tchrist@convex.com>.
#
# The original is available from CPAN as
#
# CPAN/scripts/mailstuff/vacation
#
# This version by Peter Samuel <peter@uniq.com.au>
#
# Minor changes by Daniel van Raay <danielvr@caa.org.au>
#
###########################################################################
use DB_File;
require 5;
$check_to_and_cc = 1;
$dot_vacation_prefix = "";
###########################################################################
#
# Process any command line arguments.
while ($ARGV[0] =~ /^-/)
{
$_ = shift;
if (/^-I/i)
{
&initialise();
exit(0);
}
if (/^-n/)
{
$no_msg_no_reply = 1;
}
if (/^-j/)
{
$check_to_and_cc = 0;
}
if (/^-s/)
{
chdir;
&get_user_details();
&show_dbm_file("$dbm_file");
exit(0);
}
if (/^-t([\d.]*)([smhdw])/)
{
&time_scales();
$timeout = $1;
$timeout *= $scale{$2} if $2;
}
if (/^-p*/)
{
$dot_vacation_prefix = $1;
}
}
&interactive() if (! scalar @ARGV);
###########################################################################
#
# Process incoming mail. Qmail provides a number of environment
# variables that detail the properties of the incoming mail message.
# Qmail always supplies $DTLINE. If it isn't set then we probably
# aren't being called by qmail.
exit(0) unless $ENV{'DTLINE'};
$rpline = $ENV{'RPLINE'};
$ufline = $ENV{'UFLINE'};
exit(0) if ($ufline =~ /-REQUEST\@/i);
exit(0) if ($rpline =~ /-REQUEST\@/i);
$home = $ENV{'HOME'};
$host = lc($ENV{'HOST'});
$sender = lc($ENV{'SENDER'});
$user = lc($ENV{'USER'});
$timeout = 60 * 60 * 24 * 7 unless $timeout;
chdir;
&get_program_details();
&check_ignores();
&check_headers();
&check_lastdate("$dbm_file");
&send_reply();
exit(0);
###########################################################################
sub interactive
{
chdir;
&get_user_details();
if (-f "$dot_qmail_file")
{
print
"You have a $dot_qmail_file in your home directory containing:\n\n";
&cat_file("$dot_qmail_file");
print "\n";
print "Would you like to remove it and disable the vacation feature?";
if (&yesno())
{
&delete_qmail_file("$dot_qmail_file");
&show_dbm_file("$dbm_file");
&clear_dbm_file("$dbm_file");
print "\nBack to normal reception of mail.\n";
exit(0);
}
print << "EOF";
Mail is still under the control of your $dot_qmail_file file.
EOF
exit(0);
}
print << "EOF";
This program can be used to answer your mail automatically
when you go away on vacation.
EOF
if (-f "$message_file")
{
print "You already have a message file in $home/$message_file.\n";
if (&yesno("Would you like to see it?"))
{
&show_file("$message_file");
}
if (&yesno("Would you like to edit it?"))
{
&edit_file("$message_file");
}
}
else
{
&create_msg_file("$message_file", "$vacation_msg");
print << "EOF";
A default vacation message has been created in $home/$message_file.
This message will be automatically returned to anyone sending you mail
while you're away.
EOF
if (&yesno("Would you like to see it?"))
{
&show_file("$message_file");
}
if (&yesno("Would you like to edit it?"))
{
&edit_file("$message_file");
}
}
print << "EOF";
To enable the vacation feature a $home/$dot_qmail_file file is created.
EOF
if (&yesno("Would you like to enable the vacation feature now?"))
{
&create_qmail_file("$dot_qmail_file", "$dot_qmail_commands");
&clear_dbm_file("$dbm_file");
print << "EOF";
The vacation feature has been enabled. Please remember to turn it off
when you return. Bon voyage!
EOF
}
else
{
print "\nThe vaction feature has not been enabled.\n";
}
exit(0);
}
sub initialise
{
chdir;
&get_user_details();
&clear_dbm_file("$dbm_file");
&create_msg_file("$message_file", "$vacation_msg");
&create_qmail_file("$dot_qmail_file", "$dot_qmail_commands");
exit(0);
}
sub edit_file
{
my($file) = @_;
system("$editor $file");
}
sub cat_file
{
my($file) = @_;
open(FILE, "$file");
print while(<FILE>);
close(FILE);
}
sub show_file
{
my($file) = @_;
system("$pager $file");
}
sub show_dbm_file
{
my($file) = @_;
local(%DBM); # Can't be my()
my($key);
require "ctime.pl";
open(PAGER, "| $pager");
print PAGER << "EOF";
Welcome back!
While you were away, vacation mail was sent to the following addresses:
EOF
dbmopen(%DBM, "$file", 0644);
foreach $key (sort keys %DBM)
{
print PAGER "$key\n";
print PAGER " ", ctime(unpack("L", $DBM{$key}));
}
dbmclose(%DBM);
close(PAGER);
}
sub clear_dbm_file
{
my($file) = @_;
local(%DBM); # Can't be my()
dbmopen(%DBM, "$file", 0644);
undef %DBM;
dbmclose(%DBM);
}
sub create_msg_file
{
my($file, $msg) = @_;
open(MSG, "> $file");
print MSG $msg;
close(MSG);
chmod(0644, $file);
}
sub create_qmail_file
{
my($file, $msg) = @_;
open(MSG, "> $file");
print MSG $msg;
close(MSG);
chmod(0644, $file);
}
sub delete_qmail_file
{
my($file) = @_;
unlink("$file");
}
sub yesno
{
my($msg) = @_;
my($answer);
while (1)
{
print "$msg [y/n] ";
$answer = <STDIN>;
last if $answer =~ /^[yn]/i;
}
$answer =~ /^y/i;
}
sub get_common_details
{
$message_file = $dot_vacation_prefix . ".vacation.msg";
$dbm_file = $dot_vacation_prefix . ".vacation";
$vacation_msg = << 'EOF'; # Must use single quotes
Subject: away from my mail
I will not be reading my mail for a while. Your mail regarding
"$SUBJECT"
will be read when I return.
EOF
}
sub get_program_details
{
&get_common_details();
$mailprog = "/var/qmail/bin/datemail -t";
$aliases = $dot_vacation_prefix . ".vacation.aliases";
$noreply = $dot_vacation_prefix . ".vacation.noreply";
}
sub get_user_details
{
&get_common_details();
$user = $ENV{'USER'} || $ENV{'LOGNAME'} || getlogin || (getpwuid($>))[0];
$dot_qmail_file = ".qmail";
$editor = $ENV{'VISUAL'} || $ENV{'EDITOR'} || 'vi';
$home = (getpwnam($user))[7];
$mailbox = "$home/Maildir/";
$pager = $ENV{'PAGER'} || 'less';
$vacation = "/usr/local/bin/vacation";
$dot_qmail_commands = << "EOF"; # Must use double quotes
| $vacation $user
$mailbox
EOF
}
sub time_scales
{
%scale =
(
's', 1,
'm', 60,
'h', 60 * 60,
'd', 60 * 60 * 24,
'w', 60 * 60 * 24 * 7,
);
}
sub check_ignores
{
&get_aliases();
push(@ignores, @aliases);
push(@ignores,
'daemon',
'postmaster',
'mailer-daemon',
'mailer',
'root',
'',
);
if (-f "$noreply")
{
open(NOREPLY, "$noreply");
while(<NOREPLY>)
{
chomp;
next if (/^\s*#|^$/);
push(@ignores, lc($_));
}
close(NOREPLY);
}
for (@ignores)
{
exit(0) if ($sender eq $_);
exit(0) if ($sender =~ /^$_\@/);
}
}
sub check_headers
{
my($header);
$/ = ''; # Read in paragraph mode
$header = <STDIN>;
$header =~ s/\n\s+/ /g; # Join continuation lines
exit(0) if ($header =~ /^Precedence:\s+(bulk|junk|list)/im);
exit(0) if ($header =~ /^From.*-REQUEST\@/im);
exit(0) if ($header =~ /^Mailing-List:/im);
exit(0) if ($header =~ /^X-Spam-Status:\s+Yes/im);
if ($check_to_and_cc)
{
($to) = ($header =~ /To:\s+(.*)/im);
($cc) = ($header =~ /Cc:\s+(.*)/im);
$to .= ', ' . $cc if $cc;
$to = lc($to);
for (@aliases)
{
++$alias_match if $to =~ /\b$_\b/im;
}
exit(0) unless $alias_match;
}
($subject) = ($header =~ /^Subject:\s+(.*)/im);
$subject =~ s/\s*$//m; # Remove trailing spaces
$subject = "(No subject)" unless $subject;
}
sub get_aliases
{
@aliases =
(
"$user\@$host",
);
if (-f "$aliases")
{
open(ALIASES, "$aliases");
while(<ALIASES>)
{
chomp;
next if (/^\s*#|^$/);
push(@aliases, lc($_));
}
close(ALIASES);
}
}
sub check_lastdate
{
my($file) = @_;
dbmopen(%DBM, "$file", 0644);
$now = time;
$then = unpack("L", $DBM{"$sender"});
exit(0) if (($now - $then) <= $timeout);
$DBM{$sender} = pack("L", $now);
close(%DBM);
}
sub send_reply()
{
if (-f "$message_file")
{
open(MSG, "$message_file");
undef $/; # Read in the entire file
$vacation_msg = <MSG>;
close(MSG);
}
else
{
# Do not generate a reply if the user doesn't have a message file
# and -n was supplied on the command line.
exit(0) if ($no_msg_no_reply);
}
my $type = ($vacation_msg =~ m/<html/ && $vacation_msg =~ m/<\/html>/ ) ? 'html':'plain';
$vacation_msg =~ s/\$SUBJECT/$subject/g;
open(MAILPROG, "| $mailprog");
print MAILPROG << "EOF";
To: $sender
Precedence: junk
Content-Type: text/$type; charset="UTF-8"
EOF
print MAILPROG $vacation_msg;
close(MAILPROG);
}

View File

@ -0,0 +1,585 @@
.\"
.\" $Id: vacation.1,v 1.3 1999/01/04 04:28:02 psamuel Exp $
.\"
.TH vacation 1 "23 Sep 1998"
.SH NAME
vacation \- reply to mail automatically
.SH SYNOPSIS
.B vacation
.br
.B vacation
.RI [ -I ]
.br
.B vacation
.RI [ -s ]
.br
.B vacation
.RI [ -j ]
.RI [ -n ]
.RI [ -tN ]
.I username
.SH DESCRIPTION
.B vacation
automatically replies to incoming mail. This version of
.B vacation
has been specifically tailored for use with a
.B qmail
mail transport agent. It will almost certainly fail if used with a
different mail transport agent.
.SH USAGE
.SS Preparing to go away on vacation
.LP
Run
.B vacation
without any command line arguments.
.LP
The first time you run
.BR vacation ,
a default reply message will be created in
.BR ~/.vacation.msg .
If this file already exists, it will not be overwritten. You'll be
given the opportunity to see the contents of this file as well as the
chance to edit it to make your own changes.
.LP
Once you are satisfied with the contents of the reply message,
you will be asked if you would like to enable
.BR vacation .
.LP
If you answer
.IR yes ,
a default
.B ~/.qmail
file will be created. The contents of this file are:
.in 2i
| /usr/local/bin/vacation \fIusername\fP
.br
$home/Maildir/
.in
(If you see an environment variable above - such as
.I $home
or
.I $user
- it will be expanded to its correct value during
.B vacation's
setup phase).
.LP
These instructions tell the
.B qmail-local
mail delivery agent to send an automatic reply to the sender of the
message and to save a copy of the message in your default mailbox.
.LP
Answering
.I yes
also instructs
.B vacation
to initialise the
.I dbm
database file(s). The
.I dbm
database file(s) will contain details of who was sent an automatic
reply and when it was sent. If the
.I dbm
database file(s) already exist, the contents will be cleared.
.LP
If you answer
.I no
when asked if you wish to enable
.BR vacation ,
neither the
.B ~/.qmail
nor the
.I dbm
database file(s) will be created.
.SS Returning from vacation
Run
.B vacation
without any command line arguments.
.LP
.B vacation
displays the contents of your
.B ~/.qmail
file and asks if you would like to remove the file, thereby disabling
.BR vacation .
.LP
If you answer
.IR yes ,
your
.B ~/.qmail
file will be removed.
.B vacation
will then display the contents of the
.I dbm
database, listing the mail addresses of those who were sent an
automatic reply to their mail while you were away and the date on which
the automatic reply was sent. The
.I dbm
database will then be cleared.
.LP
If you answer
.IR no ,
your
.B ~/.qmail
file will not be removed and the contents of the
.I dbm
database will remain unchanged.
.SS Processing incoming mail
When not in setup mode,
.B vacation
reads an incoming mail message from standard input and automatically
sends a reply message to the sender. The reply text is taken from
.BR ~/.vacation.msg .
If this file does not exist, a default message will be used.
.B vacation
will
.I not
generate a reply if any of the following conditions are met:
.TP
.B -
The sender address includes the string
.BR -REQUEST@ .
.TP
.B -
The sender is you.
.TP
.B -
The sender's name is any of:
.in 2i
daemon
.br
postmaster
.br
mailer-daemon
.br
mailer
.br
root
.in
.TP
.B -
The sender matches any of the mail addresses listed in the optional
files
.B ~/.vacation.aliases
and
.BR ~/.vacation.noreply .
See the
.B FILES
section below for more details on these files.
.TP
.B -
There is a
.B Precedence: bulk
or
.B Precedence: junk
header.
.TP
.B -
There is a
.B Mailing-List:
header.
.TP
.B -
Your mail address, or any address you have listed in the optional
.B ~/.vacation.aliases
file does
.I not
appear in either the
.B To:
or
.B Cc:
headers. This feature can be disabled using the
.B -j
option. See the
.B OPTIONS
section below for more details on this option.
.TP
.B -
An automatic reply has already been sent to the same address during
the last week. The timeout value may be changed using the
.B -t
option. See the
.B OPTIONS
section below for more details on this option.
.TP
.B -
.B -n
was specified on the command line and the user does not have a
.B ~/.vacation.msg
file.
.SH OPTIONS
.TP 10
.I none
If no command line options are provided,
.B vacation
will run as an interactive setup program. If you do not have a
.B ~/.qmail
file,
.B vacation
will assume you wish to enable its services. If you have a
.B ~/.qmail
file,
.B vacation
will assume you wish to disable its services.
.TP 10
.B -I
Hands free initialisation.
.B vacation
will create your
.BR ~/.qmail ,
.B ~/.vacation.msg
and
.I dbm
database files. If
.I any
of these files already exist, their contents will be replaced by the
.B vacation
defaults.
.B vacation
will exit after the initialisation process, regardless of any other
command line options provided.
.TP 10
.B -s
Show the contents of the
.I dbm
database. The contents will not be cleared and your
.B ~/.qmail
and
.B ~/.vacation.msg
files will remain intact.
.B vacation
will exit after displaying the contents of the
.I dbm
database, regardless of any other command line options provided.
.TP 10
.B -j
Do not examine the incoming message
.B To:
or
.B Cc:
headers to determine if the message was sent directly to you rather
than an alias. Using this option means that mail sent to an alias of
which you are a member may generate an automatic reply. This option is
only useful when specified in the
.B ~/.qmail
file.
.TP 10
.B -n
Do not generate a reply message if the user's
.B ~/.vacation.msg
does not exist. Updates to the
.I dbm
database will still be performed. This option is for those users who
wish to quickly disable
.B vacation
by removing their
.B ~/.vacation.msg
file. It can also be used at sites where users do not have shell
accounts but can remove their own files via ftp or perhaps a purpose
built web interface.
.TP 10
.BI -t N
Change the interval between repeat replies to the same sender. The
default is 1 week. A trailing
.BR s ,
.BR m ,
.BR h ,
.BR d ,
or
.B w
scales the number
.I N
to seconds, minutes, hours, days or weeks respectively. For example, to
set the interval value to 3 days you would specify
.B -t3d.
There should be
.I no
spaces between the
.B -t
and
.IR N .
This option is only useful when specified in the
.B ~/.qmail
file.
.TP 10
.I username
Your login name. When
.B vacation
sees this argument it will examine standard input for an incoming mail
message. The value of this argument is not actually used by this
implementation of
.B vacation
as your login name is provided by a
.B qmail
environment variable. However an argument
.I must
be supplied so that
.B vacation
knows when to process incoming mail and when to provide an interactive
setup session. Using your login name for this argument simply maintains
a look and feel similar to the
.B sendmail
version of
.BR vacation .
.SH ENVIRONMENT
.LP
If the environment variable
.B $VISUAL
is set and is not null, its value determines the editor used to edit
the
.BR ~/.vacation.msg .
If
.B $VISUAL
is not set or its value is null, the environment variable
.B $EDITOR
is examined. If it is set and is not null, its value determines the
editor to be used. If
.B $EDITOR
is not set or its value is null, the default editor
.B vi
will be used.
.LP
If the environment variable
.B $PAGER
is set and is not null, its value determines the page viewing program
to be used to display the
.B ~/.vacation.msg
and the contents of the
.I dbm
database. If it is not set or its value is null, the default page
viewer
.B less
will be used.
.SH FILES
.TP 10
.B ~/.vacation.msg
Contains the text of the automatic reply message. It should
.I not
contain any
.B From:
or
.B To:
headers. If the string
.B $SUBJECT
appears in
.BR ~/.vacation.msg ,
it will be replaced with the subject of the original message. The
default message is:
.in 2i
Subject: away from my mail
I will not be reading my mail for a while. Your mail regarding
"$SUBJECT"
will be read when I return.
.in
.TP 10
.B ~/.qmail
Contains the delivery instructions for
the local mail delivery agent,
.BR qmail-local .
The default contents of this file are:
.in 2i
| /usr/local/bin/vacation \fIusername\fP
.br
$home/Maildir/
.in
(If you see an environment variable above - such as
.I $home
or
.I $user
- it will be expanded to its correct value during
.B vacation's
setup phase).
The first line instructs
.B qmail-local
to generate an automatic reply and the second line instructs
.B qmail-local
to save the incoming message in your default mailbox. Failure to
include this line will result in automatic replies being generated but
.I no
mail will be saved in your default Mailbox.
.TP 10
.B ~/.vacation.*
The
.I dbm
database file(s) used to store sender mail addresses and time stamps.
The actual name of this file, or files, depends on the implementation
of
.B Perl
you have at your site. Possibilities include
.B ~/.vacation.pag
and
.B ~/.vacation.dir
or
.BR ~/.vacation.db .
The actual names are unimportant as
.B Perl
deals with them internally.
.TP 10
.B ~/.vacation.aliases
This optional file contains a list of mail addresses, one per line.
Each address should be a fully qualified alias for yourself. This file
serves two purposes.
Unless started
with the
.B -j
option,
.B vacation
examines the incoming message
.B To:
and
.B Cc:
headers. If your mail address, or any of the mail addresses specified
in
.BR ~/.vacation.aliases ,
match any of the addresses in these headers, an automatic reply will
be generated for the message. If there is no match, an automatic reply
will not be generated. This restricts
.B vacation
to replying to mail explicitly addressed to you or any of your
aliases.
The second purpose is to avoid sending an automatic reply to any
incoming mail from yourself or one of your aliases - you already know
you're on vacation!
Lines beginning with a
.I #
character and blank lines will be ignored.
.TP 10
.B ~/.vacation.noreply
This file contains a list of mail addresses, one per line. If an
incoming mail message matches one of the listed addresses, an
automatic reply will not be generated for that message. The addresses
need not be fully qualified. If you will be sending yourself mail from
a remote site, you may wish to include your remote address to avoid
sending yourself an automatic reply.
Lines beginning with a
.I #
character and blank lines will be ignored.
.SH CAVEATS
If you already have a
.B ~/.qmail
file, which contains delivery instructions other than those specified
by
.BR vacation ,
there is a risk that it will be deleted by
.BR vacation .
It is good practise to keep a copy of your
.B ~/.qmail
file.
If you are hand editing your
.B ~/.qmail
file, remember to include a delivery instruction to save the message in
your default Mailbox, which should be
.BR $home/Maildir/ .
You
.I must
expand any environment variables - such as
.I $home
or
.I $user
- as
.B qmail-local
will not expand them for you.
If you have a detailed
.B ~/.vacation.msg
with text different from the default, there is a risk that it will be
deleted by
.BR vacation .
It is good practise to keep a copy of your
.B ~/.vacation.msg
file.
If you are hand editing your
.B ~/.vacation.msg
file, the first block of lines up to the first blank line will form
part of the mail headers.
There is
.I no
need to run this version of
.B vacation
through
.BR qmail 's
.B preline
program.
.B preline
is used to insert a
.B UUCP
style
.B From
header into the message. This version of
.B vacation
does not need that header. In fact, running this version of
.B vacation
through
.B preline
will cause problems if the incoming message is larger than your system's
standard I/O buffer size.
.B preline
expects to pipe the entire message through a subsequent command.
However
.B vacation
only examines the headers of the message, and then stops reading from
standard input. This upsets
.B preline
if the size of the message is larger than a single I/O buffer. In this
case
.B preline
will terminate with a transient error to
.B qmail-send
and you'll see the following message in your mail logs:
.in 1i
.B deferral: preline:_fatal:_unable_to_copy_input:_broken_pipe/
.in
The same problem exists if you use the traditional
.B sendmail
version of
.B vacation
with
.BR qmail .
That version of
.B vacation
requires the use of
.B preline
to provide it with the
.B UUCP
style
.B From
header.
.SH VERSION
Version 1.3
.SH AUTHOR
Peter Samuel, Uniq Professional Services
.br
<Peter.Samuel@uniq.com.au>
.SH AVAILABILITY
The latest version of
.B vacation
for
.B qmail
should always be available from
.I ftp://ftp.uniq.com.au/pub/tools
.SH SEE ALSO
.BR vi (1),
.BR less (1),
.BR dot-qmail (5),
.BR qmail (7),
.BR qmail-command (8),
.BR qmail-local (8),
.BR qmail-send (8).

View File

@ -0,0 +1,463 @@
#----------------------------------------------------------------------
# uservacations.pm
# support@dungog.net
#----------------------------------------------------------------------
package esmith::FormMagick::Panel::uservacations;
use strict;
use warnings;
use esmith::util;
use esmith::FormMagick;
use esmith::AccountsDB;
use esmith::ConfigDB;
use Exporter;
use Carp qw(verbose);
use HTML::Tabulate;
our @ISA = qw(esmith::FormMagick Exporter);
our @EXPORT = qw();
our $db = esmith::ConfigDB->open();
our $adb = esmith::AccountsDB->open();
our $PanelUser = $ENV{'REMOTE_USER'} ||'';
$PanelUser = $1 if ($PanelUser =~ /^([a-z][\.\-a-z0-9]*)$/);
our %delegatedVacations;
sub new {
shift;
my $self = esmith::FormMagick->new(filename => '/etc/e-smith/web/functions/uservacations');
$self->{calling_package} = (caller)[0];
bless $self;
return $self;
}
#server-manager functions
sub user_accounts_exist
{
my $self = shift;
my $q = $self->{cgi};
#return scalar $adb->users;
if (scalar $adb->users)
{ return $self->localise('DESCRIPTION'); }
}
sub print_vacation_table
{
my $self = shift;
my $q = $self->{cgi};
#We want to retrieve granted group from DB, and retrieve users of groups
my $record = $adb->get($PanelUser);
my $dg=$record->prop('delegatedVacations')||'';
$dg =~ s/ //g;
my @g = split(/,/, $dg);
my @visiblemembers = ();
foreach my $g (@g) {
my $members = $adb->get_prop("$g",'Members');
next unless defined $members;
$members =~ s/ //g;
my @members = split(/,/, $members);
push @visiblemembers , @members ;
}
foreach my $k ( @visiblemembers )
{
$delegatedVacations{$k}=1;
}
my @users = $adb->users;
return $self->localise("ACCOUNT_USER_NONE") if (@users == 0);
return $self->localise("NO_USERS_IN_GRANTED_GROUPS") if (@visiblemembers == 0 && $dg ne '');
my $vacation_table =
{
title => $self->localise('USER_LIST_CURRENT'),
stripe => '#D4D0C8',
fields => [ qw(User FullName status Modify) ],
labels => 1,
field_attr => {
User => { label_escape => 0, escape => 0 , label => $self->localise('ACCOUNT') },
FullName => { label_escape => 0, escape => 0 , label => $self->localise('USER_NAME') },
status => { label_escape => 0, escape => 0 , label => $self->localise('LABEL_VACATION') },
Modify => { label_escape => 0,
label => $self->localise('MODIFY'),
link => \&modify_link
},
}
};
my @data = ();
for my $user (@users)
{
next if %delegatedVacations and not $delegatedVacations{$user->key};
# make it clearer which uses have vacation
my $EmailVacation = $user->prop('EmailVacation') || '';
my $EmailVacationFrom = $user->prop('EmailVacationFrom') || '';
my $EmailVacationTo = $user->prop('EmailVacationTo') || '';
my $status = $user->prop('EmailVacation') || '';
if ($status eq 'yes') { $status = 'YES'; } else { $status = ''; }
push @data,
{ User => $user->key,
FullName => $user->prop('FirstName') . " " .
$user->prop('LastName'),
status => $self->localise($status),
EmailVacation => $EmailVacation,
EmailVacationFrom => $EmailVacationFrom,
EmailVacationTo => $EmailVacationTo,
Modify => $self->localise('MODIFY'),
}
}
my $t = HTML::Tabulate->new($vacation_table);
$t->render(\@data, $vacation_table);
}
sub modify_link
{
my ($data_item, $row, $field) = @_;
return "uservacations?" .
join("&",
"page=0",
"page_stack=",
"Next=Next",
"User=" . $row->{User},
"FullName=" . $row->{FullName},
"EmailVacation=" . $row->{EmailVacation},
"EmailVacationFrom=" . $row->{EmailVacationFrom},
"EmailVacationTo=" . $row->{EmailVacationTo},
"wherenext=VACATION_PAGE_MODIFY");
}
# this formats the text to display on screen
sub get_vacation_text
{
my $self = shift;
my $q = $self->{cgi};
my $domain = $db->get_value('DomainName');
my $user = $q->param('User');
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $from = 'From:';
my $away = $self->localise('AWAY_FROM_MAIL');
my $return = $self->localise('ANSWER_TO_OBJECT_SENDER');
my $ExistingMessage = "$from $fullname &lt\;$user\@$domain&gt\;\n"."Subject: $return\n".
"\n$away\n"."\n--\n$fullname";
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp;
#reformat so email address isn't hidden inside < >
while (<VACATION>)
{
$_ =~ s/</&lt\;/;
$_ =~ s/>/&gt\;/;
push (@vacationTemp, $_);
}
$ExistingMessage = join ("", @vacationTemp);
close VACATION;
}
my $start = '<tr>
<td class="sme-noborders-label">' . $self->localise('MESSAGE') . '
<td class="sme-noborders-content"><TEXTAREA NAME="new_message" ROWS="10" COLS="60">';
my $end = '</TEXTAREA></td>
</tr>';
return $start . $ExistingMessage . $end;
}
# saves the text to .vacation.msg
sub change_settings
{
my $self = shift;
my $q = $self->{cgi};
my $domain = $db->get_value('DomainName');
my $user = $q->param('User');
my $EmailVacation = $q->param('EmailVacation');
my $EmailVacationFrom = $q->param('EmailVacationFrom');
my $EmailVacationTo = $q->param('EmailVacationTo');
my $new_message = $q->param('new_message');
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $from = 'From:';
my $away = $self->localise('AWAY_FROM_MAIL');
my $return = $self->localise('ANSWER_TO_OBJECT_SENDER');
my $vacation_text = "$from $fullname \<$user\@$domain\>\n"."Subject: $return\n".
"\n$away \n"."\n--\n$fullname";
my $reset = $vacation_text;
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp = <VACATION>;
$vacation_text = join ("", @vacationTemp);
close VACATION;
}
chomp $new_message;
# reset msg to default,
if ($new_message =~ /reset/)
{ $vacation_text = $reset; }
else
{
#or save new_message
unless ($new_message eq "")
{ $vacation_text = $new_message; }
}
# Strip out DOS Carriage Returns (CR)
$vacation_text =~ s/\r//g;
unlink $vfile;
open (VACATION, ">$vfile")
or die ("Error opening vacation message.\n");
print VACATION "$vacation_text";
close VACATION;
esmith::util::chownFile($user, $user,
"/home/e-smith/files/users/$user/.vacation.msg");
$adb->set_prop($user, 'EmailVacation', $EmailVacation);
$adb->set_prop($user, 'EmailVacationFrom', $EmailVacationFrom);
$adb->set_prop($user, 'EmailVacationTo', $EmailVacationTo);
#the first is more correct but is slower
#system ("/sbin/e-smith/signal-event", "email-update", $user) == 0
system ("/etc/e-smith/events/actions/qmail-update-user event $user") == 0
or die ("Error occurred updating .qmail\n");
if (($EmailVacation eq 'no') && ( -e "/home/e-smith/files/users/$user/.vacation"))
{
system ("/bin/rm /home/e-smith/files/users/$user/.vacation") == 0
or die ("Error resetting vacation db.\n");
}
return $self->success("SUCCESS");
}
#userpanel functions ######################################################
sub get_panel_user
{
return $PanelUser;
}
sub get_full_name
{
return $adb->get_prop($PanelUser, "FirstName") . " " .
$adb->get_prop($PanelUser, "LastName");
}
sub get_vacation_status
{
return $adb->get_prop($PanelUser, "EmailVacation");
}
sub get_vacation_date_from
{
return $adb->get_prop($PanelUser, "EmailVacationFrom");
}
sub get_vacation_date_to
{
return $adb->get_prop($PanelUser, "EmailVacationTo");
}
# this formats the text to display on screen
sub userpanel_get_vacation_text
{
my $self = shift;
my $q = $self->{cgi};
my $domain = $db->get_value('DomainName');
# single difference in userpanel function
my $user = $PanelUser;
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $from = 'From:';
my $away = $self->localise('AWAY_FROM_MAIL');
my $return = $self->localise('ANSWER_TO_OBJECT_SENDER');
my $ExistingMessage = "$from $fullname &lt\;$user\@$domain&gt\;\n"."Subject: $return\n".
"\n$away"."\n--\n$fullname";
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp;
#reformat so email address isn't hidden inside < >
while (<VACATION>)
{
$_ =~ s/</&lt\;/;
$_ =~ s/>/&gt\;/;
push (@vacationTemp, $_);
}
$ExistingMessage = join ("", @vacationTemp);
close VACATION;
}
my $start = '<tr>
<td class="sme-noborders-label">' . $self->localise('MESSAGE') . '
<td class="sme-noborders-content"><TEXTAREA NAME="new_message" ROWS="10" COLS="60">';
my $end = '</TEXTAREA></td>
</tr>';
return $start . $ExistingMessage . $end;
}
# saves the text to .vacation.msg
sub userpanel_change_settings
{
my $self = shift;
my $q = $self->{cgi};
my $domain = $db->get_value('DomainName');
# single difference in userpanel function
my $user = $PanelUser;
my $EmailVacation = $q->param('EmailVacation');
my $new_message = $q->param('new_message');
my $EmailVacationFrom = $q->param('EmailVacationFrom');
my $EmailVacationTo = $q->param('EmailVacationTo');
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $from = 'From:';
my $away = $self->localise('AWAY_FROM_MAIL');
my $return = $self->localise('ANSWER_TO_OBJECT_SENDER');
my $vacation_text = "$from $fullname \<$user\@$domain\>\n"."Subject: $return\n".
"\n$away \n"."\n--\n$fullname";
my $reset = $vacation_text;
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp = <VACATION>;
$vacation_text = join ("", @vacationTemp);
close VACATION;
}
chomp $new_message;
# reset msg to default,
if ($new_message =~ /reset/)
{ $vacation_text = $reset; }
else
{
#or save new_message
unless ($new_message eq "")
{ $vacation_text = $new_message; }
}
# Strip out DOS Carriage Returns (CR)
$vacation_text =~ s/\r//g;
unlink $vfile;
# for the next lines to avoid race condition vulnerability, we switch the effective user to
# the one needed see SME #9073 . Those 4 lines are for explanation of the used variables.
#$< - real user id (uid); unique value
#$> - effective user id (euid); unique value
#$( - real group id (gid); list (separated by spaces) of groups
#$) - effective group id (egid); list (separated by spaces) of groups
# remember the UID of the user currently running this script
my $original_uid = $>;
my $original_gid = $);
# switch effective UID running this script to $user
# in order to prevent race condition vulnerability
my $uid = getpwnam($user) or die "Could not get UID for $user\n";
my $gid = getgrnam($user) or die "Could not get GID for $user\n";
$) = $gid;# should be switched first while still root!
$> = $uid;
open (VACATION, ">$vfile")
or die ("Error opening vacation message.\n");
print VACATION "$vacation_text";
close VACATION;
# switch effective UID and GID back to original user
$> = $original_uid;
$) = $original_gid;
$adb->set_prop($user, 'EmailVacation', $EmailVacation);
$adb->set_prop($user, 'EmailVacationFrom', $EmailVacationFrom);
$adb->set_prop($user, 'EmailVacationTo', $EmailVacationTo);
#the first is more correct but is slower
#system ("/sbin/e-smith/signal-event", "email-update", $user) == 0
system ("/etc/e-smith/events/actions/qmail-update-user event $user") == 0
or die ("Error occurred updating .qmail\n");
if (($EmailVacation eq 'no') && ( -e "/home/e-smith/files/users/$user/.vacation"))
{
system ("/bin/rm /home/e-smith/files/users/$user/.vacation") == 0
or die ("Error resetting vacation db.\n");
}
return $self->success("SUCCESS");
}
1;

View File

@ -0,0 +1,384 @@
package SrvMngr::Controller::Uservacations;
#----------------------------------------------------------------------
# heading : User management
# description : User Vacations
# navigation : 2000 150
#
# name : Uservacationsget, method : get, url : /uservacations, ctlact : Uservacations#main
# name : Uservacationspost,method : post, url : /Uservacations, ctlact : Uservacations#do_display
# name : Uservacations1, method : get, url : /Uservacations1, ctlact : Uservacations#do_display
# name : Uservacations2, method : post, url : /Uservacations2, ctlact : Uservacations#do_display
# routes : end
#----------------------------------------------------------------------
use strict;
use warnings;
use Mojo::Base 'Mojolicious::Controller';
#use DateTime; #Not part of SME10 mix
use POSIX;
use Locale::gettext;
use SrvMngr::I18N;
use SrvMngr qw(theme_list init_session);
use Data::Dumper;
use esmith::util;
use esmith::HostsDB;
use esmith::AccountsDB;
our $db = esmith::ConfigDB->open();
our $adb = esmith::AccountsDB->open();
our $PanelUser = $ENV{'REMOTE_USER'} ||'';
$PanelUser = $1 if ($PanelUser =~ /^([a-z][\.\-a-z0-9]*)$/);
our %delegatedVacations;
use constant FALSE => 0;
use constant TRUE => 1;
sub main {
my $c = shift;
$c->app->log->info( $c->log_req );
my %vac_datas = ();
my $title = $c->l('vac_FORM_TITLE');
my $modul = '';
$vac_datas{trt} = 'LIST';
my @vacations = get_vacation_table($c);
my $empty = (scalar @vacations == 0);
$vac_datas{"first"} = 'vac_MODIFY_DESCRIPTION';
$c->stash(
title => $title,
modul => $modul,
vac_datas => \%vac_datas,
vacations =>\@vacations,
empty => $empty
);
$c->render( template => 'uservacations' );
}
sub do_display {
my $c = shift;
$c->app->log->info( $c->log_req );
my $rt = $c->current_route;
my $trt = ( $c->param('trt') || 'LIST' );
$trt = 'ADD' if ( $rt eq 'Uservacations1' );
$trt = 'ADD1' if ( $rt eq 'Uservacations2' );
my %vac_datas = ();
my $title = $c->l('vac_FORM_TITLE');
my $modul = '';
if ( $trt eq 'ADD' ) {
# Add or change a vacation message - called from the list panel
# Get the data and pass it across.
my $account = $c->param("account");
my $user = $adb->get($account);
my $username = $user->prop("FirstName")." ".$user->prop("LastName");
my $EmailVacation = $user->prop('EmailVacation') || '';
my $EmailVacationFrom = $user->prop('EmailVacationFrom') || '';
my $EmailVacationTo = $user->prop('EmailVacationTo') || '';
my $VacText = get_vacation_text($c);
$c->stash(account=>$account,
username=>$username,
EmailVacation=>$EmailVacation,
EmailVacationFrom=>$EmailVacationFrom,
EmailVacationTo=>$EmailVacationTo,
VacText=>$VacText
);
}
if ( $trt eq 'ADD1' ) {
#Add or edit vacation message.
my $ret = add_vac_message($c);
#Return to list page if success
if ($ret eq "OK") {
$trt = "LIST";
$vac_datas{success} = "vac_SUCCESS";
} else {
my $account = $c->param("account");
my $user = $adb->get($account);
my $username = $user->prop("FirstName")." ".$user->prop("LastName");
my $EmailVacationFrom = $c->param('EmailVacationFrom') || '';
my $EmailVacationTo = $c->param('EmailVacationTo') || '';
my $EmailVacation = $c->param('EmailVacation') || '';
my $VacText = $c->param("VacText");
$c->stash(account=>$account,
username=>$username,
EmailVacation=>$EmailVacation,
EmailVacationFrom=>$EmailVacationFrom,
EmailVacationTo=>$EmailVacationTo,
VacText=>$VacText
);
#Error - return to Add page
$trt = "ADD";
$vac_datas{error} = $ret;
}
}
if ( $trt eq 'LIST' ) {
#List all the users and vacation message details.
my @vacations = get_vacation_table($c);
my $empty = (scalar @vacations == 0);
$c->stash(
empty => $empty,
vacations =>\@vacations
);
}
$vac_datas{'trt'} = $trt;
$c->stash( title => $title, modul => $modul, vac_datas => \%vac_datas );
$c->render( template => 'uservacations' );
}
sub user_accounts_exist
{
my $q = shift;
#return scalar $adb->users;
if (scalar $adb->users)
{ return $q->l('vac_DESCRIPTION'); }
}
sub get_vacation_table
{
my $self = shift;
#We want to retrieve granted group from DB, and retrieve users of groups
my $record = $adb->get($PanelUser);
my $dg;
if ($record) {$dg=$record->prop('delegatedVacations')||'';}
else {$dg = '';}
$dg =~ s/ //g;
my @g = split(/,/, $dg);
my @visiblemembers = ();
foreach my $g (@g) {
my $members = $adb->get_prop("$g",'Members');
next unless defined $members;
$members =~ s/ //g;
my @members = split(/,/, $members);
push @visiblemembers , @members ;
}
foreach my $k ( @visiblemembers )
{
$delegatedVacations{$k}=1;
}
my @users = $adb->users;
return () if (@users == 0); ##$self->l("ACCOUNT_USER_NONE")
return () if (@visiblemembers == 0 && $dg ne '');#; #$self->l("NO_USERS_IN_GRANTED_GROUPS")
my @data = ();
for my $user (@users)
{
next if %delegatedVacations and not $delegatedVacations{$user->key};
# make it clearer which uses have vacation
my $EmailVacation = $user->prop('EmailVacation') || '';
my $EmailVacationFrom = $user->prop('EmailVacationFrom') || '';
my $EmailVacationTo = $user->prop('EmailVacationTo') || '';
my $status = $user->prop('EmailVacation') || '';
if ($status eq 'yes') { $status = 'YES'; } else { $status = ''; }
push @data,
{ User => $user->key,
FullName => $user->prop('FirstName') . " " .$user->prop('LastName'),
status => $self->l($status),
EmailVacation => $EmailVacation,
EmailVacationFrom => showDate($EmailVacationFrom),
EmailVacationTo => showDate($EmailVacationTo),
Modify => $self->l('vac_MODIFY'),
}
}
return @data;
}
sub showDate
{
my $strDate = shift;
my ($Year,$Month,$Day) = ($strDate =~ /(\d{4})(\d{2})(\d{2})/);
#my $Unix = mktime(0,0,0,$Day,$Month,$Year);
return "$Year-$Month-$Day";
}
sub modify_link
{
my ($data_item, $row, $field) = @_;
return "uservacations?" .
join("&",
"page=0",
"page_stack=",
"Next=Next",
"User=" . $row->{User},
"FullName=" . $row->{FullName},
"EmailVacation=" . $row->{EmailVacation},
"EmailVacationFrom=" . $row->{EmailVacationFrom},
"EmailVacationTo=" . $row->{EmailVacationTo},
"wherenext=VACATION_PAGE_MODIFY");
}
# this formats the text to display on screen
sub get_vacation_text
{
my $q = shift;
my $domain = $db->get_value('DomainName');
my $user = $q->param('account');
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $from = $q->l('vac_FROM');
my $Subject = $q->l('vac_SUBJECT');
my $away = $q->l('vac_AWAY_FROM_MAIL');
my $return = $q->l('vac_ANSWER_TO_OBJECT_SENDER');
#my $ExistingMessage = "$from $fullname &lt\;$user\@$domain&gt\;\n"."$Subject $return\n".
# "\n$away\n"."\n--\n$fullname";
my $ExistingMessage = "$from $fullname \<$user\@$domain\>\n"."$Subject $return\n".
"\n$away\n"."\n--\n$fullname";
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp;
#reformat so email address isn't hidden inside < >
while (<VACATION>)
{
$_ =~ s/</&lt\;/;
$_ =~ s/>/&gt\;/;
push (@vacationTemp, $_);
}
$ExistingMessage = join ("", @vacationTemp);
close VACATION;
}
return $ExistingMessage;
}
# saves the text to .vacation.msg
sub add_vac_message
{
my $q = shift;
my $domain = $db->get_value('DomainName');
my $user = $q->param('account');
my $EmailVacation = $q->param('EmailVacation')||"no";
#die($EmailVacation);
#if ($EmailVacation eq "yes") {$EmailVacation = "yes";} else {$EmailVacation = "no";}
#Decode To and FROM to standard format - comes over in html5 iso format yyyy-mm-dd
my $EmailVacationFrom = trim($q->param('EmailVacationFrom'));
my ($fromYear,$fromMonth,$fromDay) = ($EmailVacationFrom =~ /(\d{4})-(\d{2})-(\d{2})/);
$EmailVacationFrom = $fromYear.$fromMonth.$fromDay;
if ($EmailVacationFrom !~ m/^2[0-9]{3}[0|1][0-9][0-3][0-9]$/ and $EmailVacationFrom ne "") {return "vac_FROM_DATE_INCORRECT";}
my $EmailVacationTo = trim($q->param('EmailVacationTo'));
my ($toYear,$toMonth,$toDay) = ($EmailVacationTo =~ /(\d{4})-(\d{2})-(\d{2})/);
$EmailVacationTo = $toYear.$toMonth.$toDay;
# $EmailVacationTo =~ s/-//g; #Just take out "-".
if ($EmailVacationTo !~ m/^2[0-9]{3}[0|1][0-9][0-3][0-9]$/ and $EmailVacationFrom ne "") {return "vac_TO_DATE_INCORRECT";}
#Check not the same or From follows To.
if ($EmailVacationTo ne "" and $EmailVacationTo eq $EmailVacationFrom) {return "vac_DATES_THE_SAME";}
my $UnixFrom = mktime(0,0,0,$fromDay,$fromMonth,$fromYear);
my $UnixTo = mktime(0,0,0,$toDay,$toMonth,$toYear);
if ($UnixTo < $UnixFrom) {return "vac_TO_DATE_MUST_BE_LATER";}
my $new_message = $q->param('VacText');
my $vfile = "/home/e-smith/files/users/$user/.vacation.msg";
my $fullname = $adb->get_prop($user, "FirstName") . " " .
$adb->get_prop($user, "LastName");
my $from = 'From:';
my $away = $q->l('vac_AWAY_FROM_MAIL');
my $return = $q->l('vac_ANSWER_TO_OBJECT_SENDER');
my $vacation_text = "$from $fullname \<$user\@$domain\>\n"."Subject: $return\n".
"\n$away \n"."\n--\n$fullname";
my $reset = $vacation_text;
# if exists and is not empty
if (( -e $vfile ) && (! -z $vfile ))
{
open (VACATION, "<$vfile")
or die "Error: Could not open file: $vfile\n";
my @vacationTemp = <VACATION>;
$vacation_text = join ("", @vacationTemp);
close VACATION;
}
chomp $new_message;
# reset msg to default,
if ($new_message =~ /reset/)
{ $vacation_text = $reset; }
else
{
#or save new_message
unless ($new_message eq "")
{ $vacation_text = $new_message; }
}
# Strip out DOS Carriage Returns (CR)
$vacation_text =~ s/\r//g;
unlink $vfile;
open (VACATION, ">$vfile")
or die ("Error opening vacation message.\n");
print VACATION "$vacation_text";
close VACATION;
esmith::util::chownFile($user, $user,
"/home/e-smith/files/users/$user/.vacation.msg");
$adb->set_prop($user, 'EmailVacation', $EmailVacation);
$adb->set_prop($user, 'EmailVacationFrom', $EmailVacationFrom);
$adb->set_prop($user, 'EmailVacationTo', $EmailVacationTo);
#the first is more correct but is slower
#system ("/sbin/e-smith/signal-event", "email-update", $user) == 0
system ("/etc/e-smith/events/actions/qmail-update-user event $user") == 0
or die ("Error occurred updating .qmail\n");
if (($EmailVacation eq 'no') && ( -e "/home/e-smith/files/users/$user/.vacation"))
{
system ("/bin/rm /home/e-smith/files/users/$user/.vacation") == 0
or die ("Error resetting vacation db.\n");
}
return "OK";
}
sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };
1;

View File

@ -0,0 +1,63 @@
package SrvMngr::I18N::Modules::Uservacations::en;
use strict;
use warnings;
use utf8;
use Mojo::Base 'SrvMngr::I18N';
use SrvMngr::I18N::Modules::General::en;
my %lexicon = (
'vac_User vacations' =>'User vacations',
'vac_Vacation Message' =>'Vacation Message',
'vac_FORM_TITLE' =>'Change user vacation settings',
'vac_DESCRIPTION' =>' You can modify a users vacation message by clicking
on the link to the right of their name below.
',
'vac_LABEL_VACATION' =>'Vacation',
'vac_NO_FORWARDS'=>'No users found for forwarding',
'vac_VACATION_FROM' =>'Vacation starts on <br>(YYYY-MM-DD)',
'vac_VACATION_TO' =>'Vacation finishes on <br>(YYYY-MM-DD)',
'vac_VACATION_FROM1' =>'Vacation starts on',
'vac_VACATION_TO1' =>'Vacation finishes on',
'vac_MESSAGE' =>'Vacation message',
'vac_VACATION_STATUS' =>'Enable vacation messages',
'vac_FROM' =>'From:',
'vac_SUBJECT' =>'Subject:',
'vac_AWAY_FROM_MAIL' =>'I will not be reading my mail for a while. Your mail regarding $SUBJECT will be read when I return.',
'vac_NO_USERS_IN_GRANTED_GROUPS' =>'There are no users in the group(s) that you are granted to manage.',
'vac_ANSWER_TO_OBJECT_SENDER' => 'Re: $SUBJECT - Away from my email ',
'vac_FROM_DATE_INCORRECT'=>'From date must have YYYYMMDD format',
'vac_TO_DATE_INCORRECT'=>'To date must have YYYYMMDD format',
'vac_DATES_THE_SAME'=>"The Start and Finish dates cannot be the same",
'vac_TO_DATE_MUST_BE_LATER'=>"The Finish dates cannot be earlier than the Start date",
'vac_SUCCESS'=>'Vacation message saved sucessfully',
'vac_MODIFY_DESCRIPTION' =>'
<p>
Enter a vacation message here. You can use $SUBJECT
anywhere in the text to be replaced with the subject line
from the email that activated the auto-reply.</p>
<p>
This message must be composed of two parts separated by a blank line.
The first will be integrated into the headings of the email reply,
you must thus ensure you leave at least a blank line before typing your message.
The primary domain is added to the address automatically,or you can insert a virtual domain by replacing the domain part of the sender address
in the first line of the message with the virtual domain name (eg. replace the default From: user@primary.domain with From: user@virtual.domain).
To change the vacation message back to the default type reset.</p>
<p>
You can also fill out the Enable vacation on and Disable vacation on fields in order to
automatically enable and disable sending of the vacation message for this user account on the given dates.
</p>
<p>
The dates in the two fields must not be the same.<br>
If you want to use this functionality, leave the Enable vacation messages setting at No - it will be automatically activated based on the date given.
</p>'
);
our %Lexicon = (
%{ SrvMngr::I18N::Modules::General::en::Lexicon },
%lexicon
);
1;

View File

@ -0,0 +1,55 @@
<div id='vac_add'>
% my $btn = l('ADD');
% if ($config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $EmailVacation
</p>
% }
%= form_for '/Uservacations2' => (method => 'POST') => begin
<span class=label>
%=l 'ACCOUNT'
</span><span class=data>
%= $account
</span><br>
<span class=label>
%=l 'USER_NAME'
</span><span class=data>
%=$username
</span><br>
<span class=label>
%=$c->render_to_string(inline =>$c->l('vac_VACATION_FROM1'))
</span>
<span class=data>
%=date_field 'EmailVacationFrom' =>$EmailVacationFrom
</span><br>
<span class=label>
%=$c->render_to_string(inline =>$c->l('vac_VACATION_TO1'))
</span>
<span class=data>
%=date_field 'EmailVacationTo' =>$EmailVacationTo
</span><br>
<span class=label>
%=l 'vac_MESSAGE'
</span>
<span class=data>
% $VacText = b("$VacText");
%=text_area 'VacText' => $VacText, cols=>40, rows=>15
</span><br>
<span class=label>
%=l 'vac_VACATION_STATUS'
</span>
<span class=data>
% param EmailVacation => "$EmailVacation";
%=select_field EmailVacation =>[['Yes'=>'yes'],['No'=>'no']]
</span><br>
%= hidden_field 'account' => $account
%= submit_button "$btn", class => 'action'
%end
</div>

View File

@ -0,0 +1,51 @@
<div id='vac_list'>
%# my $btn = l('vac_CREATE_RULE');
%= form_for '/Uservacations1' => (method => 'POST') => begin
<br><br>
% if ($empty){
<br>
%=l 'vac_NO_FORWARDS'
% } else {
<table class="sme-border TableSort"><thead>
<tr>
<th class='sme-border'>
%=l 'ACCOUNT'
</th>
<th class='sme-border'>
%=l 'USER_NAME'
</th>
<th class='sme-border'>
%=l 'vac_LABEL_VACATION'
</th>
<th class='sme-border'>
%=$c->render_to_string(inline =>l('vac_VACATION_FROM'))
</th>
<th class='sme-border'>
%=$c->render_to_string(inline =>l('vac_VACATION_TO'))
</th>
<th class='sme-border' '>
%=l 'ACTION'
</th>
</tr>
</thead><tbody>
% foreach my $vacation (@$vacations) {
<tr>
%= t td => (class => 'sme-border') => $vacation->{"User"}
%= t td => (class => 'sme-border') => $vacation->{"FullName"}
%= t td => (class => 'sme-border') => $vacation->{"status"}
%= t td => (class => 'sme-border') => $vacation->{"EmailVacationFrom"}
%= t td => (class => 'sme-border') => $vacation->{"EmailVacationTo"}
<td>
<a href="/smanager/Uservacations1?trt=ADD&account=<%= $vacation->{"User"}%>"><%=l 'MODIFY'%></a>
</td>
</tr>
%}
</tbody>
</table>
%}
% end
</div>

View File

@ -0,0 +1,42 @@
% layout 'default', title => "Sme server 2 - User Vacations", share_dir => './';
% content_for 'module' => begin
<div id="module" class="module vacation-panel">
% if ($config->{debug} == 1) {
<p>
%= dumper $c->current_route
</p>
% }
<h1><%=$title%></h1>
%= $modul
%if ($vac_datas->{first}) {
<br>
%=$c->render_to_string(inline =>$c->l($vac_datas->{first}))
%} elsif ($vac_datas->{success}) {
<div class='"success"'>
<h2> Operation Status Report</h2>
%= $c->l($vac_datas->{success});
</div>
%} elsif ($vac_datas->{error}) {
<div class='sme-error'>
<h2> Operation Status Report - error</h2>
%= $c->l($vac_datas->{error});
</div>
%}
% if ($vac_datas->{trt} eq 'ADD') {
%= include 'partials/_vac_add'
%} elsif ($vac_datas->{trt} eq 'ADD1') {
%= include 'partials/_vac_add'
%} else {
%= include 'partials/_vac_list'
%}
</div>
%end

409
smeserver-vacation.spec Normal file
View File

@ -0,0 +1,409 @@
# $Id: smeserver-vacation.spec,v 1.11 2024/03/01 09:40:09 brianr Exp $
# Authority: dungog
# Name: Stephen Noble
%define name smeserver-vacation
%define version 1.1
%define release 37
Summary: SME Server enhancement to enable vacation messages for users.
Name: %{name}
Version: %{version}
Release: %{release}%{?dist}
License: GNU GPL version 2
URL: http://www.dungog.net/sme
Group: SMEserver/addon
Source: %{name}-%{version}.tar.xz
BuildArchitectures: noarch
BuildRoot: /var/tmp/%{name}-%{version}
Requires: e-smith-release >= 9.0,
Requires: e-smith-formmagick >= 1.4.0-12
# needs /usr/share/perl5/vendor_perl/ctime.pl
Requires: perl-Perl4-CoreLibs
BuildRequires: e-smith-devtools >= 1.13.1-03
#BuildRequires: smeserver-manager >= 24
AutoReqProv: no
%description
SME Server enhancement to enable vacation messages for users.
Optionally provides a user-manager panel where users can
enable vacation for themselves and to modify their own message
%changelog
* Sat Sep 07 2024 cvs2git.sh aka Brian Read <brianr@koozali.org> 1.1-37.sme
- Roll up patches and move to git repo [SME: 12338]
* Sat Sep 07 2024 BogusDateBot
- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
by assuming the date is correct and changing the weekday.
* Fri Mar 01 2024 Brian Read <brianr@koozali.org> 1.1-36.sme
- Edit Menu entry to conform to new arrangements [SME: 12493]
* Fri Feb 16 2024 Brian Read <brianr@koozali.org> 1.1-35.sme
- Sort out html chars in email default [SME: 12475]
- Add signal-event refresh to spec file. [sme 12474]
* Fri Jan 07 2022 Brian Read <brianr@bjsystems.co.uk> 1.1-34.sme
- Add-extra-class-in-div-for-AdminLTE [SME: 11834]
* Wed Aug 25 2021 Terry Fage <tfage@yahoo.com.au> 1.1-33.sme
- apply locale 2021-08-25 patch
* Fri Feb 26 2021 Jean-Philipe Pialasse <tests@pialasse.com> 1.1-32.sme
- avoid reencoding of strings in admin table of users [SME: 11399]
* Mon Feb 22 2021 Jean-Philipe Pialasse <tests@pialasse.com> 1.1-31.sme
- add requirement ctime.pl to display log [SME: 10927]
* Sat Oct 24 2020 Brian Read <brianr@bjsystems.co.uk> 1.1-30.sme
- Update to make call to smanager and systemd dependant on smanager being installed and move from post in spec file [SME: 11052]
- to smeserver-vacation-update event
* Thu Jun 11 2020 Brian Read <brianr@bjsystems.co.uk> 1.1-29.sme
- Update for Apache-Mod-Proxy mode Server2 [SME:10927]
* Tue May 19 2020 Brian Read <brianr@bjsystems.co.uk> 1.1-28.sme
- Part of SME10 Server manager2 - Better display of dates in list [SME:10927 ]
* Tue Apr 28 2020 Brian Read <brianr@bjsystems.co.uk> 1.1-27.sme
- Update to SME10 - rework server manager panels to use manager2 [SME:10927]
* Fri Dec 14 2018 John Crisp <jcrisp@safeandsoundit.co.uk> 1.1-26.sme
- apply locale 2018-12-14 patch
* Sun Feb 26 2017 Jean-Philipe Pialasse <tests@pialasse.com> 1.1-25.sme
- html message autodection: swith to html when "<html" and "</html>" are present
- in the content, update patch [SME: 6614]
* Mon Jan 16 2017 Jean-Philipe Pialasse <tests@pialasse.com> 1.1-24.sme
- NFR allow html message and auto detect to switch from text to html [SME: 6614]
* Mon Jan 16 2017 Jean-Philipe Pialasse <tests@pialasse.com> 1.1-23.sme
- Fix possible race condition vulnerability during creation of vacation.msg [SME: 9073]
- thanks to Mats Schuh and Charlie Brady for the work.
- Translation smeserver-vacation-1.1-locale-2017-01-16.patch
- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
by assuming the date is correct and changing the weekday.
* Sat Jul 16 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-22.sme
- Added a capital to subject : Subject [SME: 8772]
* Fri Jul 15 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-21.sme
- Translation patch added
- Added smeserver-vacation-1.1-locale-2016-07-15.patch
- Added a signature in the email body
- modified smeserver-vacation-1.1.bz8772.fix.vacation.message.translation.patch
* Thu Jul 14 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-19.sme
- corrected the object email issue [SME: 8772]
- modified smeserver-vacation-1.1.bz8772.fix.vacation.message.translation.patch
* Sun Jul 10 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-17.sme
- Fixed the auto enabled and disable vacation message [SME: 9661]
- Added smeserver-vacation-1.1.bz9661.fix_auto_enable_disable_vacation.patch
- Fixed the translation of the vacation message [SME: 8772]
- Added smeserver-vacation-1.1.bz8772.fix.vacation.message.translation.patch
* Wed Jul 06 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-15.sme
- Add translation smeserver-vacation-1.1-locale-2016-07-07.patch
- Add translation smeserver-vacation-1.1-locale-2016-07-06.patch
- delegate the vacation messages by group permissions [SME: 9657]
* Wed Jun 22 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-13.sme
- Add the automated and disabling user vacations on given date in the user panel.
- Add translation smeserver-vacation-1.1-locale-2016-06-21.patch
* Tue Mar 08 2016 JP Pialasse <tests@pialasse.com> 1.1-12.sme
- Added smeserver-vacation-1.1-locale-2016-03-08.patch
* Tue Sep 29 2015 mats schuh <m.schuh@neckargeo.net> 1.1-11.sme
- Added smeserver-vacation-1.1-locale-2015-09-29.patch
* Wed Sep 23 2015 mats schuh <m.schuh@neckargeo.net> 1.1-10.sme
- suppress the mail output from the cron job [SME: 9065]
* Sat Sep 12 2015 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-9.sme
- Added smeserver-vacation-1.1-locale-2015-09-12.patch
* Fri Sep 4 2015 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-7.sme
- code done by Mats Schuh <m.schuh@neckargeo.net>
- Allow automated enabling and disabling of user vacations on given dates [SME: 7555]
- Above functionality provided by additional db accounts entries and a cron script
* Thu Jan 8 2015 Daniel Berteaud <daniel@firewall-services.com> 1.1-6.sme
- Make the subject header match case insensitive (patch from Mats Schuh) [SME: 8777]
* Thu Jan 8 2015 Daniel Berteaud <daniel@firewall-services.com> 1.1-5.sme
- Do not localize From header (patch from Mats Schuh) [SME: 8776]
* Tue Jan 6 2015 stephane de Labrusse <stephdl@de-labrusse.fr> 1.1-4.sme
- Updated instructions to use virtual sender domain for vacation message
- Created by Mats Schuh m.schuh@neckargeo.net
* Wed Dec 24 2014 Daniel Berteaud <daniel@firewall-services.com> 1.1-3.sme
- Fix multiline matching [SME: 8741]
* Wed Dec 24 2014 Daniel Berteaud <daniel@firewall-services.com> 1.1-2.sme
- Fix dbmopen by specifying the dbm module to use (DB_File) [SME: 8741]
* Wed Nov 13 2013 Daniel Berteaud <daniel@firewall-services.com> 1.1-1.sme
- Rebuild for SME9
* Mon Jul 15 2013 JP Pialasse <tests@pialasse.com> 1.0-41.sme
- apply locale 2013-07-15 patch
* Sun Mar 06 2011 SME Translation Server <translations@contribs.org> 1.0-40.sme
- apply locale 2011-03-06 patch
* Sun May 23 2010 SME Translation Server <translations@contribs.org> 1.0-39.sme
- apply locale 2010-05-23 patch
* Tue Oct 27 2009 SME Translation Server <translations@contribs.org> 1.0-38.sme
- apply locale 2009-10-27 patch
* Mon Aug 24 2009 SME Translation Server <translations@contribs.org> 1.0-37.sme
- apply locale 2009-08-24 patch
* Thu Jun 11 2009 Stephen Noble <support@dungog.net> - 1.0-36
- send vacation mail in utf8 [SME 4389]
* Sat Jun 06 2009 Stephen Noble <support@dungog.net> - 1.0-35
- cp .qmail fragment before SME filtering with filterorder prop [SME: 5327]
* Wed May 20 2009 SME Translation Server <translations@contribs.org> 1.0-34.sme
- apply locale 2009-05-20 patch
* Mon Apr 27 2009 SME Translation Server <translations@contribs.org> 1.0-33.sme
- apply locale 2009-04-27 patch
* Sun Mar 1 2009 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-32
- Apply 1 Mar 2009 locale patch [SME: 5018]
* Thu Jan 1 2009 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-31
- Apply 1 Jan 2009 locale patch [SME: 4900]
* Tue Oct 14 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-30
- Apply 14 Oct 2008 locale patch
* Sat Sep 27 2008 Stephen Noble <support@dungog.net> - 1.0-29
- move .qmail fragment after SME forwarding [SME: 4603]
- Apply 27 August 2008 locale patch
* Wed Aug 13 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-28
Sat Aug 13 2008 --> Sat Aug 09 2008 or Wed Aug 13 2008 or Sat Aug 16 2008 or ....
- Add precedence list to ignore functions to ignore, for instance,
mail from contribs.org mailinglists [SME: 4549]
* Tue Aug 12 2008 Gavin Weight <gweight@gmail.com> 1.0-27
- Fix Locale to read vacation panel correctly. [SME: 4311]
* Tue Jul 1 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-26
- Apply 1 July 2008 locale patch
* Mon May 5 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-25
- Apply 5 May 2008 locale patch
* Mon Apr 28 2008 Shad L. Lords <slords@mail.com> 1.0-24
- Convert dos line endings to unix
* Sat Apr 26 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-23
- Add common <base> tags to e-smith-formmagick's general
* Tue Apr 22 2008 Jonathan Martens <smeserver-contribs@snetram.nl> 1.0-22
- Apply 22 April 2008 locale patch
* Tue Apr 1 2008 Shad L. Lords <slords@mail.com> 1.0-21
- Update to UTF-8 translations
* Fri Mar 14 2008 Stephen Noble <support@dungog.net> - 1.0-20
- update locale 2008-03-14, removed -13
* Fri Mar 14 2008 Stephen Noble <support@dungog.net> - 1.0-19
- update locale 2008-03-13
* Wed Mar 12 2008 Shad L. Lords <slords@mail.com> - 1.0-18
- Add requires for e-smith-formmagick for UTF-8 support [SME: 3858]
* Tue Mar 11 2008 Stephen Noble <support@dungog.net> - 1.0-17
- remove dud es patch
* Tue Mar 11 2008 Stephen Noble <support@dungog.net> - 1.0-16
- update locale 2008-03-11
* Sat Mar 08 2008 Stephen Noble <support@dungog.net> - 1.0-15
- prepare en lexicons for pootle translations
* Wed Dec 26 2007 Stephen Noble <support@dungog.net> 1.0-14
- fix spanish translation
* Mon Oct 29 2007 Stephen Noble <support@dungog.net> 1.0-13
- add spanish translation, thanks Normando Hall [SME 3503]
* Thu Jun 14 2007 Stephen Noble <support@dungog.net>
- apply updates up to -11
* Sun Apr 29 2007 Shad L. Lords <slords@mail.com>
- Clean up spec so package can be built by koji/plague
* Fri Dec 29 2006 Stephen Noble <support@dungog.net>
- display Vacation status correctly on modify page in server-manager [sme 2200]
- [1.0-11]
* Thu Dec 07 2006 Shad L. Lords <slords@mail.com>
- Update to new release naming. No functional changes.
- Make Packager generic
* Mon Oct 30 2006 Stephen Noble <support@dungog.net>
- display description unshaded *
- german lexicon fix
- cosmetic log error fixed [sme 1992]
- [1.0-10]
* Thu Aug 24 2006 Stephen Noble <support@dungog.net>
- now finds corrects vacation text when used under userpanel.
- german translation [sme 1101]
- [1.0-9]
* Thu Apr 06 2006 Stephen Noble <support@dungog.net>
Wed Apr 06 2006 --> Wed Apr 05 2006 or Thu Apr 06 2006 or Wed Apr 12 2006 or ....
- suppress description if no users [contribs 1243]
- [1.0-8]
* Thu Apr 06 2006 Stephen Noble <support@dungog.net>
Wed Apr 06 2006 --> Wed Apr 05 2006 or Thu Apr 06 2006 or Wed Apr 12 2006 or ....
- say no users if none exist [contribs 1243]
- display DomainName in email address [contribs 1242]
- [1.0-7]
* Thu Apr 06 2006 Stephen Noble <support@dungog.net>
Wed Apr 06 2006 --> Wed Apr 05 2006 or Thu Apr 06 2006 or Wed Apr 12 2006 or ....
- unlink .vacation.msg before writing [contribs 1192]
- vacation doesn't respond to spam [contribs 1190]
- [1.0-6]
* Sat Mar 25 2006 Stephen Noble <support@dungog.net>
- updated lexicons
- removed event
- [1.0-5]
* Fri Mar 24 2006 Stephen Noble <support@dungog.net>
- Change the interval between repeat replies to the same sender
- config setprop qmail VacationDelay -t3d, man vacation
- reset vacationDB when setting status to no
- modified to, Subject: Re: $SUBJECT - Away from my email
- updated fr lexicon
- [1.0-4]
* Wed Mar 22 2006 Stephen Noble <support@dungog.net>
- updated lexicons
- [1.0-3]
* Wed Mar 22 2006 Stephen Noble <support@dungog.net>
- fr lexicon
- expand ~/.qmail on uninstall
- [1.0-2]
* Mon Mar 20 2006 Stephen Noble <support@dungog.net>
- FormMagick version
- [1.0-1]
* Mon Dec 12 2005 Stephen Noble <support@dungog.net>
- Strip out DOS Carriage Returns (CR)
- thanks to mike sensney
- [0.9-2]
* Sat Sep 03 2005 Stephen Noble <support@dungog.net>
- renamed smeserver-vacation,
- contains vacation & userpanel-vacation
- [0.9-1]
* Sat Sep 03 2005 David Beveridge <davidb@nass.com.au>
- [0.3-2]
- upgrade to work with AccountsDB on SME 7.0
* Mon Dec 31 2001 Daniel van Raay <danielvr@caa.org.au>
- [0.2-4]
- Added generated 'From:' lines to default reply message
- Minor cosmetic cleaning
* Fri Nov 23 2001 Daniel van Raay <danielvr@caa.org.au>
- [0.2-3]
- .vacation.db files are now deleted in the user-modify event
* Wed Nov 14 2001 Daniel van Raay <danielvr@caa.org.au>
Tue Nov 14 2001 --> Tue Nov 13 2001 or Wed Nov 14 2001 or Tue Nov 20 2001 or ....
- [0.2-2]
- fixed bug in vacation script that delivered multiple bounces to users
* Tue Sep 04 2001 Daniel van Raay <danielvr@caa.org.au>
- [0.2-1]
- added -j option to vacation command line
- updated for compatibility with e-smith 4.1
* Wed Dec 27 2000 Daniel van Raay <danielvr@caa.org.au>
- [0.1-1]
- initial release
%prep
%setup
%build
perl createlinks
LEXICONS=$(find root/etc/e-smith/{locale/,web/functions/} -type f )
for lexicon in $LEXICONS
do
/sbin/e-smith/validate-lexicon $lexicon
done
LINKS=$(find root/etc/e-smith/locale/ -type d -maxdepth 1 | sed 's/root\/etc\/e-smith\/locale\///')
for link in $LINKS
do
/bin/ln -s uservacations root/etc/e-smith/locale/$link/etc/e-smith/web/functions/userpanel-vacation
done
%install
rm -rf $RPM_BUILD_ROOT
(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT)
rm -f %{name}-%{version}-filelist
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
--file '/usr/local/bin/vacation' 'attr(0755,root,root)' \
--file '/sbin/e-smith/vacation/check_vacation_dates.sh' 'attr(0755,root,root)' \
> %{name}-%{version}-filelist
echo "%doc COPYING" >> %{name}-%{version}-filelist
%clean
rm -rf $RPM_BUILD_ROOT
%pre
%preun
%post
if [ -d /etc/e-smith/events/conf-userpanel ] ; then
/sbin/e-smith/signal-event conf-userpanel
fi
if (systemctl list-unit-files |grep smanager) then
echo "Smanager restart in spec file"
/sbin/e-smith/signal-event smanager-refresh;
fi
%postun
#uninstall
if [ $1 = 0 ] ; then
DBS=`find /home/e-smith/db/navigation -type f -name "navigation.*"`
for db in $DBS ; do
/sbin/e-smith/db $db delete userpanel-vacation 2>/dev/null
/sbin/e-smith/db $db delete uservacations 2>/dev/null
done
#need to expand ~/.qmail for users who are still enabled
/etc/e-smith/events/actions/qmail-update-user
fi
%files -f %{name}-%{version}-filelist
%defattr(-,root,root)