View | Details | Raw Unified | Return to bug 37538
Collapse All | Expand All

(-)a/misc/bin/connexion_import_daemon.pl (-38 / +170 lines)
Lines 32-75 GetOptions( Link Here
32
32
33
if ( $help || !$config ) {
33
if ( $help || !$config ) {
34
    print <<EOF
34
    print <<EOF
35
$0 --config=my.conf
35
OCLC Import Daemon
36
Parameters :
36
37
  --daemon | -d  - go to background; prints pid to stdout
37
This script hosts a server which listens for connections from an OCLC Connexion client or WorldShare Record Manager.
38
  --config | -c  - config file
38
39
  --help   | -?  - this message
39
The records are forwarded to Koha by sending a request to the handler at `/cgi-bin/koha/svc/import_bib` on the
40
intranet of the configured Koha instance. The request is authenticated using the credentials of a Koha staff user.
41
42
See the documentation for the `import_bib` endpoint at
43
https://wiki.koha-community.org/wiki/Koha_/svc/_HTTP_API#POST_.2Fsvc.2Fimport_bib .
44
The `import_bib` endpoint is being phased out. This script should be rewritten to use the newer REST API instead.
45
46
If you have multiple Koha instances, run a separate instance of this script for each one, using a different port and
47
different credentials for each one.
48
49
Usage:
50
  $0 --config=my.conf
51
52
Command line options:
53
  --daemon | -d  - Run in the background. Prints the process ID to stdout.
54
  --config | -c  - Specify the config file to use. Required.
55
  --help   | -?  - Print this message.
40
56
41
Config file format:
57
Config file format:
42
  Lines of the form:
58
  Each line has the form:
43
  name: value
59
    NAME: VALUE
44
60
  For example:
45
  # comments are supported
61
    port: 5500
46
  No quotes
62
47
63
  Empty parameters look like this:
48
  Parameter Names:
64
    NAME:
49
  host     - ip address or hostname to bind to, defaults all available
65
  For example:
50
  port     - port to bind to, mandatory
66
    overlay_framework:
51
  log      - log file path, stderr if omitted
67
52
  debug    - dumps requests to the log file, passwords inclusive
68
  Values should not be quoted.
53
  koha     - koha intranet base url, eg http://librarian.koha
69
54
  user     - koha user, authentication
70
  Lines starting with # are treated as comments.
55
  password - koha user password, authentication
71
56
  match          - marc_matchers.code: ISBN or ISSN
72
  Parameters:
57
  overlay_action - import_batches.overlay_action: replace, create_new or ignore
73
    host
58
  overlay_framework - if overlaying records - move to a new framework, if blank will use default
74
      The IP address or host name to bind to (i.e., listen on).
59
                      if not included it will use the framework of the existing record
75
      Defaults to 0.0.0.0, i.e., listen on all interfaces.
60
  nomatch_action - import_batches.nomatch_action: create_new or ignore
76
61
  item_action    - import_batches.item_action:    always_add,
77
    port
62
                      add_only_for_matches, add_only_for_new or ignore
78
      The port to bind to (i.e., listen on).
63
  import_mode    - stage or direct
79
      Typically 5500.
64
  framework      - to be used if import_mode is direct, if blank, will use default
80
      This must be different from the port used by any other service on the same machine.
65
  connexion_user      - User sent from connexion client
81
      Required.
66
  connexion_password  - Password sent from connexion client
82
67
83
    log
68
  Note: If connexion parameters are not defined request authentication will not be checked
84
      The path to the log file.
69
  You should specify a different user for connexion to protect the Koha credentials
85
      Logs are written to stderr if omitted.
70
86
71
  All process related parameters (all but ip and port) have default values as
87
    debug
72
  per Koha import process.
88
      Dumps all incoming requests to the log file.
89
      WARNING: This includes the connexion user's password, if it is  part of the request.
90
      Use 1 for on and 0 for off.
91
      Defaults to 0 (off).
92
93
    koha
94
      The base URL of the intranet of your Koha instance, e.g. http://librarian.koha
95
      When this script is running on the same machine as the Koha instance, and you have dedicated port for the Koha
96
      intranet, you can use http://localhost:port here. Otherwise, use the URL you would use when accessing your Koha
97
      intranet through a browser.
98
      Required.
99
100
    user
101
      The Koha user used for logging in to the intranet of your Koha instance.
102
      Required.
103
104
    password
105
      The password of the Koha user.
106
      Required.
107
108
    connexion_user
109
      The user name expected to be sent by the connexion client with every request.
110
      If set, also set `connexion_password`. In this case, request authentication will be checked.
111
      If omitted, also omit `connexion_password`. In this case, request authentication will not be checked, and
112
      anyone with access to the port opened by this script will be able to send records into your Koha instance.
113
114
    connexion_password
115
      The password expected to be sent by the connexion client with every request.
116
      WARNING: Do NOT use the same password as the Koha user password.
117
118
    import_mode
119
      Where the imported records should go. See the explanation below.
120
      Available values:
121
        stage
122
          The records will be imported into the staging area (reservoir) at /cgi-bin/koha/tools/manage-marc-import.pl
123
          into a batch called `(webservice)`.
124
          The records will also show up below the catalog results in the staff client when doing a "cataloging search"
125
          at /cgi-bin/koha/cataloguing/addbooks.pl?q=...
126
        direct
127
          The records will be imported directly into the catalog. They will show up in all catalog searches
128
          as soon as the indexing catches up.
129
      Defaults to `stage`.
130
131
    match
132
      Which code to use for matching MARC records when deciding whether to add or replace a record.
133
      Corresponds to the "Matching rule applied" field at /cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=...
134
      Available options:
135
        ISBN
136
          Use the International Standard Book Number (MARC 020\$a)
137
        ISSN
138
          Use the International Standard Serial Number (MARC 022\$a)
139
        KohaBiblio
140
          Use the Koha biblio number (MARC 999\$c)
141
      See `C4::Matcher`.
142
143
    overlay_action
144
      What to do when the incoming record matches a record already in the catalog.
145
      Corresponds to the "Action if matching record found" field at /cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=...
146
      Available values:
147
        replace
148
          Replace the existing record with the incoming record.
149
        create_new
150
          Create a new record alongside the existing record.
151
        ignore
152
          Discard the incoming record.
153
154
    nomatch_action
155
      What to do when the incoming record does not match any record in the catalog.
156
      Corresponds to the "Action if no match found" field at /cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=...
157
      Available values:
158
        create_new
159
          Create a new record.
160
        ignore
161
          Discard the incoming record.
162
163
    item_action
164
      What to do when the incoming MARC record contains one or more items embedded in field 952.
165
      Corresponds to the "Item processing" field at /cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=...
166
      Available values:
167
        always_add
168
        add_only_for_matches
169
        add_only_for_new
170
        replace
171
        ignore
172
173
    framework
174
      The cataloging framework to use when no match was found in the catalog (i.e., when adding a new record).
175
      Defaults to the default framework configured at /cgi-bin/koha/admin/biblio_framework.pl
176
177
    overlay_framework
178
      The cataloging framework to use when a match was found in the catalog (i.e., when replacing an existing record).
179
      Corresponds to the "Replacement record framework" field at /cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=...
180
      You have three options here:
181
        Do not specify this parameter.
182
          The default framework configured at /cgi-bin/koha/admin/biblio_framework.pl will be used.
183
        Specify this parameter without a value, i.e., `overlay_framework:`.
184
          The new record will use the same framework as the record being replaced.
185
        Specify this parameter with a value, e.g., `overlay_framework: my_framework`.
186
          The new record will use the specified framework.
187
188
Explanation of `import_mode`:
189
  - When using `direct`, each request will create a new batch and import the batch immediately.
190
  - When using `stage`, each request will cause records to be added to an existing batch.
191
  - The batch name is always `(webservice)`.
192
  - If you change `import_mode` from `stage` to `direct` after some records have already been staged, the next request
193
    will cause all records in that batch to be imported into the catalog, not just the records from the latest request.
194
  - These config parameters define the settings of the batch that is created, whether or not it is imported immediately:
195
    - `match`
196
    - `overlay_action`
197
    - `nomatch_action`
198
    - `item_action`
199
    - `framework`
200
    - `overlay_framework`
201
  - If one or more of these parameters are changed, a new batch is created with the new settings, and any new records
202
    are added to that batch instead of to the old one.
203
  - If you stage a record that cannot be imported then all future imports will be stuck until that batch is cleaned
204
    and deleted.
205
73
EOF
206
EOF
74
        ;
207
        ;
75
    exit;
208
    exit;
Lines 265-271 sub read_request { Link Here
265
    $in =~ m/(.)$/;
398
    $in =~ m/(.)$/;
266
    my $lastchar = $1;
399
    my $lastchar = $1;
267
    my ($xml, $user, $password, $local_user);
400
    my ($xml, $user, $password, $local_user);
268
    my $data = $in; # copy for diagmostic purposes
401
    my $data = $in; # copy for diagnostic purposes
269
    while () {
402
    while () {
270
        my $first = substr( $data, 0, 1 );
403
        my $first = substr( $data, 0, 1 );
271
        if (!defined $first) {
404
        if (!defined $first) {
272
- 

Return to bug 37538