lars
3500b67a40
refresh link for logs feature change default setting of UseConfigPartition to "0" README file rewritten README.samba added README.davfs added README.Debian rewritten event scripts for samba and apach2_dav improved do not redirect to "disks overview" after successful plugin execution (e.g. date, ...) unclean web dataset fixed removed some non-translateable strings from po and pot files automatically update the cryptobox version according to the debian package version number
110 lines
2.5 KiB
Bash
Executable file
110 lines
2.5 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Manage apache webdav
|
|
# - after mounting: add the new webdav share
|
|
# - before umounting: disable and remove the webdav share
|
|
#
|
|
# This script assumes, that you added the apache2_dav.conf file
|
|
# (/usr/share/doc/cryptobox/conf-examples/) to your apache configuration directory
|
|
# (e.g. /etc/apache2/conf.d)
|
|
#
|
|
#
|
|
# Params: $event $volume_name $volume_type $mount_dir
|
|
#
|
|
# event: premount | postmount | preumount | postumount
|
|
# device: name of the device
|
|
# volume_name: name of the volume
|
|
# volume_type: plain | luks
|
|
# mount_dir: mount directory
|
|
#
|
|
|
|
set -eu
|
|
|
|
# ------------=-=-=- some settings -=-=-=-----------------
|
|
# adapt this part of the file to your setup
|
|
|
|
APACHE_SCRIPT=/etc/init.d/apache2
|
|
APACHE_CONF_DIR=/var/cache/cryptobox/apache2_dav.conf.d
|
|
|
|
# this apache config snippet is used for every published volume
|
|
# _VOLUME_NAME_ and _SHARE_DIR_ are replaced by their actual values
|
|
APACHE_SHARE_TEMPLATE=$(cat - <<-"EOF"
|
|
# this file is part of the CryptoBox
|
|
Alias "/cryptobox/_VOLUME_NAME_" "_SHARE_DIR_"
|
|
<Location "/cryptobox/_VOLUME_NAME_">
|
|
Dav filesystem
|
|
</Location>
|
|
EOF
|
|
)
|
|
|
|
# -----=-=-=- check arguments and the environment -=-=-=----
|
|
|
|
# exit if apache2 is not installed
|
|
if test -x "$APACHE_SCRIPT"
|
|
then true
|
|
else echo "apache2 is not installed ('$APACHE_SCRIPT' not found)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# create include-file directory
|
|
mkdir -p "$APACHE_CONF_DIR"
|
|
|
|
# check event argument
|
|
if test "$#" -eq 0
|
|
then echo "Syntax: $(basename $0) EVENT [EVENT_INFORMATION]" >&2
|
|
exit 1
|
|
fi
|
|
|
|
event=$1
|
|
|
|
# ------------=-=-=- some functions -=-=-=-----------------
|
|
|
|
# remove invalid config files
|
|
update_include_conf_dir()
|
|
{
|
|
find "$APACHE_CONF_DIR" -type f -name "*.conf" | while read fname
|
|
do mdir=$(head -1 "$fname" | cut -f 4 -d '"')
|
|
test ! -d "$mdir" && rm "$fname"
|
|
done
|
|
}
|
|
|
|
empty_conf_dir()
|
|
{
|
|
find "$APACHE_CONF_DIR" -type f -name "*.conf" -print0 | xargs -0 rm
|
|
}
|
|
|
|
send_reload_command()
|
|
{
|
|
# reload config files
|
|
"$APACHE_SCRIPT" reload
|
|
}
|
|
|
|
# -----------------=-=-=- main -=-=-=----------------------
|
|
|
|
case "$event" in
|
|
premount|postumount )
|
|
;;
|
|
postmount )
|
|
vol_name=$3
|
|
mount_dir=$5
|
|
echo "$APACHE_SHARE_TEMPLATE" | sed "s#_SHARE_DIR_#$mount_dir#g; s#_VOLUME_NAME_#$vol_name#g" >"$APACHE_CONF_DIR/${vol_name}.conf"
|
|
update_include_conf_dir
|
|
send_reload_command
|
|
;;
|
|
preumount )
|
|
vol_name=$3
|
|
rm "$APACHE_CONF_DIR/${vol_name}.conf" || true
|
|
update_include_conf_dir
|
|
send_reload_command
|
|
;;
|
|
shutdown | bootup )
|
|
empty_conf_dir
|
|
;;
|
|
* )
|
|
# ignore all events that we do not support
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
exit 0
|
|
|