| Server IP : 193.86.120.172 / Your IP : 216.73.216.67 Web Server : Apache/2.4.63 (Unix) System : Linux JServices 3.10.108 #86003 SMP Wed Oct 22 13:20:46 CST 2025 x86_64 User : kubec ( 1026) PHP Version : 8.2.28 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /volume1/@appstore/WebDAVServer/scripts/ |
Upload File : |
#!/bin/sh
# Copyright (c) 2000-2013 Synology Inc. All rights reserved.
PATH_PREFIX="/var/packages/WebDAVServer/target"
BIN_GENERATE_AVAHI_CFG="$PATH_PREFIX/scripts/synowebdavserver_create_avahi_cfg.sh"
SERVICE_CONF="$PATH_PREFIX/etc/webdav.cfg"
BIN_GET_KEY_VALUE="/usr/syno/bin/synogetkeyvalue"
WEBDAV_PORT=$($BIN_GET_KEY_VALUE $SERVICE_CONF http_port)
WEBDAV_SSL_PORT=$($BIN_GET_KEY_VALUE $SERVICE_CONF https_port)
RunWEBDAV=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_http)
RunWEBDAVHTTPS=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_https)
RunCALDAV=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_caldav)
EnableAnonymous=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_anonymous)
EnableDAVDepthInfinity=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_depth_infinity)
EnableCustomizedMaxConnections=$($BIN_GET_KEY_VALUE $SERVICE_CONF enable_customized_max_connections)
MaxConnections=$($BIN_GET_KEY_VALUE $SERVICE_CONF max_connections)
Httpd="$PATH_PREFIX/usr/sbin/httpd"
HttpdConf="$PATH_PREFIX/etc/httpd/conf/httpd.conf-webdav"
HttpdSSLConf="$PATH_PREFIX/etc/httpd/conf/extra/httpd-ssl.conf-webdav"
HttpdSSLConfCipher="$PATH_PREFIX/etc/httpd/conf/extra/httpd-ssl.conf-cipher-webdav"
HttpdMpmConf="$PATH_PREFIX/etc/httpd/conf/extra/httpd-mpm.conf-webdav"
PROCNAME="httpd"
PIDFILE="/run/httpd/httpd-webdav.pid"
CGIKEYGEN="/usr/syno/bin/cgi-keygen"
INTERCRT="/usr/local/etc/certificate/WebDAVServer/webdav/chain.pem"
. /etc.defaults/rc.subr
GenerateConf()
{
$BIN_GENERATE_AVAHI_CFG start
DAV_LINE="Listen"
if [ "no" = "$RunWEBDAV" -a "yes" = "$RunWEBDAVHTTPS" ]; then
DAV_AWK="/^L/,\"#L\""
else
DAV_AWK="/^#L/,\"L\""
fi
cp -f ${HttpdConf} ${HttpdConf}.$$
if [ $? -ne 0 ]; then
logger -p user.err -t $(basename $0) "backup ${HttpdConf} failed."
rm -f ${HttpdConf}.$$
return 1
fi
if [ "no" = "$RunWEBDAV" -a "yes" = "$RunWEBDAVHTTPS" ]; then
sed -e "/^Listen/c\\Listen ${WEBDAV_SSL_PORT}" -e "/^ServerName/c\\ServerName *:${WEBDAV_SSL_PORT}" ${HttpdConf} > ${HttpdConf}.$$
else
sed -e "/^Listen/c\\Listen ${WEBDAV_PORT}" -e "/^ServerName/c\\ServerName *:${WEBDAV_PORT}" ${HttpdConf} > ${HttpdConf}.$$
fi
if [ -s "${HttpdConf}.$$" ]; then
mv ${HttpdConf}.$$ ${HttpdConf}
fi
cp -f ${HttpdConf} ${HttpdConf}.$$
if [ $? -ne 0 ]; then
logger -p user.err -t $(basename $0) "backup ${HttpdConf} failed."
rm -f ${HttpdConf}.$$
return 1
fi
sed -e "/LoadModule dav_acl_module/d" -e "/LoadModule caldav_module/d" ${HttpdConf} > ${HttpdConf}.$$
if ! grep "LoadModule synobandwidth_module modules/mod_synobandwidth.so" ${HttpdConf}; then
echo "LoadModule synobandwidth_module modules/mod_synobandwidth.so" >> ${HttpdConf}.$$
fi
if [ -s "${HttpdConf}.$$" ]; then
mv ${HttpdConf}.$$ ${HttpdConf}
fi
cp -f ${HttpdConf} ${HttpdConf}.$$
if [ "yes" = "$EnableAnonymous" ]; then
sed -e "/^LoadModule authn_anon_module/c\\LoadModule authn_anon_module modules\/mod_authn_anon.so" \
-e "/^#LoadModule authn_anon_module/c\\LoadModule authn_anon_module modules\/mod_authn_anon.so" \
-e "/^ AuthBasicProvider/c\\ AuthBasicProvider socache anon PAM" \
${HttpdConf} > ${HttpdConf}.$$
else
sed -e "/^LoadModule authn_anon_module/c\\#LoadModule authn_anon_module modules\/mod_authn_anon.so" \
-e "/^#LoadModule authn_anon_module/c\\#LoadModule authn_anon_module modules\/mod_authn_anon.so" \
-e "/^ AuthBasicProvider/c\\ AuthBasicProvider socache PAM" \
${HttpdConf} > ${HttpdConf}.$$
fi
if [ -s "${HttpdConf}.$$" ]; then
mv ${HttpdConf}.$$ ${HttpdConf}
fi
cp -f ${HttpdConf} ${HttpdConf}.$$
if [ "yes" = "$EnableDAVDepthInfinity" ]; then
sed -e "/^ DavDepthInfinity/c\\ DavDepthInfinity on" ${HttpdConf} > ${HttpdConf}.$$
else
sed -e "/^ DavDepthInfinity/c\\ DavDepthInfinity off" ${HttpdConf} > ${HttpdConf}.$$
fi
if [ -s "${HttpdConf}.$$" ]; then
mv ${HttpdConf}.$$ ${HttpdConf}
fi
cp -f ${HttpdSSLConf} ${HttpdSSLConf}.$$
if [ $? -ne 0 ]; then
logger -p user.err -t $(basename $0) "backup ${HttpdSSLConf} failed."
rm -f ${HttpdSSLConf}.$$
return 1
fi
sed -e "/^Listen/c\\Listen ${WEBDAV_SSL_PORT}" \
-e "/^<VirtualHost/c\\<VirtualHost *:${WEBDAV_SSL_PORT}>" \
${HttpdSSLConf} | awk "{if(/${DAV_LINE}/)sub(${DAV_AWK});print}" > ${HttpdSSLConf}.$$
if [ -s "${HttpdSSLConf}.$$" ]; then
mv ${HttpdSSLConf}.$$ ${HttpdSSLConf}
fi
if [ "yes" != "$EnableCustomizedMaxConnections" ] || [ "" = "$MaxConnections" ]; then
MaxConnections="150"
fi
cp -f ${HttpdMpmConf} ${HttpdMpmConf}.$$
if [ $? -ne 0 ]; then
logger -p user.err -t $(basename $0) "backup ${HttpdMpmConf} failed."
rm -f ${HttpdMpmConf}.$$
return 1
fi
sed -e "/^ ServerLimit/c\\ ServerLimit ${MaxConnections}" \
-e "/^ MaxRequestWorkers/c\\ MaxRequestWorkers ${MaxConnections}" ${HttpdMpmConf} > ${HttpdMpmConf}.$$
if [ -s "${HttpdMpmConf}.$$" ]; then
mv ${HttpdMpmConf}.$$ ${HttpdMpmConf}
fi
rm -f ${HttpdConf}.$$ ${HttpdSSLConf}.$$ ${HttpdMpmConf}.$$ 2>/dev/null
if [ -s ${HttpdSSLConfCipher} ]; then
if [ -f "$INTERCRT" ]; then
sed -e "/^#SSLCertificateChainFile/c\\SSLCertificateChainFile $INTERCRT" \
${HttpdSSLConfCipher} > ${HttpdSSLConfCipher}.$$
else
sed -e "/^SSLCertificateChainFile/c\\#SSLCertificateChainFile $INTERCRT" \
${HttpdSSLConfCipher} > ${HttpdSSLConfCipher}.$$
fi
if [ -s "${HttpdSSLConfCipher}.$$" ]; then
mv ${HttpdSSLConfCipher}.$$ ${HttpdSSLConfCipher}
fi
rm -f ${HttpdSSLConfCipher}.$$ 2>/dev/null
fi
/usr/syno/etc/rc.sysv/avahi.sh webdav-conf
/usr/syno/etc/rc.sysv/avahi.sh webdavs-conf
}
TmpSleep()
{
lsb_status $PROCNAME $PIDFILE
BUSYWAIT=$?
TIMEOUT=0
EXITVALUE=0
while [ ! $BUSYWAIT -eq $1 ]
do
lsb_status $PROCNAME $PIDFILE
BUSYWAIT=$?
sleep 1
TIMEOUT=$(($TIMEOUT+1))
if [ $TIMEOUT = 30 ] ; then
echo "Time out: wait more than 30 seconds!"
EXITVALUE=1
break
fi
done
return $EXITVALUE
}
WaitPidKilled()
{
TIMEOUT=0
EXITVALUE=0
while ps -p "$1" > /dev/null; do
sleep 1
TIMEOUT=$(($TIMEOUT+1))
if [ $TIMEOUT = 30 ] ; then
echo "Time out: wait more than 30 seconds!"
EXITVALUE=1
break
fi
done
return $EXITVALUE
}
# check for pidfile
if [ -f $PIDFILE ] ; then
PID=$(cat $PIDFILE)
if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
STATUS="httpd (pid $PID) running"
RUNNING=1
else
STATUS="httpd (pid $PID?) not running"
RUNNING=0
fi
else
STATUS="httpd (no pid file) not running"
RUNNING=0
fi
case $1 in
[Ss][Tt][Oo][Pp])
$BIN_GENERATE_AVAHI_CFG stop
if [ $RUNNING -eq 0 ]; then
echo $STATUS
else
if kill $PID ; then
WaitPidKilled $PID
echo "$0: webdav httpd stopped"
else
echo "$0: webdav httpd could not be stopped"
exit 1;
fi
fi
;;
[Ss][Tt][Aa][Rr][Tt])
$CGIKEYGEN > /dev/null 2>&1 &
if [ ! -x "$Httpd" ]; then
echo "$Httpd is not executable."
exit 1;
fi
if [ $RUNNING -eq 1 ]; then
echo "$0 $ARG: httpd (pid $PID) already running"
else
GenerateConf
mkdir -p /var/log/webdav /run/httpd
if [ "yes" = "$RunWEBDAVHTTPS" -o "yes" = "$RunWEBDAV" ]; then
startArg=""
if [ "yes" = "$RunWEBDAVHTTPS" ]; then
startArg="$startArg -DSSL"
fi
startArg="$startArg -f ${HttpdConf}"
echo "Start WebDav Apache Server ..... $startArg"
if $Httpd $startArg; then
echo "$0: webdav httpd started"
TmpSleep $LSB_STAT_RUNNING
if [ $? -ne 0 ]; then
exit 1
fi
else
echo "$0: webdav httpd could not be started"
exit 1;
fi
fi
fi
;;
[Rr][Ee][Ll][Oo][Aa][Dd])
GenerateConf
# https://httpd.apache.org/docs/2.4/stopping.html#hup
kill -HUP $(cat $PIDFILE)
exit $?
;;
[Rr][Ee][Ss][Tt][Aa][Rr][Tt])
if [ $RUNNING -eq 0 ]; then
$0 start
else
$0 stop && $0 start
fi
exit $?
;;
[Ss][Tt][Aa][Tt][Uu][Ss])
lsb_status $PROCNAME $PIDFILE
exit $?
;;
*)
echo "Usage: $0 [start|stop|restart|status]"
;;
esac
exit 0;