Unzip contribs content
git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1555 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
parent
a4820f3e29
commit
66b934b6f2
|
@ -0,0 +1,134 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# davmail: davmail exchange gateway daemon
|
||||
#
|
||||
# chkconfig: 345 98 02
|
||||
# description: DavMail gateway for Microsoft Exchange
|
||||
# processname: davmail
|
||||
# config: /etc/davmail.properties
|
||||
|
||||
# LSB init-info
|
||||
### BEGIN INIT INFO
|
||||
# Provides: davmail
|
||||
# Required-Start: $network
|
||||
# Required-Stop: $network
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: DavMail gateway for Microsoft Exchange
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
if [ -e /etc/init.d/functions ]; then
|
||||
. /etc/init.d/functions
|
||||
fi
|
||||
|
||||
# LSB functions
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
# Check that networking is configured.
|
||||
[ "${NETWORKING}" = "no" ] && exit 0
|
||||
|
||||
DAVMAIL_CONF=/etc/davmail.properties
|
||||
test -f $DAVMAIL_CONF || exit 4
|
||||
DAVMAIL_HOME=/var/lib/davmail
|
||||
test -d $DAVMAIL_HOME || exit 5
|
||||
|
||||
LOGFILE=/var/log/davmail.log
|
||||
PIDFILE=/var/run/davmail.pid
|
||||
LOCKFILE=/var/lock/subsys/davmail
|
||||
|
||||
start() {
|
||||
echo -n $"Starting DavMail gateway: "
|
||||
dostatus > /dev/null 2>&1
|
||||
if [ $RETVAL -eq 0 ]
|
||||
then
|
||||
echo -n $"DavMail gateway already running"
|
||||
log_failure_msg
|
||||
RETVAL=1
|
||||
return
|
||||
fi
|
||||
runuser - davmail -s /bin/sh -c "exec nohup $DAVMAIL_HOME/davmail $DAVMAIL_CONF >> $LOGFILE 2>&1 &"
|
||||
RETVAL=$?
|
||||
if [ $RETVAL -eq 0 ]
|
||||
then
|
||||
sleep 1
|
||||
cat $DAVMAIL_HOME/pid > $PIDFILE
|
||||
touch $LOCKFILE
|
||||
log_success_msg
|
||||
else
|
||||
log_failure_msg
|
||||
fi
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Shutting down DavMail gateway: "
|
||||
kill $(cat $PIDFILE 2>/dev/null) > /dev/null 2>&1
|
||||
RETVAL=$?
|
||||
sleep 1
|
||||
if [ $RETVAL -eq 0 ]
|
||||
then
|
||||
rm -f $PIDFILE $LOCKFILE
|
||||
log_success_msg
|
||||
else
|
||||
log_failure_msg
|
||||
fi
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
condrestart() {
|
||||
[ -f $LOCKFILE ] && restart || :
|
||||
}
|
||||
|
||||
dostatus() {
|
||||
kill -0 $(cat $PIDFILE 2>/dev/null) > /dev/null 2>&1
|
||||
RETVAL=$?
|
||||
if [ $RETVAL -eq 0 ]
|
||||
then
|
||||
echo "DavMail gateway (pid $(cat $PIDFILE 2>/dev/null)) is running..."
|
||||
else
|
||||
if [ -f $PIDFILE ]
|
||||
then
|
||||
echo "DavMail gateway dead but pid file exists"
|
||||
RETVAL=1
|
||||
return
|
||||
fi
|
||||
if [ -f $LOCKFILE ]
|
||||
then
|
||||
echo "DavMail gateway dead but subsys locked"
|
||||
RETVAL=2
|
||||
return
|
||||
fi
|
||||
echo "DavMail gateway is stopped"
|
||||
RETVAL=3
|
||||
fi
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
status)
|
||||
dostatus
|
||||
;;
|
||||
restart|reload)
|
||||
restart
|
||||
;;
|
||||
condrestart)
|
||||
condrestart
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
|
@ -0,0 +1,7 @@
|
|||
/var/log/davmail.log {
|
||||
missingok
|
||||
notifempty
|
||||
size 30k
|
||||
monthly
|
||||
create 0640 davmail davmail
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
|
||||
LOGFILE=/var/log/davmail.log
|
||||
PIDFILE=/var/lib/davmail/pid
|
||||
|
||||
for class in /usr/share/davmail/lib/*
|
||||
do
|
||||
export CLASSPATH=${CLASSPATH}:${class}
|
||||
done
|
||||
|
||||
echo $$ > $PIDFILE
|
||||
exec java -cp /usr/share/davmail/davmail.jar:${CLASSPATH} \
|
||||
davmail.DavGateway "$@" >> $LOGFILE 2>&1
|
|
@ -0,0 +1,10 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Terminal=false
|
||||
Encoding=UTF-8
|
||||
Name=DavMail
|
||||
Icon=davmail
|
||||
Exec=/usr/bin/davmail
|
||||
Comment=DavMail POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange Gateway
|
||||
Categories=Application;Office;Email;Network;Calendar;ContactManagement;
|
|
@ -0,0 +1,26 @@
|
|||
# DavMail settings
|
||||
davmail.url=https\://owa.example.com/owa/
|
||||
davmail.enableEws=true
|
||||
davmail.ldapPort=1389
|
||||
davmail.caldavPort=1080
|
||||
davmail.smtpPort=1025
|
||||
davmail.popPort=1110
|
||||
davmail.imapPort=1143
|
||||
davmail.proxyPort=
|
||||
davmail.disableUpdateCheck=true
|
||||
davmail.bindAddress=127.0.0.1
|
||||
davmail.logFilePath=/var/log/davmail.log
|
||||
davmail.server=true
|
||||
davmail.server.certificate.hash=
|
||||
davmail.caldavPastDelay=90
|
||||
davmail.sentKeepDelay=90
|
||||
davmail.keepDelay=30
|
||||
davmail.allowRemote=false
|
||||
davmail.enableProxy=false
|
||||
davmail.proxyHost=
|
||||
davmail.proxyPassword=
|
||||
davmail.proxyUser=
|
||||
log4j.logger.davmail=WARN
|
||||
log4j.logger.httpclient.wire=WARN
|
||||
log4j.logger.org.apache.commons.httpclient=WARN
|
||||
log4j.rootLogger=WARN
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Usage: davmail [</path/to/davmail.properties>]
|
||||
#
|
||||
|
||||
# Create the $HOME/.davmail.properties if necessary
|
||||
if [ -r /etc/davmail.properties ]; then
|
||||
if [ ! -f ${HOME}/.davmail.properties ]; then
|
||||
grep -v ^davmail.logFilePath /etc/davmail.properties | \
|
||||
sed -e 's/^davmail.server=true/davmail.server=false/' > \
|
||||
${HOME}/.davmail.properties
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add our libs into CLASSPATH
|
||||
for i in /usr/share/davmail/lib/*; do export CLASSPATH=${CLASSPATH}:${i}; done
|
||||
|
||||
# Start davmail
|
||||
java -cp /usr/share/davmail/davmail.jar:${CLASSPATH} davmail.DavGateway $*
|
|
@ -0,0 +1,116 @@
|
|||
%define davrel 3.8.5
|
||||
%define davsvn 1480
|
||||
%define davver %{davrel}-%{davsvn}
|
||||
%ifarch i686
|
||||
%define davarch x86
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
%define davarch x86_64
|
||||
%endif
|
||||
|
||||
Summary: DavMail is a POP/IMAP/SMTP/Caldav/Carddav/LDAP gateway for Microsoft Exchange
|
||||
Name: davmail
|
||||
Version: %{davrel}
|
||||
Release: 1%{?dist}
|
||||
License: GPL
|
||||
Group: Applications/Internet
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||
BuildRequires: ant >= 1.7.1, ant-antlr, desktop-file-utils
|
||||
Requires(pre): chkconfig, coreutils, initscripts, shadow-utils
|
||||
Requires: logrotate, jre
|
||||
|
||||
Source0: %{name}-src-%{davver}.tgz
|
||||
Source1: davmail.sh
|
||||
Source2: davmail-logrotate
|
||||
Source3: davmail-init
|
||||
Source4: davmail.properties
|
||||
Source5: davmail.desktop
|
||||
Source6: davmail-wrapper
|
||||
|
||||
%description
|
||||
DavMail is a POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange gateway allowing
|
||||
users to use any mail/calendar client with an Exchange server, even from
|
||||
the internet or behind a firewall through Outlook Web Access. DavMail
|
||||
now includes an LDAP gateway to Exchange global address book and user
|
||||
personal contacts to allow recipient address completion in mail compose
|
||||
window and full calendar support with attendees free/busy display.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-src-%{davver}
|
||||
|
||||
%build
|
||||
export JAVA_HOME=/etc/alternatives/java_sdk
|
||||
ant
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rc.d/init.d
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/pixmaps
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/davmail/lib
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/davmail
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log
|
||||
|
||||
# Init scripts, icons, configurations
|
||||
install -m 0775 %{SOURCE1} $RPM_BUILD_ROOT/%{_bindir}/davmail
|
||||
install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/davmail
|
||||
install -m 0775 %{SOURCE3} $RPM_BUILD_ROOT/%{_sysconfdir}/rc.d/init.d/davmail
|
||||
install -m 0644 %{SOURCE4} $RPM_BUILD_ROOT/%{_sysconfdir}
|
||||
desktop-file-install --dir $RPM_BUILD_ROOT/%{_datadir}/applications/ %{SOURCE5}
|
||||
install -m 0775 %{SOURCE6} $RPM_BUILD_ROOT/%{_localstatedir}/lib/davmail/davmail
|
||||
|
||||
# Actual DavMail files
|
||||
install -m 0644 src/java/tray32.png $RPM_BUILD_ROOT/%{_datadir}/pixmaps/davmail.png
|
||||
rm -f dist/lib/*win32*.jar
|
||||
install -m 0664 dist/lib/*-%{davarch}.jar $RPM_BUILD_ROOT/%{_datadir}/davmail/lib/
|
||||
rm -f dist/lib/*x86*.jar
|
||||
install -m 0664 dist/lib/* $RPM_BUILD_ROOT/%{_datadir}/davmail/lib/
|
||||
install -m 0664 dist/*.jar $RPM_BUILD_ROOT/%{_datadir}/davmail/
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%pre
|
||||
/usr/sbin/groupadd -r davmail > /dev/null 2>&1 || :
|
||||
/usr/sbin/useradd -r -s /sbin/nologin -d /var/lib/davmail -M \
|
||||
-g davmail davmail > /dev/null 2>&1 || :
|
||||
|
||||
%post
|
||||
if [ ! -f /var/log/davmail.log ]
|
||||
then
|
||||
/bin/touch /var/log/davmail.log
|
||||
fi
|
||||
/bin/chown davmail:davmail /var/log/davmail.log
|
||||
/bin/chmod 0640 /var/log/davmail.log
|
||||
/sbin/chkconfig --add davmail
|
||||
#/sbin/chkconfig davmail on
|
||||
|
||||
%preun
|
||||
if [ "$1" = "0" ]; then
|
||||
/sbin/service davmail stop > /dev/null 2>&1 || :
|
||||
/bin/rm -f /var/lib/davmail/pid > /dev/null 2>&1 || :
|
||||
/sbin/chkconfig davmail off
|
||||
/sbin/chkconfig --del davmail
|
||||
fi
|
||||
|
||||
%postun
|
||||
if [ $1 -ge 1 ]; then
|
||||
/sbin/service davmail condrestart > /dev/null 2>&1 || :
|
||||
fi
|
||||
|
||||
%files
|
||||
%defattr (-,root,root,-)
|
||||
%{_bindir}/*
|
||||
%{_sysconfdir}/rc.d/init.d/davmail
|
||||
%{_sysconfdir}/logrotate.d/davmail
|
||||
%{_sysconfdir}/davmail.properties
|
||||
%{_datadir}/applications/*
|
||||
%{_datadir}/pixmaps/*
|
||||
%{_datadir}/davmail/
|
||||
%attr(0775,davmail,davmail) %{_localstatedir}/lib/davmail
|
||||
|
||||
%changelog
|
||||
* Mon Oct 18 2010 Marko Myllynen <myllynen@redhat.com>
|
||||
- Initial version
|
Binary file not shown.
|
@ -0,0 +1,732 @@
|
|||
#! /bin/sh
|
||||
|
||||
#
|
||||
# Copyright (c) 1999, 2009 Tanuki Software, Ltd.
|
||||
# http://www.tanukisoftware.com
|
||||
# All rights reserved.
|
||||
#
|
||||
# This software is the proprietary information of Tanuki Software.
|
||||
# You shall use it only in accordance with the terms of the
|
||||
# license agreement you entered into with Tanuki Software.
|
||||
# http://wrapper.tanukisoftware.org/doc/english/licenseOverview.html
|
||||
#
|
||||
# Java Service Wrapper sh script. Suitable for starting and stopping
|
||||
# wrapped Java applications on UNIX platforms.
|
||||
#
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# These settings can be modified to fit the needs of your application
|
||||
# Optimized for use with version 3.3.6 of the Wrapper.
|
||||
|
||||
# Application
|
||||
BASEDIR="/opt/davmail/bin"
|
||||
APP_NAME="davmail"
|
||||
APP_LONG_NAME="DavMail Exchange Gateway"
|
||||
|
||||
# Wrapper
|
||||
WRAPPER_CMD="$BASEDIR/wrapper"
|
||||
WRAPPER_CONF="$BASEDIR/../conf/wrapper.conf"
|
||||
|
||||
# Priority at which to run the wrapper. See "man nice" for valid priorities.
|
||||
# nice is only used if a priority is specified.
|
||||
PRIORITY=
|
||||
|
||||
# Location of the pid file.
|
||||
PIDDIR="$BASEDIR"
|
||||
|
||||
# If uncommented, causes the Wrapper to be shutdown using an anchor file.
|
||||
# When launched with the 'start' command, it will also ignore all INT and
|
||||
# TERM signals.
|
||||
#IGNORE_SIGNALS=true
|
||||
|
||||
# Wrapper will start the JVM asynchronously. Your application may have some
|
||||
# initialization tasks and it may be desirable to wait a few seconds
|
||||
# before returning. For example, to delay the invocation of following
|
||||
# startup scripts. Setting WAIT_AFTER_STARTUP to a positive number will
|
||||
# cause the start command to delay for the indicated period of time
|
||||
# (in seconds).
|
||||
#
|
||||
WAIT_AFTER_STARTUP=0
|
||||
|
||||
# If set, the status, start_msg and stop_msg commands will print out detailed
|
||||
# state information on the Wrapper and Java processes.
|
||||
#DETAIL_STATUS=true
|
||||
|
||||
# If specified, the Wrapper will be run as the specified user.
|
||||
# IMPORTANT - Make sure that the user has the required privileges to write
|
||||
# the PID file and wrapper.log files. Failure to be able to write the log
|
||||
# file will cause the Wrapper to exit without any way to write out an error
|
||||
# message.
|
||||
# NOTE - This will set the user which is used to run the Wrapper as well as
|
||||
# the JVM and is not useful in situations where a privileged resource or
|
||||
# port needs to be allocated prior to the user being changed.
|
||||
#RUN_AS_USER=
|
||||
|
||||
# The following two lines are used by the chkconfig command. Change as is
|
||||
# appropriate for your application. They should remain commented.
|
||||
# chkconfig: 2345 20 80
|
||||
# description: @app.long.name@
|
||||
|
||||
# Initialization block for the install_initd and remove_initd scripts used by
|
||||
# SUSE linux distributions.
|
||||
### BEGIN INIT INFO
|
||||
# Provides: @app.name@
|
||||
# Required-Start: $local_fs $network $syslog
|
||||
# Should-Start:
|
||||
# Required-Stop:
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: @app.long.name@
|
||||
# Description: @app.description@
|
||||
### END INIT INFO
|
||||
|
||||
# Do not modify anything beyond this point
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
# Get the fully qualified path to the script
|
||||
case $0 in
|
||||
/*)
|
||||
SCRIPT="$0"
|
||||
;;
|
||||
*)
|
||||
PWD=`pwd`
|
||||
SCRIPT="$PWD/$0"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Resolve the true real path without any sym links.
|
||||
CHANGED=true
|
||||
while [ "X$CHANGED" != "X" ]
|
||||
do
|
||||
# Change spaces to ":" so the tokens can be parsed.
|
||||
SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
|
||||
# Get the real path to this script, resolving any symbolic links
|
||||
TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'`
|
||||
REALPATH=
|
||||
for C in $TOKENS; do
|
||||
# Change any ":" in the token back to a space.
|
||||
C=`echo $C | sed -e 's;:; ;g'`
|
||||
REALPATH="$REALPATH/$C"
|
||||
# If REALPATH is a sym link, resolve it. Loop for nested links.
|
||||
while [ -h "$REALPATH" ] ; do
|
||||
LS="`ls -ld "$REALPATH"`"
|
||||
LINK="`expr "$LS" : '.*-> \(.*\)$'`"
|
||||
if expr "$LINK" : '/.*' > /dev/null; then
|
||||
# LINK is absolute.
|
||||
REALPATH="$LINK"
|
||||
else
|
||||
# LINK is relative.
|
||||
REALPATH="`dirname "$REALPATH"`""/$LINK"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ "$REALPATH" = "$SCRIPT" ]
|
||||
then
|
||||
CHANGED=""
|
||||
else
|
||||
SCRIPT="$REALPATH"
|
||||
fi
|
||||
done
|
||||
|
||||
# Change the current directory to the location of the script
|
||||
cd "`dirname "$REALPATH"`"
|
||||
REALDIR=`pwd`
|
||||
|
||||
# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if
|
||||
# the working directory is later changed.
|
||||
FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
PIDDIR=$REALDIR/$PIDDIR
|
||||
fi
|
||||
# Same test for WRAPPER_CMD
|
||||
FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
WRAPPER_CMD=$REALDIR/$WRAPPER_CMD
|
||||
fi
|
||||
# Same test for WRAPPER_CONF
|
||||
FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
WRAPPER_CONF=$REALDIR/$WRAPPER_CONF
|
||||
fi
|
||||
|
||||
# Process ID
|
||||
ANCHORFILE="$PIDDIR/$APP_NAME.anchor"
|
||||
STATUSFILE="$PIDDIR/$APP_NAME.status"
|
||||
JAVASTATUSFILE="$PIDDIR/$APP_NAME.java.status"
|
||||
PIDFILE="$PIDDIR/$APP_NAME.pid"
|
||||
LOCKDIR="/var/lock/subsys"
|
||||
LOCKFILE="$LOCKDIR/$APP_NAME"
|
||||
pid=""
|
||||
|
||||
# Resolve the location of the 'ps' command
|
||||
PSEXE="/usr/ucb/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
PSEXE="/usr/bin/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
PSEXE="/bin/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
echo "Unable to locate 'ps'."
|
||||
echo "Please report this message along with the location of the command on your system."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Resolve the os
|
||||
DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
case "$DIST_OS" in
|
||||
'sunos')
|
||||
DIST_OS="solaris"
|
||||
;;
|
||||
'hp-ux' | 'hp-ux64')
|
||||
# HP-UX needs the XPG4 version of ps (for -o args)
|
||||
DIST_OS="hpux"
|
||||
UNIX95=""
|
||||
export UNIX95
|
||||
;;
|
||||
'darwin')
|
||||
DIST_OS="macosx"
|
||||
;;
|
||||
'unix_sv')
|
||||
DIST_OS="unixware"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Resolve the architecture
|
||||
if [ "$DIST_OS" = "macosx" ]
|
||||
then
|
||||
DIST_ARCH="universal"
|
||||
else
|
||||
DIST_ARCH=
|
||||
DIST_ARCH=`uname -p 2>/dev/null | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
if [ "X$DIST_ARCH" = "X" ]
|
||||
then
|
||||
DIST_ARCH="unknown"
|
||||
fi
|
||||
if [ "$DIST_ARCH" = "unknown" ]
|
||||
then
|
||||
DIST_ARCH=`uname -m 2>/dev/null | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
fi
|
||||
case "$DIST_ARCH" in
|
||||
'amd64' | 'athlon' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64')
|
||||
DIST_ARCH="x86"
|
||||
;;
|
||||
'ia32' | 'ia64' | 'ia64n' | 'ia64w')
|
||||
DIST_ARCH="ia"
|
||||
;;
|
||||
'ip27')
|
||||
DIST_ARCH="mips"
|
||||
;;
|
||||
'power' | 'powerpc' | 'power_pc' | 'ppc64')
|
||||
DIST_ARCH="ppc"
|
||||
;;
|
||||
'pa_risc' | 'pa-risc')
|
||||
DIST_ARCH="parisc"
|
||||
;;
|
||||
'sun4u' | 'sparcv9')
|
||||
DIST_ARCH="sparc"
|
||||
;;
|
||||
'9000/800')
|
||||
DIST_ARCH="parisc"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# OSX always places Java in the same location so we can reliably set JAVA_HOME
|
||||
if [ "$DIST_OS" = "macosx" ]
|
||||
then
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
|
||||
outputFile() {
|
||||
if [ -f "$1" ]
|
||||
then
|
||||
echo " $1 (Found but not executable.)";
|
||||
else
|
||||
echo " $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Decide on the wrapper binary to use.
|
||||
# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit
|
||||
# platforms, if the 64-bit binary exists then the distribution most
|
||||
# likely wants to use long names. Otherwise, look for the default.
|
||||
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
||||
if [ -x "$WRAPPER_TEST_CMD" ]
|
||||
then
|
||||
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
||||
else
|
||||
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
|
||||
if [ -x "$WRAPPER_TEST_CMD" ]
|
||||
then
|
||||
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
||||
else
|
||||
if [ ! -x "$WRAPPER_CMD" ]
|
||||
then
|
||||
echo "Unable to locate any of the following binaries:"
|
||||
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
||||
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
|
||||
outputFile "$WRAPPER_CMD"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Build the nice clause
|
||||
if [ "X$PRIORITY" = "X" ]
|
||||
then
|
||||
CMDNICE=""
|
||||
else
|
||||
CMDNICE="nice -$PRIORITY"
|
||||
fi
|
||||
|
||||
# Build the anchor file clause.
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
ANCHORPROP=
|
||||
IGNOREPROP=
|
||||
else
|
||||
ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\"
|
||||
IGNOREPROP=wrapper.ignore_signals=TRUE
|
||||
fi
|
||||
|
||||
# Build the status file clause.
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
STATUSPROP=
|
||||
else
|
||||
STATUSPROP="wrapper.statusfile=\"$STATUSFILE\" wrapper.java.statusfile=\"$JAVASTATUSFILE\""
|
||||
fi
|
||||
|
||||
# Build the lock file clause. Only create a lock file if the lock directory exists on this platform.
|
||||
LOCKPROP=
|
||||
if [ -d $LOCKDIR ]
|
||||
then
|
||||
if [ -w $LOCKDIR ]
|
||||
then
|
||||
LOCKPROP=wrapper.lockfile=\"$LOCKFILE\"
|
||||
fi
|
||||
fi
|
||||
|
||||
checkUser() {
|
||||
# $1 touchLock flag
|
||||
# $2 command
|
||||
|
||||
# Check the configured user. If necessary rerun this script as the desired user.
|
||||
if [ "X$RUN_AS_USER" != "X" ]
|
||||
then
|
||||
# Resolve the location of the 'id' command
|
||||
IDEXE="/usr/xpg4/bin/id"
|
||||
if [ ! -x "$IDEXE" ]
|
||||
then
|
||||
IDEXE="/usr/bin/id"
|
||||
if [ ! -x "$IDEXE" ]
|
||||
then
|
||||
echo "Unable to locate 'id'."
|
||||
echo "Please report this message along with the location of the command on your system."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
|
||||
then
|
||||
# Already running as the configured user. Avoid password prompts by not calling su.
|
||||
RUN_AS_USER=""
|
||||
fi
|
||||
fi
|
||||
if [ "X$RUN_AS_USER" != "X" ]
|
||||
then
|
||||
# If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
|
||||
# able to create the lock file. The Wrapper will be able to update this file once it
|
||||
# is created but will not be able to delete it on shutdown. If $2 is defined then
|
||||
# the lock file should be created for the current command
|
||||
if [ "X$LOCKPROP" != "X" ]
|
||||
then
|
||||
if [ "X$1" != "X" ]
|
||||
then
|
||||
# Resolve the primary group
|
||||
RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
|
||||
if [ "X$RUN_AS_GROUP" = "X" ]
|
||||
then
|
||||
RUN_AS_GROUP=$RUN_AS_USER
|
||||
fi
|
||||
touch $LOCKFILE
|
||||
chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
|
||||
fi
|
||||
fi
|
||||
|
||||
# Still want to change users, recurse. This means that the user will only be
|
||||
# prompted for a password once. Variables shifted by 1
|
||||
#
|
||||
# Use "runuser" if this exists. runuser should be used on RedHat in preference to su.
|
||||
#
|
||||
if test -f "/sbin/runuser"
|
||||
then
|
||||
/sbin/runuser - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
||||
else
|
||||
su - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
||||
fi
|
||||
|
||||
# Now that we are the original user again, we may need to clean up the lock file.
|
||||
if [ "X$LOCKPROP" != "X" ]
|
||||
then
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# Wrapper is not running so make sure the lock file is deleted.
|
||||
if [ -f "$LOCKFILE" ]
|
||||
then
|
||||
rm "$LOCKFILE"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
getpid() {
|
||||
pid=""
|
||||
if [ -f "$PIDFILE" ]
|
||||
then
|
||||
if [ -r "$PIDFILE" ]
|
||||
then
|
||||
pid=`cat "$PIDFILE"`
|
||||
if [ "X$pid" != "X" ]
|
||||
then
|
||||
# It is possible that 'a' process with the pid exists but that it is not the
|
||||
# correct process. This can happen in a number of cases, but the most
|
||||
# common is during system startup after an unclean shutdown.
|
||||
# The ps statement below looks for the specific wrapper command running as
|
||||
# the pid. If it is not found then the pid file is considered to be stale.
|
||||
case "$DIST_OS" in
|
||||
'macosx')
|
||||
pidtest=`$PSEXE -ww -p $pid -o command | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
'solaris')
|
||||
pidtest=`$PSEXE -auxww $pid | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
'hpux')
|
||||
pidtest=`$PSEXE -p $pid -x -o args | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
*)
|
||||
pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "X$pidtest" = "X" ]
|
||||
then
|
||||
# This is a stale pid file.
|
||||
rm -f "$PIDFILE"
|
||||
echo "Removed stale pid file: $PIDFILE"
|
||||
pid=""
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Cannot read $PIDFILE."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
getstatus() {
|
||||
STATUS=
|
||||
if [ -f "$STATUSFILE" ]
|
||||
then
|
||||
if [ -r "$STATUSFILE" ]
|
||||
then
|
||||
STATUS=`cat "$STATUSFILE"`
|
||||
fi
|
||||
fi
|
||||
if [ "X$STATUS" = "X" ]
|
||||
then
|
||||
STATUS="Unknown"
|
||||
fi
|
||||
|
||||
JAVASTATUS=
|
||||
if [ -f "$JAVASTATUSFILE" ]
|
||||
then
|
||||
if [ -r "$JAVASTATUSFILE" ]
|
||||
then
|
||||
JAVASTATUS=`cat "$JAVASTATUSFILE"`
|
||||
fi
|
||||
fi
|
||||
if [ "X$JAVASTATUS" = "X" ]
|
||||
then
|
||||
JAVASTATUS="Unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
testpid() {
|
||||
case "$DIST_OS" in
|
||||
'solaris')
|
||||
pid=`$PSEXE $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
|
||||
;;
|
||||
*)
|
||||
pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
|
||||
;;
|
||||
esac
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# Process is gone so remove the pid file.
|
||||
rm -f "$PIDFILE"
|
||||
pid=""
|
||||
fi
|
||||
}
|
||||
|
||||
console() {
|
||||
echo "Running $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# The string passed to eval must handles spaces in paths correctly.
|
||||
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" $ANCHORPROP $STATUSPROP $LOCKPROP"
|
||||
eval $COMMAND_LINE
|
||||
else
|
||||
echo "$APP_LONG_NAME is already running."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
start() {
|
||||
echo -n "Starting $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# The string passed to eval must handles spaces in paths correctly.
|
||||
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $STATUSPROP $LOCKPROP"
|
||||
eval $COMMAND_LINE
|
||||
else
|
||||
echo "$APP_LONG_NAME is already running."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Sleep for a few seconds to allow for intialization if required
|
||||
# then test to make sure we're still running.
|
||||
#
|
||||
i=0
|
||||
while [ $i -lt $WAIT_AFTER_STARTUP ]
|
||||
do
|
||||
sleep 1
|
||||
echo -n "."
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
if [ $WAIT_AFTER_STARTUP -gt 0 ]
|
||||
then
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo " WARNING: $APP_LONG_NAME may have failed to start."
|
||||
exit 1
|
||||
else
|
||||
echo " running ($pid)."
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
stopit() {
|
||||
# $1 exit if down flag
|
||||
|
||||
echo "Stopping $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME was not running."
|
||||
if [ "X$1" = "X1" ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
# Running so try to stop it.
|
||||
kill $pid
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
echo "Unable to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
rm -f "$ANCHORFILE"
|
||||
if [ -f "$ANCHORFILE" ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
echo "Unable to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# We can not predict how long it will take for the wrapper to
|
||||
# actually stop as it depends on settings in wrapper.conf.
|
||||
# Loop until it does.
|
||||
savepid=$pid
|
||||
CNT=0
|
||||
TOTCNT=0
|
||||
while [ "X$pid" != "X" ]
|
||||
do
|
||||
# Show a waiting message every 5 seconds.
|
||||
if [ "$CNT" -lt "5" ]
|
||||
then
|
||||
CNT=`expr $CNT + 1`
|
||||
else
|
||||
echo "Waiting for $APP_LONG_NAME to exit..."
|
||||
CNT=0
|
||||
fi
|
||||
TOTCNT=`expr $TOTCNT + 1`
|
||||
|
||||
sleep 1
|
||||
|
||||
testpid
|
||||
done
|
||||
|
||||
pid=$savepid
|
||||
testpid
|
||||
if [ "X$pid" != "X" ]
|
||||
then
|
||||
echo "Failed to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
else
|
||||
echo "Stopped $APP_LONG_NAME."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
status() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME is not running."
|
||||
exit 1
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME is running (PID:$pid)."
|
||||
else
|
||||
getstatus
|
||||
echo "$APP_LONG_NAME is running (PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
dump() {
|
||||
echo "Dumping $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME was not running."
|
||||
else
|
||||
kill -3 $pid
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Failed to dump $APP_LONG_NAME."
|
||||
exit 1
|
||||
else
|
||||
echo "Dumped $APP_LONG_NAME."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Used by HP-UX init scripts.
|
||||
startmsg() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:Stopped)"
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:Running)"
|
||||
else
|
||||
getstatus
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Used by HP-UX init scripts.
|
||||
stopmsg() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:Stopped)"
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:Running)"
|
||||
else
|
||||
getstatus
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
'console')
|
||||
checkUser touchlock $1
|
||||
console
|
||||
;;
|
||||
|
||||
'start')
|
||||
checkUser touchlock $1
|
||||
start
|
||||
;;
|
||||
|
||||
'stop')
|
||||
checkUser "" $1
|
||||
stopit "0"
|
||||
;;
|
||||
|
||||
'restart')
|
||||
checkUser touchlock $1
|
||||
stopit "0"
|
||||
start
|
||||
;;
|
||||
|
||||
'condrestart')
|
||||
checkUser touchlock $1
|
||||
stopit "1"
|
||||
start
|
||||
;;
|
||||
|
||||
'status')
|
||||
checkUser "" $1
|
||||
status
|
||||
;;
|
||||
|
||||
'dump')
|
||||
checkUser "" $1
|
||||
dump
|
||||
;;
|
||||
|
||||
'start_msg')
|
||||
checkUser "" $1
|
||||
startmsg
|
||||
;;
|
||||
|
||||
'stop_msg')
|
||||
checkUser "" $1
|
||||
stopmsg
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $0 { console | start | stop | restart | condrestart | status | dump }"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,732 @@
|
|||
#! /bin/sh
|
||||
|
||||
#
|
||||
# Copyright (c) 1999, 2009 Tanuki Software, Ltd.
|
||||
# http://www.tanukisoftware.com
|
||||
# All rights reserved.
|
||||
#
|
||||
# This software is the proprietary information of Tanuki Software.
|
||||
# You shall use it only in accordance with the terms of the
|
||||
# license agreement you entered into with Tanuki Software.
|
||||
# http://wrapper.tanukisoftware.org/doc/english/licenseOverview.html
|
||||
#
|
||||
# Java Service Wrapper sh script. Suitable for starting and stopping
|
||||
# wrapped Java applications on UNIX platforms.
|
||||
#
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# These settings can be modified to fit the needs of your application
|
||||
# Optimized for use with version 3.3.6 of the Wrapper.
|
||||
|
||||
# Application
|
||||
BASEDIR="/opt/davmail/bin"
|
||||
APP_NAME="davmail_2"
|
||||
APP_LONG_NAME="DavMail Exchange Gateway #2"
|
||||
|
||||
# Wrapper
|
||||
WRAPPER_CMD="$BASEDIR/wrapper"
|
||||
WRAPPER_CONF="$BASEDIR/../conf/wrapper.conf_2"
|
||||
|
||||
# Priority at which to run the wrapper. See "man nice" for valid priorities.
|
||||
# nice is only used if a priority is specified.
|
||||
PRIORITY=
|
||||
|
||||
# Location of the pid file.
|
||||
PIDDIR="$BASEDIR"
|
||||
|
||||
# If uncommented, causes the Wrapper to be shutdown using an anchor file.
|
||||
# When launched with the 'start' command, it will also ignore all INT and
|
||||
# TERM signals.
|
||||
#IGNORE_SIGNALS=true
|
||||
|
||||
# Wrapper will start the JVM asynchronously. Your application may have some
|
||||
# initialization tasks and it may be desirable to wait a few seconds
|
||||
# before returning. For example, to delay the invocation of following
|
||||
# startup scripts. Setting WAIT_AFTER_STARTUP to a positive number will
|
||||
# cause the start command to delay for the indicated period of time
|
||||
# (in seconds).
|
||||
#
|
||||
WAIT_AFTER_STARTUP=0
|
||||
|
||||
# If set, the status, start_msg and stop_msg commands will print out detailed
|
||||
# state information on the Wrapper and Java processes.
|
||||
#DETAIL_STATUS=true
|
||||
|
||||
# If specified, the Wrapper will be run as the specified user.
|
||||
# IMPORTANT - Make sure that the user has the required privileges to write
|
||||
# the PID file and wrapper.log files. Failure to be able to write the log
|
||||
# file will cause the Wrapper to exit without any way to write out an error
|
||||
# message.
|
||||
# NOTE - This will set the user which is used to run the Wrapper as well as
|
||||
# the JVM and is not useful in situations where a privileged resource or
|
||||
# port needs to be allocated prior to the user being changed.
|
||||
#RUN_AS_USER=
|
||||
|
||||
# The following two lines are used by the chkconfig command. Change as is
|
||||
# appropriate for your application. They should remain commented.
|
||||
# chkconfig: 2345 20 80
|
||||
# description: @app.long.name@
|
||||
|
||||
# Initialization block for the install_initd and remove_initd scripts used by
|
||||
# SUSE linux distributions.
|
||||
### BEGIN INIT INFO
|
||||
# Provides: @app.name@
|
||||
# Required-Start: $local_fs $network $syslog
|
||||
# Should-Start:
|
||||
# Required-Stop:
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: @app.long.name@
|
||||
# Description: @app.description@
|
||||
### END INIT INFO
|
||||
|
||||
# Do not modify anything beyond this point
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
# Get the fully qualified path to the script
|
||||
case $0 in
|
||||
/*)
|
||||
SCRIPT="$0"
|
||||
;;
|
||||
*)
|
||||
PWD=`pwd`
|
||||
SCRIPT="$PWD/$0"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Resolve the true real path without any sym links.
|
||||
CHANGED=true
|
||||
while [ "X$CHANGED" != "X" ]
|
||||
do
|
||||
# Change spaces to ":" so the tokens can be parsed.
|
||||
SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'`
|
||||
# Get the real path to this script, resolving any symbolic links
|
||||
TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'`
|
||||
REALPATH=
|
||||
for C in $TOKENS; do
|
||||
# Change any ":" in the token back to a space.
|
||||
C=`echo $C | sed -e 's;:; ;g'`
|
||||
REALPATH="$REALPATH/$C"
|
||||
# If REALPATH is a sym link, resolve it. Loop for nested links.
|
||||
while [ -h "$REALPATH" ] ; do
|
||||
LS="`ls -ld "$REALPATH"`"
|
||||
LINK="`expr "$LS" : '.*-> \(.*\)$'`"
|
||||
if expr "$LINK" : '/.*' > /dev/null; then
|
||||
# LINK is absolute.
|
||||
REALPATH="$LINK"
|
||||
else
|
||||
# LINK is relative.
|
||||
REALPATH="`dirname "$REALPATH"`""/$LINK"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ "$REALPATH" = "$SCRIPT" ]
|
||||
then
|
||||
CHANGED=""
|
||||
else
|
||||
SCRIPT="$REALPATH"
|
||||
fi
|
||||
done
|
||||
|
||||
# Change the current directory to the location of the script
|
||||
cd "`dirname "$REALPATH"`"
|
||||
REALDIR=`pwd`
|
||||
|
||||
# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if
|
||||
# the working directory is later changed.
|
||||
FIRST_CHAR=`echo $PIDDIR | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
PIDDIR=$REALDIR/$PIDDIR
|
||||
fi
|
||||
# Same test for WRAPPER_CMD
|
||||
FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
WRAPPER_CMD=$REALDIR/$WRAPPER_CMD
|
||||
fi
|
||||
# Same test for WRAPPER_CONF
|
||||
FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1`
|
||||
if [ "$FIRST_CHAR" != "/" ]
|
||||
then
|
||||
WRAPPER_CONF=$REALDIR/$WRAPPER_CONF
|
||||
fi
|
||||
|
||||
# Process ID
|
||||
ANCHORFILE="$PIDDIR/$APP_NAME.anchor"
|
||||
STATUSFILE="$PIDDIR/$APP_NAME.status"
|
||||
JAVASTATUSFILE="$PIDDIR/$APP_NAME.java.status"
|
||||
PIDFILE="$PIDDIR/$APP_NAME.pid"
|
||||
LOCKDIR="/var/lock/subsys"
|
||||
LOCKFILE="$LOCKDIR/$APP_NAME"
|
||||
pid=""
|
||||
|
||||
# Resolve the location of the 'ps' command
|
||||
PSEXE="/usr/ucb/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
PSEXE="/usr/bin/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
PSEXE="/bin/ps"
|
||||
if [ ! -x "$PSEXE" ]
|
||||
then
|
||||
echo "Unable to locate 'ps'."
|
||||
echo "Please report this message along with the location of the command on your system."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Resolve the os
|
||||
DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
case "$DIST_OS" in
|
||||
'sunos')
|
||||
DIST_OS="solaris"
|
||||
;;
|
||||
'hp-ux' | 'hp-ux64')
|
||||
# HP-UX needs the XPG4 version of ps (for -o args)
|
||||
DIST_OS="hpux"
|
||||
UNIX95=""
|
||||
export UNIX95
|
||||
;;
|
||||
'darwin')
|
||||
DIST_OS="macosx"
|
||||
;;
|
||||
'unix_sv')
|
||||
DIST_OS="unixware"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Resolve the architecture
|
||||
if [ "$DIST_OS" = "macosx" ]
|
||||
then
|
||||
DIST_ARCH="universal"
|
||||
else
|
||||
DIST_ARCH=
|
||||
DIST_ARCH=`uname -p 2>/dev/null | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
if [ "X$DIST_ARCH" = "X" ]
|
||||
then
|
||||
DIST_ARCH="unknown"
|
||||
fi
|
||||
if [ "$DIST_ARCH" = "unknown" ]
|
||||
then
|
||||
DIST_ARCH=`uname -m 2>/dev/null | tr [:upper:] [:lower:] | tr -d [:blank:]`
|
||||
fi
|
||||
case "$DIST_ARCH" in
|
||||
'amd64' | 'athlon' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64')
|
||||
DIST_ARCH="x86"
|
||||
;;
|
||||
'ia32' | 'ia64' | 'ia64n' | 'ia64w')
|
||||
DIST_ARCH="ia"
|
||||
;;
|
||||
'ip27')
|
||||
DIST_ARCH="mips"
|
||||
;;
|
||||
'power' | 'powerpc' | 'power_pc' | 'ppc64')
|
||||
DIST_ARCH="ppc"
|
||||
;;
|
||||
'pa_risc' | 'pa-risc')
|
||||
DIST_ARCH="parisc"
|
||||
;;
|
||||
'sun4u' | 'sparcv9')
|
||||
DIST_ARCH="sparc"
|
||||
;;
|
||||
'9000/800')
|
||||
DIST_ARCH="parisc"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# OSX always places Java in the same location so we can reliably set JAVA_HOME
|
||||
if [ "$DIST_OS" = "macosx" ]
|
||||
then
|
||||
if [ -z "$JAVA_HOME" ]; then
|
||||
JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
|
||||
fi
|
||||
fi
|
||||
|
||||
outputFile() {
|
||||
if [ -f "$1" ]
|
||||
then
|
||||
echo " $1 (Found but not executable.)";
|
||||
else
|
||||
echo " $1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Decide on the wrapper binary to use.
|
||||
# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit
|
||||
# platforms, if the 64-bit binary exists then the distribution most
|
||||
# likely wants to use long names. Otherwise, look for the default.
|
||||
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
||||
if [ -x "$WRAPPER_TEST_CMD" ]
|
||||
then
|
||||
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
||||
else
|
||||
WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
|
||||
if [ -x "$WRAPPER_TEST_CMD" ]
|
||||
then
|
||||
WRAPPER_CMD="$WRAPPER_TEST_CMD"
|
||||
else
|
||||
if [ ! -x "$WRAPPER_CMD" ]
|
||||
then
|
||||
echo "Unable to locate any of the following binaries:"
|
||||
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32"
|
||||
outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64"
|
||||
outputFile "$WRAPPER_CMD"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Build the nice clause
|
||||
if [ "X$PRIORITY" = "X" ]
|
||||
then
|
||||
CMDNICE=""
|
||||
else
|
||||
CMDNICE="nice -$PRIORITY"
|
||||
fi
|
||||
|
||||
# Build the anchor file clause.
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
ANCHORPROP=
|
||||
IGNOREPROP=
|
||||
else
|
||||
ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\"
|
||||
IGNOREPROP=wrapper.ignore_signals=TRUE
|
||||
fi
|
||||
|
||||
# Build the status file clause.
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
STATUSPROP=
|
||||
else
|
||||
STATUSPROP="wrapper.statusfile=\"$STATUSFILE\" wrapper.java.statusfile=\"$JAVASTATUSFILE\""
|
||||
fi
|
||||
|
||||
# Build the lock file clause. Only create a lock file if the lock directory exists on this platform.
|
||||
LOCKPROP=
|
||||
if [ -d $LOCKDIR ]
|
||||
then
|
||||
if [ -w $LOCKDIR ]
|
||||
then
|
||||
LOCKPROP=wrapper.lockfile=\"$LOCKFILE\"
|
||||
fi
|
||||
fi
|
||||
|
||||
checkUser() {
|
||||
# $1 touchLock flag
|
||||
# $2 command
|
||||
|
||||
# Check the configured user. If necessary rerun this script as the desired user.
|
||||
if [ "X$RUN_AS_USER" != "X" ]
|
||||
then
|
||||
# Resolve the location of the 'id' command
|
||||
IDEXE="/usr/xpg4/bin/id"
|
||||
if [ ! -x "$IDEXE" ]
|
||||
then
|
||||
IDEXE="/usr/bin/id"
|
||||
if [ ! -x "$IDEXE" ]
|
||||
then
|
||||
echo "Unable to locate 'id'."
|
||||
echo "Please report this message along with the location of the command on your system."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ]
|
||||
then
|
||||
# Already running as the configured user. Avoid password prompts by not calling su.
|
||||
RUN_AS_USER=""
|
||||
fi
|
||||
fi
|
||||
if [ "X$RUN_AS_USER" != "X" ]
|
||||
then
|
||||
# If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be
|
||||
# able to create the lock file. The Wrapper will be able to update this file once it
|
||||
# is created but will not be able to delete it on shutdown. If $2 is defined then
|
||||
# the lock file should be created for the current command
|
||||
if [ "X$LOCKPROP" != "X" ]
|
||||
then
|
||||
if [ "X$1" != "X" ]
|
||||
then
|
||||
# Resolve the primary group
|
||||
RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1`
|
||||
if [ "X$RUN_AS_GROUP" = "X" ]
|
||||
then
|
||||
RUN_AS_GROUP=$RUN_AS_USER
|
||||
fi
|
||||
touch $LOCKFILE
|
||||
chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE
|
||||
fi
|
||||
fi
|
||||
|
||||
# Still want to change users, recurse. This means that the user will only be
|
||||
# prompted for a password once. Variables shifted by 1
|
||||
#
|
||||
# Use "runuser" if this exists. runuser should be used on RedHat in preference to su.
|
||||
#
|
||||
if test -f "/sbin/runuser"
|
||||
then
|
||||
/sbin/runuser - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
||||
else
|
||||
su - $RUN_AS_USER -c "\"$REALPATH\" $2"
|
||||
fi
|
||||
|
||||
# Now that we are the original user again, we may need to clean up the lock file.
|
||||
if [ "X$LOCKPROP" != "X" ]
|
||||
then
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# Wrapper is not running so make sure the lock file is deleted.
|
||||
if [ -f "$LOCKFILE" ]
|
||||
then
|
||||
rm "$LOCKFILE"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
getpid() {
|
||||
pid=""
|
||||
if [ -f "$PIDFILE" ]
|
||||
then
|
||||
if [ -r "$PIDFILE" ]
|
||||
then
|
||||
pid=`cat "$PIDFILE"`
|
||||
if [ "X$pid" != "X" ]
|
||||
then
|
||||
# It is possible that 'a' process with the pid exists but that it is not the
|
||||
# correct process. This can happen in a number of cases, but the most
|
||||
# common is during system startup after an unclean shutdown.
|
||||
# The ps statement below looks for the specific wrapper command running as
|
||||
# the pid. If it is not found then the pid file is considered to be stale.
|
||||
case "$DIST_OS" in
|
||||
'macosx')
|
||||
pidtest=`$PSEXE -ww -p $pid -o command | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
'solaris')
|
||||
pidtest=`$PSEXE -auxww $pid | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
'hpux')
|
||||
pidtest=`$PSEXE -p $pid -x -o args | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
*)
|
||||
pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1`
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "X$pidtest" = "X" ]
|
||||
then
|
||||
# This is a stale pid file.
|
||||
rm -f "$PIDFILE"
|
||||
echo "Removed stale pid file: $PIDFILE"
|
||||
pid=""
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Cannot read $PIDFILE."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
getstatus() {
|
||||
STATUS=
|
||||
if [ -f "$STATUSFILE" ]
|
||||
then
|
||||
if [ -r "$STATUSFILE" ]
|
||||
then
|
||||
STATUS=`cat "$STATUSFILE"`
|
||||
fi
|
||||
fi
|
||||
if [ "X$STATUS" = "X" ]
|
||||
then
|
||||
STATUS="Unknown"
|
||||
fi
|
||||
|
||||
JAVASTATUS=
|
||||
if [ -f "$JAVASTATUSFILE" ]
|
||||
then
|
||||
if [ -r "$JAVASTATUSFILE" ]
|
||||
then
|
||||
JAVASTATUS=`cat "$JAVASTATUSFILE"`
|
||||
fi
|
||||
fi
|
||||
if [ "X$JAVASTATUS" = "X" ]
|
||||
then
|
||||
JAVASTATUS="Unknown"
|
||||
fi
|
||||
}
|
||||
|
||||
testpid() {
|
||||
case "$DIST_OS" in
|
||||
'solaris')
|
||||
pid=`$PSEXE $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
|
||||
;;
|
||||
*)
|
||||
pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1`
|
||||
;;
|
||||
esac
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# Process is gone so remove the pid file.
|
||||
rm -f "$PIDFILE"
|
||||
pid=""
|
||||
fi
|
||||
}
|
||||
|
||||
console() {
|
||||
echo "Running $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# The string passed to eval must handles spaces in paths correctly.
|
||||
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" $ANCHORPROP $STATUSPROP $LOCKPROP"
|
||||
eval $COMMAND_LINE
|
||||
else
|
||||
echo "$APP_LONG_NAME is already running."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
start() {
|
||||
echo -n "Starting $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
# The string passed to eval must handles spaces in paths correctly.
|
||||
COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $STATUSPROP $LOCKPROP"
|
||||
eval $COMMAND_LINE
|
||||
else
|
||||
echo "$APP_LONG_NAME is already running."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Sleep for a few seconds to allow for intialization if required
|
||||
# then test to make sure we're still running.
|
||||
#
|
||||
i=0
|
||||
while [ $i -lt $WAIT_AFTER_STARTUP ]
|
||||
do
|
||||
sleep 1
|
||||
echo -n "."
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
if [ $WAIT_AFTER_STARTUP -gt 0 ]
|
||||
then
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo " WARNING: $APP_LONG_NAME may have failed to start."
|
||||
exit 1
|
||||
else
|
||||
echo " running ($pid)."
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
stopit() {
|
||||
# $1 exit if down flag
|
||||
|
||||
echo "Stopping $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME was not running."
|
||||
if [ "X$1" = "X1" ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [ "X$IGNORE_SIGNALS" = "X" ]
|
||||
then
|
||||
# Running so try to stop it.
|
||||
kill $pid
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
echo "Unable to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
rm -f "$ANCHORFILE"
|
||||
if [ -f "$ANCHORFILE" ]
|
||||
then
|
||||
# An explanation for the failure should have been given
|
||||
echo "Unable to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# We can not predict how long it will take for the wrapper to
|
||||
# actually stop as it depends on settings in wrapper.conf.
|
||||
# Loop until it does.
|
||||
savepid=$pid
|
||||
CNT=0
|
||||
TOTCNT=0
|
||||
while [ "X$pid" != "X" ]
|
||||
do
|
||||
# Show a waiting message every 5 seconds.
|
||||
if [ "$CNT" -lt "5" ]
|
||||
then
|
||||
CNT=`expr $CNT + 1`
|
||||
else
|
||||
echo "Waiting for $APP_LONG_NAME to exit..."
|
||||
CNT=0
|
||||
fi
|
||||
TOTCNT=`expr $TOTCNT + 1`
|
||||
|
||||
sleep 1
|
||||
|
||||
testpid
|
||||
done
|
||||
|
||||
pid=$savepid
|
||||
testpid
|
||||
if [ "X$pid" != "X" ]
|
||||
then
|
||||
echo "Failed to stop $APP_LONG_NAME."
|
||||
exit 1
|
||||
else
|
||||
echo "Stopped $APP_LONG_NAME."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
status() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME is not running."
|
||||
exit 1
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME is running (PID:$pid)."
|
||||
else
|
||||
getstatus
|
||||
echo "$APP_LONG_NAME is running (PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
dump() {
|
||||
echo "Dumping $APP_LONG_NAME..."
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "$APP_LONG_NAME was not running."
|
||||
else
|
||||
kill -3 $pid
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Failed to dump $APP_LONG_NAME."
|
||||
exit 1
|
||||
else
|
||||
echo "Dumped $APP_LONG_NAME."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Used by HP-UX init scripts.
|
||||
startmsg() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:Stopped)"
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:Running)"
|
||||
else
|
||||
getstatus
|
||||
echo "Starting $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Used by HP-UX init scripts.
|
||||
stopmsg() {
|
||||
getpid
|
||||
if [ "X$pid" = "X" ]
|
||||
then
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:Stopped)"
|
||||
else
|
||||
if [ "X$DETAIL_STATUS" = "X" ]
|
||||
then
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:Running)"
|
||||
else
|
||||
getstatus
|
||||
echo "Stopping $APP_LONG_NAME... (Wrapper:$STATUS, Java:$JAVASTATUS)"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
'console')
|
||||
checkUser touchlock $1
|
||||
console
|
||||
;;
|
||||
|
||||
'start')
|
||||
checkUser touchlock $1
|
||||
start
|
||||
;;
|
||||
|
||||
'stop')
|
||||
checkUser "" $1
|
||||
stopit "0"
|
||||
;;
|
||||
|
||||
'restart')
|
||||
checkUser touchlock $1
|
||||
stopit "0"
|
||||
start
|
||||
;;
|
||||
|
||||
'condrestart')
|
||||
checkUser touchlock $1
|
||||
stopit "1"
|
||||
start
|
||||
;;
|
||||
|
||||
'status')
|
||||
checkUser "" $1
|
||||
status
|
||||
;;
|
||||
|
||||
'dump')
|
||||
checkUser "" $1
|
||||
dump
|
||||
;;
|
||||
|
||||
'start_msg')
|
||||
checkUser "" $1
|
||||
startmsg
|
||||
;;
|
||||
|
||||
'stop_msg')
|
||||
checkUser "" $1
|
||||
stopmsg
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $0 { console | start | stop | restart | condrestart | status | dump }"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,119 @@
|
|||
#********************************************************************
|
||||
# Wrapper License Properties (Ignored by Community Edition)
|
||||
#********************************************************************
|
||||
# Include file problems can be debugged by removing the first '#'
|
||||
# from the following line:
|
||||
##include.debug
|
||||
#include ../conf/wrapper-license.conf
|
||||
#include ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Java Properties
|
||||
#********************************************************************
|
||||
# Java Application
|
||||
wrapper.java.command=java
|
||||
wrapper.debug=false
|
||||
# Tell the Wrapper to log the full generated Java command line.
|
||||
#wrapper.java.command.loglevel=INFO
|
||||
|
||||
# Java Main class. This class must implement the WrapperListener interface
|
||||
# or guarantee that the WrapperManager class is initialized. Helper
|
||||
# classes are provided to do this for you. See the Integration section
|
||||
# of the documentation for details.
|
||||
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
|
||||
|
||||
# Java Classpath (include wrapper.jar) Add class path elements as
|
||||
# needed starting from 1
|
||||
wrapper.java.classpath.1=../lib/wrapper.jar
|
||||
wrapper.java.classpath.2=../lib/*.jar
|
||||
|
||||
|
||||
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
|
||||
wrapper.java.library.path.1=../lib
|
||||
|
||||
# Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
|
||||
wrapper.java.additional.auto_bits=TRUE
|
||||
|
||||
# Java Additional Parameters
|
||||
#wrapper.java.additional.1=
|
||||
|
||||
# Initial Java Heap Size (in MB)
|
||||
wrapper.java.initmemory=3
|
||||
|
||||
# Maximum Java Heap Size (in MB)
|
||||
wrapper.java.maxmemory=64
|
||||
|
||||
# Application parameters. Add parameters as needed starting from 1
|
||||
wrapper.app.parameter.1=davmail.DavGateway
|
||||
wrapper.app.parameter.2=../conf/davmail.properties
|
||||
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Logging Properties
|
||||
#********************************************************************
|
||||
# Enables Debug output from the Wrapper.
|
||||
# wrapper.debug=TRUE
|
||||
|
||||
# Format of output for the console. (See docs for formats)
|
||||
wrapper.console.format=PM
|
||||
|
||||
# Log Level for console output. (See docs for log levels)
|
||||
wrapper.console.loglevel=INFO
|
||||
|
||||
# Log file to use for wrapper output logging.
|
||||
wrapper.logfile=../logs/davmail.log
|
||||
|
||||
# Format of output for the log file. (See docs for formats)
|
||||
wrapper.logfile.format=LPTM
|
||||
|
||||
# Log Level for log file output. (See docs for log levels)
|
||||
wrapper.logfile.loglevel=INFO
|
||||
|
||||
# Maximum size that the log file will be allowed to grow to before
|
||||
# the log is rolled. Size is specified in bytes. The default value
|
||||
# of 0, disables log rolling. May abbreviate with the 'k' (kb) or
|
||||
# 'm' (mb) suffix. For example: 10m = 10 megabytes.
|
||||
wrapper.logfile.maxsize=10m
|
||||
|
||||
# Maximum number of rolled log files which will be allowed before old
|
||||
# files are deleted. The default value of 0 implies no limit.
|
||||
wrapper.logfile.maxfiles=5
|
||||
|
||||
# Log Level for sys/event log output. (See docs for log levels)
|
||||
wrapper.syslog.loglevel=NONE
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper General Properties
|
||||
#********************************************************************
|
||||
# Allow for the use of non-contiguous numbered properties
|
||||
wrapper.ignore_sequence_gaps=TRUE
|
||||
|
||||
# Title to use when running as a console
|
||||
wrapper.console.title=DavMail
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Windows NT/2000/XP Service Properties
|
||||
#********************************************************************
|
||||
# WARNING - Do not modify any of these properties when an application
|
||||
# using this configuration file has been installed as a service.
|
||||
# Please uninstall the service before modifying this section. The
|
||||
# service can then be reinstalled.
|
||||
|
||||
# Name of the service
|
||||
wrapper.name=davmail
|
||||
|
||||
# Display name of the service
|
||||
wrapper.displayname=DavMail
|
||||
|
||||
# Description of the service
|
||||
wrapper.description=DavMail
|
||||
|
||||
# Service dependencies. Add dependencies as needed starting from 1
|
||||
wrapper.ntservice.dependency.1=
|
||||
|
||||
# Mode in which the service is installed. AUTO_START or DEMAND_START
|
||||
wrapper.ntservice.starttype=AUTO_START
|
||||
|
||||
# Allow the service to interact with the desktop.
|
||||
wrapper.ntservice.interactive=false
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
#********************************************************************
|
||||
# Wrapper License Properties (Ignored by Community Edition)
|
||||
#********************************************************************
|
||||
# Include file problems can be debugged by removing the first '#'
|
||||
# from the following line:
|
||||
##include.debug
|
||||
#include ../conf/wrapper-license.conf
|
||||
#include ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Java Properties
|
||||
#********************************************************************
|
||||
# Java Application
|
||||
wrapper.java.command=java
|
||||
wrapper.debug=false
|
||||
# Tell the Wrapper to log the full generated Java command line.
|
||||
#wrapper.java.command.loglevel=INFO
|
||||
|
||||
# Java Main class. This class must implement the WrapperListener interface
|
||||
# or guarantee that the WrapperManager class is initialized. Helper
|
||||
# classes are provided to do this for you. See the Integration section
|
||||
# of the documentation for details.
|
||||
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
|
||||
|
||||
# Java Classpath (include wrapper.jar) Add class path elements as
|
||||
# needed starting from 1
|
||||
wrapper.java.classpath.1=../lib/wrapper.jar
|
||||
wrapper.java.classpath.2=../lib/*.jar
|
||||
|
||||
|
||||
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
|
||||
wrapper.java.library.path.1=../lib
|
||||
|
||||
# Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
|
||||
wrapper.java.additional.auto_bits=TRUE
|
||||
|
||||
# Java Additional Parameters
|
||||
#wrapper.java.additional.1=
|
||||
|
||||
# Initial Java Heap Size (in MB)
|
||||
wrapper.java.initmemory=3
|
||||
|
||||
# Maximum Java Heap Size (in MB)
|
||||
wrapper.java.maxmemory=64
|
||||
|
||||
# Application parameters. Add parameters as needed starting from 1
|
||||
wrapper.app.parameter.1=davmail.DavGateway
|
||||
wrapper.app.parameter.2=../conf/davmail.properties_2
|
||||
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Logging Properties
|
||||
#********************************************************************
|
||||
# Enables Debug output from the Wrapper.
|
||||
# wrapper.debug=TRUE
|
||||
|
||||
# Format of output for the console. (See docs for formats)
|
||||
wrapper.console.format=PM
|
||||
|
||||
# Log Level for console output. (See docs for log levels)
|
||||
wrapper.console.loglevel=INFO
|
||||
|
||||
# Log file to use for wrapper output logging.
|
||||
wrapper.logfile=../logs/davmail.log_2
|
||||
|
||||
# Format of output for the log file. (See docs for formats)
|
||||
wrapper.logfile.format=LPTM
|
||||
|
||||
# Log Level for log file output. (See docs for log levels)
|
||||
wrapper.logfile.loglevel=INFO
|
||||
|
||||
# Maximum size that the log file will be allowed to grow to before
|
||||
# the log is rolled. Size is specified in bytes. The default value
|
||||
# of 0, disables log rolling. May abbreviate with the 'k' (kb) or
|
||||
# 'm' (mb) suffix. For example: 10m = 10 megabytes.
|
||||
wrapper.logfile.maxsize=10m
|
||||
|
||||
# Maximum number of rolled log files which will be allowed before old
|
||||
# files are deleted. The default value of 0 implies no limit.
|
||||
wrapper.logfile.maxfiles=5
|
||||
|
||||
# Log Level for sys/event log output. (See docs for log levels)
|
||||
wrapper.syslog.loglevel=NONE
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper General Properties
|
||||
#********************************************************************
|
||||
# Allow for the use of non-contiguous numbered properties
|
||||
wrapper.ignore_sequence_gaps=TRUE
|
||||
|
||||
# Title to use when running as a console
|
||||
wrapper.console.title=DavMail
|
||||
|
||||
#********************************************************************
|
||||
# Wrapper Windows NT/2000/XP Service Properties
|
||||
#********************************************************************
|
||||
# WARNING - Do not modify any of these properties when an application
|
||||
# using this configuration file has been installed as a service.
|
||||
# Please uninstall the service before modifying this section. The
|
||||
# service can then be reinstalled.
|
||||
|
||||
# Name of the service
|
||||
wrapper.name=davmail
|
||||
|
||||
# Display name of the service
|
||||
wrapper.displayname=DavMail
|
||||
|
||||
# Description of the service
|
||||
wrapper.description=DavMail
|
||||
|
||||
# Service dependencies. Add dependencies as needed starting from 1
|
||||
wrapper.ntservice.dependency.1=
|
||||
|
||||
# Mode in which the service is installed. AUTO_START or DEMAND_START
|
||||
wrapper.ntservice.starttype=AUTO_START
|
||||
|
||||
# Allow the service to interact with the desktop.
|
||||
wrapper.ntservice.interactive=false
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue