]> git.evergreen-ils.org Git - working/SIPServer.git/log
working/SIPServer.git
2 years agoLP#1927542: fix incorrect ACS Status response in Multiplex mode user/gmcharlt/lp1927542_fix_acs_status_in_multiplex
Galen Charlton [Thu, 6 May 2021 20:00:33 +0000 (16:00 -0400)]
LP#1927542: fix incorrect ACS Status response in Multiplex mode

This patch fixes an issue where the serialization and deserialization
of the SIP server object when handling a pending ILS login connection
can cause the ACS Status message handler to not have access to the
institution configuration settings for the timeout and retry policy,
causing it to return 000 for both values. This can lead to some
SIP2 clients believing that the ACS is either offline or impossibly
fast.

To test
-------
[1] Set up SIPServer to use the Multiplex personality.
[2] With an appropriate ILS connect set up, send the following
    messages

9900402.00 => response should show default timeout of 600 and
              retry limit of 003
9300CN_user_|CO_password_|CP_institution_ => should get 941 response
9900402.00 => response shows a timeout of 000 and retry limit
              of 000

[3] Apply the patch and repeat step 2. This time, both message
    98 responses should show a timeout of 600 and retry limit of
    003.

Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
6 years agoLP 1463943: More Encoding Improvements.
Jason Stephenson [Mon, 2 Jan 2017 15:20:59 +0000 (10:20 -0500)]
LP 1463943: More Encoding Improvements.

First, we improve the encoding search by looking in the institution
config proper.  The search order for an encoding is now:

1. An encoding attribute specified in the account tag.

2. An encoding tag in the institution tag.

3. An encoding tag in the implementation_config tag of the institution
tag as a last resort.

4. Use ASCII if none is set.  (The SIP2 specification practially
requires this.)

The last is done for backward compatibility with existing Evergreen
oils_sip.xml files.  This should be deprecated in the near future and
only the account tag and institution tag proper should be supported.

Second, we improve the handling of ASCII output by stealing a code
chunk from Evergreen's OILS::SIP->clean_text routine to remove
combining characters on strings.

Third, we remove the encoding attribute from the sample SIPconfig.xml
account tag for lpl-sc, and put an encoding tag in the institution
tags for LPL and UWOLS.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Martha Driscoll <driscoll@noblenet.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
6 years agoLP 1463943: Improve Encoding Discovery
Jason Stephenson [Tue, 27 Sep 2016 21:36:39 +0000 (17:36 -0400)]
LP 1463943: Improve Encoding Discovery

Improve the previous commit by looking for the encoding in the
institution implementation config in addition to the account
configuration.  The account configuration is used first, followed by
that from the institution implemenation config.

We also set a convenience field on the server object in the
_load_ils_handler method implementation.  This way, we only need get
the encoding once per session.  Hopefully this is correct with the
multiplex server.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Martha Driscoll <driscoll@noblenet.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
6 years agoLP 1463943: Encode output messages.
Jason Stephenson [Tue, 16 Jun 2015 18:33:52 +0000 (14:33 -0400)]
LP 1463943: Encode output messages.

This commit adds support for an encoding attribute that can be
added to accounts in the configuration file.  When set, SIPServer
will encode response messages in the specified encoding.  Valid
encodings are those listed in the Encode::Supported man page.

This feature is useful if you have a vendor who cannot support
the default UTF-8 output by SIPServer.

An example is provided in SIPConfig.xml.  The lpl-sc account has
been set to use the ascii encoding.

This particular code was mostly taken from a patch to Koha's
SIPServer by Adrien Saurat <adrien.saurat@biblibre.com>,
Christophe Croullebois <christophe.croullebois@biblibre.com>,
and others.

http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=9865

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Martha Driscoll <driscoll@noblenet.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
7 years agoLP#1613326 change UNIVERSAL::can import, style
Jeff Godin [Tue, 30 Aug 2016 19:49:28 +0000 (15:49 -0400)]
LP#1613326 change UNIVERSAL::can import, style

Remove deprecated (and now fatal) attempt to import a function from
UNIVERSAL.

To quote perl5220delta:

> use UNIVERSAL '...' is now a fatal error
>
> Importing functions from UNIVERSAL has been deprecated since
> v5.12, and is now a fatal error.

Also, adjust the style by which we call "can" on $self->{ils}

Thanks to Blake at MOBIUS for originally reporting this issue, and
proposing a fix.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Jason Stephenson <jason@sigio.com>
7 years agoLP1579144: Give Sip/MsgType.pm a copy of to_bool() from ILS.pm
Mike Rylander [Wed, 14 Sep 2016 12:25:58 +0000 (08:25 -0400)]
LP1579144: Give Sip/MsgType.pm a copy of to_bool() from ILS.pm

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1579144: Make client_location_code a hard switch, and default to original behavior
Mike Rylander [Tue, 13 Sep 2016 21:02:44 +0000 (17:02 -0400)]
LP1579144: Make client_location_code a hard switch, and default to original behavior

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1579144: Let admin decide on the precedence of the location codes per institution
Mike Rylander [Tue, 13 Sep 2016 20:37:22 +0000 (16:37 -0400)]
LP1579144: Let admin decide on the precedence of the location codes per institution

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1579144: On Login, Send Location to ILS
Mike Rylander [Wed, 10 Aug 2016 12:47:08 +0000 (08:47 -0400)]
LP1579144: On Login, Send Location to ILS

In addition to supporting client-side location code for login, allow
a fallback value to be set in the configuration file, per account.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP1579144: On Login, Send Location to ILS
Jason Boyer [Fri, 6 May 2016 16:42:30 +0000 (12:42 -0400)]
LP1579144: On Login, Send Location to ILS

If the CP field is sent with message 93, include
that string with the login account in case the ILS
can make use of it.

Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
7 years agoLP#1180468: update license statement to GPL v2 or later
Galen Charlton [Tue, 16 Jun 2015 15:38:36 +0000 (15:38 +0000)]
LP#1180468: update license statement to GPL v2 or later

In 2011, all current contributors and copyright holders
to SIPServer approved switching the license from GPLv2
to GPLv2 or later:

<http://libmail.georgialibraries.org/pipermail/open-ils-general/2011-April/004657.html>k

In 2013, contributor Jeff Godin also confirmed approval of
the license change:

https://bugs.launchpad.net/sipserver/+bug/1180468/comments/2

All subsequent contributors have either already approved of the
license switch or have done work-for-hire coding for organizations
that have approved the change.

Consequently, this patch adjusts all references to the GPLv2
to specify that the current license is GPLv2 or later.  This
patch also adds copyright and copying statements to a few
files that lacked them.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jeff Godin <jgodin@tadl.org>
8 years agoLP#1464748: don't toss terminal account information prematurely
Galen Charlton [Fri, 12 Jun 2015 19:01:47 +0000 (19:01 +0000)]
LP#1464748: don't toss terminal account information prematurely

This patch ensures that when the PreFork Net::Server personality
is in use, terminal login information is not prematurely cleared
between *_transport() and sip_protocol_loop().  This, in conjunction
with the patch for bug 1463459, fixes a problem where a SIP
client that connects, issues a 93 request, then a 99 request, could
get an incorrect 98 response.

To test fixes for 1463459 and 1464748:

[1] Set up a SIP configuration with at least two institutions
    with different capabilities and at least one account
    for each institution.  Assume that account A1 is for
    institution I1 and A2 for I2.

[2] Prior to applying the patches for 1463459 and 1464748,
    start the SIP server and try the following sequence:

    a. 93 to log in as A2
    b. 99 to get SC status
    c. Note that the 98 response has values for I1, not I2

[3] Apply the patches and restart SIP, then repeat the steps
    in [2].  This time, the 98 response should have the
    values for I2.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
8 years agoLP#1463459: make SC Status handler recognize logged-in SIP session
Thomas Berezansky [Mon, 8 Jun 2015 20:57:11 +0000 (16:57 -0400)]
LP#1463459: make SC Status handler recognize logged-in SIP session

Due to MsgType not having an account field, handle_sc_status should
be checking $server, not $self, for account information. As a result
of checking the wrong field handle_sc_status always assumes the
session is not logged in and returns status based on the first account.

When this account is not flagged for some capabilities and the client
expects/needs those capabilities the client may determine it can't
function and disconnect, even though the login actually has those
capabilities. This patch fixes that; it also adjusts how
$server->{account} is checked (definedness, not existence).

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
8 years agoLP#1298985: Protect against bad summary types
Thomas Berezansky [Fri, 28 Mar 2014 13:27:56 +0000 (09:27 -0400)]
LP#1298985: Protect against bad summary types

Ensure that if we are asked for summary information in Patron Information that
we have any form of definition for it *and* we have code to call. If neither
case is true pretend they didn't ask for any to begin with.

Testing notes
-------------
Here is an example of the sort of request that, prior to this patch,
could cause a SIPServer backend to crash:

6300020150615    111700      Y   AOUinst|AAuser|

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
8 years agoLP#1425135 Log message duration w/ millisecond granularity
Bill Erickson [Mon, 23 Feb 2015 22:23:14 +0000 (17:23 -0500)]
LP#1425135 Log message duration w/ millisecond granularity

Log message processing duration with finer granularity.  This is
especially useful for diagnosing SIP speed issues for automated
materials handling, where small changes in speed can have a big impact.

New message logs at DEBUG level.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoTypo fix for inline documentation (cut/paste hazard)
Mike Rylander [Wed, 25 Mar 2015 15:34:17 +0000 (11:34 -0400)]
Typo fix for inline documentation (cut/paste hazard)

Signed-off-by: Mike Rylander <mrylander@gmail.com>
9 years agoLP#1339190 Add support for the "Multiplex" personality
Mike Rylander [Wed, 11 Sep 2013 19:52:00 +0000 (15:52 -0400)]
LP#1339190 Add support for the "Multiplex" personality

We use Net::Server::Multiplex to reduce resource consumption.  In
this mode, SIPServer will maintain connection state in the main
listening process and fork workers as needed to handle individual
requests.

Initial implementation by Mike Rylander, with a conversion from
File::Queue to Memcache, and LOTS of debugging, by Bill Erickson.

Some highlights:

* A fork fence for max concurrent in-flight requests

* Allow the ILS to save state in IO::Multiplex mode

* Optimistic login using fork-and-check

When a SIP child process is spawned to handle a new connection login,
the pending login is tracked in the parent process (by PID) and the
child indicates to the parent that the login has succeeded by storing
login success/failure plus some state information in memcache.  Any time
the parent wakes up to process a message, it checks for completed logins
so they can be resolved as OK in the parent and the state information
is extracted and stored for future conversation with the resolved client.

* Let workers hang around for a bit for higher-rate clients

For some clients, such as AMH (sorters), the per-message connections
cause too much latency.  So, instead, we'll let their backends hang
around for a while.  This is controlled by a new attribute on the
server-params element, worker-keepalive, as a peer to the personality
value.  This value can also be set on the institution and login elements
to support finer-grained keepalive tuning.

This is measured in seconds and the default is 5. A value of 0 here
will disable this feature altogether.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Blake GH <blake@mobiusconsortium.org>
9 years agoLP#1339190 Unroll recursion-based processing chain
Mike Rylander [Wed, 11 Sep 2013 17:39:54 +0000 (13:39 -0400)]
LP#1339190 Unroll recursion-based processing chain

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
9 years agoLP#1338761: add support for Relais extensions to message 24
Galen Charlton [Mon, 7 Jul 2014 19:55:05 +0000 (12:55 -0700)]
LP#1338761: add support for Relais extensions to message 24

The Relais SIP2 client expects that the Patron Status Response
(msg 24) will contain certain non-standard fields that are more
properly included in the patron information response:

- patron home address
- patron email
- patron home phone

In addition, and contrary to the specification, Relais expects that
the variable fields in the response will be given in the order that
they appear in the spec.

This patch ensures that the Patron Status repsonse emits the
institution ID, patron ID, and personal name in that order.  It also
adds a new institution option, relais_extensions_to_msg24, to make
the response includes the additional fields.  For example:

  <relais_extensions_to_msg24 enabled="true" />

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1338731: support clients that send 99 then 93 when starting a raw connection
Galen Charlton [Mon, 7 Jul 2014 19:01:41 +0000 (12:01 -0700)]
LP#1338731: support clients that send 99 then 93 when starting a raw connection

This patch adds the option, for raw transports, to allow clients
to send the SC Status (99) message first, then the Login (93)
message. It's arguable whether such behavior is standard or not,
but at least one SIP2 client (Relais), inflexibly requires such
behavior.

This option is enabled using the service-level attribute
"allow_sc_status_then_login".

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1042850: Add TCP-level keepalive
Mike Rylander [Mon, 4 Aug 2014 13:26:56 +0000 (09:26 -0400)]
LP#1042850: Add TCP-level keepalive

Some client TCP stacks fail to actually close down their sockets
all the way, leading to a pile up of stale backends that can never
go away.

So, we will use Linux's TCP_KEEPALIVE tuning capabilities to probe
the connection on a regular basis.  This should detect the half-
closed situation and let the backend shut itself down.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
9 years agoTimeout in protocol loop
Thomas Berezansky [Tue, 28 Aug 2012 16:50:47 +0000 (12:50 -0400)]
Timeout in protocol loop

To (hopefully) prevent dead connections from hanging around.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
9 years agoLP#1227273: Clear account info at start and end of connection
Thomas Berezansky [Wed, 18 Sep 2013 17:51:14 +0000 (13:51 -0400)]
LP#1227273: Clear account info at start and end of connection

Otherwise re-used processes may re-use account information.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1070470: Limit variable fields to 255 characters.
Jason Stephenson [Tue, 23 Oct 2012 14:36:48 +0000 (10:36 -0400)]
LP#1070470: Limit variable fields to 255 characters.

The SIP2 protocol document specifies that variable fields are to be from
0 to 255 characters in length, not counting the field identifier or the
delimiter.

This branch adds some defensive coding to Sip::add_field to truncate any
field values that are longer than 255 characters to 255 characters before
adding them to the response.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1180479: Koha Bug 3723: Correct return of Institution in Patron Info Resp
Colin Campbell [Wed, 21 Oct 2009 08:54:18 +0000 (09:54 +0100)]
LP#1180479: Koha Bug 3723: Correct return of Institution in Patron Info Resp

While the comment correctly notes that the order of variable length
fields is not fixed some units expect mandatory fields to
follow the sequence in the protocol definition and fail
parsing otherwise. Moved institution id to its expected
place in the patron information response.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Conflicts:

Sip/MsgType.pm

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1070466: Pack, then unpack total in debug_split_print.
Jason Stephenson [Tue, 23 Oct 2012 17:23:14 +0000 (13:23 -0400)]
LP#1070466: Pack, then unpack total in debug_split_print.

The checksum needs to be a 16bit value, so we pack, then unpack the
checksum total in debug_split_print to guarantee that.  Some longer
messages have generated 32-bit checksums.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1070466: Print to STDERR in Sip/Checksum::debug_split_print.
Jason Stephenson [Tue, 23 Oct 2012 14:52:21 +0000 (10:52 -0400)]
LP#1070466: Print to STDERR in Sip/Checksum::debug_split_print.

debug_split_print was printing to STDOUT, which goes to the client. This
causes the client to hang up because it is not receiving the expected
response from the server.  Explicitly printing to STDERR in this
function resolves this and you can continue your session while also
debugging checksum calculations.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1336825 Fix log level on find_service warning
Jeff Godin [Wed, 2 Jul 2014 15:36:01 +0000 (11:36 -0400)]
LP#1336825 Fix log level on find_service warning

Sip::Configuration::find_service tries to log a warning when it does
not find a matching service defined for a given
address/port/protocol tuple.

This uses the correct LOG_WARNING log level, ensuring that the
desired message is logged.

Thanks to Jason Boyer for catching this!

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoRevert "LP#1296937: (follow-up) $ids_only is now the last parameter for ->charged_items"
Jeff Godin [Wed, 28 May 2014 20:12:15 +0000 (16:12 -0400)]
Revert "LP#1296937: (follow-up) $ids_only is now the last parameter for ->charged_items"

This reverts commit c97d64412bc12a8df1a8734dcdb48b2bfba6362d.

Signed-off-by: Jeff Godin <jgodin@tadl.org>
9 years agoLP#1296937: (follow-up) $ids_only is now the last parameter for ->charged_items
Galen Charlton [Tue, 20 May 2014 15:52:20 +0000 (08:52 -0700)]
LP#1296937: (follow-up) $ids_only is now the last parameter for ->charged_items

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
9 years agoLP#1296937: Call _items functions with ids_only parameter
Thomas Berezansky [Thu, 23 Jan 2014 17:05:08 +0000 (12:05 -0500)]
LP#1296937: Call _items functions with ids_only parameter

So that we don't do full lookups of titles when we only care about
counts.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
10 years agoSet langauge value for patron info response
Bill Erickson [Wed, 26 Dec 2012 18:53:39 +0000 (13:53 -0500)]
Set langauge value for patron info response

Ensure the 3-char language field has a value (defaulting to '000') in
the patron info response.  Without the value, there is a 3-char offset
in the response message fixed fields.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
11 years agoDerefrence fixed fields in handle_fee_paid
Jeff Godin [Tue, 19 Jun 2012 18:12:56 +0000 (14:12 -0400)]
Derefrence fixed fields in handle_fee_paid

Properly dereference fixed fields in handle_fee_paid so that the ILS layer receives fixed fields fee type, payment type, currency type

Fixes LP 1015227

Signed-off-by: Jeff Godin <jgodin@tadl.org>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
12 years agoReturn proper renewal OK field on checkout fail
Thomas Berezansky [Tue, 18 Oct 2011 19:08:50 +0000 (15:08 -0400)]
Return proper renewal OK field on checkout fail

This will allow (hopefully) the self check to know that a renewal was
attempted on checkout failure (if the flag is set).

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
12 years agoSupport "chargeable loans" via SIP2.
Jason Stephenson [Thu, 30 Jun 2011 21:02:43 +0000 (17:02 -0400)]
Support "chargeable loans" via SIP2.

Pass FID_FEE_ACK to checkout message in MsgType.pm.

Also return fee info when checkout fails, so patron can
acknowledge the fee.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Bill Erickson <berick@esilibrary.com>
12 years agoReplace failing unit tests with 17 valid checkout tests
Dan Scott [Thu, 30 Jun 2011 18:39:49 +0000 (14:39 -0400)]
Replace failing unit tests with 17 valid checkout tests

These 17 checkout tests came from a 3M Vseries checkout running with the
UTF8 encoding set.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
12 years agoAZ field also needs to be in the output message.
Jason Stephenson [Thu, 30 Jun 2011 18:02:47 +0000 (14:02 -0400)]
AZ field also needs to be in the output message.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Signed-off-by: Dan Scott <dan@coffeecode.net>
12 years agoChecksum calc needs to include the 'AZ' portion
Dan Scott [Thu, 23 Jun 2011 19:59:19 +0000 (15:59 -0400)]
Checksum calc needs to include the 'AZ' portion

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
12 years agoConvert checksum to hex value inside checksum() function
Dan Scott [Tue, 21 Jun 2011 02:11:38 +0000 (22:11 -0400)]
Convert checksum to hex value inside checksum() function

Rather than returning the integer value of the checksum and converting
that to a hex value only when it is appended to the returned message,
return the hex value from checksum() itself. This enables the unit tests
for Sip::Checksum to be run meaningfully.

Signed-off-by: Dan Scott <dan@coffeecode.net>
12 years agoRestore Unicode checksum algorithm
Dan Scott [Wed, 15 Jun 2011 19:22:09 +0000 (15:22 -0400)]
Restore Unicode checksum algorithm

This checksum algorithm was verified to work with
3M V-series self-check machines running with encoding
Unicode, which is important to sites with large
collections of non-English materials.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
12 years agoencode to UTF8 consistently
Dan Scott [Fri, 17 Jun 2011 17:50:26 +0000 (13:50 -0400)]
encode to UTF8 consistently

In read_SIP_packet(), we decode the incoming packet as UTF8 and then
encode it again before writing to the log, but not before returning the
message. We were instead encoding the incoming message in a subsequent
call, which is not the recommended Perl practice of decoding input and
encoding output.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
12 years agoPrevent corruption of SIP messages in logs
Dan Scott [Wed, 15 Jun 2011 19:17:31 +0000 (15:17 -0400)]
Prevent corruption of SIP messages in logs

Non-ASCII characters were not being decoded before being
written to the logs, thus resulting in heinous corruption
in the logs. decode_utf8() is our friend.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
12 years agoItem extra ILS-defined fields
Thomas Berezansky [Sat, 21 May 2011 01:11:20 +0000 (21:11 -0400)]
Item extra ILS-defined fields

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
12 years agoSupport ILS-defined extension fields
Thomas Berezansky [Fri, 29 Apr 2011 20:45:55 +0000 (16:45 -0400)]
Support ILS-defined extension fields

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
12 years agoRestore the debug code that was deleted in a previous commit,
Jason Stephenson [Tue, 17 May 2011 18:01:08 +0000 (14:01 -0400)]
Restore the debug code that was deleted in a previous commit,
per Joe Atzberger's suggestion.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
12 years agoFix the properties of the Fee Paid message in MsgType.pm so that
Jason Stephenson [Thu, 12 May 2011 19:27:30 +0000 (15:27 -0400)]
Fix the properties of the Fee Paid message in MsgType.pm so that
the server actually parses the messages.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
12 years agoFix checksum generation so that it actually works with clients.
Jason Stephenson [Thu, 12 May 2011 19:26:17 +0000 (15:26 -0400)]
Fix checksum generation so that it actually works with clients.

Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
13 years agoCheck for sip_expire before trying to use it.
Thomas Berezansky [Thu, 31 Mar 2011 13:21:13 +0000 (09:21 -0400)]
Check for sip_expire before trying to use it.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
13 years agoAdd FID_PATRON_EXPIRE where required for export.
Jason Stephenson [Thu, 31 Mar 2011 13:19:52 +0000 (09:19 -0400)]
Add FID_PATRON_EXPIRE where required for export.

13 years agoPatron Expiration in PA
Thomas Berezansky [Thu, 31 Mar 2011 12:39:28 +0000 (08:39 -0400)]
Patron Expiration in PA

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
13 years agoAllow whitespace "lines" to be skipped during login
Joe Atzberger [Thu, 7 Oct 2010 19:48:56 +0000 (19:48 +0000)]
Allow whitespace "lines" to be skipped during login

This keeps clients who might have bad line-endings in the game.
In particular, this would help systems where an expect-driven login
process might be different than the rest of the client interaction.

13 years agoDie if no listeners in config, give better log messages
Joe Atzberger [Thu, 7 Oct 2010 19:40:38 +0000 (19:40 +0000)]
Die if no listeners in config, give better log messages

Also tighten debug messages: one warning at the end listing all failed is good enough.
Certainly better than just throwaway debug messages listing what we are going to try.
Otherwise if we succeeded, we don't need to know about the ones that failed, just
report the successful one.

13 years agoPerltidy and cleanup.
Joe Atzberger [Thu, 7 Oct 2010 19:34:54 +0000 (19:34 +0000)]
Perltidy and cleanup.

13 years agoVERSIONing, it's good for you.
Joe Atzberger [Fri, 1 Oct 2010 23:21:17 +0000 (23:21 +0000)]
VERSIONing, it's good for you.

13 years agoExtension for exposing patron internal ID via Patron Information
Joe Atzberger [Fri, 1 Oct 2010 19:57:55 +0000 (19:57 +0000)]
Extension for exposing patron internal ID via Patron Information

Used by some AMH systems

13 years agoSpec compliance on line-endings
Joe Atzberger [Thu, 30 Sep 2010 23:31:19 +0000 (23:31 +0000)]
Spec compliance on line-endings

\r not CRLF

13 years agoAn extra test from CASSIE
Joe Atzberger [Fri, 24 Sep 2010 01:34:17 +0000 (01:34 +0000)]
An extra test from CASSIE

Note: checksumming is still NOT recommendedl

13 years agoAdjust comment
Joe Atzberger [Wed, 30 Jun 2010 17:32:33 +0000 (17:32 +0000)]
Adjust comment

13 years agoItem Info extensions and general cleanup
Joe Atzberger [Wed, 23 Jun 2010 17:54:19 +0000 (17:54 +0000)]
Item Info extensions and general cleanup

13 years agoCleanup and adjustment
Joe Atzberger [Wed, 23 Jun 2010 17:40:24 +0000 (17:40 +0000)]
Cleanup and adjustment

bad_barcode is is better than berick for clarity.

13 years agoUpdate to current default EG values.
Joe Atzberger [Wed, 23 Jun 2010 17:38:11 +0000 (17:38 +0000)]
Update to current default EG values.

13 years agoStartup and shutdown scripts
Joe Atzberger [Tue, 22 Jun 2010 21:43:53 +0000 (21:43 +0000)]
Startup and shutdown scripts

Adapted from the versions I wrote for Koha SIP

13 years agoPerltidy/whitespace cleanup
Joe Atzberger [Tue, 22 Jun 2010 15:55:33 +0000 (15:55 +0000)]
Perltidy/whitespace cleanup

13 years agoTiny comment
Joe Atzberger [Tue, 22 Jun 2010 15:38:30 +0000 (15:38 +0000)]
Tiny comment

13 years agoDisable checksums in tests
Joe Atzberger [Fri, 11 Jun 2010 13:39:04 +0000 (13:39 +0000)]
Disable checksums in tests

Holds test disabled by default (for evergreen)

13 years agoPropagate $inst_id to checkout handler
Joe Atzberger [Thu, 3 Jun 2010 20:45:14 +0000 (20:45 +0000)]
Propagate $inst_id to checkout handler

Needed for holds routing logic

13 years agoAt least attempt to use the same formatting....
Joe Atzberger [Tue, 1 Jun 2010 18:51:28 +0000 (18:51 +0000)]
At least attempt to use the same formatting....

13 years agoCatch undef parameter (avoid warning/failure on substr)
Joe Atzberger [Tue, 1 Jun 2010 18:50:39 +0000 (18:50 +0000)]
Catch undef parameter (avoid warning/failure on substr)

13 years agoUse common vars from SIPtest (stop hardcoding individual tests)
Joe Atzberger [Tue, 1 Jun 2010 18:00:53 +0000 (18:00 +0000)]
Use common vars from SIPtest (stop hardcoding individual tests)

13 years agoWhitespace and stylistic cleanup only.
Joe Atzberger [Tue, 1 Jun 2010 17:57:57 +0000 (17:57 +0000)]
Whitespace and stylistic cleanup only.

13 years agoUse more of SIPtest.pm exported values, avoid hardcoding
Joe Atzberger [Tue, 1 Jun 2010 17:51:32 +0000 (17:51 +0000)]
Use more of SIPtest.pm exported values, avoid hardcoding

13 years agoNot an Exporter and not implemented
Joe Atzberger [Tue, 1 Jun 2010 17:50:35 +0000 (17:50 +0000)]
Not an Exporter and not implemented

13 years agoAvoid undef warning, provide lanuage failover to 000 (unknown/default)
Joe Atzberger [Tue, 1 Jun 2010 17:48:24 +0000 (17:48 +0000)]
Avoid undef warning, provide lanuage failover to 000 (unknown/default)

13 years agoPure stylistic and whitespace changes
Joe Atzberger [Tue, 1 Jun 2010 17:48:07 +0000 (17:48 +0000)]
Pure stylistic and whitespace changes

13 years agoFailover to language '000' (unknown/default)
Joe Atzberger [Tue, 1 Jun 2010 17:45:03 +0000 (17:45 +0000)]
Failover to language '000' (unknown/default)

13 years agoTighter indent
Joe Atzberger [Fri, 28 May 2010 18:38:07 +0000 (18:38 +0000)]
Tighter indent

13 years agoExecutable python script
Joe Atzberger [Fri, 28 May 2010 18:29:55 +0000 (18:29 +0000)]
Executable python script

13 years agoChecksum computation overhaul
Joe Atzberger [Mon, 24 May 2010 22:52:21 +0000 (22:52 +0000)]
Checksum computation overhaul

This adds advanced debugging of checksum computation.

Note: good sample data is lacking.  I think most of the actual
checksum lines included in the test are questionable.  The only
one that computes accurately seems to be the example from the
3M SIP Developers Guide that specifically addresses checksum
computation.  The others from the same guide seem invalid!

I think the debugging output suggests the implementation is
consistent with the specified instructions, despite unavailability
of sample data to confirm.

13 years agoDebug output capability
Joe Atzberger [Mon, 24 May 2010 22:51:27 +0000 (22:51 +0000)]
Debug output capability

13 years agowhitespace cleanup
Joe Atzberger [Mon, 24 May 2010 22:50:58 +0000 (22:50 +0000)]
whitespace cleanup

13 years agoExtra read_it catches telnet confirmation prompt
Joe Atzberger [Wed, 12 May 2010 22:07:36 +0000 (22:07 +0000)]
Extra read_it catches telnet confirmation prompt

13 years agoTests are executable
Joe Atzberger [Wed, 12 May 2010 21:49:47 +0000 (21:49 +0000)]
Tests are executable

13 years agoRobust string cleaning and flexible CRLF from Socket
Joe Atzberger [Wed, 12 May 2010 16:15:25 +0000 (16:15 +0000)]
Robust string cleaning and flexible CRLF from Socket

13 years agoSimple test showing telnet vs. RAW handling.
Joe Atzberger [Wed, 12 May 2010 15:54:05 +0000 (15:54 +0000)]
Simple test showing telnet vs. RAW handling.

13 years agoCleanup and more paranoid whitespace filtering
Joe Atzberger [Tue, 11 May 2010 15:25:01 +0000 (15:25 +0000)]
Cleanup and more paranoid whitespace filtering

13 years agoKill useless sub _count_tests
Joe Atzberger [Tue, 11 May 2010 04:55:33 +0000 (04:55 +0000)]
Kill useless sub _count_tests

13 years agoCorrect log message: Sip::MsgType::_initialize
Joe Atzberger [Tue, 11 May 2010 03:09:29 +0000 (03:09 +0000)]
Correct log message: Sip::MsgType::_initialize

not Sip::MsgType:_initialize (one colon)

13 years agoGet rid of weird evals, useless use's
Joe Atzberger [Tue, 11 May 2010 01:56:37 +0000 (01:56 +0000)]
Get rid of weird evals, useless use's

There are no scripts committed that use DATA handles, so those
eval blocks are not part of a known application.  And that
behavior is super sketchy, especially with multiple scripts, likely
in combination!

13 years agoLOG_ERROR is not a valid loglevel.
Joe Atzberger [Mon, 10 May 2010 22:27:12 +0000 (22:27 +0000)]
LOG_ERROR is not a valid loglevel.

LOG_ERR is.

13 years agoAppend extensions fields to checkin response
Joe Atzberger [Mon, 10 May 2010 22:11:18 +0000 (22:11 +0000)]
Append extensions fields to checkin response

13 years agoAdd back FID_HOME_LIBRARY
Joe Atzberger [Mon, 10 May 2010 22:10:07 +0000 (22:10 +0000)]
Add back FID_HOME_LIBRARY

13 years agoPatron password is a required field
Joe Atzberger [Mon, 10 May 2010 21:47:59 +0000 (21:47 +0000)]
Patron password is a required field

Alert type is part of the checkin extensions

13 years agoAdd 3M extension constants and structuralize EXPORT_TAGS
Joe Atzberger [Mon, 10 May 2010 21:37:13 +0000 (21:37 +0000)]
Add 3M extension constants and structuralize EXPORT_TAGS

13 years agoLOG_WARN is not a valid syslog loglevel
Joe Atzberger [Fri, 7 May 2010 01:22:35 +0000 (01:22 +0000)]
LOG_WARN is not a valid syslog loglevel

LOG_WARNING is.

13 years agoProper id (copy/paste error)
Joe Atzberger [Fri, 7 May 2010 01:09:27 +0000 (01:09 +0000)]
Proper id (copy/paste error)

13 years agoScript should be executable.
Joe Atzberger [Fri, 7 May 2010 00:11:08 +0000 (00:11 +0000)]
Script should be executable.

13 years agoAlarm messages that mean something.
Joe Atzberger [Fri, 7 May 2010 00:09:22 +0000 (00:09 +0000)]
Alarm messages that mean something.

Additional log messages, or log message content borrowed from my work on Koha.
Also some blasts of perltidy.

13 years agoAllow log ident string to be pulled from ENV
Joe Atzberger [Fri, 7 May 2010 00:02:24 +0000 (00:02 +0000)]
Allow log ident string to be pulled from ENV

This supports running multiple SIP interfaces on the same box,
even as the same user.

13 years agoInitial Commit
Joe Atzberger [Tue, 4 May 2010 19:21:23 +0000 (19:21 +0000)]
Initial Commit

From openncip.cvs.sourceforge.net:/cvsroot/openncip
.gitignore added

14 years agoDan Scott's patch:
djfiander [Wed, 13 Jan 2010 01:39:30 +0000 (01:39 +0000)]
Dan Scott's patch:

Item status response 18 was returning CJ0|CM0| which are invalid
according to the SIP2 specification; they should either be
18-char fixed fields or not there at all (as they're optional).

It looks like it was just a reversed test. In looking through
Sip/MsgType.pm in that area, I put together a patch which
prevents those fields from being generated if the incoming value
is 0 - and separates out the value assignment & test into
separate statements, which should make the code a bit easier to
read.

As an aside, I believe the same problem was preventing the due
date (AH) from being returned in the item status response.