4 Example opensrf config file for OpenILS
8 <opensrf version='0.0.3'>
12 <!-- unless otherwise overidden, use this locale -->
13 <default_locale>en-US</default_locale>
16 <log>LOCALSTATEDIR/log</log> <!-- unix::server log files -->
17 <sock>LOCALSTATEDIR/lock</sock> <!-- unix::server sock files -->
18 <pid>LOCALSTATEDIR/run</pid>
19 <xsl>LOCALSTATEDIR/xsl</xsl>
20 <script>LOCALSTATEDIR</script>
21 <script_lib>LOCALSTATEDIR</script_lib>
22 <templates>LOCALSTATEDIR/templates</templates>
25 <!-- global data visibility settings -->
28 <!-- Set to "true" to require patron opt-in for foreign (non-home_ou) transactions -->
29 <opt_in>false</opt_in>
33 <IDL>SYSCONFDIR/fm_IDL.xml</IDL> <!-- top level IDL file -->
34 <IDL2js>fm_IDL2js.xsl</IDL2js> <!-- IDL JS XSLT -->
37 <server_type>prefork</server_type> <!-- net::server type -->
39 <ils_events>LOCALSTATEDIR/data/ils_events.xml</ils_events> <!-- ILS events description file -->
41 <email_notify> <!-- this will eventually move into the notifications section below... -->
42 <!-- global email notification settings -->
43 <template>LOCALSTATEDIR/data/hold_notification_template.example</template>
44 <smtp_server>localhost</smtp_server>
47 in most cases, this is overridden by location
48 specific config settings. this is just the default
50 <sender_address>evergreen@localhost</sender_address>
55 <!-- global mail server settings -->
56 <smtp_server>localhost</smtp_server>
57 <sender_address>evergreen@localhost</sender_address>
59 <!-- global telephony (asterisk) settings -->
61 <!-- replace all values below when telephony server is configured -->
63 <driver>SIP</driver> <!-- SIP (default) or multi -->
64 <channels> <!-- explicit list of channels used if multi -->
65 <!-- A channel specifies technology/resource -->
66 <channel>Zap/1</channel>
67 <channel>Zap/2</channel>
68 <channel>IAX/user:secret@widgets.biz</channel>
70 <host>localhost</host>
72 <user>evergreen</user>
75 The overall composition of callfiles is determined by the
76 relevant template, but this section can be invoked for callfile
77 configs common to all outbound calls.
78 callfile_lines will be inserted into ALL generated callfiles
79 after the Channel line. This content mat be overridden
80 (in whole) by the org unit setting callfile_lines.
81 Warning: Invalid syntax may break ALL outbound calls.
92 <!-- Overdue notices: DEPRECATED in 2.0 in favour of Action/Trigger Notifications -->
95 <!-- optionally, you can define a sender address per notice type -->
96 <sender_address>overdue@localhost</sender_address>
98 <!-- The system can generate an XML file of overdue notices. This is the
99 directory where they are stored. Files are named overdue.YYYY-MM-DD.xml -->
100 <notice_dir>LOCALSTATEDIR/data/overdue</notice_dir>
101 <combined_template>LOCALSTATEDIR/data/templates/overdue_combined_xml.example</combined_template>
104 <!-- Notify at 7 days overdue -->
105 <notify_interval>7 days</notify_interval>
106 <!-- Options include always, noemail, and never. 'noemail' means a notice
107 will be appended to the notice file only if the patron has no valid email address. -->
108 <file_append>noemail</file_append>
109 <!-- do we attempt email notification? -->
110 <email_notify>false</email_notify>
111 <!-- notice template file -->
112 <email_template>LOCALSTATEDIR/data/templates/overdue_7day.example</email_template>
116 <!-- Courtesy notices: DEPRECATED in 2.0 in favour of Action/Trigger Notifications -->
119 <!-- All circulations that circulate between 5 and 13 days -->
120 <circ_duration_range>
123 </circ_duration_range>
124 <!-- notify at 1 day before the due date -->
125 <notify_interval>1 day</notify_interval>
126 <file_append>false</file_append>
127 <email_notify>false</email_notify>
128 <email_template>LOCALSTATEDIR/data/templates/predue_1day.example</email_template>
133 <!-- Settings for the hold targeter cron job -->
135 <!-- number of parallel processes to use during hold targeting;
136 increasing can speed up (re)targeting a large number of
137 hold requests, but with diminishing returns after a point;
138 if increasing this value, it is recommend to do so slowly
140 <parallel>1</parallel>
143 <!-- Settings for the fine generator cron job -->
145 <!-- number of parallel processes to use during fine generation -->
146 <parallel>1</parallel>
151 Settings for the reporter daemon process
154 <base_uri>https://localhost/reporter/</base_uri>
157 <host>localhost</host>
160 <user>postgres</user>
162 <application_name>Clark Kent (reports)</application_name>
166 <host>localhost</host>
169 <user>postgres</user>
171 <application_name>Clark Kent (state)</application_name>
174 <!-- successful report outputs go here -->
175 <output_base>LOCALSTATEDIR/web/reporter</output_base>
176 <success_template>LOCALSTATEDIR/data/report-success</success_template>
177 <fail_template>LOCALSTATEDIR/data/report-fail</fail_template>
179 <!-- Number of reports that can be processed simultaneously. This
180 value can overriden by the -c/-concurrency command-line switch
183 <parallel>1</parallel>
184 <!-- Maximum number of rows in the query results allowed before
185 Clark will refuse to draw a pie, bar, or line chart. This
186 value can be overriden by the -max-rows-for-charts command-line
187 switch of clark-kent.pl.
189 <max_rows_for_charts>1000</max_rows_for_charts>
190 <!-- Maximum amount of time (in minutes) that an SQL query initiated
191 by Clark Kent will be allowed to run before it is terminated.
192 This value can be overriden by the -statement-timeout
193 command-line switch of clark-kent.pl.
195 <statement_timeout>60</statement_timeout>
196 <!-- Maximum number of results permitted. If set to a numeric value,
197 Clark will limit the number of rows returned by report queries
198 to this value. Note that it will not be apparent to a user
199 running a report from the staff interface that their report
200 has been limited in this fashion. This setting can be
201 overriden by the -resultset-limit command-line switch of
204 A value of 0 means that no limit should be set.
206 <resultset_limit>1048575</resultset_limit>
213 <!-- XML-RPC gateway. Do NOT publish unprotected services here -->
215 <!-- list of published services -->
216 <service>opensrf.math</service>
217 <service>opensrf.dbmath</service>
218 <service>open-ils.cat</service>
219 <service>open-ils.search</service>
220 <service>open-ils.circ</service>
221 <service>open-ils.actor</service>
222 <service>open-ils.auth</service>
223 <service>open-ils.auth_proxy</service>
224 <service>open-ils.collections</service>
225 <service>open-ils.justintime</service>
230 Once upon a time, Z39.50 servers were defined here. As of Evergreen 2.2,
231 they are now defined in the database. See the Release Notes for
232 instructions on mapping the old XML entries to database tables.
237 These settings are used by the OpenILS::Utils::HTTPClient module
238 when communicating with external services (e.g. third-party APIs)
239 over HTTP. Values are passed along to LWP::UserAgent.
242 <!-- custom useragent for HTTP requests
243 <useragent>Evergreen</useragent>
246 <!-- default timeout value (in seconds) -->
247 <default_timeout>60</default_timeout>
251 When using HTTPS, verify that the external server has a valid
252 SSL certificate matching the expected hostname. (Set to 0 to
253 disable verification, 1 to enable it.)
255 <verify_hostname>1</verify_hostname>
258 If verify_hostname is enabled, you may need to specify a path
259 for CA certificates installed on your system. Use ONE of the
260 following settings. See LWP::UserAgent docs for details.
261 <SSL_ca_path>/etc/ssl/certs</SSL_ca_path>
262 <SSL_ca_file>/etc/ssl/certs/ca-certificates.crt</SSL_ca_file>
269 <!-- load the OpenLibrary added content module -->
270 <module>OpenILS::WWW::AddedContent::OpenLibrary</module>
273 Max number of seconds to wait for an added content request to
274 return data. Data not returned within the timeout is considered
277 Note that the pool of Apache processes used by the AddedContent
278 module is the same pool used by core Evergreen processes such as
279 search, circulation, etc. Therefore, the higher you set this
280 timeout value, the more likely you are to run out of available
281 Apache processes resulting in an accidental (or purposeful) denial
282 of service - particularly if the added content server starts
283 responding abnormally slowly.
285 The safest option is to disable the AddedContent module completely,
286 but 3 seconds is a compromise between the threat of a denial of
287 service and the enhanced user experience offered by successful added
293 After added content lookups have been disabled due to too many
294 lookup failures, this is the amount of time to wait before
297 <retry_timeout>600</retry_timeout>
300 maximum number of consecutive lookup errors a given process can
301 have before added content lookups are disabled for everyone
303 <max_errors>15</max_errors>
305 <!-- If a userid is required to access the added content.. -->
306 <userid>MY_USER_ID</userid>
309 Base URL for Amazon added content fetching. Not needed by OpenLibrary
310 <base_url>http://images.amazon.com/images/P/</base_url>
314 Segregating the details for ContentCafe out for easier use. At some point, we
315 may want to support multiple services at one time.
318 <userid>MY_USER_ID</userid>
319 <password>MY_PASSWORD</password>
322 Which order to put identifiers in.
323 Default is "isbn,upc", ignoring currently unsupported issn.
324 Should be all lowercase.
325 Remove an identifier from the list to skip it.
327 <identifier_order>isbn,upc</identifier_order>
331 Segregating the details for obalkyknih.cz out for easier use.
334 <!-- Covers are there always -->
336 <!-- Annotations provided by obalkyknih.cz is mapped to evergreen summary -->
337 <summary>false</summary>
339 <!-- Provider obalkyknih.cz provides TOC as text and as PDF plus thumbnail -->
340 <tocPdf>true</tocPdf>
341 <tocText>false</tocText>
343 <!-- User reviews from obalkyknih.cz -->
344 <reviews>true</reviews>
350 You can add free-form settings here and they will be accessible
351 within the added content module
356 <!-- Config section for acq_order_reader.pl script.
357 It reads MARC order record files from disk (presumably
358 an FTP destination) and pushes the order records into ACQ.
362 <!-- Root directory for all FTP'd ACQ order record files .
363 If the script is configured to talk to a remote acq server,
364 this directory has to be a read/write NFS share. -->
365 <base_dir>/openils/var/data/acq_orders/</base_dir>
367 <!-- any files found in the shared subdir must be inspected
368 (e.g. file name prefix) to determine the provider. -->
369 <shared_subdir>ALL</shared_subdir><!-- SUPPORT PENDING -->
371 <!-- providers that don't provide a mechanism to inspect the file
372 have to push their files to provider-specific locations -->
374 <ordering_agency>BR1</ordering_agency> <!-- who gets/manages the order -->
375 <provider_code>BAB</provider_code>
376 <provider_owner>CONS</provider_owner> <!-- provider provider_owner; org unit shortname -->
377 <subdir>CONS-BAB</subdir> <!-- file directory; full path = base_dir + subdir -->
378 <activate_po>false</activate_po> <!-- activate PO at upload? -->
380 <import_no_match>true</import_no_match>
381 <!-- Most Vandelay options are supported. For bools, use true/false.
390 auto_overlay_best_match
395 <!-- Add more as needed...
404 <!-- no apps are enabled globally by default -->
408 If this setting is "true", Evergreen "authoritative" APIs
409 will be enabled, forcing select API calls to wrap read calls
410 in a database BEGIN/ROLLBACK so they read from the primary
413 <uses_pooled_read_replica_dbs>false</uses_pooled_read_replica_dbs>
416 <!-- memcache servers -->
419 <server>127.0.0.1:11211</server>
421 <max_cache_time>86400</max_cache_time>
424 <!-- anonymous cache. currently, primarily used for web session caching -->
426 <server>127.0.0.1:11211</server>
428 <max_cache_time>1800</max_cache_time>
429 <!-- maximum size of a single cache entry / default = 100k-->
430 <max_cache_size>102400</max_cache_size>
435 <!-- Acquisitions server -->
437 <!-- how long to wait between stateful requests before the child process re-joins the pool -->
438 <keepalive>5</keepalive>
439 <!-- true if this service support stateless requests -->
440 <stateless>1</stateless>
441 <!-- implementation language -->
442 <language>perl</language>
443 <!-- name of the library that implements this application -->
444 <implementation>OpenILS::Application::Acq</implementation>
445 <!-- maximum OpenSRF REQUEST within a stateful connection -->
446 <max_requests>100</max_requests>
449 maximum number of top level requests coming to
450 this child before the child is recycled
452 <max_requests>100</max_requests>
453 <!-- min children to fork -->
454 <min_children>1</min_children>
455 <!-- max possible children to fork -->
456 <max_children>15</max_children>
458 C forking implementation does not support
459 min/max idle children, but may in the future
462 <!-- min idle children -->
463 <min_spare_children>1</min_spare_children>
464 <!-- max idle children -->
465 <max_spare_children>5</max_spare_children>
466 <!-- currently, only Perl uses the following 3 settings -->
467 <unix_sock>open-ils.acq_unix.sock</unix_sock>
468 <unix_pid>open-ils.acq_unix.pid</unix_pid>
469 <unix_log>open-ils.acq_unix.log</unix_log>
473 <!-- Authentication server -->
475 <keepalive>5</keepalive>
476 <stateless>1</stateless>
477 <language>c</language>
478 <implementation>liboils_auth.so</implementation>
480 <max_requests>1000</max_requests>
481 <min_children>1</min_children>
482 <max_children>15</max_children>
483 <min_spare_children>1</min_spare_children>
484 <max_spare_children>5</max_spare_children>
487 <!-- defined app-specific settings here -->
489 <seed>30</seed> <!-- amount of time a seed request is valid for -->
490 <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
491 <block_count>10</block_count> <!-- number of failures before blocking access -->
496 <!-- Internal authentication server -->
497 <open-ils.auth_internal>
498 <keepalive>5</keepalive>
499 <stateless>1</stateless>
500 <language>c</language>
501 <implementation>liboils_auth_internal.so</implementation>
503 <max_requests>1000</max_requests>
504 <min_children>1</min_children>
505 <max_children>15</max_children>
506 <min_spare_children>1</min_spare_children>
507 <max_spare_children>5</max_spare_children>
510 <!-- defined app-specific settings here -->
512 <!-- default login timeouts based on login type -->
516 <persist>2 weeks</persist>
519 </open-ils.auth_internal>
523 <!-- Authentication proxy server -->
524 <open-ils.auth_proxy>
525 <keepalive>5</keepalive>
526 <stateless>1</stateless>
527 <language>perl</language>
528 <implementation>OpenILS::Application::AuthProxy</implementation>
529 <max_requests>93</max_requests>
532 <max_requests>1000</max_requests>
533 <unix_log>open-ils.auth-proxy_unix.log</unix_log>
534 <unix_sock>open-ils.auth-proxy_unix.sock</unix_sock>
535 <unix_pid>open-ils.auth-proxy_unix.pid</unix_pid>
536 <min_children>1</min_children>
537 <max_children>15</max_children>
538 <min_spare_children>1</min_spare_children>
539 <max_spare_children>5</max_spare_children>
543 <!-- 'enabled' is the master switch; set to 'true' to enable proxied logins -->
544 <enabled>false</enabled>
546 <!-- the following is a sample configuration for the LDAP_Auth module; please adjust as needed -->
550 <module>OpenILS::Application::AuthProxy::LDAP_Auth</module>
551 <hostname>name.domain.com</hostname>
552 <basedn>ou=people,dc=domain,dc=com</basedn>
553 <authid>cn=username,ou=specials,dc=domain,dc=com</authid>
554 <id_attr>uid</id_attr>
555 <bind_attr>uid</bind_attr>
556 <password>my_ldap_password_for_authid_user</password>
566 <restrict_by_home_ou>false</restrict_by_home_ou>
569 <!-- 'native' is a proxied version of Evergreen's standard authentication -->
572 <!-- you can add 'login_types' and 'org_units' limits to this authenticator as well, if needed -->
576 </open-ils.auth_proxy>
578 <!-- Generic search server -->
580 <keepalive>5</keepalive>
581 <stateless>1</stateless>
582 <language>perl</language>
583 <implementation>OpenILS::Application::Search</implementation>
584 <max_requests>93</max_requests>
586 <unix_sock>open-ils.search_unix.sock</unix_sock>
587 <unix_pid>open-ils.search_unix.pid</unix_pid>
588 <unix_log>open-ils.search_unix.log</unix_log>
590 <max_requests>1000</max_requests>
591 <min_children>1</min_children>
592 <max_children>15</max_children>
593 <min_spare_children>1</min_spare_children>
594 <max_spare_children>5</max_spare_children>
597 <marc_html_xsl>oilsMARC21slim2HTML.xsl</marc_html_xsl>
598 <marc_html_xsl_slim>oilsMARC21slim2HTMLslim.xsl</marc_html_xsl_slim>
600 <spelling_dictionary>
602 Optionally configure different dictionaries depending on search context.
603 If no dictionaries are defined, the default Aspell dictionary is used.
606 <default>LOCALSTATEDIR/data/default_dict.txt</default>
607 <title>LOCALSTATEDIR/data/title_dict.txt</title>
608 <author>LOCALSTATEDIR/data/author_dict.txt</author>
609 <subject>LOCALSTATEDIR/data/subject_dict.txt</subject>
610 <series>LOCALSTATEDIR/data/series_dict.txt</series>
612 </spelling_dictionary>
614 <!-- Default to using staged search -->
615 <use_staged_search>true</use_staged_search>
618 For staged search, we estimate hits based on inclusion or exclusion.
621 inclusion - visible ratio on superpage
622 exclusion - excluded ratio on superpage
623 delete_adjusted_inclusion - included ratio on superpage, ratio adjusted by deleted count
624 delete_adjusted_exclusion - excluded ratio on superpage, ratio adjusted by deleted count
626 Under normal circumstances, inclusion is the best strategy, and both delete_adjusted variants
627 will return the same value +/- 1. The exclusion strategy is the original, and works well
628 when there are few deleted or excluded records, in other words, when the superpage is not
629 sparsely populated with visible records.
631 <estimation_strategy>inclusion</estimation_strategy>
634 Evergreen uses a cover density algorithm for calculating relative ranking of matches. There
635 are several tuning parameters and options available. By default, no document length normalization
636 is applied. From the Postgres documentation on ts_rank_cd() (the function used by Evergreen):
638 Since a longer document has a greater chance of containing a query term it is reasonable
639 to take into account document size, e.g., a hundred-word document with five instances of
640 a search word is probably more relevant than a thousand-word document with five instances.
641 Both ranking functions take an integer normalization option that specifies whether and how
642 a document's length should impact its rank. The integer option controls several behaviors,
643 so it is a bit mask: you can specify one or more behaviors using | (for example, 2|4).
645 0 (the default) ignores the document length
647 1 divides the rank by 1 + the logarithm of the document length
649 2 divides the rank by the document length
651 4 divides the rank by the mean harmonic distance between extents (this is implemented only by ts_rank_cd)
653 8 divides the rank by the number of unique words in document
655 16 divides the rank by 1 + the logarithm of the number of unique words in document
657 32 divides the rank by itself + 1
659 If more than one flag bit is specified, the transformations are applied in the order listed.
661 It is important to note that the ranking functions do not use any global information, so it
662 is impossible to produce a fair normalization to 1% or 100% as sometimes desired. Normalization
663 option 32 (rank/(rank+1)) can be applied to scale all ranks into the range zero to one, but of
664 course this is just a cosmetic change; it will not affect the ordering of the search results.
666 In Evergreen, these options are set via search modifiers. The modifiers are mapped in the
669 * #CD_logDocumentLength => 1 :: rank / (1 + LOG(total_word_count)) :: Longer documents slightly less relevant
670 * #CD_documentLength => 2 :: rank / total_word_count :: Longer documents much less relevant
671 * #CD_meanHarmonic => 4 :: Word Proximity :: Greater matched-word distance is less relevant
672 * #CD_uniqueWords => 8 :: rank / unique_word_count :: Documents with repeated words much less relevant
673 * #CD_logUniqueWords => 16 :: rank / (1 + LOG(unique_word_count)) :: Documents with repeated words slightly less relevant
674 * #CD_selfPlusOne => 32 :: rank / (1 + rank) :: Cosmetic normalization of rank value between 0 and 1
676 Adding one or more of these to the default_CD_modifiers list will cause all searches that use QueryParser to apply them.
678 <default_CD_modifiers>#CD_documentLength #CD_meanHarmonic #CD_uniqueWords</default_CD_modifiers>
681 default_preferred_language
682 Set the global, default preferred languange
684 <default_preferred_language>eng</default_preferred_language>
687 default_preferred_language_weight
688 Set the weight (higher is "better") for the preferred language. Comment out to remove all lanuage weighting by default.
690 <default_preferred_language_weight>5</default_preferred_language_weight>
692 <!-- Baseline number of records to check for hit estimation. -->
693 <superpage_size>1000</superpage_size>
695 <!-- How many superpages to consider for searching overall. -->
696 <max_superpages>100</max_superpages>
698 <!-- zip code database file -->
699 <!--<zips_file>LOCALSTATEDIR/data/zips.txt</zips_file>-->
703 <!-- server for accessing user info -->
705 <keepalive>5</keepalive>
706 <stateless>1</stateless>
707 <language>perl</language>
708 <implementation>OpenILS::Application::Actor</implementation>
709 <max_requests>93</max_requests>
711 <unix_sock>open-ils.actor_unix.sock</unix_sock>
712 <unix_pid>open-ils.actor_unix.pid</unix_pid>
713 <max_requests>1000</max_requests>
714 <unix_log>open-ils.actor_unix.log</unix_log>
715 <min_children>1</min_children>
716 <max_children>15</max_children>
717 <min_spare_children>1</min_spare_children>
718 <max_spare_children>5</max_spare_children>
720 <!-- set this to 'true' to have barcode search also search patron records by unique ID -->
722 <id_as_barcode>false</id_as_barcode>
728 <keepalive>5</keepalive>
729 <stateless>1</stateless>
730 <language>perl</language>
731 <implementation>OpenILS::Application::Booking</implementation>
732 <max_requests>199</max_requests>
734 <unix_sock>open-ils.booking_unix.sock</unix_sock>
735 <unix_pid>open-ils.booking_unix.pid</unix_pid>
736 <max_requests>1000</max_requests>
737 <unix_log>open-ils.booking_unix.log</unix_log>
738 <min_children>1</min_children>
739 <max_children>15</max_children>
740 <min_spare_children>1</min_spare_children>
741 <max_spare_children>5</max_spare_children>
748 <keepalive>5</keepalive>
749 <stateless>1</stateless>
750 <language>perl</language>
751 <implementation>OpenILS::Application::Geo</implementation>
752 <max_requests>199</max_requests>
754 <unix_sock>open-ils.geo_unix.sock</unix_sock>
755 <unix_pid>open-ils.geo_unix.pid</unix_pid>
756 <max_requests>1000</max_requests>
757 <unix_log>open-ils.geo_unix.log</unix_log>
758 <min_children>1</min_children>
759 <max_children>15</max_children>
760 <min_spare_children>1</min_spare_children>
761 <max_spare_children>5</max_spare_children>
764 <cache_timeout>300</cache_timeout>
769 <keepalive>5</keepalive>
770 <stateless>1</stateless>
771 <language>perl</language>
772 <implementation>OpenILS::Application::Cat</implementation>
773 <max_requests>199</max_requests>
775 <unix_sock>open-ils.cat_unix.sock</unix_sock>
776 <unix_pid>open-ils.cat_unix.pid</unix_pid>
777 <max_requests>1000</max_requests>
778 <unix_log>open-ils.cat_unix.log</unix_log>
779 <min_children>1</min_children>
780 <max_children>15</max_children>
781 <min_spare_children>1</min_spare_children>
782 <max_spare_children>5</max_spare_children>
786 <K_book>LOCALSTATEDIR/templates/marc/k_book.xml</K_book>
792 <keepalive>5</keepalive>
793 <stateless>1</stateless>
794 <language>perl</language>
795 <implementation>OpenILS::Application::SuperCat</implementation>
796 <max_requests>199</max_requests>
798 <unix_sock>open-ils.supercat_unix.sock</unix_sock>
799 <unix_pid>open-ils.supercat_unix.pid</unix_pid>
800 <max_requests>1000</max_requests>
801 <unix_log>open-ils.supercat_unix.log</unix_log>
802 <min_children>1</min_children>
803 <max_children>15</max_children>
804 <min_spare_children>1</min_spare_children>
805 <max_spare_children>5</max_spare_children>
809 <!-- Where necessary, override the default settings here in the app_settings element. -->
811 <!-- The OAI endpoint. The domain is the name of your proxy or frontend opac website. -->
812 <!-- <base_url>http://mydomain.org/opac/extras/oai</base_url> -->
814 <!-- <repository_name>My organization(s)</repository_name> -->
815 <!-- <admin_email>admin@mydomain.org</admin_email> -->
817 <!-- The maximum number of records in a ListRecords and ListIdentifiers response. -->
818 <!-- <max_count>50</max_count> -->
820 <!-- <granularity>YYYY-MM-DDThh:mm:ss</granularity> -->
821 <!-- <earliest_datestamp>0001-01-01</earliest_datestamp> -->
822 <!-- <deleted_record>yes</deleted_record> -->
823 <!-- <scheme>oai</scheme> -->
824 <!-- <repository_identifier>mydomain.org</repository_identifier> -->
825 <!-- <delimiter>:</delimiter> -->
826 <!-- <sample_identifier>oai:mydomain.org:12345</sample_identifier> -->
829 The metadataformat element contains the schema for the oai_dc and marcxml metadata formats.
830 Each schema needs a reference to an xslt document.
831 You can replace them with your custom xslt stylesheets.
832 Place those in the /<openils sysdir>/var/xsl folder.
833 You can also extend the OAI2 service further with new metadata schema.
835 Bibliographic and authority records share the same stylesheet.
836 Should you want to render them differently, use the
837 marc:datafield[@tag='901']/marc:subfield[@code='t']
838 value to identify the record type. -->
843 <namespace_uri>http://www.openarchives.org/OAI/2.0/oai_dc/</namespace_uri>
844 <schema_location>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema_location>
845 <xslt>MARC21slim2OAIDC.xsl</xslt>
848 <namespace_uri>http://www.loc.gov/MARC21/slim</namespace_uri>
849 <schema_location>http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd</schema_location>
851 </metadataformat> -->
854 You can add different schema to the metadataformat element thus:
856 <namespace_uri>http://www.loc.gov/mods/</namespace_uri>
857 <schema_location>http://www.loc.gov/standards/mods/mods.xsd</schema_location>
858 <xslt>my-custom-marc2mods.xsl</xslt>
861 <namespace_uri>my-namespace_uri</namespace_uri>
862 <schema_location>my-schema_location</schema_location>
863 <xslt>my-marc2my-metadata.xsl</xslt>
864 </my-metadata_prefix>
867 <!-- Change the way the asset copy values are mapped to which subfield codes: -->
878 <!-- Or add static values to the copies element like this:
879 <z>A value that always should for example be in the 852$z</z>
882 <!-- Accept only 852$[barcode] values that match this regular expression. E.g.
883 <barcode_filter>^[A-Za-z0-9]+</barcode_filter>
884 only renders 852 datafields that contain barcodes values that begin with letters and numbers.
887 <barcode_filter><barcode_filter>
890 <!-- Accept only 852$[status] values that match this regular expression. E.g.
891 <status_filter>^Available$</status_filter>
892 only renders 852 datafields that contain status code values that exactly match the string 'Available'.
895 <status_filter></status_filter>
902 <!-- server for accessing user info -->
904 <keepalive>5</keepalive>
905 <stateless>1</stateless>
906 <language>perl</language>
907 <implementation>OpenILS::Application::Trigger</implementation>
908 <max_requests>93</max_requests>
910 <unix_sock>open-ils.trigger_unix.sock</unix_sock>
911 <unix_pid>open-ils.trigger_unix.pid</unix_pid>
912 <max_requests>1000</max_requests>
913 <unix_log>open-ils.trigger_unix.log</unix_log>
914 <min_children>1</min_children>
915 <max_children>15</max_children>
916 <min_spare_children>1</min_spare_children>
917 <max_spare_children>5</max_spare_children>
920 <!-- number of parallel open-ils.trigger processes to use for collection and reaction -->
930 <open-ils.url_verify>
931 <keepalive>5</keepalive>
932 <stateless>1</stateless>
933 <language>perl</language>
934 <implementation>OpenILS::Application::URLVerify</implementation>
935 <max_requests>199</max_requests>
937 <unix_sock>open-ils.url_verify_unix.sock</unix_sock>
938 <unix_pid>open-ils.url_verify_unix.pid</unix_pid>
939 <max_requests>1000</max_requests>
940 <unix_log>open-ils.url_verify_unix.log</unix_log>
941 <min_children>1</min_children>
942 <max_children>15</max_children>
943 <min_spare_children>1</min_spare_children>
944 <max_spare_children>5</max_spare_children>
947 <user_agent>Evergreen %s Link Checker</user_agent>
949 </open-ils.url_verify>
952 <keepalive>3</keepalive>
953 <stateless>1</stateless>
954 <language>c</language>
955 <implementation>libosrf_math.so</implementation>
957 <unix_sock>opensrf.math_unix.sock</unix_sock>
958 <unix_pid>opensrf.math_unix.pid</unix_pid>
959 <max_requests>1000</max_requests>
960 <unix_log>opensrf.math_unix.log</unix_log>
961 <min_children>1</min_children>
962 <max_children>15</max_children>
963 <min_spare_children>1</min_spare_children>
964 <max_spare_children>5</max_spare_children>
969 <keepalive>3</keepalive>
970 <stateless>1</stateless>
971 <language>c</language>
972 <implementation>libosrf_dbmath.so</implementation>
974 <max_requests>1000</max_requests>
975 <unix_log>opensrf.dbmath_unix.log</unix_log>
976 <unix_sock>opensrf.dbmath_unix.sock</unix_sock>
977 <unix_pid>opensrf.dbmath_unix.pid</unix_pid>
978 <min_children>1</min_children>
979 <max_children>15</max_children>
980 <min_spare_children>1</min_spare_children>
981 <max_spare_children>5</max_spare_children>
985 <open-ils.justintime>
986 <keepalive>5</keepalive>
987 <stateless>1</stateless>
988 <language>perl</language>
989 <implementation>OpenILS::Application::JustInTime</implementation>
990 <max_requests>199</max_requests>
992 <unix_sock>open-ils.justintime_unix.sock</unix_sock>
993 <unix_pid>open-ils.justintime_unix.pid</unix_pid>
994 <max_requests>1000</max_requests>
995 <unix_log>open-ils.justintime_unix.log</unix_log>
996 <min_children>1</min_children>
997 <max_children>15</max_children>
998 <min_spare_children>1</min_spare_children>
999 <max_spare_children>5</max_spare_children>
1003 </open-ils.justintime>
1006 <keepalive>3</keepalive>
1007 <stateless>1</stateless>
1008 <language>perl</language>
1009 <implementation>OpenILS::Application::Circ</implementation>
1010 <max_requests>99</max_requests>
1012 <max_requests>1000</max_requests>
1013 <unix_log>open-ils.circ_unix.log</unix_log>
1014 <unix_sock>open-ils.circ_unix.sock</unix_sock>
1015 <unix_pid>open-ils.circ_unix.pid</unix_pid>
1016 <min_children>1</min_children>
1017 <max_children>15</max_children>
1018 <min_spare_children>1</min_spare_children>
1019 <max_spare_children>5</max_spare_children>
1023 <email>false</email> <!-- set to false to disable hold notice emails -->
1029 <keepalive>10</keepalive>
1030 <stateless>1</stateless>
1031 <language>perl</language>
1032 <implementation>OpenILS::Application::Storage</implementation>
1034 <max_requests>1000</max_requests>
1035 <unix_log>open-ils.storage_unix.log</unix_log>
1036 <unix_sock>open-ils.storage_unix.sock</unix_sock>
1037 <unix_pid>open-ils.storage_unix.pid</unix_pid>
1038 <min_children>1</min_children>
1039 <max_children>10</max_children>
1040 <min_spare_children>1</min_spare_children>
1041 <max_spare_children>5</max_spare_children>
1044 <script_path>LIBDIR/javascript/</script_path>
1045 <script_path>LOCALSTATEDIR/catalog/</script_path>
1047 <biblio_fingerprint>biblio_fingerprint.js</biblio_fingerprint>
1054 <user>postgres</user>
1055 <host>localhost</host>
1059 <client_encoding>UTF-8</client_encoding>
1060 <application_name>open-ils.storage</application_name>
1067 <keepalive>6</keepalive>
1068 <stateless>1</stateless>
1069 <language>C</language>
1070 <implementation>liboils_cstore.so</implementation>
1072 <max_requests>1000</max_requests>
1073 <min_children>1</min_children>
1074 <max_children>15</max_children>
1075 <min_spare_children>1</min_spare_children>
1076 <max_spare_children>5</max_spare_children>
1079 <max_query_recursion>100</max_query_recursion>
1080 <driver>pgsql</driver>
1084 <user>postgres</user>
1085 <host>localhost</host>
1089 <client_encoding>UTF-8</client_encoding>
1090 <application_name>open-ils.cstore</application_name>
1096 <keepalive>6</keepalive>
1097 <migratable>1</migratable>
1098 <stateless>1</stateless>
1099 <language>C</language>
1100 <implementation>liboils_pcrud.so</implementation>
1103 <unix_log>open-ils.pcrud.log</unix_log>
1104 <unix_sock>open-ils.pcrud.sock</unix_sock>
1105 <unix_pid>open-ils.pcrud.pid</unix_pid>
1106 <max_requests>1000</max_requests>
1107 <min_children>1</min_children>
1108 <max_children>15</max_children>
1109 <min_spare_children>1</min_spare_children>
1110 <max_spare_children>5</max_spare_children>
1114 <IDL>SYSCONFDIR/fm_IDL.xml</IDL>
1115 <driver>pgsql</driver>
1119 <user>postgres</user>
1120 <host>localhost</host>
1124 <client_encoding>UTF-8</client_encoding>
1125 <application_name>open-ils.pcrud</application_name>
1131 <keepalive>6</keepalive>
1132 <stateless>1</stateless>
1133 <language>C</language>
1134 <implementation>liboils_qstore.so</implementation>
1136 <max_requests>1000</max_requests>
1137 <min_children>1</min_children>
1138 <max_children>15</max_children>
1139 <min_spare_children>1</min_spare_children>
1140 <max_spare_children>5</max_spare_children>
1143 <driver>pgsql</driver>
1147 <user>postgres</user>
1148 <host>localhost</host>
1152 <client_encoding>UTF-8</client_encoding>
1153 <application_name>open-ils.qstore</application_name>
1159 <keepalive>1</keepalive>
1160 <stateless>1</stateless>
1161 <language>perl</language>
1162 <implementation>OpenSRF::Application::Settings</implementation>
1163 <max_requests>17</max_requests>
1165 <unix_sock>opensrf.settings_unix.sock</unix_sock>
1166 <unix_pid>opensrf.settings_unix.pid</unix_pid>
1167 <max_requests>300</max_requests>
1168 <unix_log>opensrf.settings_unix.log</unix_log>
1169 <min_children>5</min_children>
1170 <max_children>15</max_children>
1171 <min_spare_children>3</min_spare_children>
1172 <max_spare_children>5</max_spare_children>
1176 <open-ils.collections>
1177 <keepalive>3</keepalive>
1178 <stateless>1</stateless>
1179 <language>perl</language>
1180 <implementation>OpenILS::Application::Collections</implementation>
1181 <max_requests>17</max_requests>
1183 <unix_sock>open-ils.collections_unix.sock</unix_sock>
1184 <unix_pid>open-ils.collections_unix.pid</unix_pid>
1185 <max_requests>1000</max_requests>
1186 <unix_log>open-ils.collections_unix.log</unix_log>
1187 <min_children>1</min_children>
1188 <max_children>10</max_children>
1189 <min_spare_children>1</min_spare_children>
1190 <max_spare_children>5</max_spare_children>
1193 <!-- batch_file_dir must be a protected, web-accessible, shared directory -->
1194 <batch_file_dir>/openils/var/web/collections</batch_file_dir>
1196 </open-ils.collections>
1199 <keepalive>3</keepalive>
1200 <stateless>1</stateless>
1201 <language>perl</language>
1202 <implementation>OpenILS::Application::Reporter</implementation>
1203 <max_requests>99</max_requests>
1205 <unix_sock>open-ils.reporter_unix.sock</unix_sock>
1206 <unix_pid>open-ils.reporter_unix.pid</unix_pid>
1207 <max_requests>1000</max_requests>
1208 <unix_log>open-ils.reporter_unix.log</unix_log>
1209 <min_children>1</min_children>
1210 <max_children>10</max_children>
1211 <min_spare_children>1</min_spare_children>
1212 <max_spare_children>5</max_spare_children>
1214 </open-ils.reporter>
1216 <open-ils.reporter-store>
1217 <keepalive>6</keepalive>
1218 <stateless>1</stateless>
1219 <language>C</language>
1220 <implementation>liboils_rstore.so</implementation>
1222 <max_requests>400</max_requests>
1223 <min_children>1</min_children>
1224 <max_children>10</max_children>
1225 <min_spare_children>1</min_spare_children>
1226 <max_spare_children>5</max_spare_children>
1229 <driver>pgsql</driver>
1233 <user>postgres</user>
1234 <host>localhost</host>
1238 <client_encoding>UTF-8</client_encoding>
1239 <application_name>open-ils.reporter-store</application_name>
1242 </open-ils.reporter-store>
1244 <!-- resolver_type defaults to sfx but can also be cufts -->
1247 <keepalive>3</keepalive>
1248 <stateless>1</stateless>
1249 <language>perl</language>
1250 <implementation>OpenILS::Application::ResolverResolver</implementation>
1251 <max_requests>93</max_requests>
1253 <unix_sock>open-ils.resolver_unix.sock</unix_sock>
1254 <unix_pid>open-ils.resolver_unix.pid</unix_pid>
1255 <max_requests>1000</max_requests>
1256 <unix_log>open-ils.resolver_unix.log</unix_log>
1257 <min_children>5</min_children>
1258 <max_children>15</max_children>
1259 <min_spare_children>3</min_spare_children>
1260 <max_spare_children>5</max_spare_children>
1263 <cache_timeout>86400</cache_timeout>
1264 <request_timeout>10</request_timeout>
1265 <default_url_base>http://path/to/sfx_or_cufts</default_url_base>
1266 <resolver_type>sfx</resolver_type>
1268 </open-ils.resolver>
1271 <open-ils.permacrud>
1272 <keepalive>3</keepalive>
1273 <stateless>1</stateless>
1274 <language>perl</language>
1275 <implementation>OpenILS::Application::PermaCrud</implementation>
1276 <max_requests>17</max_requests>
1278 <unix_sock>open-ils.permacrud_unix.sock</unix_sock>
1279 <unix_pid>open-ils.permacrud_unix.pid</unix_pid>
1280 <max_requests>1000</max_requests>
1281 <unix_log>open-ils.permacrud_unix.log</unix_log>
1282 <min_children>5</min_children>
1283 <max_children>15</max_children>
1284 <min_spare_children>3</min_spare_children>
1285 <max_spare_children>5</max_spare_children>
1287 </open-ils.permacrud>
1290 <keepalive>3</keepalive>
1291 <stateless>1</stateless>
1292 <language>perl</language>
1293 <implementation>OpenILS::Application::Fielder</implementation>
1294 <max_requests>17</max_requests>
1296 <unix_sock>open-ils.fielder_unix.sock</unix_sock>
1297 <unix_pid>open-ils.fielder_unix.pid</unix_pid>
1298 <max_requests>1000</max_requests>
1299 <unix_log>open-ils.fielder_unix.log</unix_log>
1300 <min_children>5</min_children>
1301 <max_children>15</max_children>
1302 <min_spare_children>3</min_spare_children>
1303 <max_spare_children>5</max_spare_children>
1308 <keepalive>5</keepalive>
1309 <stateless>1</stateless>
1310 <language>perl</language>
1311 <implementation>OpenILS::Application::Vandelay</implementation>
1312 <max_requests>100</max_requests>
1314 <unix_sock>vandelay_unix.sock</unix_sock>
1315 <unix_pid>vandelay_unix.pid</unix_pid>
1316 <unix_log>vandelay_unix.log</unix_log>
1317 <max_requests>100</max_requests>
1318 <min_children>1</min_children>
1319 <max_children>15</max_children>
1320 <min_spare_children>1</min_spare_children>
1321 <max_spare_children>5</max_spare_children>
1325 <!-- temporary location for MARC import files.
1326 Files will be deleted after records are spooled.
1327 *note: in a multi-brick environment, this will need to
1328 be on a write-able NFS share. -->
1329 <importer>/tmp</importer>
1330 <!-- permanent location for locally added content -->
1331 <jackets>/openils/var/web/opac/extras/ac</jackets>
1334 </open-ils.vandelay>
1337 <keepalive>3</keepalive>
1338 <stateless>1</stateless>
1339 <language>perl</language>
1340 <implementation>OpenILS::Application::Serial</implementation>
1341 <max_requests>17</max_requests>
1343 <unix_sock>open-ils.serial_unix.sock</unix_sock>
1344 <unix_pid>open-ils.serial_unix.pid</unix_pid>
1345 <max_requests>1000</max_requests>
1346 <unix_log>open-ils.serial_unix.log</unix_log>
1347 <min_children>5</min_children>
1348 <max_children>15</max_children>
1349 <min_spare_children>3</min_spare_children>
1350 <max_spare_children>5</max_spare_children>
1356 <open-ils.hold-targeter>
1357 <keepalive>3</keepalive>
1358 <stateless>1</stateless>
1359 <language>perl</language>
1360 <implementation>OpenILS::Application::HoldTargeter</implementation>
1361 <max_requests>17</max_requests>
1363 <unix_sock>open-ils.hold-targeter_unix.sock</unix_sock>
1364 <unix_pid>open-ils.hold-targeter_unix.pid</unix_pid>
1365 <max_requests>1000</max_requests>
1366 <unix_log>open-ils.hold-targeter_unix.log</unix_log>
1367 <min_children>1</min_children>
1368 <max_children>15</max_children>
1369 <min_spare_children>1</min_spare_children>
1370 <max_spare_children>5</max_spare_children>
1374 </open-ils.hold-targeter>
1376 <open-ils.ebook_api>
1377 <keepalive>5</keepalive>
1378 <stateless>1</stateless>
1379 <language>perl</language>
1380 <implementation>OpenILS::Application::EbookAPI</implementation>
1381 <max_requests>100</max_requests>
1383 <unix_sock>ebook_api_unix.sock</unix_sock>
1384 <unix_pid>ebook_api_unix.pid</unix_pid>
1385 <unix_log>ebook_api_unix.log</unix_log>
1386 <max_requests>100</max_requests>
1387 <min_children>1</min_children>
1388 <max_children>15</max_children>
1389 <min_spare_children>1</min_spare_children>
1390 <max_spare_children>5</max_spare_children>
1393 <cache_timeout>300</cache_timeout>
1394 <request_timeout>60</request_timeout>
1396 </open-ils.ebook_api>
1399 <keepalive>5</keepalive>
1400 <stateless>1</stateless>
1401 <language>perl</language>
1402 <implementation>OpenILS::Application::Courses</implementation>
1403 <max_requests>100</max_requests>
1405 <unix_sock>courses_unix.sock</unix_sock>
1406 <unix_pid>courses_unix.pid</unix_pid>
1407 <unix_log>courses_unix.log</unix_log>
1408 <max_requests>100</max_requests>
1409 <min_children>1</min_children>
1410 <max_children>15</max_children>
1411 <min_spare_children>1</min_spare_children>
1412 <max_spare_children>5</max_spare_children>
1417 <keepalive>5</keepalive>
1418 <stateless>1</stateless>
1419 <language>perl</language>
1420 <implementation>OpenILS::Application::Curbside</implementation>
1421 <max_requests>1000</max_requests>
1423 <unix_sock>curbside_unix.sock</unix_sock>
1424 <unix_pid>curbside_unix.pid</unix_pid>
1425 <unix_log>curbside_unix.log</unix_log>
1426 <max_requests>1000</max_requests>
1427 <min_children>1</min_children>
1428 <max_children>15</max_children>
1429 <min_spare_children>1</min_spare_children>
1430 <max_spare_children>5</max_spare_children>
1434 </open-ils.curbside>
1442 Should match the fully qualified domain name of the host.
1444 On Linux, the output of the following command is authoritative:
1445 $ perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";'
1447 To use 'localhost' instead, run osrf_control with the 'localhost' flag
1451 <!-- services hosted on this machine -->
1452 <appname>opensrf.settings</appname>
1453 <appname>opensrf.math</appname>
1454 <appname>opensrf.dbmath</appname>
1455 <appname>open-ils.acq</appname>
1456 <appname>open-ils.booking</appname>
1457 <appname>open-ils.cat</appname>
1458 <appname>open-ils.supercat</appname>
1459 <appname>open-ils.search</appname>
1460 <appname>open-ils.circ</appname>
1461 <appname>open-ils.actor</appname>
1462 <appname>open-ils.auth</appname>
1463 <appname>open-ils.auth_internal</appname>
1464 <appname>open-ils.auth_proxy</appname>
1465 <appname>open-ils.storage</appname>
1466 <appname>open-ils.justintime</appname>
1467 <appname>open-ils.cstore</appname>
1468 <appname>open-ils.collections</appname>
1469 <appname>open-ils.qstore</appname>
1470 <appname>open-ils.reporter</appname>
1471 <appname>open-ils.reporter-store</appname>
1472 <!-- <appname>open-ils.resolver</appname> -->
1473 <appname>open-ils.permacrud</appname>
1474 <appname>open-ils.pcrud</appname>
1475 <appname>open-ils.trigger</appname>
1476 <appname>open-ils.url_verify</appname>
1477 <appname>open-ils.fielder</appname>
1478 <appname>open-ils.vandelay</appname>
1479 <appname>open-ils.serial</appname>
1480 <appname>open-ils.hold-targeter</appname>
1481 <appname>open-ils.ebook_api</appname>
1482 <appname>open-ils.courses</appname>
1483 <appname>open-ils.curbside</appname>
1484 <appname>open-ils.geo</appname>