Lines 9-15
package C4::SIP::Sip::MsgType;
Link Here
|
9 |
use strict; |
9 |
use strict; |
10 |
use warnings; |
10 |
use warnings; |
11 |
use Exporter; |
11 |
use Exporter; |
12 |
use Sys::Syslog qw(syslog); |
|
|
13 |
|
12 |
|
14 |
use C4::SIP::Sip qw(:all); |
13 |
use C4::SIP::Sip qw(:all); |
15 |
use C4::SIP::Sip::Constants qw(:all); |
14 |
use C4::SIP::Sip::Constants qw(:all); |
Lines 290-306
sub new {
Link Here
|
290 |
my $id = $server->{account} ? $server->{account}->{id} . ':' : q{}; |
289 |
my $id = $server->{account} ? $server->{account}->{id} . ':' : q{}; |
291 |
$server->{logger}->debug( "$server->{server}->{peeraddr}:$id Sip::MsgType::new('$class', '" . substr($msg, 0, 10) |
290 |
$server->{logger}->debug( "$server->{server}->{peeraddr}:$id Sip::MsgType::new('$class', '" . substr($msg, 0, 10) |
292 |
. "...', '$msgtag'): seq.no '$seqno', protocol $protocol_version" ); |
291 |
. "...', '$msgtag'): seq.no '$seqno', protocol $protocol_version" ); |
293 |
syslog("LOG_DEBUG", "Sip::MsgType::new('%s', '%s...', '%s'): seq.no '%s', protocol %s", |
|
|
294 |
$class, substr($msg, 0, 10), $msgtag, $seqno, $protocol_version); |
295 |
if (!exists($handlers{$msgtag})) { |
292 |
if (!exists($handlers{$msgtag})) { |
296 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$id new Sip::MsgType: Skipping message of unknown type '$msgtag' in '$msg'"); |
293 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$id new Sip::MsgType: Skipping message of unknown type '$msgtag' in '$msg'"); |
297 |
syslog("LOG_WARNING", "new Sip::MsgType: Skipping message of unknown type '%s' in '%s'", |
|
|
298 |
$msgtag, $msg); |
299 |
return; |
294 |
return; |
300 |
} elsif (!exists($handlers{$msgtag}->{protocol}->{$protocol_version})) { |
295 |
} elsif (!exists($handlers{$msgtag}->{protocol}->{$protocol_version})) { |
301 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$id new Sip::MsgType: Skipping message '$msgtag' unsupported by protocol rev. '$protocol_version'"); |
296 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$id new Sip::MsgType: Skipping message '$msgtag' unsupported by protocol rev. '$protocol_version'"); |
302 |
syslog("LOG_WARNING", "new Sip::MsgType: Skipping message '%s' unsupported by protocol rev. '%d'", |
|
|
303 |
$msgtag, $protocol_version); |
304 |
return; |
297 |
return; |
305 |
} |
298 |
} |
306 |
|
299 |
|
Lines 335-342
sub _initialize {
Link Here
|
335 |
|
328 |
|
336 |
my $id = $self->{server}->{account} ? $self->{server}->{account}->{id} . ':' : q{}; |
329 |
my $id = $self->{server}->{account} ? $self->{server}->{account}->{id} . ':' : q{}; |
337 |
$self->{server}->{logger}->debug("$self->{server}->{server}->{peeraddr}:$id Sip::MsgType::_initialize('$self->{name}', '$msg', '$proto->{template}', '$proto->{template_len}', ...)"); |
330 |
$self->{server}->{logger}->debug("$self->{server}->{server}->{peeraddr}:$id Sip::MsgType::_initialize('$self->{name}', '$msg', '$proto->{template}', '$proto->{template_len}', ...)"); |
338 |
syslog("LOG_DEBUG", "Sip::MsgType::_initialize('%s', '%s', '%s', '%s', ...)", |
|
|
339 |
$self->{name}, $msg, $proto->{template}, $proto->{template_len}); |
340 |
|
331 |
|
341 |
$self->{fixed_fields} = [ unpack($proto->{template}, $msg) ]; # see http://perldoc.perl.org/5.8.8/functions/unpack.html |
332 |
$self->{fixed_fields} = [ unpack($proto->{template}, $msg) ]; # see http://perldoc.perl.org/5.8.8/functions/unpack.html |
342 |
|
333 |
|
Lines 347-358
sub _initialize {
Link Here
|
347 |
|
338 |
|
348 |
if (!exists($self->{fields}->{$fn})) { |
339 |
if (!exists($self->{fields}->{$fn})) { |
349 |
$self->{server}->{logger}->warn("$self->{server}->{server}->{peeraddr}:$id: Unsupported field '$fn' in $self->{name}, message '$msg'"); |
340 |
$self->{server}->{logger}->warn("$self->{server}->{server}->{peeraddr}:$id: Unsupported field '$fn' in $self->{name}, message '$msg'"); |
350 |
syslog("LOG_WARNING", "Unsupported field '%s' in %s message '%s'", |
|
|
351 |
$fn, $self->{name}, $msg); |
352 |
} elsif (defined($self->{fields}->{$fn})) { |
341 |
} elsif (defined($self->{fields}->{$fn})) { |
353 |
$self->{server}->{logger}->warn("$self->{server}->{server}->{peeraddr}:$id: Duplicate field '$fn' (previous value '$self->{fields}->{$fn}') in $self->{name} message '$msg'"); |
342 |
$self->{server}->{logger}->warn("$self->{server}->{server}->{peeraddr}:$id: Duplicate field '$fn' (previous value '$self->{fields}->{$fn}') in $self->{name} message '$msg'"); |
354 |
syslog("LOG_WARNING", "Duplicate field '%s' (previous value '%s') in %s message '%s'", |
|
|
355 |
$fn, $self->{fields}->{$fn}, $self->{name}, $msg); |
356 |
} else { |
343 |
} else { |
357 |
$self->{fields}->{$fn} = substr($field, 2); |
344 |
$self->{fields}->{$fn} = substr($field, 2); |
358 |
} |
345 |
} |
Lines 388-394
sub handle {
Link Here
|
388 |
|
375 |
|
389 |
if (!verify_cksum($msg)) { |
376 |
if (!verify_cksum($msg)) { |
390 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Checksum failed on message '$msg'"); |
377 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Checksum failed on message '$msg'"); |
391 |
syslog("LOG_WARNING", "Checksum failed on message '%s'", $msg); |
|
|
392 |
# REQUEST_SC_RESEND with error detection |
378 |
# REQUEST_SC_RESEND with error detection |
393 |
$last_response = REQUEST_SC_RESEND_CKSUM; |
379 |
$last_response = REQUEST_SC_RESEND_CKSUM; |
394 |
print("$last_response\r"); |
380 |
print("$last_response\r"); |
Lines 402-409
sub handle {
Link Here
|
402 |
# We received a non-ED message when ED is supposed to be active. |
388 |
# We received a non-ED message when ED is supposed to be active. |
403 |
# Warn about this problem, then process the message anyway. |
389 |
# Warn about this problem, then process the message anyway. |
404 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Received message without error detection: '$msg'"); |
390 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Received message without error detection: '$msg'"); |
405 |
syslog("LOG_WARNING", |
|
|
406 |
"Received message without error detection: '%s'", $msg); |
407 |
$error_detection = 0; |
391 |
$error_detection = 0; |
408 |
$self = C4::SIP::Sip::MsgType->new( $msg, 0, $server ); |
392 |
$self = C4::SIP::Sip::MsgType->new( $msg, 0, $server ); |
409 |
} else { |
393 |
} else { |
Lines 416-422
sub handle {
Link Here
|
416 |
} |
400 |
} |
417 |
unless ($self->{handler}) { |
401 |
unless ($self->{handler}) { |
418 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: No handler defined for '$msg'"); |
402 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: No handler defined for '$msg'"); |
419 |
syslog("LOG_WARNING", "No handler defined for '%s'", $msg); |
|
|
420 |
$last_response = REQUEST_SC_RESEND; |
403 |
$last_response = REQUEST_SC_RESEND; |
421 |
print("$last_response\r"); |
404 |
print("$last_response\r"); |
422 |
return REQUEST_ACS_RESEND; |
405 |
return REQUEST_ACS_RESEND; |
Lines 531-537
sub handle_checkout {
Link Here
|
531 |
# Off-line transactions need to be recorded, but there's |
514 |
# Off-line transactions need to be recorded, but there's |
532 |
# not a lot we can do about it |
515 |
# not a lot we can do about it |
533 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: received no-block checkout from terminal '$account->{id}'"); |
516 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: received no-block checkout from terminal '$account->{id}'"); |
534 |
syslog( "LOG_WARNING", "received no-block checkout from terminal '%s'", $account->{id} ); |
|
|
535 |
|
517 |
|
536 |
$status = $ils->checkout_no_block( $patron_id, $item_id, $sc_renewal_policy, $trans_date, $nb_due_date ); |
518 |
$status = $ils->checkout_no_block( $patron_id, $item_id, $sc_renewal_policy, $trans_date, $nb_due_date ); |
537 |
} |
519 |
} |
Lines 654-660
sub handle_checkin {
Link Here
|
654 |
if ($no_block eq 'Y') { |
636 |
if ($no_block eq 'Y') { |
655 |
# Off-line transactions, ick. |
637 |
# Off-line transactions, ick. |
656 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: received no-block checkin from terminal '$account->{id}'"); |
638 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: received no-block checkin from terminal '$account->{id}'"); |
657 |
syslog("LOG_WARNING", "received no-block checkin from terminal '%s'", $account->{id}); |
|
|
658 |
$status = $ils->checkin_no_block($item_id, $trans_date, $return_date, $item_props, $cancel); |
639 |
$status = $ils->checkin_no_block($item_id, $trans_date, $return_date, $item_props, $cancel); |
659 |
} else { |
640 |
} else { |
660 |
$status = $ils->checkin($item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok}); |
641 |
$status = $ils->checkin($item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok}); |
Lines 774-797
sub handle_sc_status {
Link Here
|
774 |
$new_proto = 2; |
755 |
$new_proto = 2; |
775 |
} else { |
756 |
} else { |
776 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Unrecognized protocol revision '$sc_protocol_version', falling back to '1'"); |
757 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Unrecognized protocol revision '$sc_protocol_version', falling back to '1'"); |
777 |
syslog("LOG_WARNING", "Unrecognized protocol revision '%s', falling back to '1'", $sc_protocol_version); |
|
|
778 |
$new_proto = 1; |
758 |
$new_proto = 1; |
779 |
} |
759 |
} |
780 |
|
760 |
|
781 |
if ($new_proto != $protocol_version) { |
761 |
if ($new_proto != $protocol_version) { |
782 |
$server->{logger}->info("$server->{server}->{peeraddr}:$server->{account}->{id}: Setting protocol level to $new_proto"); |
762 |
$server->{logger}->info("$server->{server}->{peeraddr}:$server->{account}->{id}: Setting protocol level to $new_proto"); |
783 |
syslog("LOG_INFO", "Setting protocol level to $new_proto"); |
|
|
784 |
$protocol_version = $new_proto; |
763 |
$protocol_version = $new_proto; |
785 |
} |
764 |
} |
786 |
|
765 |
|
787 |
if ($status == SC_STATUS_PAPER) { |
766 |
if ($status == SC_STATUS_PAPER) { |
788 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Self-Check unit '$self->{account}->{id}@$self->{account}->{institution}' out of paper"); |
767 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Self-Check unit '$self->{account}->{id}@$self->{account}->{institution}' out of paper"); |
789 |
syslog("LOG_WARNING", "Self-Check unit '%s@%s' out of paper", |
|
|
790 |
$self->{account}->{id}, $self->{account}->{institution}); |
791 |
} elsif ($status == SC_STATUS_SHUTDOWN) { |
768 |
} elsif ($status == SC_STATUS_SHUTDOWN) { |
792 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Self-Check unit '$self->{account}->{id}@$self->{account}->{institution}' shutting down"); |
769 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: Self-Check unit '$self->{account}->{id}@$self->{account}->{institution}' shutting down"); |
793 |
syslog("LOG_WARNING", "Self-Check unit '%s@%s' shutting down", |
|
|
794 |
$self->{account}->{id}, $self->{account}->{institution}); |
795 |
} |
770 |
} |
796 |
|
771 |
|
797 |
$self->{account}->{print_width} = $print_width; |
772 |
$self->{account}->{print_width} = $print_width; |
Lines 829-839
sub login_core {
Link Here
|
829 |
my $status = 1; # Assume it all works |
804 |
my $status = 1; # Assume it all works |
830 |
if (!exists($server->{config}->{accounts}->{$uid})) { |
805 |
if (!exists($server->{config}->{accounts}->{$uid})) { |
831 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: MsgType::login_core: Unknown login '$uid'"); |
806 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: MsgType::login_core: Unknown login '$uid'"); |
832 |
syslog("LOG_WARNING", "MsgType::login_core: Unknown login '$uid'"); |
|
|
833 |
$status = 0; |
807 |
$status = 0; |
834 |
} elsif ($server->{config}->{accounts}->{$uid}->{password} ne $pwd) { |
808 |
} elsif ($server->{config}->{accounts}->{$uid}->{password} ne $pwd) { |
835 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: MsgType::login_core: Invalid password for login '$uid'"); |
809 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: MsgType::login_core: Invalid password for login '$uid'"); |
836 |
syslog("LOG_WARNING", "MsgType::login_core: Invalid password for login '$uid'"); |
|
|
837 |
$status = 0; |
810 |
$status = 0; |
838 |
} else { |
811 |
} else { |
839 |
# Store the active account someplace handy for everybody else to find. |
812 |
# Store the active account someplace handy for everybody else to find. |
Lines 847-864
sub login_core {
Link Here
|
847 |
my $auth_status = api_auth($uid,$pwd,$inst); |
820 |
my $auth_status = api_auth($uid,$pwd,$inst); |
848 |
if (!$auth_status or $auth_status !~ /^ok$/i) { |
821 |
if (!$auth_status or $auth_status !~ /^ok$/i) { |
849 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: api_auth failed for SIP terminal '$uid' of '$inst': " . ($auth_status||'unknown') ); |
822 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: api_auth failed for SIP terminal '$uid' of '$inst': " . ($auth_status||'unknown') ); |
850 |
syslog("LOG_WARNING", "api_auth failed for SIP terminal '%s' of '%s': %s", |
|
|
851 |
$uid, $inst, ($auth_status||'unknown')); |
852 |
$status = 0; |
823 |
$status = 0; |
853 |
} else { |
824 |
} else { |
854 |
$server->{logger}->info("$server->{server}->{peeraddr}:$server->{account}->{id}: Successful login/auth for '$server->{account}->{id}' of '$inst'"); |
825 |
$server->{logger}->info("$server->{server}->{peeraddr}:$server->{account}->{id}: Successful login/auth for '$server->{account}->{id}' of '$inst'"); |
855 |
syslog("LOG_INFO", "Successful login/auth for '%s' of '%s'", $server->{account}->{id}, $inst); |
|
|
856 |
# |
826 |
# |
857 |
# initialize connection to ILS |
827 |
# initialize connection to ILS |
858 |
# |
828 |
# |
859 |
my $module = $server->{config}->{institutions}->{$inst}->{implementation}; |
829 |
my $module = $server->{config}->{institutions}->{$inst}->{implementation}; |
860 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: login_core: " . Dumper($module) ); |
830 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: login_core: " . Dumper($module) ); |
861 |
syslog("LOG_DEBUG", 'login_core: ' . Dumper($module)); |
|
|
862 |
# Suspect this is always ILS but so we don't break any eccentic install (for now) |
831 |
# Suspect this is always ILS but so we don't break any eccentic install (for now) |
863 |
if ($module eq 'ILS') { |
832 |
if ($module eq 'ILS') { |
864 |
$module = 'C4::SIP::ILS'; |
833 |
$module = 'C4::SIP::ILS'; |
Lines 866-873
sub login_core {
Link Here
|
866 |
$module->use; |
835 |
$module->use; |
867 |
if ($@) { |
836 |
if ($@) { |
868 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{service}: Loading ILS implementation '$module' for institution '$inst' failed"); |
837 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{service}: Loading ILS implementation '$module' for institution '$inst' failed"); |
869 |
syslog("LOG_ERR", "%s: Loading ILS implementation '%s' for institution '%s' failed", |
|
|
870 |
$server->{service}, $module, $inst); |
871 |
die("Failed to load ILS implementation '$module' for $inst"); |
838 |
die("Failed to load ILS implementation '$module' for $inst"); |
872 |
} |
839 |
} |
873 |
|
840 |
|
Lines 876-882
sub login_core {
Link Here
|
876 |
$server->{ils} = $module->new( $server->{institution}, $server->{account}, $server ); |
843 |
$server->{ils} = $module->new( $server->{institution}, $server->{account}, $server ); |
877 |
if (!$server->{ils}) { |
844 |
if (!$server->{ils}) { |
878 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: $server->{service}: ILS connection to '$inst' failed"); |
845 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: $server->{service}: ILS connection to '$inst' failed"); |
879 |
syslog("LOG_ERR", "%s: ILS connection to '%s' failed", $server->{service}, $inst); |
|
|
880 |
die("Unable to connect to ILS '$inst'"); |
846 |
die("Unable to connect to ILS '$inst'"); |
881 |
} |
847 |
} |
882 |
} |
848 |
} |
Lines 900-906
sub handle_login {
Link Here
|
900 |
|
866 |
|
901 |
if ($uid_algorithm || $pwd_algorithm) { |
867 |
if ($uid_algorithm || $pwd_algorithm) { |
902 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: LOGIN: Unsupported non-zero encryption method(s): uid = $uid_algorithm, pwd = $pwd_algorithm"); |
868 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: LOGIN: Unsupported non-zero encryption method(s): uid = $uid_algorithm, pwd = $pwd_algorithm"); |
903 |
syslog("LOG_ERR", "LOGIN: Unsupported non-zero encryption method(s): uid = $uid_algorithm, pwd = $pwd_algorithm"); |
|
|
904 |
$status = 0; |
869 |
$status = 0; |
905 |
} |
870 |
} |
906 |
else { $status = login_core($server,$uid,$pwd); } |
871 |
else { $status = login_core($server,$uid,$pwd); } |
Lines 938-952
sub summary_info {
Link Here
|
938 |
} |
903 |
} |
939 |
|
904 |
|
940 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: Summary_info: index == '$summary_type', field '$summary_map[$summary_type]->{fid}'"); |
905 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: Summary_info: index == '$summary_type', field '$summary_map[$summary_type]->{fid}'"); |
941 |
syslog("LOG_DEBUG", "Summary_info: index == '%d', field '%s'", |
|
|
942 |
$summary_type, $summary_map[$summary_type]->{fid}); |
943 |
|
906 |
|
944 |
my $func = $summary_map[$summary_type]->{func}; |
907 |
my $func = $summary_map[$summary_type]->{func}; |
945 |
my $fid = $summary_map[$summary_type]->{fid}; |
908 |
my $fid = $summary_map[$summary_type]->{fid}; |
946 |
my $itemlist = &$func($patron, $start, $end); |
909 |
my $itemlist = &$func($patron, $start, $end); |
947 |
|
910 |
|
948 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: summary_info: list = (" . join(", ", @{$itemlist}) . ")"); |
911 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: summary_info: list = (" . join(", ", @{$itemlist}) . ")"); |
949 |
syslog("LOG_DEBUG", "summary_info: list = (%s)", join(", ", @{$itemlist})); |
|
|
950 |
foreach my $i (@{$itemlist}) { |
912 |
foreach my $i (@{$itemlist}) { |
951 |
$resp .= add_field($fid, $i->{barcode}); |
913 |
$resp .= add_field($fid, $i->{barcode}); |
952 |
} |
914 |
} |
Lines 1207-1214
sub handle_item_status_update {
Link Here
|
1207 |
|
1169 |
|
1208 |
if (!defined($item_id)) { |
1170 |
if (!defined($item_id)) { |
1209 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_item_status: received message without Item ID field"); |
1171 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_item_status: received message without Item ID field"); |
1210 |
syslog("LOG_WARNING", |
|
|
1211 |
"handle_item_status: received message without Item ID field"); |
1212 |
} else { |
1172 |
} else { |
1213 |
$item = $ils->find_item($item_id); |
1173 |
$item = $ils->find_item($item_id); |
1214 |
} |
1174 |
} |
Lines 1252-1259
sub handle_patron_enable {
Link Here
|
1252 |
$patron_pwd = $fields->{(FID_PATRON_PWD)}; |
1212 |
$patron_pwd = $fields->{(FID_PATRON_PWD)}; |
1253 |
|
1213 |
|
1254 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_patron_enable: patron_id: '$patron_id', patron_pwd: '$patron_pwd'"); |
1214 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_patron_enable: patron_id: '$patron_id', patron_pwd: '$patron_pwd'"); |
1255 |
syslog("LOG_DEBUG", "handle_patron_enable: patron_id: '%s', patron_pwd: '%s'", |
|
|
1256 |
$patron_id, $patron_pwd); |
1257 |
|
1215 |
|
1258 |
$patron = $ils->find_patron($patron_id); |
1216 |
$patron = $ils->find_patron($patron_id); |
1259 |
|
1217 |
|
Lines 1324-1331
sub handle_hold {
Link Here
|
1324 |
$expiry_date, $pickup_locn, $hold_type, $fee_ack); |
1282 |
$expiry_date, $pickup_locn, $hold_type, $fee_ack); |
1325 |
} else { |
1283 |
} else { |
1326 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_hold: Unrecognized hold mode '$hold_mode' from terminal '$server->{account}->{id}'"); |
1284 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_hold: Unrecognized hold mode '$hold_mode' from terminal '$server->{account}->{id}'"); |
1327 |
syslog("LOG_WARNING", "handle_hold: Unrecognized hold mode '%s' from terminal '%s'", |
|
|
1328 |
$hold_mode, $server->{account}->{id}); |
1329 |
$status = $ils->Transaction::Hold; # new? |
1285 |
$status = $ils->Transaction::Hold; # new? |
1330 |
$status->screen_msg("System error. Please contact library staff."); |
1286 |
$status->screen_msg("System error. Please contact library staff."); |
1331 |
} |
1287 |
} |
Lines 1375-1383
sub handle_renew {
Link Here
|
1375 |
|
1331 |
|
1376 |
if ($no_block eq 'Y') { |
1332 |
if ($no_block eq 'Y') { |
1377 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_renew: received 'no block' renewal from terminal '$server->{account}->{id}'"); |
1333 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_renew: received 'no block' renewal from terminal '$server->{account}->{id}'"); |
1378 |
syslog("LOG_WARNING", |
|
|
1379 |
"handle_renew: received 'no block' renewal from terminal '%s'", |
1380 |
$server->{account}->{id}); |
1381 |
} |
1334 |
} |
1382 |
|
1335 |
|
1383 |
$patron_id = $fields->{(FID_PATRON_ID)}; |
1336 |
$patron_id = $fields->{(FID_PATRON_ID)}; |
Lines 1545-1559
sub send_acs_status {
Link Here
|
1545 |
|
1498 |
|
1546 |
if (length($timeout) != 3) { |
1499 |
if (length($timeout) != 3) { |
1547 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_acs_status: timeout field wrong size: '$timeout'"); |
1500 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_acs_status: timeout field wrong size: '$timeout'"); |
1548 |
syslog("LOG_ERR", "handle_acs_status: timeout field wrong size: '%s'", |
|
|
1549 |
$timeout); |
1550 |
$timeout = '000'; |
1501 |
$timeout = '000'; |
1551 |
} |
1502 |
} |
1552 |
|
1503 |
|
1553 |
if (length($retries) != 3) { |
1504 |
if (length($retries) != 3) { |
1554 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_acs_status: retries field wrong size: '$retries'"); |
1505 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: handle_acs_status: retries field wrong size: '$retries'"); |
1555 |
syslog("LOG_ERR", "handle_acs_status: retries field wrong size: '%s'", |
|
|
1556 |
$retries); |
1557 |
$retries = '000'; |
1506 |
$retries = '000'; |
1558 |
} |
1507 |
} |
1559 |
|
1508 |
|
Lines 1567-1575
sub send_acs_status {
Link Here
|
1567 |
$msg .= '2.00'; |
1516 |
$msg .= '2.00'; |
1568 |
} else { |
1517 |
} else { |
1569 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: Bad setting for \$protocol_version, '$protocol_version' in send_acs_status"); |
1518 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: Bad setting for \$protocol_version, '$protocol_version' in send_acs_status"); |
1570 |
syslog("LOG_ERR", |
|
|
1571 |
'Bad setting for $protocol_version, "%s" in send_acs_status', |
1572 |
$protocol_version); |
1573 |
$msg .= '1.00'; |
1519 |
$msg .= '1.00'; |
1574 |
} |
1520 |
} |
1575 |
|
1521 |
|
Lines 1589-1595
sub send_acs_status {
Link Here
|
1589 |
} |
1535 |
} |
1590 |
if (length($supported_msgs) < 16) { |
1536 |
if (length($supported_msgs) < 16) { |
1591 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: send_acs_status: supported messages '$supported_msgs' too short"); |
1537 |
$server->{logger}->error("$server->{server}->{peeraddr}:$server->{account}->{id}: send_acs_status: supported messages '$supported_msgs' too short"); |
1592 |
syslog("LOG_ERR", 'send_acs_status: supported messages "%s" too short', $supported_msgs); |
|
|
1593 |
} |
1538 |
} |
1594 |
$msg .= add_field(FID_SUPPORTED_MSGS, $supported_msgs); |
1539 |
$msg .= add_field(FID_SUPPORTED_MSGS, $supported_msgs); |
1595 |
} |
1540 |
} |
Lines 1599-1606
sub send_acs_status {
Link Here
|
1599 |
if (defined($account->{print_width}) && defined($print_line) |
1544 |
if (defined($account->{print_width}) && defined($print_line) |
1600 |
&& $account->{print_width} < length($print_line)) { |
1545 |
&& $account->{print_width} < length($print_line)) { |
1601 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: send_acs_status: print line '$print_line' too long. Truncating"); |
1546 |
$server->{logger}->warn("$server->{server}->{peeraddr}:$server->{account}->{id}: send_acs_status: print line '$print_line' too long. Truncating"); |
1602 |
syslog("LOG_WARNING", "send_acs_status: print line '%s' too long. Truncating", |
|
|
1603 |
$print_line); |
1604 |
$print_line = substr($print_line, 0, $account->{print_width}); |
1547 |
$print_line = substr($print_line, 0, $account->{print_width}); |
1605 |
} |
1548 |
} |
1606 |
|
1549 |
|
Lines 1622-1628
sub patron_status_string {
Link Here
|
1622 |
my $patron_status; |
1565 |
my $patron_status; |
1623 |
|
1566 |
|
1624 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: patron_status_string: $patron->id charge_ok: $patron->charge_ok"); |
1567 |
$server->{logger}->debug("$server->{server}->{peeraddr}:$server->{account}->{id}: patron_status_string: $patron->id charge_ok: $patron->charge_ok"); |
1625 |
syslog("LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok); |
|
|
1626 |
$patron_status = sprintf( |
1568 |
$patron_status = sprintf( |
1627 |
'%s%s%s%s%s%s%s%s%s%s%s%s%s%s', |
1569 |
'%s%s%s%s%s%s%s%s%s%s%s%s%s%s', |
1628 |
denied($patron->charge_ok), |
1570 |
denied($patron->charge_ok), |