mirror of
				https://github.com/mail-in-a-box/mailinabox.git
				synced 2025-11-03 19:30:54 +00:00 
			
		
		
		
	* Created a new Python/flask-based management daemon. * Moved the mail user management core code from tools/mail.py to the new daemon. * tools/mail.py is a wrapper around the daemon and can be run as a non-root user. * Adding a new initscript for the management daemon. * Moving dns_update.sh to the management daemon, called via curl'ing the daemon's API. This also now runs the DNS update after mail users and aliases are added/removed, which sets up new domains' DNS as needed.
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#! /bin/sh
 | 
						|
### BEGIN INIT INFO
 | 
						|
# Provides:          mailinabox
 | 
						|
# Required-Start:    $all
 | 
						|
# Required-Stop:     $all
 | 
						|
# Default-Start:     2 3 4 5
 | 
						|
# Default-Stop:      0 1 6
 | 
						|
# Short-Description: Start and stop the Mail-in-a-Box management daemon.
 | 
						|
# Description:       Start and stop the Mail-in-a-Box management daemon.
 | 
						|
### END INIT INFO
 | 
						|
 | 
						|
# Adapted from http://blog.codefront.net/2007/06/11/nginx-php-and-a-php-fastcgi-daemon-init-script/
 | 
						|
 | 
						|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
 | 
						|
DESC="Mail-in-a-Box Mgmt"
 | 
						|
NAME=mailinabox
 | 
						|
DAEMON=/usr/bin/mailinabox-daemon
 | 
						|
PIDFILE=/var/run/$NAME.pid
 | 
						|
SCRIPTNAME=/etc/init.d/$NAME
 | 
						|
 | 
						|
# Exit if the package is not installed
 | 
						|
[ -x "$DAEMON" ] || exit 0
 | 
						|
 | 
						|
# Set defaults.
 | 
						|
START=yes
 | 
						|
EXEC_AS_USER=root
 | 
						|
 | 
						|
# Read configuration variable file if it is present
 | 
						|
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
 | 
						|
 | 
						|
# Load the VERBOSE setting and other rcS variables
 | 
						|
. /lib/init/vars.sh
 | 
						|
 | 
						|
# Define LSB log_* functions.
 | 
						|
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
 | 
						|
. /lib/lsb/init-functions
 | 
						|
 | 
						|
# If the daemon is not enabled, give the user a warning and then exit,
 | 
						|
# unless we are stopping the daemon
 | 
						|
if [ "$START" != "yes" -a "$1" != "stop" ]; then
 | 
						|
        log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
 | 
						|
        exit 0
 | 
						|
fi
 | 
						|
 | 
						|
# Process configuration
 | 
						|
#export ...
 | 
						|
DAEMON_ARGS=""
 | 
						|
 | 
						|
 | 
						|
do_start()
 | 
						|
{
 | 
						|
        # Return
 | 
						|
        #   0 if daemon has been started
 | 
						|
        #   1 if daemon was already running
 | 
						|
        #   2 if daemon could not be started
 | 
						|
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
 | 
						|
                || return 1
 | 
						|
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
 | 
						|
                --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \
 | 
						|
                $DAEMON_ARGS \
 | 
						|
                || return 2
 | 
						|
}
 | 
						|
 | 
						|
do_stop()
 | 
						|
{
 | 
						|
        # Return
 | 
						|
        #   0 if daemon has been stopped
 | 
						|
        #   1 if daemon was already stopped
 | 
						|
        #   2 if daemon could not be stopped
 | 
						|
        #   other if a failure occurred
 | 
						|
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
 | 
						|
        RETVAL="$?"
 | 
						|
        [ "$RETVAL" = 2 ] && return 2
 | 
						|
        # Wait for children to finish too if this is a daemon that forks
 | 
						|
        # and if the daemon is only ever run from this initscript.
 | 
						|
        # If the above conditions are not satisfied then add some other code
 | 
						|
        # that waits for the process to drop all resources that could be
 | 
						|
        # needed by services started subsequently.  A last resort is to
 | 
						|
        # sleep for some time.
 | 
						|
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
 | 
						|
        [ "$?" = 2 ] && return 2
 | 
						|
        # Many daemons don't delete their pidfiles when they exit.
 | 
						|
        rm -f $PIDFILE
 | 
						|
        return "$RETVAL"
 | 
						|
}
 | 
						|
case "$1" in
 | 
						|
  start)
 | 
						|
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
 | 
						|
        do_start
 | 
						|
        case "$?" in
 | 
						|
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 | 
						|
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 | 
						|
        esac
 | 
						|
        ;;
 | 
						|
  stop)
 | 
						|
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
 | 
						|
        do_stop
 | 
						|
        case "$?" in
 | 
						|
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 | 
						|
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 | 
						|
        esac
 | 
						|
        ;;
 | 
						|
  restart|force-reload)
 | 
						|
        log_daemon_msg "Restarting $DESC" "$NAME"
 | 
						|
        do_stop
 | 
						|
        case "$?" in
 | 
						|
          0|1)
 | 
						|
                do_start
 | 
						|
                case "$?" in
 | 
						|
                        0) log_end_msg 0 ;;
 | 
						|
                        1) log_end_msg 1 ;; # Old process is still running
 | 
						|
                        *) log_end_msg 1 ;; # Failed to start
 | 
						|
                esac
 | 
						|
                ;;
 | 
						|
          *)
 | 
						|
                # Failed to stop
 | 
						|
                log_end_msg 1
 | 
						|
                ;;
 | 
						|
        esac
 | 
						|
        ;;
 | 
						|
  *)
 | 
						|
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
 | 
						|
        exit 3
 | 
						|
        ;;
 | 
						|
esac
 |