+my $listen = '127.0.0.1:9000';
+$listen = ':9000';
+my $reader;
+my $koha_url = 'http://ffzg.koha-dev.rot13.org:8080';
+# internal URL so we can find local address of machine and vmware NAT
+my $rfid_url = 'http://rfid.koha-dev.vbz.ffzg.hr';
+my $sip2 = {
+ server => '10.60.0.11:6002', # must be IP!
+# user => 'sip2-user',
+# password => 'sip2-passwd',
+ user => 'sip2user',
+ password => 'viva2koha',
+ loc => 'FFZG',
+};
+my $afi = {
+ secure => 0xDA,
+ unsecure => 0xD7,
+};
+
+use Getopt::Long;
+
+GetOptions(
+ 'debug!' => \$debug,
+ 'listen=s', => \$listen,
+ 'reader=s', => \$reader,
+ 'koha=s', => \$koha_url,
+) || die $!;
+
+our $rfid_sid_cache;
+
+sub rfid_borrower {
+ my $hash = shift;
+ if ( my $json = $rfid_sid_cache->{ $hash->{sid} } ) {
+ return $json;
+ }
+ my $ua = LWP::UserAgent->new;
+ my $url = URI->new( $koha_url . '/cgi-bin/koha/ffzg/rfid/borrower.pl');
+ $url->query_form(
+ RFID_SID => $hash->{sid}
+ , OIB => $hash->{OIB}
+ , JMBAG => $hash->{JMBAG}
+ );
+ warn "GET ",$url->as_string;
+ my $response = $ua->get($url);
+ if ( $response->is_success ) {
+ my $json = decode_json $response->decoded_content;
+ $rfid_sid_cache->{ $hash->{sid} } = $json;
+ return $json;
+ } else {
+ warn "ERROR ", $response->status_line;
+ }
+}
+
+
+sub sip2_message {
+ my $send = shift;
+
+ my $sock = $sip2->{sock} || die "no sip2 socket";
+
+ local $/ = "\r";
+
+ $send .= "\r" unless $send =~ m/\r$/;
+ warn "SIP2 >>>> ",dump($send), "\n";
+ print $sock $send;
+ $sock->flush;
+
+ my $expect = substr($send,0,2) | 0x01;
+
+ my $in = <$sock>;
+ $in =~ s/^\n//;
+ warn "SIP2 <<<< ",dump($in), "\n";
+
+ die "expected $expect" unless substr($in,0,2) != $expect;
+
+ $in =~ s/\r$//;
+
+ my $hash;
+ if ( $in =~ s/^([0-9\s]+)// ) {
+ $hash->{fixed} = $1;
+ }
+ foreach ( split(/\|/, $in ) ) {
+ my ( $f, $v ) = ( $1, $2 ) if m/([A-Z]{2})(.+)/;
+ $hash->{$f} = decode('utf-8',$v);
+ }
+
+ warn "# sip2 hash response ",dump($hash);
+
+ return $hash;
+}