13 use Data::Dump qw(dump);
15 warn "# v ", dump( $v );
18 remote_host => $query->remote_host,
22 if ( my $c = $query->cookie('rfid_reader') ) {
23 warn "## RFID cookie rfid_reader = $c\n";
24 $hash->{local_ip} = $c;
25 $hash->{have_reader} = 1;
28 if ( my $session = $query->cookie("CGISESSID") ) {
29 $hash->{session} = $session;
30 my $path = "/dev/shm/rfid.$session";
31 warn "## RFID session $path\n";
33 open(my $fh, '<', $path);
34 $hash->{local_ip} = <$fh>;
35 $hash->{have_reader} = 1;
39 my $dir = $FindBin::Bin;
41 if ( my $koha_login = $query->param('koha_login') ) {
42 my $path = "$dir/user/$koha_login";
43 $hash->{koha_login} = $koha_login;
45 nopen(my $fh, '<', $path);
46 $hash->{local_ip} = <$fh>;
47 $hash->{have_reader} = 1;
48 warn "RFID: $koha_login -> $hash->{local_ip}\n";
54 } elsif ( $query->param('_last') ) {
57 my $ip = $v->{HTTP_LISTEN};
60 die "RFID ERROR: no HTTP_LISTEN in ",dump($v);
63 my $path = "$dir/ip/$ip"; # FIXME
64 open(my $fh, '>', $path);
65 print $fh encode_json( $v );
67 warn "RFID $path $ip ", -s $path, "\n";
69 # XXX this place is too early to test connection, since our client is not listening yet
70 #my $sock = IO::Socket::INET->new($ip) || die "RFID $ip : $!"; # XXX
72 $hash->{local_ip} = $ip;
74 $path = "$dir/reader/$ip";
75 mkdir $path unless -e $path;
76 $path .= '/mainpage.pl';
77 symlink "$dir/koha-reader.pl", $path unless -e $path;
79 $hash->{have_reader} = -e $path;
82 warn $hash->{_error} = "ERROR: ", $hash->{remote_host}, " don't have RFID reader assigned";
88 //$(document).ready( function() {
89 console.log('|, join('', @_), qq|);
94 if ( $query->param('intranet-js') ) {
95 print "Content-type: application/javascript\r\n\r\n";
97 if ( exists $hash->{have_reader} ) {
98 if ( my $local_ip = $hash->{local_ip} ) {
100 my $url = "/rfid/to/$local_ip";
101 open(my $js, '<', 'koha-rfid.js');
103 s/local_ip/$local_ip/g;
104 s/localhost:9000/$url/g;
105 s{///$url}{$url}g; # relative urls
110 warn "## RFID no local_ip for ",dump($hash);
113 # warn "## RFID doesn't have reader ",dump($hash);
116 } elsif ( my $ip = $query->param('register_reader') ) {
117 my $url = $query->self_url;
118 $url =~ s{/koha/ffzg/rfid.*$}{/koha/mainpage.pl};
119 warn "## RFID register_rader $ip -> $url\n";
120 print "Location: $url\r\n",
121 "Cookie: rfid_reader=$ip\r\n",
124 print "Content-type: application/json; charset=utf-8\r\n\r\n";
125 print encode_json $hash;
127 warn "## RFID hash = ",dump($hash);