rm documents to github
[svn42.git] / checkcard.pl
index 18109d4..4e3816f 100755 (executable)
@@ -3,23 +3,31 @@
 use Socket;
 use strict;
 my $fh;
-#my $fifofile = "/tmp/door_cmd.fifo";
 
-my $socketfile = "/tmp/door_cmd.socket";
-exit(1) unless (-S $socketfile);
+my $socketfile = $ARGV[0] || "/var/run/tuer/door_cmd.socket";
+my $keysfile = '/flash/keys';
+
+sleep(1) while (! -S $socketfile);
 my $socketaddr = sockaddr_un($socketfile);
 
-my $keys;
 my %good;
+my $keys_last_read=0;
 
-open $keys,'/flash/keys';
-while (<$keys>)
+sub read_keys
 {
-       chomp;
-       if ($_ =~ /^([0-9A-Fa-f]{8})\s+(.+)$/)
-       {
-               $good{$1}=$2;
-       }
+  %good=();
+  my $keys;
+  open $keys,$keysfile;
+  while (<$keys>)
+  {
+    chomp;
+    if ($_ =~ /^([0-9A-Fa-f]{8})\s+(.+)$/)
+    {
+      $good{$1}=$2;
+    }
+  }
+  close $keys;
+  $keys_last_read = -M ($keysfile);
 }
 
 sub send_to_fifo
@@ -30,12 +38,25 @@ sub send_to_fifo
        close($conn);
 }
 
-while (sleep 1)
+read_keys();
+
+
+while (sleep 2)
 {
-       open $fh,'/flash/tuer_python/mifare-read 0 2>&1 |';
-       while (<$fh>)
-       {
-               next unless /UID/;
+  send_to_fifo("log starting mifare-read");
+       open $fh,'/flash/tuer/mifare-read 0 2>&1 |';
+
+  read_keys() unless ($keys_last_read == -M ($keysfile));
+
+  READLOOP: while (<$fh>)
+       {               
+               unless (/UID/)
+    {
+      close($fh);
+      system("/usr/bin/killall -9 mifare-read");
+                       send_to_fifo("log restarting mifare-read after invalid output");
+      last READLOOP;
+    }
                my ($id) = /UID=(\S+)\s+/;
                if ($good{$id})
                {