RFID: first check if we need reader for user
[koha_ffzg] / ffzg / rfid / register.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use CGI;
7 use JSON;
8 use FindBin;
9
10 my $query = new CGI;
11
12 use Data::Dump qw(dump);
13 #warn "# query ", dump( $query );
14
15 my $hash = {
16         remote_host => $query->remote_host,
17 };
18
19 my $dir = $FindBin::Bin;
20 my $path = "$dir/ip/" . $hash->{remote_host};
21
22
23 if ( my $koha_login = $query->param('koha_login') ) {
24         my $path = "$dir/user/$koha_login";
25         $hash->{koha_login} = $koha_login;
26         if ( -e $path ) {
27                 open(my $fh, '<', $path);
28                 $hash->{local_ip} = <$fh>;
29                 $hash->{have_reader} = 1;
30                 warn "RFID: $koha_login -> $hash->{local_ip}\n";
31                 close $fh;
32         } else {
33                 #warn "# no $path";
34         }
35
36 } elsif ( my $ip = $query->param('local_ip') ) {
37
38         $hash->{local_ip} = $ip;
39         open(my $fh, '>', $path);
40         print $fh $hash->{local_ip};
41         close($fh);
42         warn "RFID $path $ip ", -s $path, "\n";
43
44 } elsif ( -e $path ) {
45         open(my $fh, '<', $path);
46         my $ip = <$fh>;
47         chomp $ip;
48         $hash->{local_ip} = $ip;
49         close($fh);
50
51 } else {
52         warn $hash->{_error} = "ERROR: ", $hash->{remote_host}, " don't have RFID reader assigned";
53 }
54
55 sub js_console {
56         warn "RFID: ",@_;
57         return q|
58 //$(document).ready( function() {
59         console.log('|, join('', @_), qq|);
60 //}
61 |;
62 }
63
64 if ( $query->param('intranet-js') ) {
65         print "Content-type: application/javascript\r\n\r\n";
66
67         if ( exists $hash->{have_reader} ) {
68                 if ( my $local_ip = $hash->{local_ip} ) {
69                                 chomp $local_ip;
70                                 my $url = "/rfid/to/$local_ip";
71                                 open(my $js, '<', 'koha-rfid.js');
72                                 while(<$js>) {
73                                         s/local_ip/$local_ip/g;
74                                         s/localhost/$url/g;
75                                         s{///$url}{$url}g; # relative urls
76                                         print;
77                                 }
78                                 close($js);
79                 } else {
80                         warn "## RFID no local_ip for ",dump($hash);
81                 }
82         } else {
83 #               warn "## RFID doesn't have reader ",dump($hash);
84         }
85 } else {
86         print "Content-type: application/json; charset=utf-8\r\n\r\n";
87         print encode_json $hash;
88         warn "## RFID hash = ",dump($hash);
89 }