Samx Here
n1udSecurity


Server : Apache
System : Linux ks5.tuic.fr 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64
User : pragmatice ( 1003)
PHP Version : 8.2.24
Disable Function : NONE
Directory :  /etc/rc5.d/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //etc/rc5.d/S01sympa
#!/bin/sh

set -e

### BEGIN INIT INFO
# Provides:          sympa
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      mysql postgresql
# Should-Stop:       mysql postgresql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: start and stop the SYMPA mailing list manager
# Description:       SYMPA is a mailing list manager
### END INIT INFO

PATH=/bin:/usr/bin:/sbin:/usr/sbin
RUNDIR=/run/sympa
EXECPATH=/usr/lib/sympa/bin
USER=sympa
GROUP=sympa

NAME="sympa"
DESC="Sympa mailing list manager"

DAEMONS="sympa_msg task_manager bulk bounced archived"

if [ -f /etc/default/sympa ]; then
    . /etc/default/sympa
fi

for daemon in $DAEMONS ; do
    if [ ! -f "${EXECPATH}/${daemon}.pl" ]; then
        exit 0
    fi
done

. /lib/lsb/init-functions

reverse_order() {
    RET=
    for elem in $1 ; do
        RET="$elem $RET"
    done
    echo $RET
}

create_rundir() {
    if [ ! -d "$RUNDIR" ]; then
        mkdir -p "$RUNDIR"
    fi
    chown "${USER}:${GROUP}" "$RUNDIR"
    chmod 0755 "$RUNDIR"
}

get_daemon_pids() {
    ps -eo pid,user,cmd | sed 's/^[[:space:]]*//' \
    | egrep "^[0-9]+ ${USER} .* ${EXECPATH}/${1}.pl" \
    | cut -d ' ' -f1 | tr '\n' ' ' | sed 's/[[:space:]]*$//'
}

isrunning_sympa() {
    RET=1
    for daemon in $DAEMONS ; do
        if [ "$(get_daemon_pids "$daemon")" != "" ]; then
            RET=0
            break
        fi
    done
    return $RET
}

status_sympa() {
    log_daemon_msg "Status of $DESC"
    for daemon in $DAEMONS ; do
        pids=$(get_daemon_pids "$daemon")
        if [ "$pids" != "" ]; then
            log_progress_msg "$daemon (pid $pids)"
        else
            log_progress_msg "$daemon (not running)"
        fi
    done
    log_end_msg 0
}

start_sympa() {
    ERRORS=
    create_rundir
    log_daemon_msg "Starting $DESC"
    if ! isrunning_sympa ; then
        for daemon in $DAEMONS ; do
            log_progress_msg "$daemon"
            start-stop-daemon --start --quiet --chuid "${USER}:${GROUP}" \
                --pidfile "${RUNDIR}/${daemon}.pid" \
                --exec "${EXECPATH}/${daemon}.pl" || ERRORS="$ERRORS $daemon"
        done
        log_end_msg 0
        if [ "$ERRORS" != "" ]; then
            log_daemon_msg "Some daemons failed to be started:$ERRORS"
            log_end_msg 1
        fi
    else
        log_progress_msg "$NAME is already running (see status command)"
        log_end_msg 0
    fi
}

stop_sympa() {
    ERRORS=
    log_daemon_msg "Stoping $DESC"
    if isrunning_sympa ; then
        for daemon in $(reverse_order "$DAEMONS") ; do
            log_progress_msg "$daemon"
            start-stop-daemon --stop --quiet --retry 5 \
                --user "${USER}" \
                --pidfile "${RUNDIR}/${daemon}.pid" || ERRORS="$ERRORS $daemon"
            # It may happened that some processes are not tracked with pidfiles.
            # For example, with the parameter 'distribution_mode fork' used by
            # sympa.pl. It forked but the second process pid is not tracked,
            # here is some kind of 'garbage collector'
            pids=$(get_daemon_pids "$daemon")
            if [ "$pids" != "" ]; then
                for p in $pids ; do
                    kill -TERM "$p" 2>/dev/null || true
                done
            fi
        done
        log_end_msg 0
        if [ "$ERRORS" != "" ]; then
            log_daemon_msg "Some daemons failed to be stopped (not running?):$ERRORS"
            log_end_msg 1
        fi
    else
        log_progress_msg "$NAME is already stopped"
        log_end_msg 0
    fi
}

case "$1" in
    start)
        start_sympa
        ;;
    stop)
        stop_sympa
        ;;
    restart)
        stop_sympa
        start_sympa
        ;;
    reload|force-reload)
        if isrunning_sympa ; then
            stop_sympa || true
            start_sympa
        fi
        ;;
    status)
        status_sympa
        ;;
    *)
        echo "Usage: $(readlink -f "$0") {start|stop|restart|reload|force-reload|status}"
        exit 1
        ;;
esac

exit 0

SAMX