X-Git-Url: https://git.madduck.net/code/molly-guard.git/blobdiff_plain/946cdc2f1df4ba60775d48f9d652344e29ec4186:/shutdown..842c0f9058ada9b8d7ccca624333803d1404bb22:/static/gitweb.js?ds=sidebyside diff --git a/shutdown b/shutdown deleted file mode 100755 index 3ffacc9..0000000 --- a/shutdown +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/sh -# -# shutdown -- wrapper script to guard against accidental shutdowns -# -# Copyright © martin f. krafft -# Released under the terms of the Artistic Licence 2.0 -# -set -eu - -ME=molly-guard -VERSION=0.4 -SCRIPTSDIR=/etc/molly-guard/run.d - -CMD="${0##*/}" -EXEC="/sbin/$CMD" - -case "$CMD" in - halt|reboot|shutdown|poweroff) - if [ ! -f $EXEC ]; then - echo "E: $ME: not a regular file: $EXEC" >&2 - exit 4 - fi - if [ ! -x $EXEC ]; then - echo "E: $ME: not an executable: $EXEC" >&2 - exit 3 - fi - ;; - *) - echo "E: $ME: unsupported command: $CMD" >&2 - exit 1 - ;; -esac - -usage() -{ - cat <<-_eousage - Usage: $ME [options] [-- script options] - (shielding $EXEC) - - molly-guard's primary goal is to guard against accidental - shutdowns/reboots. $ME will run all scripts in $SCRIPTSDIR and only - invokes $EXEC if all scripts exited successfully. - - Specifying --molly-guard-do-nothing as argument to the command will - make $ME echo the command it would execute rather than actually - executing it. - - Options following the double hyphen will be passed unchanged to the - scripts. - - Please see molly-guard(8) for more information. - - The actual command's help output follows: - - _eousage -} - -CMDARGS= -SCRIPTARGS= -END_OF_ARGS=0 -DO_NOTHING=0 -for arg in "$@"; do - case "$arg" in - (*-molly-guard-do-nothing) DO_NOTHING=1;; - (*-help) - usage 2>&1 - eval $EXEC --help 2>&1 - exit 0 - ;; - --) END_OF_ARGS=1;; - *) - if [ $END_OF_ARGS -eq 0 ]; then - CMDARGS="${args:+$args }$arg" - else - SCRIPTARGS="${args:+$args }--arg $arg" - fi - ;; - esac -done - -do_real_cmd() -{ - if [ $DO_NOTHING -eq 1 ]; then - echo "$ME: would run: $EXEC $CMDARGS" - exit 0 - else - eval exec $EXEC "$CMDARGS" - fi -} - -if [ $DO_NOTHING -eq 1 ]; then - echo "I: demo mode; $ME will not do anything due to --molly-guard-do-nothing." >&2 -fi - -# pass through certain commands -case "$CMD $CMDARGS" in - (*shutdown\ *-c*) - # allow canceling shutdowns - echo "I: executing $CMD $CMDARGS regardless of check results." >&2 - do_real_cmd - ;; -esac - -MOLLYGUARD_CMD=$CMD; export MOLLYGUARD_CMD -MOLLYGUARD_DO_NOTHING=$DO_NOTHING; export MOLLYGUARD_DO_NOTHING -MOLLYGUARD_SETTINGS="/etc/molly-guard/rc"; export MOLLYGUARD_SETTINGS - -for script in $(run-parts --test $SCRIPTSDIR); do - ret=0 - eval $script $SCRIPTARGS || ret=$? - if [ $ret -ne 0 ]; then - echo "W: aborting $CMD due to ${script##*/} exiting with code $ret." >&2 - exit $ret - fi -done - -do_real_cmd