summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Reimer <manuel.reimer@gmx.de>2013-04-26 16:00:42 +0200
committerManuel Reimer <manuel.reimer@gmx.de>2013-04-26 16:00:42 +0200
commit7366d81ece40de638add6638b53cb422dab13c1d (patch)
tree53a39075ad478bd47f97f012dfde0611d381090d
parent6b957c3d7c339d30622f67bd821a4117b97c7b36 (diff)
downloadvdrpbd-7366d81ece40de638add6638b53cb422dab13c1d.tar.gz
vdrpbd-7366d81ece40de638add6638b53cb422dab13c1d.tar.bz2
Made emergency reboot sequence configurable
-rwxr-xr-xvdrpbd16
1 files changed, 12 insertions, 4 deletions
diff --git a/vdrpbd b/vdrpbd
index 700f1e6..559940e 100755
--- a/vdrpbd
+++ b/vdrpbd
@@ -33,9 +33,10 @@ my $PROGNAME = 'vdrpbd';
my $PIDFILE = '/var/run/vdrpbd.pid';
my $CFGFILE = '/etc/vdrpbd.conf';
my $FHPID;
-my $ER_COUNT = 4; # Number of keypresses and ...
-my $ER_TIME = 3; # ... timerange in seconds for emergency reboot
-my %CONF;
+my %CONF = (
+ ER_COUNT => 4, # Number of keypresses and ...
+ ER_TIME => 3 # ... timerange in seconds for emergency reboot
+);
my $KEYQUEUE = Thread::Queue->new();
# Main code (in main thread)
@@ -55,6 +56,12 @@ my $KEYQUEUE = Thread::Queue->new();
if ($CONF{USE_DBUS} && !$HAVE_DBUS) {
die("DBus support requested but no Net::DBus module present!\n");
}
+ if ($CONF{ER_COUNT} !~ /^[0-9]+$/ || $CONF{ER_COUNT} < 2) {
+ die("Invalid value for ER_COUNT in $CFGFILE!\n");
+ }
+ if ($CONF{ER_TIME} !~ /^[0-9]+$/ || $CONF{ER_TIME} < 1) {
+ die("Invalid value for ER_TIME in $CFGFILE!\n");
+ }
# Prepare environment
chdir('/');
@@ -87,7 +94,8 @@ my $KEYQUEUE = Thread::Queue->new();
# Detect emergency reboot case
push(@btnhist, $tv_sec);
- if (@btnhist == $ER_COUNT && $tv_sec - shift(@btnhist) <= $ER_TIME) {
+ if (@btnhist == $CONF{ER_COUNT} &&
+ $tv_sec - shift(@btnhist) <= $CONF{ER_TIME}) {
syslog(LOG_INFO, 'Initiating user-requested emergency reboot!');
system('/sbin/shutdown', '-r', 'now');
}