#!/sbin/openrc-run

: ${name:="PHP FastCGI Process Manager"}

ALTPHPVER=81

command="/opt/alt/php$ALTPHPVER/usr/sbin/php-fpm"
command_background="yes"
start_stop_daemon_args="--quiet"
pidfile="/run/alt-php$ALTPHPVER-fpm.pid"
retry="SIGTERM/20"

# configtest is here only for backward compatibility
extra_commands="checkconfig configtest"
extra_started_commands="reload reopen"
description_checkconfig="Run alt-php$ALTPHPVER-fpm config check"
description_reload="Gracefully reload workers and config"
description_reopen="Reopen log files"

required_files="$fpm_config"

depend() {
        need net
        use apache2 lighttpd nginx
}

init_vars() {
        fpm_config="/opt/alt/php$ALTPHPVER/etc/php-fpm.conf"
        user="root"
        # Defaults for single master process with multiple pools

        command_args="--nodaemonize --fpm-config $fpm_config"
        start_stop_daemon_args="$start_stop_daemon_args
                --user $user ${group:+"--group $group"}"
}

start_pre() {
        checkconfig || return 1

        # If unix socket is used (instead of TCP/IP), then ensure that the
        # directory exists and has correct privileges.
        local listen="$(conf_get listen)"
        if [ "${listen:0:1}" = "/" ]; then
                checkpath -d -o $user:$group "$(dirname "$listen")"
        fi

        checkpath -d "$(dirname "$pidfile")"
}

reload() {
        ebegin "Reloading $name"
        start-stop-daemon --signal USR2 --pidfile "$pidfile"
        eend $?
}

reopen() {
        ebegin "Reopening $name log files"
        start-stop-daemon --signal USR1 --pidfile "$pidfile"
        eend $?
}

checkconfig() {
        init_vars
        ebegin "Checking $fpm_config"

        local out
        out="$(su -s /bin/sh -c "$command --test --fpm-config $fpm_config" $user 2>&1)" || {
                printf "%s\n" "$out"
                eend 1 "failed, please correct errors above"
                return 1
        }
}

configtest() {
        ewarn "configtest is deprecated, use checkconfig instead"
        checkconfig
}

conf_get() {
        local key="$1"
        sed -nE "s/^${key}\s*=\s*\"?([^\";]+).*/\1/p" "$fpm_config" | head -n 1
}
