- added code and libraries of old door deamon
[svn42.git] / old-door-deamon / door_daemon.pl
diff --git a/old-door-deamon/door_daemon.pl b/old-door-deamon/door_daemon.pl
new file mode 100755 (executable)
index 0000000..af2a85b
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/perl -w
+use IO::Handle;
+
+my $fifofile = "/root/door_cmd.fifo";
+unless( -p $fifofile) 
+{
+  unlink $fifofile;
+  system("mkfifo -m 600 $fifofile") && die "Can't mkfifo $fifofile: $!";
+  system("setfacl -m u:otti:rw $fifofile");
+  system("setfacl -m u:asterisk:rw $fifofile");
+}
+
+open($logfile,'>>/var/log/tuer.log');
+$logfile->autoflush(1);
+print $logfile localtime()." Door Daemon started\n";
+
+print `/root/ledoff`;
+system('ln -sf /var/www/indexclosed.html /var/www/index.html');
+my $tuer=0;
+my $who="";
+
+sub handler
+{
+  #local($sig) = @_;
+  print $logfile localtime()." Door Daemon stopped\n";
+  close $logfile;
+  close $fifo if (defined $fifo);
+  exit(0);
+}
+
+$SIG{'INT'} = 'handler';
+$SIG{'QUIT'} = 'handler';
+$SIG{'KILL'} = 'handler';
+
+while (1)
+{
+  open($fifo,"< $fifofile");
+       while (my $cmd = <$fifo>)
+       {
+         if ($cmd =~ /^(\w+)\s*(.*)$/)
+         {
+           $who=$2;
+           if    ($1 eq "open")   {$tuer=1;}
+           elsif ($1 eq "close")  {$tuer=0;}
+           elsif ($1 eq "toggle") {$tuer=not $tuer;}
+         }
+
+         if ($tuer)
+         {
+           print `/root/ledon`;
+           system('ln -sf /var/www/indexopen.html /var/www/index.html');
+           print $logfile localtime()." Door opened by $who\n";
+         } else {
+           print `/root/ledoff`;
+           system('ln -sf /var/www/indexclosed.html /var/www/index.html');
+           print $logfile localtime()." Door closed by $who\n";
+         }
+       }
+  close($fifo);
+}