| #!/sbin/openrc-run |
| # Copyright 1999-2016 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| extra_commands="update" |
| |
| depend() { |
| need net |
| after rp-pppoe |
| } |
| |
| getconfig() { # 0: no daemon / 1: daemon |
| local CONF NAME LIST="" |
| for CONF in /etc/ez-ipupdate/*.conf; do |
| if [ -f "${CONF}" ]; then |
| # Don't run configurations that are (not) daemons |
| grep -q '^[[:space:]]*daemon' "${CONF}"; [ $? -eq $1 ] && continue |
| # Don't run configurations that run in the foreground |
| grep -q '^[[:space:]]*foreground' "${CONF}" && continue |
| # add config to list |
| NAME="${CONF##*/}" |
| LIST="${LIST} ${NAME%.*}" |
| fi |
| done |
| echo ${LIST} |
| } |
| |
| start() { |
| local NAME LIST=$(getconfig 1) |
| |
| if [ -z "${LIST}" ]; then |
| eerror "You need at least one config file in /etc/ez-ipupdate" |
| eerror "containing the 'daemon' keyword and no 'foreground' keyword." |
| return 1 |
| fi |
| |
| for dir in /var/run/ez-ipupdate /var/cache/ez-ipupdate; do |
| checkpath -q -d -m 0750 -o ez-ipupd:ez-ipupd ${dir} |
| done |
| |
| for NAME in ${LIST}; do |
| local CONFIG="/etc/ez-ipupdate/${NAME}.conf" |
| local PIDFILE="/var/run/ez-ipupdate/${NAME}.pid" |
| local CACHEFILE="/var/cache/ez-ipupdate/${NAME}.cache" |
| ebegin "Starting ez-ipupdate (${NAME})" |
| start-stop-daemon -p "${PIDFILE}" --start --quiet --exec /usr/sbin/ez-ipupdate \ |
| --user ez-ipupd:ez-ipupd -- -c "${CONFIG}" -F "${PIDFILE}" -b "${CACHEFILE}" |
| eend $? |
| done |
| return 0 # do not fail |
| } |
| |
| stop() { |
| local PIDFILE NAME |
| for PIDFILE in /var/run/ez-ipupdate/*.pid; do |
| if [ -f "${PIDFILE}" ]; then |
| NAME="${PIDFILE##*/}" |
| ebegin "Stopping ez-ipupdate (${NAME%.*})" |
| start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PIDFILE}" |
| eend $? || rm -f "${PIDFILE}" |
| else |
| eerror "No running ez-ipupdate process" |
| fi |
| done |
| return 0 # do not fail |
| } |
| |
| update() { |
| local NAME TEXT LIST=$(getconfig 0) |
| |
| if [ -z "${LIST}" ]; then |
| eerror "You need at least one config file in /etc/ez-ipupdate" |
| eerror "containing no 'daemon' and 'foreground' keyword." |
| return 1 |
| fi |
| |
| for NAME in ${LIST}; do |
| local CONFIG="/etc/ez-ipupdate/${NAME}.conf" |
| local CACHEFILE="/var/cache/ez-ipupdate/${NAME}.cache" |
| ebegin "Running ez-ipupdate (${NAME})" |
| TEXT=$(/usr/sbin/ez-ipupdate -q -R ez-ipupd -c "${CONFIG}" -b "${CACHEFILE}" 2>&1) |
| if eend $?; then |
| if [ -n "${TEXT}" ]; then |
| echo "${TEXT}" | while read line; do einfo " $line"; done |
| fi |
| else |
| if [ -n "${TEXT}" ]; then |
| echo "${TEXT}" | while read line; do eerror " $line"; done |
| fi |
| fi |
| done |
| return 0 # do not fail |
| } |