[Koha-patches] [PATCH 1/1] Bug 9865: SIP msg encoding configurable via SIPconfig.xml
Christophe Croullebois
christophe.croullebois at biblibre.com
Fri Nov 8 12:25:03 CET 2013
The accounts->login tag in SIPconfig.xml can now accept a new
parameter, "encoding". It will be mostly used to encore to utf8.
For this, simply add the parameter:
encoding="utf8"
note: this patch was made by Adrien Saurat I have simply rebased it
---
C4/SIP/Sip.pm | 6 ++++--
C4/SIP/Sip/MsgType.pm | 34 +++++++++++++++++-----------------
etc/SIPconfig.xml | 4 ++--
3 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/C4/SIP/Sip.pm b/C4/SIP/Sip.pm
index f407634..b6f1916 100644
--- a/C4/SIP/Sip.pm
+++ b/C4/SIP/Sip.pm
@@ -7,7 +7,7 @@ package Sip;
use strict;
use warnings;
use Exporter;
-
+use Encode;
use Sys::Syslog qw(syslog);
use POSIX qw(strftime);
use Socket qw(:crlf);
@@ -209,11 +209,13 @@ sub read_SIP_packet {
#
sub write_msg {
- my ($self, $msg, $file, $terminator) = @_;
+ my ($self, $msg, $file, $terminator, $encoding) = @_;
$terminator ||= q{};
$terminator = ( $terminator eq 'CR' ) ? $CR : $CRLF;
+ $msg = encode($encoding, $msg) if ( $encoding );
+
my $cksum;
# $msg = encode_utf8($msg);
diff --git a/C4/SIP/Sip/MsgType.pm b/C4/SIP/Sip/MsgType.pm
index 17185e0..fceb16b 100644
--- a/C4/SIP/Sip/MsgType.pm
+++ b/C4/SIP/Sip/MsgType.pm
@@ -490,7 +490,7 @@ sub handle_patron_status {
$ils->check_inst_id($fields->{(FID_INST_ID)}, "handle_patron_status");
$patron = $ils->find_patron($fields->{(FID_PATRON_ID)});
$resp = build_patron_status($patron, $lang, $fields, $server );
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return (PATRON_STATUS_REQ);
}
@@ -608,7 +608,7 @@ sub handle_checkout {
}
}
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(CHECKOUT);
}
@@ -696,7 +696,7 @@ sub handle_checkin {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(CHECKIN);
}
@@ -740,7 +740,7 @@ sub handle_block_patron {
}
$resp = build_patron_status( $patron, $patron->language, $fields, $server );
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(BLOCK_PATRON);
}
@@ -782,7 +782,7 @@ sub handle_request_acs_resend {
if (!$last_response) {
# We haven't sent anything yet, so respond with a
# REQUEST_SC_RESEND msg (p. 16)
- $self->write_msg(REQUEST_SC_RESEND,undef,$server->{account}->{terminator});
+ $self->write_msg(REQUEST_SC_RESEND,undef,$server->{account}->{terminator},$server->{account}->{encoding});
} elsif ((length($last_response) < 9)
|| substr($last_response, -9, 2) ne 'AY') {
# When resending a message, we aren't supposed to include
@@ -794,7 +794,7 @@ sub handle_request_acs_resend {
# Cut out the sequence number and checksum, since the old
# checksum is wrong for the resent message.
my $rebuilt = substr($last_response, 0, -9);
- $self->write_msg($rebuilt,undef,$server->{account}->{terminator});
+ $self->write_msg($rebuilt,undef,$server->{account}->{terminator},$server->{account}->{encoding});
}
return REQUEST_ACS_RESEND;
@@ -870,7 +870,7 @@ sub handle_login {
}
else { $status = login_core($server,$uid,$pwd); }
- $self->write_msg(LOGIN_RESP . $status,undef,$server->{account}->{terminator});
+ $self->write_msg(LOGIN_RESP . $status,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return $status ? LOGIN : '';
}
@@ -1019,7 +1019,7 @@ sub handle_patron_info {
}
}
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(PATRON_INFO);
}
@@ -1046,7 +1046,7 @@ sub handle_end_patron_session {
$resp .= maybe_add(FID_SCREEN_MSG, $screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(END_PATRON_SESSION);
}
@@ -1080,7 +1080,7 @@ sub handle_fee_paid {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(FEE_PAID);
}
@@ -1147,7 +1147,7 @@ sub handle_item_information {
$resp .= maybe_add(FID_PRINT_LINE, $item->print_line);
}
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(ITEM_INFORMATION);
}
@@ -1196,7 +1196,7 @@ sub handle_item_status_update {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(ITEM_STATUS_UPDATE);
}
@@ -1247,7 +1247,7 @@ sub handle_patron_enable {
$resp .= add_field(FID_INST_ID, $ils->institution);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(PATRON_ENABLE);
}
@@ -1313,7 +1313,7 @@ sub handle_hold {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(HOLD);
}
@@ -1402,7 +1402,7 @@ sub handle_renew {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(RENEW);
}
@@ -1452,7 +1452,7 @@ sub handle_renew_all {
$resp .= maybe_add(FID_SCREEN_MSG, $status->screen_msg);
$resp .= maybe_add(FID_PRINT_LINE, $status->print_line);
- $self->write_msg($resp,undef,$server->{account}->{terminator});
+ $self->write_msg($resp,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return(RENEW_ALL);
}
@@ -1562,7 +1562,7 @@ sub send_acs_status {
# Do we want to tell the terminal its location?
- $self->write_msg($msg,undef,$server->{account}->{terminator});
+ $self->write_msg($msg,undef,$server->{account}->{terminator},$server->{account}->{encoding});
return 1;
}
diff --git a/etc/SIPconfig.xml b/etc/SIPconfig.xml
index bd464e2..6da9c01 100644
--- a/etc/SIPconfig.xml
+++ b/etc/SIPconfig.xml
@@ -36,8 +36,8 @@
</listeners>
<accounts>
- <login id="term1" password="term1" delimiter="|" error-detect="enabled" institution="CPL" />
- <login id="koha" password="koha" delimiter="|" error-detect="enabled" institution="kohalibrary" />
+ <login id="term1" password="term1" delimiter="|" error-detect="enabled" institution="CPL" encoding="" />
+ <login id="koha" password="koha" delimiter="|" error-detect="enabled" institution="kohalibrary" encoding="" />
<login id="koha2" password="koha" institution="kohalibrary2" terminator="CR" />
<login id="lpl-sc" password="1234" institution="LPL" />
<login id="lpl-sc-beacock" password="xyzzy"
--
1.7.9.5
More information about the Koha-patches
mailing list