#!/bin/bash
#=============================================
# PH3 package start script skeleton
#=============================================
# Do NOT "set -e"
# PATH should only include /services/* if it runs after the mount script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Mount userroot"
PACKAGE=userroot
NAME=userroot
DAEMON="/bin/mount"
DAEMON_ARGS=""
PIDFILE=""
CGROUP_CLASS=users
VERBOSE="yes"
#
# exit with error if init-functions not found
#
if [ ! -f "/lib/init/init-functions" ]; then
echo "ERROR: /lib/init/init-functions not found"
exit 1
else
. /lib/init/init-functions
fi
#
# redefine mountpoint
#
# Return
# 0 if mounted
# 1 if not mounted
#str: komentiram ia zashtoto ne raboti na vps-ite
#mountpoint()
#{
# if [ "z$1" == "z-q" ]; then
# mnt="$2"
# else
# mnt="$1"
# fi
# if [ -n "$(awk "{if (\$2 == \"$mnt\") print \$2}" /proc/mounts)" ]; then
# return 0
# else
# return 1
# fi
#}
is_writable()
{
touch $1/test_is_writable.tmp > /dev/null 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && rm $1/test_is_writable.tmp
return $RETVAL
}
#----------------------------------------------
# Redefine functions
#----------------------------------------------
do_start()
{
#respawn from init
if [[ ! $HOSTNAME == vps*.mylogin.co ]]; then
pkill -9 -f pdns_recursor
mountpoint -q /services/userroot/sys/devices/system/cpu || mount --bind /var/cpu_mounts/sys/devices/system/cpu /services/userroot/sys/devices/system/cpu
fi
# /services/config for exim
is_writable /services/userroot/services/config || mount -t tmpfs -o noexec,mode=0700 none /services/userroot/services/config
# /tmp
is_writable /services/userroot/tmp || mount --rbind /tmp /services/userroot/tmp
is_writable /services/userroot/var/tmp || mount --rbind /tmp /services/userroot/var/tmp
# /var/run
#is_writable /services/userroot/var/run || mount -t tmpfs none /services/userroot/var/run
is_writable /services/userroot/run || mount -t tmpfs -o noexec,mode=0755 none /services/userroot/run
# /var/run/mysql/mysqld.sock=
#[ -d "/services/userroot/var/run/mysqld" ] || mkdir /services/userroot/var/run/mysqld
[ -d "/services/userroot/run/mysqld" ] || mkdir /services/userroot/run/mysqld
#mountpoint -q /services/userroot/var/run/mysqld || mount --rbind /var/run/mysqld /services/userroot/var/run/mysqld
mountpoint -q /services/userroot/run/mysqld || mount --rbind /var/run/mysqld /services/userroot/run/mysqld
#chmod a+s /services/userroot/services/exim/bin/exim
chmod 1777 /services/userroot/tmp
chmod 1777 /services/userroot/var/tmp
chmod 1777 /services/userroot/run
# /var/spool/exim
[ -d "/services/userroot/var/spool/exim" ] || mkdir /services/userroot/var/spool/exim
is_writable /services/userroot/var/spool/exim || mount -t tmpfs -o noexec,mode=0700,uid=1001,gid=1007 none /services/userroot/var/spool/exim
chown 1001:1001 /services/userroot/var/spool/exim
chmod 1777 /services/userroot/var/spool/exim
# /var/log/exim
is_writable /services/userroot/var/log/exim || mount -t tmpfs -o size=16m,noexec,uid=1001,gid=1007 none /services/userroot/var/log/exim
[ -d "/services/userroot/var/log/exim" ] || mkdir /services/userroot/var/log/exim
chown 1001:1001 /services/userroot/var/log/exim
chmod 1777 /services/userroot/var/log/exim
[ -d "/services/userroot/proc" ] || mkdir /services/userroot/proc
mountpoint -q /services/userroot/proc || mount -t proc -o hidepid=2,gid=111 none /services/userroot/proc
if [ ! -c /services/userroot/dev/null ]; then
cd /services/userroot/dev/
tar xf dev.tgz
fi
mountpoint -q /services/userroot/dev/pts || mount -t devpts -o gid=888,newinstance devpts /services/userroot/dev/pts
chmod 666 /services/userroot/dev/pts/ptmx
#is_writable /services/userroot/usr/local/frontpage || (cp -a /services/userroot/usr/local/frontpage /tmp && mount -t tmpfs none /services/userroot/usr/local/frontpage && cp -a /tmp/frontpage/ /services/userroot/usr/local/ && rm -rf /tmp/frontpage)
#is_writable /services/userroot/usr/local/frontpage || cp -a /services/userroot/usr/local/frontpage /tmp || mount -t tmpfs none /services/userroot/usr/local/frontpage || cp -a /tmp/frontpage/ /services/userroot/usr/local/ || rm -rf /tmp/frontpage
#|| mount storage:/storage/shares_binary/userroot/standard_x86_64/usr/local/frontpage /services/userroot/usr/local/frontpage/ -o rw,noatime,vers=3,nolock
return 0
}
do_stop()
{
# /services/config for exim
mountpoint -q /services/userroot/proc || umount /services/userroot/proc
# /services/config for exim
mountpoint -q /services/userroot/services/config || umount /services/userroot/services/config
# /tmp
mountpoint -q /services/userroot/tmp || umount /services/userroot/tmp
mountpoint -q /services/userroot/var/tmp || umount /services/userroot/var/tmp
# /var/run/mysql/mysqld.sock=
mountpoint -q /services/userroot/var/run/mysqld || umount /services/userroot/var/run/mysqld
# /var/run
mountpoint -q /services/userroot/var/run || umount /services/userroot/var/run
# /var/spool/exim
mountpoint -q /services/userroot/var/spool/exim || umount /services/userroot/var/spool/exim
# /var/log/exim
mountpoint -q /services/userroot/var/log/exim || umount /services/userroot/var/log/exim
mountpoint -q /services/userroot/usr/local/frontpage || umount /services/userroot/usr/local/frontpage
mountpoint -q /services/userroot/dev/pts/ptmx || umount /services/userroot/dev/pts/ptmx
return 0
}
#----------------------------------------------
#
# choose action
#
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
RETVAL=$?
[ "$VERBOSE" != no ] && log_end_msg $RETVAL
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
RETVAL=$?
[ "$VERBOSE" != no ] && log_end_msg $RETVAL
;;
freeze)
log_daemon_msg "This package does not support FREEZE" && log_end_msg 1
exit 1
;;
thaw|unfreeze)
log_daemon_msg "This package does not support THAW" && log_end_msg 1
exit 1
;;
status)
log_daemon_msg "This package does not support STATUS" && log_end_msg 1
exit 1
;;
reload)
log_daemon_msg "This package does not support RELOAD" && log_end_msg 1
exit 1
;;
restart|force-reload)
log_daemon_msg "This package does not support RESTART" && log_end_msg 1
exit 1
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload|freeze|thaw}" >&2
exit 3
;;
esac