Make more auth values configurable
[Evergreen.git] / Open-ILS / examples / opensrf.xml.example
1 <?xml version='1.0'?>
2
3 <!-- 
4 Example opensrf config file for OpenILS
5 vim:et:ts=4:sw=4:
6 -->
7
8 <opensrf version='0.0.3'>
9
10     <default>
11
12         <!-- unless otherwise overidden, use this locale -->
13         <default_locale>en-US</default_locale>
14
15         <dirs>
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>
23         </dirs>
24
25         <!-- global data visibility settings -->
26         <share>
27             <user>
28                 <!-- Set to "true" to require patron opt-in for foreign (non-home_ou) transactions -->
29                 <opt_in>false</opt_in>
30             </user>
31         </share>
32
33         <IDL>SYSCONFDIR/fm_IDL.xml</IDL> <!-- top level IDL file -->
34         <IDL2js>fm_IDL2js.xsl</IDL2js> <!-- IDL JS XSLT -->
35
36
37         <server_type>prefork</server_type> <!-- net::server type -->
38
39         <ils_events>LOCALSTATEDIR/data/ils_events.xml</ils_events> <!-- ILS events description file -->
40
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>
45
46             <!--
47             in most cases, this is overridden by location 
48             specific config settings.  this is just the default
49             -->
50             <sender_address>evergreen@localhost</sender_address>
51         </email_notify>
52
53
54       <notifications>
55         <!-- global mail server settings -->
56         <smtp_server>localhost</smtp_server>
57         <sender_address>evergreen@localhost</sender_address>
58
59         <!-- global telephony (asterisk) settings -->
60         <telephony>
61             <!-- replace all values below when telephony server is configured -->
62             <enabled>0</enabled>
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>
69             </channels>
70             <host>localhost</host>
71             <port>10080</port>
72             <user>evergreen</user>
73             <pw>evergreen</pw>
74             <!--
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.
82             -->
83             <!-- <callfile_lines>
84                 MaxRetries: 3
85                 RetryTime: 60
86                 WaitTime: 30
87                 Archive: 1
88                 Extension: 10
89             </callfile_lines> -->
90         </telephony>
91
92         <!-- Overdue notices: DEPRECATED in 2.0 in favour of Action/Trigger Notifications -->
93         <overdue>
94
95             <!-- optionally, you can define a sender address per notice type -->
96             <sender_address>overdue@localhost</sender_address>
97
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>
102
103             <notice>
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>
113             </notice>
114         </overdue>
115
116         <!-- Courtesy notices: DEPRECATED in 2.0 in favour of Action/Trigger Notifications -->
117         <predue>
118             <notice>
119                 <!-- All circulations that circulate between 5 and 13 days -->
120                 <circ_duration_range>
121                     <from>5 days</from>
122                     <to>13 days</to>
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>
129             </notice>
130         </predue>
131       </notifications>
132
133         <!-- Settings for the hold targeter cron job -->
134         <hold_targeter>
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
139             -->
140             <parallel>1</parallel>
141         </hold_targeter>
142
143         <!-- Settings for the fine generator cron job -->
144         <fine_generator>
145             <!-- number of parallel processes to use during fine generation -->
146             <parallel>1</parallel>
147         </fine_generator>
148         
149         <reporter>
150             <!--
151             Settings for the reporter daemon process 
152             -->
153             <setup>
154                 <base_uri>https://localhost/reporter/</base_uri>
155                 <database>
156                     <driver>Pg</driver>
157                     <host>localhost</host>
158                     <port>5432</port>
159                     <db>evergreen</db>
160                     <user>postgres</user>
161                     <pw>postgres</pw>
162                 </database>
163                 <state_store>
164                     <driver>Pg</driver>
165                     <host>localhost</host>
166                     <port>5432</port>
167                     <db>evergreen</db>
168                     <user>postgres</user>
169                     <pw>postgres</pw>
170                 </state_store>
171                 <files>
172                     <!-- successful report outputs go here -->
173                     <output_base>LOCALSTATEDIR/web/reporter</output_base>
174                     <success_template>LOCALSTATEDIR/data/report-success</success_template>
175                     <fail_template>LOCALSTATEDIR/data/report-fail</fail_template>
176                 </files>
177             </setup>
178         </reporter>
179
180
181
182         <xml-rpc>
183             <!-- XML-RPC gateway.  Do NOT publish unprotected services here -->
184             <allowed_services>
185                 <!-- list of published services -->
186                 <service>opensrf.math</service>
187                 <service>opensrf.dbmath</service>
188                 <service>open-ils.cat</service>
189                 <service>open-ils.search</service>
190                 <service>open-ils.circ</service>
191                 <service>open-ils.actor</service>
192                 <service>open-ils.auth</service>
193                 <service>open-ils.collections</service>
194             </allowed_services>
195         </xml-rpc>
196
197
198         <z3950>
199             <default>biblios</default>
200             <services>
201                 <biblios>
202                     <!-- biblios does not require username/password -->
203                     <name>‚Ä°biblios.net</name>
204                     <host>z3950.biblios.net</host>
205                     <port>210</port>
206                     <db>bibliographic</db>
207                     <!-- fetch the full record with no holdings. FI is the most common choice -->
208                     <record_format>FI</record_format> 
209
210                     <!-- Record transmission format from the server.  Supported -->
211                     <!-- formats include usmarc and xml (for marcxml).         -->
212                     <transmission_format>usmarc</transmission_format> 
213
214                     <attrs>
215                         <tcn><code>12</code><format>1</format></tcn>
216                         <isbn><code>7</code><format>6</format></isbn>
217                         <lccn><code>9</code><format>1</format></lccn>
218                         <author><code>1003</code><format>6</format></author>
219                         <title><code>4</code><format>6</format></title>
220                         <issn><code>8</code><format>1</format></issn>
221                         <publisher><code>1018</code><format>6</format></publisher>
222                         <pubdate><code>31</code><format>1</format></pubdate>
223                         <item_type><code>1001</code><format>1</format></item_type>
224                     </attrs>
225                 </biblios>
226
227                 <loc>
228                     <!-- LoC does not require username/password -->
229                     <name>loc</name>
230                     <host>z3950.loc.gov</host>
231                     <port>7090</port>
232                     <db>Voyager</db>
233                     <!-- fetch the full record with no holdings. FI is the most common choice -->
234                     <record_format>FI</record_format> 
235
236                     <!-- Record transmission format from the server.  Supported -->
237                     <!-- formats include usmarc and xml (for marcxml).         -->
238                     <transmission_format>usmarc</transmission_format> 
239
240                     <attrs>
241                         <tcn><code>12</code><format>1</format></tcn>
242                         <isbn><code>7</code><format>6</format></isbn>
243                         <lccn><code>9</code><format>1</format></lccn>
244                         <author><code>1003</code><format>6</format></author>
245                         <title><code>4</code><format>6</format></title>
246                         <issn><code>8</code><format>1</format></issn>
247                         <publisher><code>1018</code><format>6</format></publisher>
248                         <pubdate><code>31</code><format>1</format></pubdate>
249                         <item_type><code>1001</code><format>1</format></item_type>
250                     </attrs>
251                 </loc>
252
253                 <oclc>
254                     <!-- Z3950 settings for OCLC.  Note that OCLC requires username/password -->
255                     <host>zcat.oclc.org</host>
256                     <port>210</port>
257                     <db>OLUCWorldCat</db>
258                     <attrs>
259                         <!--
260                         These are directly from the Bib-1 Attribute Set
261                         http://www.loc.gov/z3950/agency/defns/bib1.html
262                         <code> is the "use attribute", <format> is the "structure attribute"
263                         This just puts some friendly names on the data.
264                         -->
265                         <tcn><code>12</code><format>1</format></tcn>
266                         <isbn><code>7</code><format>6</format></isbn>
267                         <lccn><code>9</code><format>1</format></lccn>
268                         <author><code>1003</code><format>6</format></author>
269                         <title><code>4</code><format>6</format></title>
270                         <issn><code>8</code><format>1</format></issn>
271                         <publisher><code>1018</code><format>6</format></publisher>
272                         <pubdate><code>31</code><format>1</format></pubdate>
273                         <item_type><code>1001</code><format>1</format></item_type>
274                     </attrs>
275                 </oclc>
276
277             </services>
278         </z3950>
279
280
281         <added_content>
282             <!-- load the OpenLibrary added content module -->
283             <module>OpenILS::WWW::AddedContent::OpenLibrary</module>
284
285             <!--
286             Max number of seconds to wait for an added content request to 
287             return data.  Data not returned within the timeout is considered
288             a failure.
289
290             Note that the pool of Apache processes used by the AddedContent
291             module is the same pool used by core Evergreen processes such as
292             search, circulation, etc. Therefore, the higher you set this
293             timeout value, the more likely you are to run out of available
294             Apache processes resulting in an accidental (or purposeful) denial
295             of service - particularly if the added content server starts
296             responding abnormally slowly.
297
298             The safest option is to disable the AddedContent module completely,
299             but 3 seconds is a compromise between the threat of a denial of
300             service and the enhanced user experience offered by successful added
301             content requests.
302             -->
303             <timeout>3</timeout>
304
305             <!--
306             After added content lookups have been disabled due to too many
307             lookup failures, this is the amount of time to wait before
308             we try again
309             -->
310             <retry_timeout>600</retry_timeout>
311
312             <!--
313             maximum number of consecutive lookup errors a given process can 
314             have before added content lookups are disabled for everyone
315             -->
316             <max_errors>15</max_errors>
317
318             <!-- If a userid is required to access the added content.. -->
319             <userid>MY_USER_ID</userid>
320
321             <!--
322             Base URL for Amazon added content fetching. Not needed by OpenLibrary
323             <base_url>http://images.amazon.com/images/P/</base_url>
324             -->
325
326             <!--
327             Segregating the details for ContentCafe out for easier use.  At some point, we
328             may want to support multiple services at one time.
329             -->
330             <ContentCafe>
331                 <userid>MY_USER_ID</userid>
332                 <password>MY_PASSWORD</password>
333
334                 <!--
335                 If no cover/jacket image exists for a given ISBN, then a value of T here will
336                 return an 80x120 pixel image containing the text "No Image Available".  A
337                 value of 1 will return a 1x1 pixel image.
338                 -->
339                 <return_behavior_on_no_jacket_image>T</return_behavior_on_no_jacket_image>
340             </ContentCafe>
341
342             <!--
343  
344             You can add free-form settings here and they will be accessible
345             within the added content module
346             -->
347
348         </added_content>
349
350         <!-- no apps are enabled globally by default -->
351         <activeapps/> 
352
353         <cache>
354             <!-- memcache servers -->
355             <global>
356                 <servers>
357                     <server>127.0.0.1:11211</server>
358                 </servers>
359                 <max_cache_time>86400</max_cache_time>
360             </global>
361             <anon>
362                 <!-- anonymous cache.  currently, primarily used for web session caching -->
363                 <servers>
364                     <server>127.0.0.1:11211</server>
365                 </servers>
366                 <max_cache_time>1800</max_cache_time>
367                 <!-- maximum size of a single cache entry / default = 100k-->
368                 <max_cache_size>102400</max_cache_size>
369             </anon>
370         </cache>
371
372         <apps>
373             <!-- Acquisitions server -->
374             <open-ils.acq>
375                 <!-- how long to wait between stateful requests before the child process re-joins the pool -->
376                 <keepalive>5</keepalive>
377                 <!-- true if this service support stateless requests -->
378                 <stateless>1</stateless>
379                 <!-- implementation language -->
380                 <language>perl</language>
381                 <!-- name of the library that implements this application -->
382                 <implementation>OpenILS::Application::Acq</implementation>
383                 <!-- maximum OpenSRF REQUEST within a stateful connection -->
384                 <max_requests>100</max_requests>
385                 <unix_config>
386                     <!--
387                     maximum number of top level requests coming to 
388                     this child before the child is recycled
389                     -->
390                     <max_requests>100</max_requests>
391                     <!-- min children to fork -->
392                     <min_children>1</min_children>
393                     <!-- max possible children to fork -->
394                     <max_children>15</max_children>
395                     <!--
396                     C forking implementation does not support 
397                     min/max idle children, but may in the future
398                     -->
399
400                     <!-- min idle children -->
401                     <min_spare_children>1</min_spare_children>
402                     <!-- max idle children -->
403                     <max_spare_children>5</max_spare_children>
404                     <!-- currently, only Perl uses the following 3 settings -->
405                     <unix_sock>open-ils.acq_unix.sock</unix_sock>
406                     <unix_pid>open-ils.acq_unix.pid</unix_pid>
407                     <unix_log>open-ils.acq_unix.log</unix_log>
408                 </unix_config>
409             </open-ils.acq>
410
411             <!-- Authentication server -->
412             <open-ils.auth>
413                 <keepalive>5</keepalive>
414                 <stateless>1</stateless>
415                 <language>c</language>
416                 <implementation>oils_auth.so</implementation>
417                 <unix_config>
418                     <max_requests>1000</max_requests>
419                     <min_children>1</min_children>
420                     <max_children>15</max_children>
421                     <min_spare_children>1</min_spare_children>
422                     <max_spare_children>5</max_spare_children>
423                 </unix_config>
424                 <app_settings>
425                     <!-- defined app-specific settings here -->
426                     <default_timeout>
427                         <!-- default login timeouts based on login type -->
428                         <opac>420</opac>
429                         <staff>7200</staff>
430                         <temp>300</temp>
431                         <persist>2 weeks</persist>
432                     </default_timeout>
433                     <auth_limits>
434                         <seed>30</seed> <!-- amount of time a seed request is valid for -->
435                         <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
436                         <block_count>10</block_count> <!-- number of failures before blocking access -->
437                     </auth_limits>
438                 </app_settings>
439             </open-ils.auth>
440
441             <!-- Generic search server -->
442             <open-ils.search>
443                 <keepalive>5</keepalive>
444                 <stateless>1</stateless>
445                 <language>perl</language>
446                 <implementation>OpenILS::Application::Search</implementation>
447                 <max_requests>93</max_requests>
448                 <unix_config>
449                     <unix_sock>open-ils.search_unix.sock</unix_sock>
450                     <unix_pid>open-ils.search_unix.pid</unix_pid>
451                     <unix_log>open-ils.search_unix.log</unix_log>
452
453                     <max_requests>1000</max_requests>
454                     <min_children>1</min_children>
455                     <max_children>15</max_children>
456                     <min_spare_children>1</min_spare_children>
457                     <max_spare_children>5</max_spare_children>
458                 </unix_config>
459                 <app_settings>
460                     <marc_html_xsl>oilsMARC21slim2HTML.xsl</marc_html_xsl>
461                     <marc_html_xsl_slim>oilsMARC21slim2HTMLslim.xsl</marc_html_xsl_slim>
462
463                     <spelling_dictionary>
464                         <!-- 
465                             Optionally configure different dictionaries depending on search context.  
466                             If no dictionaries are defined, the default Aspell dictionary is used.
467                         -->
468                         <!--
469                         <default>LOCALSTATEDIR/data/default_dict.txt</default>
470                         <title>LOCALSTATEDIR/data/title_dict.txt</title>
471                         <author>LOCALSTATEDIR/data/author_dict.txt</author>
472                         <subject>LOCALSTATEDIR/data/subject_dict.txt</subject>
473                         <series>LOCALSTATEDIR/data/series_dict.txt</series>
474                         -->
475                     </spelling_dictionary>
476
477                     <!-- Default to using staged search -->
478                     <use_staged_search>true</use_staged_search>
479
480                     <!--
481                         For staged search, we estimate hits based on inclusion or exclusion.
482
483                         Valid settings:
484                             inclusion - visible ratio on superpage
485                             exclusion - excluded ratio on superpage
486                             delete_adjusted_inclusion - included ratio on superpage, ratio adjusted by deleted count
487                             delete_adjusted_exclusion - excluded ratio on superpage, ratio adjusted by deleted count
488
489                         Under normal circumstances, inclusion is the best strategy, and both delete_adjusted variants
490                         will return the same value +/- 1.  The exclusion strategy is the original, and works well
491                         when there are few deleted or excluded records, in other words, when the superpage is not
492                         sparsely populated with visible records.
493                     -->
494                     <estimation_strategy>inclusion</estimation_strategy>
495
496                     <!--
497                         Evergreen uses a cover density algorithm for calculating relative ranking of matches.  There
498                         are several tuning parameters and options available.  By default, no document length normalization
499                         is applied.  From the Postgres documentation on ts_rank_cd() (the function used by Evergreen):
500
501                             Since a longer document has a greater chance of containing a query term it is reasonable 
502                             to take into account document size, e.g., a hundred-word document with five instances of 
503                             a search word is probably more relevant than a thousand-word document with five instances. 
504                             Both ranking functions take an integer normalization option that specifies whether and how 
505                             a document's length should impact its rank. The integer option controls several behaviors, 
506                             so it is a bit mask: you can specify one or more behaviors using | (for example, 2|4).
507
508                                 0 (the default) ignores the document length
509
510                                 1 divides the rank by 1 + the logarithm of the document length
511
512                                 2 divides the rank by the document length
513
514                                 4 divides the rank by the mean harmonic distance between extents (this is implemented only by ts_rank_cd)
515
516                                 8 divides the rank by the number of unique words in document
517
518                                 16 divides the rank by 1 + the logarithm of the number of unique words in document
519
520                                 32 divides the rank by itself + 1
521
522                             If more than one flag bit is specified, the transformations are applied in the order listed.
523
524                             It is important to note that the ranking functions do not use any global information, so it 
525                             is impossible to produce a fair normalization to 1% or 100% as sometimes desired. Normalization 
526                             option 32 (rank/(rank+1)) can be applied to scale all ranks into the range zero to one, but of 
527                             course this is just a cosmetic change; it will not affect the ordering of the search results.
528
529                         In Evergreen, these options are set via search modifiers.  The modifiers are mapped in the
530                         following way:
531
532                             * #CD_logDocumentLength  => 1  :: rank / (1 + LOG(total_word_count))   :: Longer documents slightly less relevant
533                             * #CD_documentLength     => 2  :: rank / total_word_count              :: Longer documents much less relevant
534                             * #CD_meanHarmonic       => 4  :: Word Proximity                       :: Greater matched-word distance is less relevant
535                             * #CD_uniqueWords        => 8  :: rank / unique_word_count             :: Documents with repeated words much less relevant
536                             * #CD_logUniqueWords     => 16 :: rank / (1 + LOG(unique_word_count))  :: Documents with repeated words slightly less relevant
537                             * #CD_selfPlusOne        => 32 :: rank / (1 + rank)                    :: Cosmetic normalization of rank value between 0 and 1
538
539                         Adding one or more of these to the default_CD_modifiers list will cause all searches that use QueryParser to apply them.
540                     -->
541                     <default_CD_modifiers>#CD_documentLength #CD_meanHarmonic #CD_uniqueWords</default_CD_modifiers>
542
543                     <!--
544                         default_preferred_language
545                             Set the global, default preferred languange
546                     -->
547                     <default_preferred_language>eng</default_preferred_language>
548
549                     <!--
550                         default_preferred_language_weight
551                             Set the weight (higher is "better") for the preferred language. Comment out to remove all lanuage weighting by default.
552                     -->
553                     <default_preferred_language_weight>5</default_preferred_language_weight>
554
555                     <!-- Baseline number of records to check for hit estimation. -->
556                     <superpage_size>1000</superpage_size>
557
558                     <!-- How many superpages to consider for searching overall. -->
559                     <max_superpages>10</max_superpages>
560
561                     <!-- zip code database file -->
562                     <!--<zips_file>LOCALSTATEDIR/data/zips.txt</zips_file>-->
563                 </app_settings>
564             </open-ils.search>
565
566             <!-- server for accessing user info -->
567             <open-ils.actor>
568                 <keepalive>5</keepalive>
569                 <stateless>1</stateless>
570                 <language>perl</language>
571                 <implementation>OpenILS::Application::Actor</implementation>
572                 <max_requests>93</max_requests>
573                 <unix_config>
574                     <unix_sock>open-ils.actor_unix.sock</unix_sock>
575                     <unix_pid>open-ils.actor_unix.pid</unix_pid>
576                     <max_requests>1000</max_requests>
577                     <unix_log>open-ils.actor_unix.log</unix_log>
578                     <min_children>1</min_children>
579                     <max_children>15</max_children>
580                     <min_spare_children>1</min_spare_children>
581                     <max_spare_children>5</max_spare_children>
582                 </unix_config>
583                 <!-- set this to 'true' to have barcode search also search patron records by unique ID -->
584                 <app_settings>
585                     <id_as_barcode>false</id_as_barcode>
586                 </app_settings>
587
588             </open-ils.actor>
589
590             <open-ils.booking>
591                 <keepalive>5</keepalive>
592                 <stateless>1</stateless>
593                 <language>perl</language>
594                 <implementation>OpenILS::Application::Booking</implementation>
595                 <max_requests>199</max_requests>
596                 <unix_config>
597                     <unix_sock>open-ils.booking_unix.sock</unix_sock>
598                     <unix_pid>open-ils.booking_unix.pid</unix_pid>
599                     <max_requests>1000</max_requests>
600                     <unix_log>open-ils.booking_unix.log</unix_log>
601                     <min_children>1</min_children>
602                     <max_children>15</max_children>
603                     <min_spare_children>1</min_spare_children>
604                     <max_spare_children>5</max_spare_children>
605                 </unix_config>
606                 <app_settings>
607                 </app_settings>
608             </open-ils.booking>
609
610             <open-ils.cat>
611                 <keepalive>5</keepalive>
612                 <stateless>1</stateless>
613                 <language>perl</language>
614                 <implementation>OpenILS::Application::Cat</implementation>
615                 <max_requests>199</max_requests>
616                 <unix_config>
617                     <unix_sock>open-ils.cat_unix.sock</unix_sock>
618                     <unix_pid>open-ils.cat_unix.pid</unix_pid>
619                     <max_requests>1000</max_requests>
620                     <unix_log>open-ils.cat_unix.log</unix_log>
621                     <min_children>1</min_children>
622                     <max_children>15</max_children>
623                     <min_spare_children>1</min_spare_children>
624                     <max_spare_children>5</max_spare_children>
625                 </unix_config>
626                 <app_settings>
627                     <marctemplates>
628                         <K_book>LOCALSTATEDIR/templates/marc/k_book.xml</K_book>
629                     </marctemplates>
630                 </app_settings>
631             </open-ils.cat>
632
633             <open-ils.supercat>
634                 <keepalive>5</keepalive>
635                 <stateless>1</stateless>
636                 <language>perl</language>
637                 <implementation>OpenILS::Application::SuperCat</implementation>
638                 <max_requests>199</max_requests>
639                 <unix_config>
640                     <unix_sock>open-ils.supercat_unix.sock</unix_sock>
641                     <unix_pid>open-ils.supercat_unix.pid</unix_pid>
642                     <max_requests>1000</max_requests>
643                     <unix_log>open-ils.supercat_unix.log</unix_log>
644                     <min_children>1</min_children>
645                     <max_children>15</max_children>
646                     <min_spare_children>1</min_spare_children>
647                     <max_spare_children>5</max_spare_children>
648                 </unix_config>
649             </open-ils.supercat>
650
651             <!-- server for accessing user info -->
652             <open-ils.trigger>
653                 <keepalive>5</keepalive>
654                 <stateless>1</stateless>
655                 <language>perl</language>
656                 <implementation>OpenILS::Application::Trigger</implementation>
657                 <max_requests>93</max_requests>
658                 <unix_config>
659                     <unix_sock>open-ils.trigger_unix.sock</unix_sock>
660                     <unix_pid>open-ils.trigger_unix.pid</unix_pid>
661                     <max_requests>1000</max_requests>
662                     <unix_log>open-ils.trigger_unix.log</unix_log>
663                     <min_children>1</min_children>
664                     <max_children>15</max_children>
665                     <min_spare_children>1</min_spare_children>
666                     <max_spare_children>5</max_spare_children>
667                 </unix_config>
668                 <app_settings>
669                     <!-- number of parallel open-ils.trigger processes to use for collection and reaction -->
670                     <!--
671                     <parallel>
672                         <collect>3</collect>
673                         <react>3</react>
674                     </parallel>
675                     -->
676                 </app_settings>
677             </open-ils.trigger>
678
679             <opensrf.math>
680                 <keepalive>3</keepalive>
681                 <stateless>1</stateless>
682                 <language>c</language>
683                 <implementation>osrf_math.so</implementation>
684                 <unix_config>
685                     <unix_sock>opensrf.math_unix.sock</unix_sock>
686                     <unix_pid>opensrf.math_unix.pid</unix_pid>
687                     <max_requests>1000</max_requests>
688                     <unix_log>opensrf.math_unix.log</unix_log>
689                     <min_children>1</min_children>
690                     <max_children>15</max_children>
691                     <min_spare_children>1</min_spare_children>
692                     <max_spare_children>5</max_spare_children>
693                 </unix_config>
694             </opensrf.math>
695
696             <opensrf.dbmath> 
697                 <keepalive>3</keepalive>
698                 <stateless>1</stateless>
699                 <language>c</language>
700                 <implementation>osrf_dbmath.so</implementation>
701                 <unix_config>
702                     <max_requests>1000</max_requests>
703                     <unix_log>opensrf.dbmath_unix.log</unix_log>
704                     <unix_sock>opensrf.dbmath_unix.sock</unix_sock>
705                     <unix_pid>opensrf.dbmath_unix.pid</unix_pid>
706                     <min_children>1</min_children>
707                     <max_children>15</max_children>
708                     <min_spare_children>1</min_spare_children> 
709                     <max_spare_children>5</max_spare_children>
710                 </unix_config>
711             </opensrf.dbmath>
712
713             <open-ils.penalty>
714                 <keepalive>3</keepalive>
715                 <stateless>1</stateless>
716                 <language>perl</language>
717                 <implementation>OpenILS::Application::Penalty</implementation>
718                 <max_requests>99</max_requests>
719                 <unix_config>
720                     <max_requests>1000</max_requests>
721                     <unix_log>open-ils.penalty_unix.log</unix_log>
722                     <unix_sock>open-ils.penalty_unix.sock</unix_sock>
723                     <unix_pid>open-ils.penalty_unix.pid</unix_pid>
724                     <min_children>1</min_children>
725                     <max_children>15</max_children>
726                     <min_spare_children>1</min_spare_children>
727                     <max_spare_children>5</max_spare_children>
728                 </unix_config>
729                 <app_settings>
730                     <patron_penalty>penalty/patron_penalty.js</patron_penalty>
731                     <script_path>LIBDIR/javascript</script_path>
732                     <script_path>LOCALSTATEDIR</script_path>
733                     <script_path>LOCALSTATEDIR/catalog</script_path>
734                 </app_settings>
735             </open-ils.penalty>
736
737             <open-ils.circ> 
738                 <keepalive>3</keepalive>
739                 <stateless>1</stateless>
740                 <language>perl</language>
741                 <implementation>OpenILS::Application::Circ</implementation>
742                 <max_requests>99</max_requests>
743                 <unix_config>
744                     <max_requests>1000</max_requests>
745                     <unix_log>open-ils.circ_unix.log</unix_log>
746                     <unix_sock>open-ils.circ_unix.sock</unix_sock>
747                     <unix_pid>open-ils.circ_unix.pid</unix_pid>
748                     <min_children>1</min_children>
749                     <max_children>15</max_children>
750                     <min_spare_children>1</min_spare_children> 
751                     <max_spare_children>5</max_spare_children>
752                 </unix_config>
753                 <app_settings>
754                     <notify_hold>
755                         <email>false</email> <!-- set to false to disable hold notice emails -->
756                     </notify_hold>
757
758                     <!-- circulation policy scripts -->
759                     <script_path>LIBDIR/javascript</script_path>
760                     <script_path>LOCALSTATEDIR</script_path>
761                     <script_path>LOCALSTATEDIR/catalog</script_path>
762                     <legacy_script_support>false</legacy_script_support>
763                     <scripts> 
764                         <circ_permit_patron>circ/circ_permit_patron.js</circ_permit_patron>
765                         <circ_permit_copy>circ/circ_permit_copy.js</circ_permit_copy>
766                         <circ_duration>circ/circ_duration.js</circ_duration>
767                         <circ_recurring_fines>circ/circ_recurring_fines.js</circ_recurring_fines>
768                         <circ_max_fines>circ/circ_max_fines.js</circ_max_fines>
769                         <circ_permit_renew>circ/circ_permit_renew.js</circ_permit_renew>
770                         <circ_permit_hold>circ/circ_permit_hold.js</circ_permit_hold>
771                     </scripts>               
772
773                     <circ_modifiers>
774                         <mod>art</mod>
775                         <mod>atlas</mod>
776                         <mod>audiobook</mod>
777                         <mod>av</mod>
778                         <mod>new-av</mod>
779                         <mod>bestseller</mod>
780                         <mod>bestsellernh</mod>
781                         <mod>book</mod>
782                         <mod>cd</mod>
783                         <mod>dvd</mod>
784                         <mod>dvd-long</mod>
785                         <mod>e-book</mod>
786                         <mod>equipment</mod>
787                         <mod>filmstrip</mod>
788                         <mod>kit</mod>
789                         <mod>magazine</mod>
790                         <mod>map</mod>
791                         <mod>microform</mod>
792                         <mod>music</mod>
793                         <mod>record</mod>
794                         <mod>software</mod>
795                         <mod>softwrlong</mod>
796                         <mod>equip-long</mod>
797                         <mod>talking book</mod>
798                         <mod>toy</mod>
799                         <mod>video</mod>
800                         <mod>video-long</mod>
801                     </circ_modifiers>
802
803                     <billing_types>
804                         <type>Miscellaneous</type>
805                         <type>Overdue materials</type>
806                         <type>Fee for placing a hold</type>
807                         <type>Fee for checking out a book</type>
808                         <type>Fee for library card</type>
809                         <type>Miscellaneous charges</type>
810                         <type>Lost materials</type>
811                         <type>Damaged material</type>
812                         <type>Overdue Reserves charge</type>
813                         <type>Recall overdue</type>
814                         <type>Fee for processing lost library materials</type>
815                         <type>Fee for sending patron bills to collection agency</type>
816                         <type>Fee for interlibrary loan</type>
817                         <type>Fee for copies</type>
818                         <type>Money advanced to pay for telephone use</type>
819                         <type>Deposit fee</type>
820                         <type>Fee for disk</type>
821                         <type>Fee for faxing</type>
822                         <type>Fee for laminating</type>
823                         <type>Fee for room cleaning</type>
824                         <type>Deposit returned; fee refund</type>
825                         <type>Sale items</type>
826                         <type>Fee for lost card</type>
827                         <type>Long overdue items</type>
828                         <type>Lost/Replacement Cassette</type>
829                         <type>Returned Check</type>
830                     </billing_types>
831                 </app_settings>
832             </open-ils.circ>
833
834             <open-ils.ingest>
835                 <keepalive>3</keepalive>
836                 <stateless>1</stateless>
837                 <implementation>OpenILS::Application::Ingest</implementation>
838                 <language>perl</language>
839                 <max_requests>1000000</max_requests>
840                 <unix_config>
841                     <max_requests>1000000</max_requests>
842                     <unix_log>open-ils.ingest-unix.log</unix_log>
843                     <unix_sock>open-ils.ingest-unix.sock</unix_sock>
844                     <unix_pid>open-ils.ingest-unix.pid</unix_pid>
845                     <min_children>5</min_children>
846                     <max_children>20</max_children>
847                     <min_spare_children>2</min_spare_children>
848                     <max_spare_children>5</max_spare_children>
849                 </unix_config>
850                 <app_settings>
851                     <script_path>LIBDIR/javascript/</script_path>
852                     <script_path>LOCALSTATEDIR/catalog/</script_path>
853                     <script_path>LOCALSTATEDIR/web/opac/common/js/</script_path>
854                     <scripts>
855                         <biblio_fingerprint>biblio_fingerprint.js</biblio_fingerprint>
856                         <biblio_descriptor>biblio_descriptor.js</biblio_descriptor>
857                     </scripts>
858                 </app_settings>
859             </open-ils.ingest>
860
861             <open-ils.storage>
862                 <keepalive>10</keepalive>
863                 <stateless>1</stateless>
864                 <language>perl</language>
865                 <implementation>OpenILS::Application::Storage</implementation>
866                 <unix_config>
867                     <max_requests>1000</max_requests>
868                     <unix_log>open-ils.storage_unix.log</unix_log>
869                     <unix_sock>open-ils.storage_unix.sock</unix_sock>
870                     <unix_pid>open-ils.storage_unix.pid</unix_pid>
871                     <min_children>1</min_children>
872                     <max_children>10</max_children>
873                     <min_spare_children>1</min_spare_children>
874                     <max_spare_children>5</max_spare_children>
875                 </unix_config>
876                 <app_settings>
877                     <script_path>LIBDIR/javascript/</script_path>
878                     <script_path>LOCALSTATEDIR/catalog/</script_path>
879                     <scripts>
880                         <biblio_fingerprint>biblio_fingerprint.js</biblio_fingerprint>
881                     </scripts>
882                     <databases>
883                         <driver>Pg</driver>
884                         <database>
885                             <type>master</type>
886                             <weight>2</weight>
887                             <user>postgres</user>
888                             <host>localhost</host>
889                             <port>5432</port>
890                             <pw>postgres</pw>
891                             <db>evergreen</db>
892                             <client_encoding>UTF-8</client_encoding>
893                         </database>
894                     </databases>
895                 </app_settings>
896             </open-ils.storage>
897
898             <open-ils.cstore>
899                 <keepalive>6</keepalive>
900                 <stateless>1</stateless>
901                 <language>C</language>
902                 <implementation>oils_cstore.so</implementation>
903                 <unix_config>
904                     <max_requests>1000</max_requests>
905                     <min_children>1</min_children>
906                     <max_children>15</max_children>
907                     <min_spare_children>1</min_spare_children>
908                     <max_spare_children>5</max_spare_children>
909                 </unix_config>
910                 <app_settings>
911                     <max_query_recursion>100</max_query_recursion>
912                     <driver>pgsql</driver>
913                     <database>
914                         <type>master</type>
915                         <weight>2</weight>
916                         <user>postgres</user>
917                         <host>localhost</host>
918                         <port>5432</port>
919                         <pw>postgres</pw>
920                         <db>evergreen</db>
921                         <client_encoding>UTF-8</client_encoding>
922                     </database>
923                 </app_settings>
924             </open-ils.cstore>
925
926             <open-ils.pcrud>
927                 <keepalive>6</keepalive>
928                 <migratable>1</migratable>
929                 <stateless>1</stateless>
930                 <language>C</language>
931                 <implementation>oils_pcrud.so</implementation>
932
933                 <unix_config>
934                     <unix_log>open-ils.pcrud.log</unix_log>
935                     <unix_sock>open-ils.pcrud.sock</unix_sock>
936                     <unix_pid>open-ils.pcrud.pid</unix_pid>
937                     <max_requests>1000</max_requests>
938                     <min_children>1</min_children>
939                     <max_children>15</max_children>
940                     <min_spare_children>1</min_spare_children>
941                     <max_spare_children>5</max_spare_children>
942                 </unix_config>
943
944                 <app_settings>
945                     <IDL>SYSCONFDIR/fm_IDL.xml</IDL>
946                     <driver>pgsql</driver>
947                     <database>
948                         <type>master</type>
949                         <weight>2</weight>
950                         <user>postgres</user>
951                         <host>localhost</host>
952                         <port>5432</port>
953                         <pw>postgres</pw>
954                         <db>evergreen</db>
955                         <client_encoding>UTF-8</client_encoding>
956                     </database>
957                 </app_settings>
958             </open-ils.pcrud>
959
960             <open-ils.qstore>
961                 <keepalive>6</keepalive>
962                 <stateless>1</stateless>
963                 <language>C</language>
964                 <implementation>oils_qstore.so</implementation>
965                 <unix_config>
966                     <max_requests>1000</max_requests>
967                     <min_children>1</min_children>
968                     <max_children>15</max_children>
969                     <min_spare_children>1</min_spare_children>
970                     <max_spare_children>5</max_spare_children>
971                 </unix_config>
972                 <app_settings>
973                     <driver>pgsql</driver>
974                     <database>
975                         <type>master</type>
976                         <weight>2</weight>
977                         <user>postgres</user>
978                         <host>localhost</host>
979                         <port>5432</port>
980                         <pw>postgres</pw>
981                         <db>evergreen</db>
982                         <client_encoding>UTF-8</client_encoding>
983                     </database>
984                 </app_settings>
985             </open-ils.qstore>
986
987             <opensrf.settings>
988                 <keepalive>1</keepalive>
989                 <stateless>1</stateless>
990                 <language>perl</language>
991                 <implementation>OpenSRF::Application::Settings</implementation>
992                 <max_requests>17</max_requests>
993                 <unix_config>
994                     <unix_sock>opensrf.settings_unix.sock</unix_sock>
995                     <unix_pid>opensrf.settings_unix.pid</unix_pid>
996                     <max_requests>300</max_requests>
997                     <unix_log>opensrf.settings_unix.log</unix_log>
998                     <min_children>5</min_children>
999                     <max_children>15</max_children>
1000                     <min_spare_children>3</min_spare_children>
1001                     <max_spare_children>5</max_spare_children>
1002                 </unix_config>
1003             </opensrf.settings>
1004
1005             <open-ils.collections>
1006                 <keepalive>3</keepalive>
1007                 <stateless>1</stateless>
1008                 <language>perl</language>
1009                 <implementation>OpenILS::Application::Collections</implementation>
1010                 <max_requests>17</max_requests>
1011                 <unix_config>
1012                     <unix_sock>open-ils.collections_unix.sock</unix_sock>
1013                     <unix_pid>open-ils.collections_unix.pid</unix_pid>
1014                     <max_requests>1000</max_requests>
1015                     <unix_log>open-ils.collections_unix.log</unix_log>
1016                     <min_children>1</min_children>
1017                     <max_children>10</max_children>
1018                     <min_spare_children>1</min_spare_children>
1019                     <max_spare_children>5</max_spare_children>
1020                 </unix_config>
1021             </open-ils.collections>
1022
1023             <open-ils.reporter>
1024                 <keepalive>3</keepalive>
1025                 <stateless>1</stateless>
1026                 <language>perl</language>
1027                 <implementation>OpenILS::Application::Reporter</implementation>
1028                 <max_requests>99</max_requests>
1029                 <unix_config>
1030                     <unix_sock>open-ils.reporter_unix.sock</unix_sock>
1031                     <unix_pid>open-ils.reporter_unix.pid</unix_pid>
1032                     <max_requests>1000</max_requests>
1033                     <unix_log>open-ils.reporter_unix.log</unix_log>
1034                     <min_children>1</min_children>
1035                     <max_children>10</max_children>
1036                     <min_spare_children>1</min_spare_children>
1037                     <max_spare_children>5</max_spare_children>
1038                 </unix_config>
1039             </open-ils.reporter>
1040
1041             <open-ils.reporter-store>
1042                 <keepalive>6</keepalive>
1043                 <stateless>1</stateless>
1044                 <language>C</language>
1045                 <implementation>oils_rstore.so</implementation>
1046                 <unix_config>
1047                     <max_requests>400</max_requests>
1048                     <min_children>1</min_children>
1049                     <max_children>10</max_children>
1050                     <min_spare_children>1</min_spare_children>
1051                     <max_spare_children>5</max_spare_children>
1052                 </unix_config>
1053                 <app_settings>
1054                     <driver>pgsql</driver>
1055                     <database>
1056                         <type>master</type>
1057                         <weight>2</weight>
1058                         <user>postgres</user>
1059                         <host>localhost</host>
1060                         <port>5432</port>
1061                         <pw>postgres</pw>
1062                         <db>evergreen</db>
1063                         <client_encoding>UTF-8</client_encoding>
1064                     </database>
1065                 </app_settings>
1066             </open-ils.reporter-store>
1067
1068 <!--
1069            <open-ils.resolver>
1070                <keepalive>3</keepalive>
1071                <stateless>1</stateless>
1072                <language>perl</language>
1073                <implementation>OpenILS::Application::ResolverResolver</implementation>
1074                <max_requests>93</max_requests>
1075                <unix_config>
1076                   <unix_sock>open-ils.resolver_unix.sock</unix_sock>
1077                   <unix_pid>open-ils.resolver_unix.pid</unix_pid>
1078                   <max_requests>1000</max_requests>
1079                   <unix_log>open-ils.resolver_unix.log</unix_log>
1080                   <min_children>5</min_children>
1081                   <max_children>15</max_children>
1082                   <min_spare_children>3</min_spare_children>
1083                   <max_spare_children>5</max_spare_children>
1084                </unix_config>
1085                <app_settings>
1086                   <cache_timeout>86400</cache_timeout>
1087                   <default_url_base>http://path/to/sfx</default_url_base>
1088                </app_settings>
1089             </open-ils.resolver>
1090 -->
1091
1092             <open-ils.permacrud>
1093                <keepalive>3</keepalive>
1094                <stateless>1</stateless>
1095                <language>perl</language>
1096                <implementation>OpenILS::Application::PermaCrud</implementation>
1097                <max_requests>17</max_requests>
1098                <unix_config>
1099                   <unix_sock>open-ils.permacrud_unix.sock</unix_sock>
1100                   <unix_pid>open-ils.permacrud_unix.pid</unix_pid>
1101                   <max_requests>1000</max_requests>
1102                   <unix_log>open-ils.permacrud_unix.log</unix_log>
1103                   <min_children>5</min_children>
1104                   <max_children>15</max_children>
1105                   <min_spare_children>3</min_spare_children>
1106                   <max_spare_children>5</max_spare_children>
1107                </unix_config>
1108             </open-ils.permacrud>
1109
1110             <open-ils.fielder>
1111                <keepalive>3</keepalive>
1112                <stateless>1</stateless>
1113                <language>perl</language>
1114                <implementation>OpenILS::Application::Fielder</implementation>
1115                <max_requests>17</max_requests>
1116                <unix_config>
1117                   <unix_sock>open-ils.fielder_unix.sock</unix_sock>
1118                   <unix_pid>open-ils.fielder_unix.pid</unix_pid>
1119                   <max_requests>1000</max_requests>
1120                   <unix_log>open-ils.fielder_unix.log</unix_log>
1121                   <min_children>5</min_children>
1122                   <max_children>15</max_children>
1123                   <min_spare_children>3</min_spare_children>
1124                   <max_spare_children>5</max_spare_children>
1125                </unix_config>
1126             </open-ils.fielder>
1127
1128             <open-ils.vandelay>
1129                 <keepalive>5</keepalive>
1130                 <stateless>1</stateless>
1131                 <language>perl</language>
1132                 <implementation>OpenILS::Application::Vandelay</implementation>
1133                 <max_requests>100</max_requests>
1134                 <unix_config>
1135                     <unix_sock>vandelay_unix.sock</unix_sock>
1136                     <unix_pid>vandelay_unix.pid</unix_pid>
1137                     <unix_log>vandelay_unix.log</unix_log>
1138                     <max_requests>100</max_requests>
1139                     <min_children>1</min_children>
1140                     <max_children>15</max_children>
1141                     <min_spare_children>1</min_spare_children>
1142                     <max_spare_children>5</max_spare_children>
1143                 </unix_config>
1144                 <app_settings>
1145                     <databases>
1146                         <!-- temporary location for MARC import files.  
1147                             Files will be deleted after records are spooled.
1148                             *note:  in a multi-brick environment, this will need to
1149                             be on a write-able NFS share.  -->
1150                         <importer>/tmp</importer>
1151                     </databases>
1152                 </app_settings>
1153             </open-ils.vandelay>
1154
1155             <open-ils.serial>
1156                 <keepalive>3</keepalive>
1157                 <stateless>1</stateless>
1158                 <language>perl</language>
1159                 <implementation>OpenILS::Application::Serial</implementation>
1160                 <max_requests>17</max_requests>
1161                 <unix_config>
1162                     <unix_sock>open-ils.serial_unix.sock</unix_sock>
1163                     <unix_pid>open-ils.serial_unix.pid</unix_pid>
1164                     <max_requests>1000</max_requests>
1165                     <unix_log>open-ils.serial_unix.log</unix_log>
1166                     <min_children>5</min_children>
1167                     <max_children>15</max_children>
1168                     <min_spare_children>3</min_spare_children>
1169                     <max_spare_children>5</max_spare_children>
1170                 </unix_config>
1171                 <app_settings>
1172                 </app_settings>
1173             </open-ils.serial>
1174
1175         </apps>
1176     </default>
1177
1178     <hosts>
1179
1180         <localhost> 
1181             <!-- ^-=- 
1182             Should match the fully qualified domain name of the host.
1183
1184             On Linux, the output of the following command is authoritative:
1185             $ perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";'
1186
1187             To use 'localhost' instead, run osrf_ctl.sh with the -l flag
1188             -->
1189
1190             <activeapps>
1191                 <!-- services hosted on this machine -->
1192                 <appname>opensrf.settings</appname> 
1193                 <appname>opensrf.math</appname> 
1194                 <appname>opensrf.dbmath</appname> 
1195                 <appname>open-ils.acq</appname> 
1196                 <appname>open-ils.booking</appname>
1197                 <appname>open-ils.cat</appname> 
1198                 <appname>open-ils.supercat</appname> 
1199                 <appname>open-ils.search</appname> 
1200                 <appname>open-ils.circ</appname> 
1201                 <appname>open-ils.actor</appname> 
1202                 <appname>open-ils.auth</appname> 
1203                 <appname>open-ils.storage</appname>  
1204                 <appname>open-ils.penalty</appname>  
1205                 <appname>open-ils.cstore</appname>  
1206                 <appname>open-ils.collections</appname>  
1207                 <appname>open-ils.ingest</appname>  
1208                 <appname>open-ils.reporter</appname>  
1209                 <appname>open-ils.reporter-store</appname>  
1210                 <!-- <appname>open-ils.resolver</appname> -->
1211                 <appname>open-ils.permacrud</appname>  
1212                 <appname>open-ils.pcrud</appname>  
1213                 <appname>open-ils.trigger</appname>  
1214                 <appname>open-ils.fielder</appname>  
1215                 <appname>open-ils.vandelay</appname>  
1216                 <appname>open-ils.serial</appname>  
1217             </activeapps>
1218         </localhost>
1219     </hosts>
1220
1221 </opensrf>