5 use lib '/srv/koha_ffzg';
8 use Data::Dump qw(dump);
12 # fake koha login so we can get valid session
13 my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
15 template_name => "intranet-main.tt",
19 flagsrequired => { catalogue => 1, },
23 my $session = $query->cookie('CGISESSID');
24 my $url = $query->url;
25 # hungle URL to get Koha authorization and keep our reader identification in URL
26 # https://ffzg.koha-dev.rot13.org:8443/cgi-bin/koha/ffzg/rfid/reader/10.60.0.92:9000/mainpage.pl
27 my ( $redirect, $reader_ip_port ) = ( $1 . $3 , $2 ) if $url =~ s{(^.+)/ffzg/rfid/reader/([^/]+)(/.+)$}{$1};
29 warn "## $session $reader_ip_port";
30 my $session_file = "/dev/shm/rfid.$session";
32 if ( $reader_ip_port ) {
34 open(my $fh, '>', $session_file) || die "$session_file: $!";
35 print $fh $reader_ip_port;
40 sub check_rfid_reader {
41 my $host_port = shift;
42 if ( my $sock = IO::Socket::INET->new($reader_ip_port) ) {
43 print $sock "GET /scan HTTP/1.0\r\n\r\n";
45 return "OK\n\n" . <$sock>;
47 return "RFID ERROR $reader_ip_port : $!";
52 my $reader_url = $query->url( -path => 1 );
53 $reader_url =~ s{/[^/]+$}{}; # strip script name
54 $reader_url . '/ffzg/rfid/';
56 output_html_with_http_headers $query, $cookie, join('',qq{
59 <title>RFID reader selection</title>
61 <a id="redirect" href="$redirect"">$redirect</a>
63 <li>Koha session: <pre>$session },(-e $session_file ? 'OK' : 'ERROR: MISSING'),qq{</pre></li>
65 ? qq{<li>RFID reader: <pre>$reader_ip_port } . check_rfid_reader( $reader_ip_port ) . qq{</pre></li>}
66 : qq{RFID available:<ul><li>} . join('</li><li>',map { qq{<a href="$reader_url/$_" target="rfid">$_</a>} } glob('reader/*/*')) . qq{</li></ul>}
70 var e = document.getElementById('redirect');