]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/examples/opensrf.xml.example
LP#1435494: set limits on Clark Kent's resource usage
[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                 <!-- Number of reports that can be processed simultaneously.  This
178                      value can overriden by the -c/-concurrency command-line switch
179                      of clark-kent.pl.
180                 -->
181                 <parallel>1</parallel>
182                 <!-- Maximum number of rows in the query results allowed before
183                      Clark will refuse to draw a pie, bar, or line chart.  This
184                      value can be overriden by the -max-rows-for-charts command-line
185                      switch of clark-kent.pl.
186                 -->
187                 <max_rows_for_charts>1000</max_rows_for_charts>
188                 <!-- Maximum amount of time (in minutes) that an SQL query initiated
189                      by Clark Kent will be allowed to run before it is terminated.
190                      This value can be overriden by the -statement-timeout
191                      command-line switch of clark-kent.pl.
192                 -->
193                 <statement_timeout>60</statement_timeout>
194                 <!-- Maximum number of results permitted.  If set to a numeric value,
195                      Clark will limit the number of rows returned by report queries
196                      to this value.  Note that it will not be apparent to a user
197                      running a report from the staff interface that their report
198                      has been limited in this fashion.  This setting can be
199                      overriden by the -resultset-limit command-line switch of
200                      clark-kent.pl.
201                 -->
202                 <resultset_limit></resultset_limit>
203             </setup>
204         </reporter>
205
206
207
208         <xml-rpc>
209             <!-- XML-RPC gateway.  Do NOT publish unprotected services here -->
210             <allowed_services>
211                 <!-- list of published services -->
212                 <service>opensrf.math</service>
213                 <service>opensrf.dbmath</service>
214                 <service>open-ils.cat</service>
215                 <service>open-ils.search</service>
216                 <service>open-ils.circ</service>
217                 <service>open-ils.actor</service>
218                 <service>open-ils.auth</service>
219                 <service>open-ils.auth_proxy</service>
220                 <service>open-ils.collections</service>
221                 <service>open-ils.justintime</service>
222             </allowed_services>
223         </xml-rpc>
224
225         <!--
226         Once upon a time, Z39.50 servers were defined here. As of Evergreen 2.2,
227         they are now defined in the database. See the Release Notes for
228         instructions on mapping the old XML entries to database tables.
229         -->
230
231         <added_content>
232             <!-- load the OpenLibrary added content module -->
233             <module>OpenILS::WWW::AddedContent::OpenLibrary</module>
234
235             <!--
236             Max number of seconds to wait for an added content request to 
237             return data.  Data not returned within the timeout is considered
238             a failure.
239
240             Note that the pool of Apache processes used by the AddedContent
241             module is the same pool used by core Evergreen processes such as
242             search, circulation, etc. Therefore, the higher you set this
243             timeout value, the more likely you are to run out of available
244             Apache processes resulting in an accidental (or purposeful) denial
245             of service - particularly if the added content server starts
246             responding abnormally slowly.
247
248             The safest option is to disable the AddedContent module completely,
249             but 3 seconds is a compromise between the threat of a denial of
250             service and the enhanced user experience offered by successful added
251             content requests.
252             -->
253             <timeout>3</timeout>
254
255             <!--
256             After added content lookups have been disabled due to too many
257             lookup failures, this is the amount of time to wait before
258             we try again
259             -->
260             <retry_timeout>600</retry_timeout>
261
262             <!--
263             maximum number of consecutive lookup errors a given process can 
264             have before added content lookups are disabled for everyone
265             -->
266             <max_errors>15</max_errors>
267
268             <!-- If a userid is required to access the added content.. -->
269             <userid>MY_USER_ID</userid>
270
271             <!--
272             Base URL for Amazon added content fetching. Not needed by OpenLibrary
273             <base_url>http://images.amazon.com/images/P/</base_url>
274             -->
275
276             <!--
277             Segregating the details for ContentCafe out for easier use.  At some point, we
278             may want to support multiple services at one time.
279             -->
280             <ContentCafe>
281                 <userid>MY_USER_ID</userid>
282                 <password>MY_PASSWORD</password>
283
284                 <!--
285                 Which order to put identifiers in.
286                 Default is "isbn,upc", ignoring currently unsupported issn.
287                 Should be all lowercase.
288                 Remove an identifier from the list to skip it.
289                 -->
290                 <identifier_order>isbn,upc</identifier_order>
291             </ContentCafe>
292
293             <!--
294  
295             You can add free-form settings here and they will be accessible
296             within the added content module
297             -->
298
299         </added_content>
300
301         <!-- Config section for acq_order_reader.pl script.
302              It reads MARC order record files from disk (presumably
303              an FTP destination) and pushes the order records into ACQ.
304              THIS IS NOT EDI. -->
305         <acq_order_reader>
306
307             <!-- Root directory for all FTP'd ACQ order record files .
308                  If the script is configured to talk to a remote acq server,
309                  this directory has to be a read/write NFS share.  -->
310             <base_dir>/openils/var/data/acq_orders/</base_dir>
311
312             <!-- any files found in the shared subdir must be inspected
313                  (e.g. file name prefix) to determine the provider. -->
314             <shared_subdir>ALL</shared_subdir><!-- SUPPORT PENDING -->
315
316             <!-- providers that don't provide a mechanism to inspect the file
317                  have to push their files to provider-specific locations -->
318             <provider>
319                 <ordering_agency>BR1</ordering_agency> <!-- who gets/manages the order -->
320                 <provider_code>BAB</provider_code>   
321                 <provider_owner>CONS</provider_owner>  <!-- provider provider_owner; org unit shortname -->
322                 <subdir>CONS-BAB</subdir> <!-- file directory;  full path = base_dir + subdir -->
323                 <activate_po>false</activate_po> <!-- activate PO at upload? -->
324                 <vandelay>
325                     <import_no_match>true</import_no_match>
326                     <!-- Most Vandelay options are supported.  For bools, use true/false.
327                         match_quality_ratio 
328                         match_set 
329                         bib_source 
330                         merge_profile
331                         create_assets
332                         import_no_match 
333                         auto_overlay_exact 
334                         auto_overlay_1match 
335                         auto_overlay_best_match
336                     -->
337                 </vandelay>
338             </provider>
339
340             <!-- Add more as needed...
341             <provider>
342                 ...
343             </provider>
344             -->
345
346         </acq_order_reader>
347
348
349         <!-- no apps are enabled globally by default -->
350         <activeapps/> 
351
352         <cache>
353             <!-- memcache servers -->
354             <global>
355                 <servers>
356                     <server>127.0.0.1:11211</server>
357                 </servers>
358                 <max_cache_time>86400</max_cache_time>
359             </global>
360             <anon>
361                 <!-- anonymous cache.  currently, primarily used for web session caching -->
362                 <servers>
363                     <server>127.0.0.1:11211</server>
364                 </servers>
365                 <max_cache_time>1800</max_cache_time>
366                 <!-- maximum size of a single cache entry / default = 100k-->
367                 <max_cache_size>102400</max_cache_size>
368             </anon>
369         </cache>
370
371         <apps>
372             <!-- Acquisitions server -->
373             <open-ils.acq>
374                 <!-- how long to wait between stateful requests before the child process re-joins the pool -->
375                 <keepalive>5</keepalive>
376                 <!-- true if this service support stateless requests -->
377                 <stateless>1</stateless>
378                 <!-- implementation language -->
379                 <language>perl</language>
380                 <!-- name of the library that implements this application -->
381                 <implementation>OpenILS::Application::Acq</implementation>
382                 <!-- maximum OpenSRF REQUEST within a stateful connection -->
383                 <max_requests>100</max_requests>
384                 <unix_config>
385                     <!--
386                     maximum number of top level requests coming to 
387                     this child before the child is recycled
388                     -->
389                     <max_requests>100</max_requests>
390                     <!-- min children to fork -->
391                     <min_children>1</min_children>
392                     <!-- max possible children to fork -->
393                     <max_children>15</max_children>
394                     <!--
395                     C forking implementation does not support 
396                     min/max idle children, but may in the future
397                     -->
398
399                     <!-- min idle children -->
400                     <min_spare_children>1</min_spare_children>
401                     <!-- max idle children -->
402                     <max_spare_children>5</max_spare_children>
403                     <!-- currently, only Perl uses the following 3 settings -->
404                     <unix_sock>open-ils.acq_unix.sock</unix_sock>
405                     <unix_pid>open-ils.acq_unix.pid</unix_pid>
406                     <unix_log>open-ils.acq_unix.log</unix_log>
407                 </unix_config>
408             </open-ils.acq>
409
410             <!-- Authentication server -->
411             <open-ils.auth>
412                 <keepalive>5</keepalive>
413                 <stateless>1</stateless>
414                 <language>c</language>
415                 <implementation>oils_auth.so</implementation>
416                 <unix_config>
417                     <max_requests>1000</max_requests>
418                     <min_children>1</min_children>
419                     <max_children>15</max_children>
420                     <min_spare_children>1</min_spare_children>
421                     <max_spare_children>5</max_spare_children>
422                 </unix_config>
423                 <app_settings>
424                     <!-- defined app-specific settings here -->
425                     <default_timeout>
426                         <!-- default login timeouts based on login type -->
427                         <opac>420</opac>
428                         <staff>7200</staff>
429                         <temp>300</temp>
430                         <persist>2 weeks</persist>
431                     </default_timeout>
432                     <auth_limits>
433                         <seed>30</seed> <!-- amount of time a seed request is valid for -->
434                         <block_time>90</block_time> <!-- amount of time since last auth or seed request to save failure counts -->
435                         <block_count>10</block_count> <!-- number of failures before blocking access -->
436                     </auth_limits>
437                 </app_settings>
438             </open-ils.auth>
439
440             <!-- Authentication proxy server -->
441             <open-ils.auth_proxy>
442                 <keepalive>5</keepalive>
443                 <stateless>1</stateless>
444                 <language>perl</language>
445                 <implementation>OpenILS::Application::AuthProxy</implementation>
446                 <max_requests>93</max_requests>
447
448                 <unix_config>
449                     <max_requests>1000</max_requests>
450                     <unix_log>open-ils.auth-proxy_unix.log</unix_log>
451                     <unix_sock>open-ils.auth-proxy_unix.sock</unix_sock>
452                     <unix_pid>open-ils.auth-proxy_unix.pid</unix_pid>
453                     <min_children>1</min_children>
454                     <max_children>15</max_children>
455                     <min_spare_children>1</min_spare_children>
456                     <max_spare_children>5</max_spare_children>
457                 </unix_config>
458
459                 <app_settings>
460                     <!-- 'enabled' is the master switch; set to 'true' to enable proxied logins -->
461                     <enabled>false</enabled>
462                     <authenticators>
463                         <!-- the following is a sample configuration for the LDAP_Auth module; please adjust as needed -->
464                         <!--
465                         <authenticator>
466                             <name>ldap</name>
467                             <module>OpenILS::Application::AuthProxy::LDAP_Auth</module>
468                             <hostname>name.domain.com</hostname>
469                             <basedn>ou=people,dc=domain,dc=com</basedn>
470                             <authid>cn=username,ou=specials,dc=domain,dc=com</authid>
471                             <id_attr>uid</id_attr>
472                             <password>my_ldap_password_for_authid_user</password>
473                             <login_types>
474                                 <type>staff</type>
475                                 <type>opac</type>
476                                 <type>persist</type>
477                             </login_types>
478                             <org_units>
479                                 <unit>103</unit>
480                                 <unit>104</unit>
481                             </org_units>
482                         </authenticator>
483                         -->
484                         <!-- 'native' is a proxied version of Evergreen's standard authentication -->
485                         <authenticator>
486                             <name>native</name>
487                             <!-- you can add 'login_types' and 'org_units' limits to this authenticator as well, if needed -->
488                         </authenticator>
489                     </authenticators>
490                 </app_settings>
491             </open-ils.auth_proxy>
492
493             <!-- Generic search server -->
494             <open-ils.search>
495                 <keepalive>5</keepalive>
496                 <stateless>1</stateless>
497                 <language>perl</language>
498                 <implementation>OpenILS::Application::Search</implementation>
499                 <max_requests>93</max_requests>
500                 <unix_config>
501                     <unix_sock>open-ils.search_unix.sock</unix_sock>
502                     <unix_pid>open-ils.search_unix.pid</unix_pid>
503                     <unix_log>open-ils.search_unix.log</unix_log>
504
505                     <max_requests>1000</max_requests>
506                     <min_children>1</min_children>
507                     <max_children>15</max_children>
508                     <min_spare_children>1</min_spare_children>
509                     <max_spare_children>5</max_spare_children>
510                 </unix_config>
511                 <app_settings>
512                     <marc_html_xsl>oilsMARC21slim2HTML.xsl</marc_html_xsl>
513                     <marc_html_xsl_slim>oilsMARC21slim2HTMLslim.xsl</marc_html_xsl_slim>
514
515                     <spelling_dictionary>
516                         <!-- 
517                             Optionally configure different dictionaries depending on search context.  
518                             If no dictionaries are defined, the default Aspell dictionary is used.
519                         -->
520                         <!--
521                         <default>LOCALSTATEDIR/data/default_dict.txt</default>
522                         <title>LOCALSTATEDIR/data/title_dict.txt</title>
523                         <author>LOCALSTATEDIR/data/author_dict.txt</author>
524                         <subject>LOCALSTATEDIR/data/subject_dict.txt</subject>
525                         <series>LOCALSTATEDIR/data/series_dict.txt</series>
526                         -->
527                     </spelling_dictionary>
528
529                     <!-- Default to using staged search -->
530                     <use_staged_search>true</use_staged_search>
531
532                     <!--
533                         For staged search, we estimate hits based on inclusion or exclusion.
534
535                         Valid settings:
536                             inclusion - visible ratio on superpage
537                             exclusion - excluded ratio on superpage
538                             delete_adjusted_inclusion - included ratio on superpage, ratio adjusted by deleted count
539                             delete_adjusted_exclusion - excluded ratio on superpage, ratio adjusted by deleted count
540
541                         Under normal circumstances, inclusion is the best strategy, and both delete_adjusted variants
542                         will return the same value +/- 1.  The exclusion strategy is the original, and works well
543                         when there are few deleted or excluded records, in other words, when the superpage is not
544                         sparsely populated with visible records.
545                     -->
546                     <estimation_strategy>inclusion</estimation_strategy>
547
548                     <!--
549                         Evergreen uses a cover density algorithm for calculating relative ranking of matches.  There
550                         are several tuning parameters and options available.  By default, no document length normalization
551                         is applied.  From the Postgres documentation on ts_rank_cd() (the function used by Evergreen):
552
553                             Since a longer document has a greater chance of containing a query term it is reasonable 
554                             to take into account document size, e.g., a hundred-word document with five instances of 
555                             a search word is probably more relevant than a thousand-word document with five instances. 
556                             Both ranking functions take an integer normalization option that specifies whether and how 
557                             a document's length should impact its rank. The integer option controls several behaviors, 
558                             so it is a bit mask: you can specify one or more behaviors using | (for example, 2|4).
559
560                                 0 (the default) ignores the document length
561
562                                 1 divides the rank by 1 + the logarithm of the document length
563
564                                 2 divides the rank by the document length
565
566                                 4 divides the rank by the mean harmonic distance between extents (this is implemented only by ts_rank_cd)
567
568                                 8 divides the rank by the number of unique words in document
569
570                                 16 divides the rank by 1 + the logarithm of the number of unique words in document
571
572                                 32 divides the rank by itself + 1
573
574                             If more than one flag bit is specified, the transformations are applied in the order listed.
575
576                             It is important to note that the ranking functions do not use any global information, so it 
577                             is impossible to produce a fair normalization to 1% or 100% as sometimes desired. Normalization 
578                             option 32 (rank/(rank+1)) can be applied to scale all ranks into the range zero to one, but of 
579                             course this is just a cosmetic change; it will not affect the ordering of the search results.
580
581                         In Evergreen, these options are set via search modifiers.  The modifiers are mapped in the
582                         following way:
583
584                             * #CD_logDocumentLength  => 1  :: rank / (1 + LOG(total_word_count))   :: Longer documents slightly less relevant
585                             * #CD_documentLength     => 2  :: rank / total_word_count              :: Longer documents much less relevant
586                             * #CD_meanHarmonic       => 4  :: Word Proximity                       :: Greater matched-word distance is less relevant
587                             * #CD_uniqueWords        => 8  :: rank / unique_word_count             :: Documents with repeated words much less relevant
588                             * #CD_logUniqueWords     => 16 :: rank / (1 + LOG(unique_word_count))  :: Documents with repeated words slightly less relevant
589                             * #CD_selfPlusOne        => 32 :: rank / (1 + rank)                    :: Cosmetic normalization of rank value between 0 and 1
590
591                         Adding one or more of these to the default_CD_modifiers list will cause all searches that use QueryParser to apply them.
592                     -->
593                     <default_CD_modifiers>#CD_documentLength #CD_meanHarmonic #CD_uniqueWords</default_CD_modifiers>
594
595                     <!--
596                         default_preferred_language
597                             Set the global, default preferred languange
598                     -->
599                     <default_preferred_language>eng</default_preferred_language>
600
601                     <!--
602                         default_preferred_language_weight
603                             Set the weight (higher is "better") for the preferred language. Comment out to remove all lanuage weighting by default.
604                     -->
605                     <default_preferred_language_weight>5</default_preferred_language_weight>
606
607                     <!-- Baseline number of records to check for hit estimation. -->
608                     <superpage_size>1000</superpage_size>
609
610                     <!-- How many superpages to consider for searching overall. -->
611                     <max_superpages>10</max_superpages>
612
613                     <!-- zip code database file -->
614                     <!--<zips_file>LOCALSTATEDIR/data/zips.txt</zips_file>-->
615                 </app_settings>
616             </open-ils.search>
617
618             <!-- server for accessing user info -->
619             <open-ils.actor>
620                 <keepalive>5</keepalive>
621                 <stateless>1</stateless>
622                 <language>perl</language>
623                 <implementation>OpenILS::Application::Actor</implementation>
624                 <max_requests>93</max_requests>
625                 <unix_config>
626                     <unix_sock>open-ils.actor_unix.sock</unix_sock>
627                     <unix_pid>open-ils.actor_unix.pid</unix_pid>
628                     <max_requests>1000</max_requests>
629                     <unix_log>open-ils.actor_unix.log</unix_log>
630                     <min_children>1</min_children>
631                     <max_children>15</max_children>
632                     <min_spare_children>1</min_spare_children>
633                     <max_spare_children>5</max_spare_children>
634                 </unix_config>
635                 <!-- set this to 'true' to have barcode search also search patron records by unique ID -->
636                 <app_settings>
637                     <id_as_barcode>false</id_as_barcode>
638                 </app_settings>
639
640             </open-ils.actor>
641
642             <open-ils.booking>
643                 <keepalive>5</keepalive>
644                 <stateless>1</stateless>
645                 <language>perl</language>
646                 <implementation>OpenILS::Application::Booking</implementation>
647                 <max_requests>199</max_requests>
648                 <unix_config>
649                     <unix_sock>open-ils.booking_unix.sock</unix_sock>
650                     <unix_pid>open-ils.booking_unix.pid</unix_pid>
651                     <max_requests>1000</max_requests>
652                     <unix_log>open-ils.booking_unix.log</unix_log>
653                     <min_children>1</min_children>
654                     <max_children>15</max_children>
655                     <min_spare_children>1</min_spare_children>
656                     <max_spare_children>5</max_spare_children>
657                 </unix_config>
658                 <app_settings>
659                 </app_settings>
660             </open-ils.booking>
661
662             <open-ils.cat>
663                 <keepalive>5</keepalive>
664                 <stateless>1</stateless>
665                 <language>perl</language>
666                 <implementation>OpenILS::Application::Cat</implementation>
667                 <max_requests>199</max_requests>
668                 <unix_config>
669                     <unix_sock>open-ils.cat_unix.sock</unix_sock>
670                     <unix_pid>open-ils.cat_unix.pid</unix_pid>
671                     <max_requests>1000</max_requests>
672                     <unix_log>open-ils.cat_unix.log</unix_log>
673                     <min_children>1</min_children>
674                     <max_children>15</max_children>
675                     <min_spare_children>1</min_spare_children>
676                     <max_spare_children>5</max_spare_children>
677                 </unix_config>
678                 <app_settings>
679                     <marctemplates>
680                         <K_book>LOCALSTATEDIR/templates/marc/k_book.xml</K_book>
681                     </marctemplates>
682                 </app_settings>
683             </open-ils.cat>
684
685             <open-ils.supercat>
686                 <keepalive>5</keepalive>
687                 <stateless>1</stateless>
688                 <language>perl</language>
689                 <implementation>OpenILS::Application::SuperCat</implementation>
690                 <max_requests>199</max_requests>
691                 <unix_config>
692                     <unix_sock>open-ils.supercat_unix.sock</unix_sock>
693                     <unix_pid>open-ils.supercat_unix.pid</unix_pid>
694                     <max_requests>1000</max_requests>
695                     <unix_log>open-ils.supercat_unix.log</unix_log>
696                     <min_children>1</min_children>
697                     <max_children>15</max_children>
698                     <min_spare_children>1</min_spare_children>
699                     <max_spare_children>5</max_spare_children>
700                 </unix_config>
701             </open-ils.supercat>
702
703             <!-- server for accessing user info -->
704             <open-ils.trigger>
705                 <keepalive>5</keepalive>
706                 <stateless>1</stateless>
707                 <language>perl</language>
708                 <implementation>OpenILS::Application::Trigger</implementation>
709                 <max_requests>93</max_requests>
710                 <unix_config>
711                     <unix_sock>open-ils.trigger_unix.sock</unix_sock>
712                     <unix_pid>open-ils.trigger_unix.pid</unix_pid>
713                     <max_requests>1000</max_requests>
714                     <unix_log>open-ils.trigger_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>
719                 </unix_config>
720                 <app_settings>
721                     <!-- number of parallel open-ils.trigger processes to use for collection and reaction -->
722                     <!--
723                     <parallel>
724                         <collect>3</collect>
725                         <react>3</react>
726                     </parallel>
727                     -->
728                 </app_settings>
729             </open-ils.trigger>
730
731             <open-ils.url_verify>
732                 <keepalive>5</keepalive>
733                 <stateless>1</stateless>
734                 <language>perl</language>
735                 <implementation>OpenILS::Application::URLVerify</implementation>
736                 <max_requests>199</max_requests>
737                 <unix_config>
738                     <unix_sock>open-ils.url_verify_unix.sock</unix_sock>
739                     <unix_pid>open-ils.url_verify_unix.pid</unix_pid>
740                     <max_requests>1000</max_requests>
741                     <unix_log>open-ils.url_verify_unix.log</unix_log>
742                     <min_children>1</min_children>
743                     <max_children>15</max_children>
744                     <min_spare_children>1</min_spare_children>
745                     <max_spare_children>5</max_spare_children>
746                 </unix_config>
747                 <app_settings>
748                     <user_agent>Evergreen %s Link Checker</user_agent>
749                 </app_settings>
750             </open-ils.url_verify>
751
752             <opensrf.math>
753                 <keepalive>3</keepalive>
754                 <stateless>1</stateless>
755                 <language>c</language>
756                 <implementation>osrf_math.so</implementation>
757                 <unix_config>
758                     <unix_sock>opensrf.math_unix.sock</unix_sock>
759                     <unix_pid>opensrf.math_unix.pid</unix_pid>
760                     <max_requests>1000</max_requests>
761                     <unix_log>opensrf.math_unix.log</unix_log>
762                     <min_children>1</min_children>
763                     <max_children>15</max_children>
764                     <min_spare_children>1</min_spare_children>
765                     <max_spare_children>5</max_spare_children>
766                 </unix_config>
767             </opensrf.math>
768
769             <opensrf.dbmath> 
770                 <keepalive>3</keepalive>
771                 <stateless>1</stateless>
772                 <language>c</language>
773                 <implementation>osrf_dbmath.so</implementation>
774                 <unix_config>
775                     <max_requests>1000</max_requests>
776                     <unix_log>opensrf.dbmath_unix.log</unix_log>
777                     <unix_sock>opensrf.dbmath_unix.sock</unix_sock>
778                     <unix_pid>opensrf.dbmath_unix.pid</unix_pid>
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>
783                 </unix_config>
784             </opensrf.dbmath>
785
786             <open-ils.penalty>
787                 <keepalive>3</keepalive>
788                 <stateless>1</stateless>
789                 <language>perl</language>
790                 <implementation>OpenILS::Application::Penalty</implementation>
791                 <max_requests>99</max_requests>
792                 <unix_config>
793                     <max_requests>1000</max_requests>
794                     <unix_log>open-ils.penalty_unix.log</unix_log>
795                     <unix_sock>open-ils.penalty_unix.sock</unix_sock>
796                     <unix_pid>open-ils.penalty_unix.pid</unix_pid>
797                     <min_children>1</min_children>
798                     <max_children>15</max_children>
799                     <min_spare_children>1</min_spare_children>
800                     <max_spare_children>5</max_spare_children>
801                 </unix_config>
802                 <app_settings>
803                     <patron_penalty>penalty/patron_penalty.js</patron_penalty>
804                     <script_path>LIBDIR/javascript</script_path>
805                     <script_path>LOCALSTATEDIR</script_path>
806                     <script_path>LOCALSTATEDIR/catalog</script_path>
807                 </app_settings>
808             </open-ils.penalty>
809
810             <open-ils.justintime>
811                 <keepalive>5</keepalive>
812                 <stateless>1</stateless>
813                 <language>perl</language>
814                 <implementation>OpenILS::Application::JustInTime</implementation>
815                 <max_requests>199</max_requests>
816                 <unix_config>
817                     <unix_sock>open-ils.justintime_unix.sock</unix_sock>
818                     <unix_pid>open-ils.justintime_unix.pid</unix_pid>
819                     <max_requests>1000</max_requests>
820                     <unix_log>open-ils.justintime_unix.log</unix_log>
821                     <min_children>1</min_children>
822                     <max_children>15</max_children>
823                     <min_spare_children>1</min_spare_children>
824                     <max_spare_children>5</max_spare_children>
825                 </unix_config>
826                 <app_settings>
827                 </app_settings>
828             </open-ils.justintime>
829
830             <open-ils.circ> 
831                 <keepalive>3</keepalive>
832                 <stateless>1</stateless>
833                 <language>perl</language>
834                 <implementation>OpenILS::Application::Circ</implementation>
835                 <max_requests>99</max_requests>
836                 <unix_config>
837                     <max_requests>1000</max_requests>
838                     <unix_log>open-ils.circ_unix.log</unix_log>
839                     <unix_sock>open-ils.circ_unix.sock</unix_sock>
840                     <unix_pid>open-ils.circ_unix.pid</unix_pid>
841                     <min_children>1</min_children>
842                     <max_children>15</max_children>
843                     <min_spare_children>1</min_spare_children> 
844                     <max_spare_children>5</max_spare_children>
845                 </unix_config>
846                 <app_settings>
847                     <notify_hold>
848                         <email>false</email> <!-- set to false to disable hold notice emails -->
849                     </notify_hold>
850
851                     <!-- circulation policy scripts -->
852                     <script_path>LIBDIR/javascript</script_path>
853                     <script_path>LOCALSTATEDIR</script_path>
854                     <script_path>LOCALSTATEDIR/catalog</script_path>
855                     <legacy_script_support>false</legacy_script_support>
856                     <scripts> 
857                         <circ_permit_patron>circ/circ_permit_patron.js</circ_permit_patron>
858                         <circ_permit_copy>circ/circ_permit_copy.js</circ_permit_copy>
859                         <circ_duration>circ/circ_duration.js</circ_duration>
860                         <circ_recurring_fines>circ/circ_recurring_fines.js</circ_recurring_fines>
861                         <circ_max_fines>circ/circ_max_fines.js</circ_max_fines>
862                         <circ_permit_renew>circ/circ_permit_renew.js</circ_permit_renew>
863                         <circ_permit_hold>circ/circ_permit_hold.js</circ_permit_hold>
864                     </scripts>               
865
866                 </app_settings>
867             </open-ils.circ>
868
869             <open-ils.storage>
870                 <keepalive>10</keepalive>
871                 <stateless>1</stateless>
872                 <language>perl</language>
873                 <implementation>OpenILS::Application::Storage</implementation>
874                 <unix_config>
875                     <max_requests>1000</max_requests>
876                     <unix_log>open-ils.storage_unix.log</unix_log>
877                     <unix_sock>open-ils.storage_unix.sock</unix_sock>
878                     <unix_pid>open-ils.storage_unix.pid</unix_pid>
879                     <min_children>1</min_children>
880                     <max_children>10</max_children>
881                     <min_spare_children>1</min_spare_children>
882                     <max_spare_children>5</max_spare_children>
883                 </unix_config>
884                 <app_settings>
885                     <script_path>LIBDIR/javascript/</script_path>
886                     <script_path>LOCALSTATEDIR/catalog/</script_path>
887                     <scripts>
888                         <biblio_fingerprint>biblio_fingerprint.js</biblio_fingerprint>
889                     </scripts>
890                     <databases>
891                         <driver>Pg</driver>
892                         <database>
893                             <type>master</type>
894                             <weight>2</weight>
895                             <user>postgres</user>
896                             <host>localhost</host>
897                             <port>5432</port>
898                             <pw>postgres</pw>
899                             <db>evergreen</db>
900                             <client_encoding>UTF-8</client_encoding>
901                         </database>
902                     </databases>
903                 </app_settings>
904             </open-ils.storage>
905
906             <open-ils.cstore>
907                 <keepalive>6</keepalive>
908                 <stateless>1</stateless>
909                 <language>C</language>
910                 <implementation>oils_cstore.so</implementation>
911                 <unix_config>
912                     <max_requests>1000</max_requests>
913                     <min_children>1</min_children>
914                     <max_children>15</max_children>
915                     <min_spare_children>1</min_spare_children>
916                     <max_spare_children>5</max_spare_children>
917                 </unix_config>
918                 <app_settings>
919                     <max_query_recursion>100</max_query_recursion>
920                     <driver>pgsql</driver>
921                     <database>
922                         <type>master</type>
923                         <weight>2</weight>
924                         <user>postgres</user>
925                         <host>localhost</host>
926                         <port>5432</port>
927                         <pw>postgres</pw>
928                         <db>evergreen</db>
929                         <client_encoding>UTF-8</client_encoding>
930                     </database>
931                 </app_settings>
932             </open-ils.cstore>
933
934             <open-ils.pcrud>
935                 <keepalive>6</keepalive>
936                 <migratable>1</migratable>
937                 <stateless>1</stateless>
938                 <language>C</language>
939                 <implementation>oils_pcrud.so</implementation>
940
941                 <unix_config>
942                     <unix_log>open-ils.pcrud.log</unix_log>
943                     <unix_sock>open-ils.pcrud.sock</unix_sock>
944                     <unix_pid>open-ils.pcrud.pid</unix_pid>
945                     <max_requests>1000</max_requests>
946                     <min_children>1</min_children>
947                     <max_children>15</max_children>
948                     <min_spare_children>1</min_spare_children>
949                     <max_spare_children>5</max_spare_children>
950                 </unix_config>
951
952                 <app_settings>
953                     <IDL>SYSCONFDIR/fm_IDL.xml</IDL>
954                     <driver>pgsql</driver>
955                     <database>
956                         <type>master</type>
957                         <weight>2</weight>
958                         <user>postgres</user>
959                         <host>localhost</host>
960                         <port>5432</port>
961                         <pw>postgres</pw>
962                         <db>evergreen</db>
963                         <client_encoding>UTF-8</client_encoding>
964                     </database>
965                 </app_settings>
966             </open-ils.pcrud>
967
968             <open-ils.qstore>
969                 <keepalive>6</keepalive>
970                 <stateless>1</stateless>
971                 <language>C</language>
972                 <implementation>oils_qstore.so</implementation>
973                 <unix_config>
974                     <max_requests>1000</max_requests>
975                     <min_children>1</min_children>
976                     <max_children>15</max_children>
977                     <min_spare_children>1</min_spare_children>
978                     <max_spare_children>5</max_spare_children>
979                 </unix_config>
980                 <app_settings>
981                     <driver>pgsql</driver>
982                     <database>
983                         <type>master</type>
984                         <weight>2</weight>
985                         <user>postgres</user>
986                         <host>localhost</host>
987                         <port>5432</port>
988                         <pw>postgres</pw>
989                         <db>evergreen</db>
990                         <client_encoding>UTF-8</client_encoding>
991                     </database>
992                 </app_settings>
993             </open-ils.qstore>
994
995             <opensrf.settings>
996                 <keepalive>1</keepalive>
997                 <stateless>1</stateless>
998                 <language>perl</language>
999                 <implementation>OpenSRF::Application::Settings</implementation>
1000                 <max_requests>17</max_requests>
1001                 <unix_config>
1002                     <unix_sock>opensrf.settings_unix.sock</unix_sock>
1003                     <unix_pid>opensrf.settings_unix.pid</unix_pid>
1004                     <max_requests>300</max_requests>
1005                     <unix_log>opensrf.settings_unix.log</unix_log>
1006                     <min_children>5</min_children>
1007                     <max_children>15</max_children>
1008                     <min_spare_children>3</min_spare_children>
1009                     <max_spare_children>5</max_spare_children>
1010                 </unix_config>
1011             </opensrf.settings>
1012
1013             <open-ils.collections>
1014                 <keepalive>3</keepalive>
1015                 <stateless>1</stateless>
1016                 <language>perl</language>
1017                 <implementation>OpenILS::Application::Collections</implementation>
1018                 <max_requests>17</max_requests>
1019                 <unix_config>
1020                     <unix_sock>open-ils.collections_unix.sock</unix_sock>
1021                     <unix_pid>open-ils.collections_unix.pid</unix_pid>
1022                     <max_requests>1000</max_requests>
1023                     <unix_log>open-ils.collections_unix.log</unix_log>
1024                     <min_children>1</min_children>
1025                     <max_children>10</max_children>
1026                     <min_spare_children>1</min_spare_children>
1027                     <max_spare_children>5</max_spare_children>
1028                 </unix_config>
1029                 <app_settings>
1030                     <!-- batch_file_dir must be a protected, web-accessible, shared directory -->
1031                     <batch_file_dir>/openils/var/web/collections</batch_file_dir>
1032                 </app_settings>
1033             </open-ils.collections>
1034
1035             <open-ils.reporter>
1036                 <keepalive>3</keepalive>
1037                 <stateless>1</stateless>
1038                 <language>perl</language>
1039                 <implementation>OpenILS::Application::Reporter</implementation>
1040                 <max_requests>99</max_requests>
1041                 <unix_config>
1042                     <unix_sock>open-ils.reporter_unix.sock</unix_sock>
1043                     <unix_pid>open-ils.reporter_unix.pid</unix_pid>
1044                     <max_requests>1000</max_requests>
1045                     <unix_log>open-ils.reporter_unix.log</unix_log>
1046                     <min_children>1</min_children>
1047                     <max_children>10</max_children>
1048                     <min_spare_children>1</min_spare_children>
1049                     <max_spare_children>5</max_spare_children>
1050                 </unix_config>
1051             </open-ils.reporter>
1052
1053             <open-ils.reporter-store>
1054                 <keepalive>6</keepalive>
1055                 <stateless>1</stateless>
1056                 <language>C</language>
1057                 <implementation>oils_rstore.so</implementation>
1058                 <unix_config>
1059                     <max_requests>400</max_requests>
1060                     <min_children>1</min_children>
1061                     <max_children>10</max_children>
1062                     <min_spare_children>1</min_spare_children>
1063                     <max_spare_children>5</max_spare_children>
1064                 </unix_config>
1065                 <app_settings>
1066                     <driver>pgsql</driver>
1067                     <database>
1068                         <type>master</type>
1069                         <weight>2</weight>
1070                         <user>postgres</user>
1071                         <host>localhost</host>
1072                         <port>5432</port>
1073                         <pw>postgres</pw>
1074                         <db>evergreen</db>
1075                         <client_encoding>UTF-8</client_encoding>
1076                     </database>
1077                 </app_settings>
1078             </open-ils.reporter-store>
1079
1080 <!-- resolver_type defaults to sfx but can also be cufts -->
1081 <!--
1082            <open-ils.resolver>
1083                <keepalive>3</keepalive>
1084                <stateless>1</stateless>
1085                <language>perl</language>
1086                <implementation>OpenILS::Application::ResolverResolver</implementation>
1087                <max_requests>93</max_requests>
1088                <unix_config>
1089                   <unix_sock>open-ils.resolver_unix.sock</unix_sock>
1090                   <unix_pid>open-ils.resolver_unix.pid</unix_pid>
1091                   <max_requests>1000</max_requests>
1092                   <unix_log>open-ils.resolver_unix.log</unix_log>
1093                   <min_children>5</min_children>
1094                   <max_children>15</max_children>
1095                   <min_spare_children>3</min_spare_children>
1096                   <max_spare_children>5</max_spare_children>
1097                </unix_config>
1098                <app_settings>
1099                   <cache_timeout>86400</cache_timeout>
1100                   <request_timeout>10</request_timeout>
1101                   <default_url_base>http://path/to/sfx_or_cufts</default_url_base>
1102                   <resolver_type>sfx</resolver_type>
1103                </app_settings>
1104             </open-ils.resolver>
1105 -->
1106
1107             <open-ils.permacrud>
1108                <keepalive>3</keepalive>
1109                <stateless>1</stateless>
1110                <language>perl</language>
1111                <implementation>OpenILS::Application::PermaCrud</implementation>
1112                <max_requests>17</max_requests>
1113                <unix_config>
1114                   <unix_sock>open-ils.permacrud_unix.sock</unix_sock>
1115                   <unix_pid>open-ils.permacrud_unix.pid</unix_pid>
1116                   <max_requests>1000</max_requests>
1117                   <unix_log>open-ils.permacrud_unix.log</unix_log>
1118                   <min_children>5</min_children>
1119                   <max_children>15</max_children>
1120                   <min_spare_children>3</min_spare_children>
1121                   <max_spare_children>5</max_spare_children>
1122                </unix_config>
1123             </open-ils.permacrud>
1124
1125             <open-ils.fielder>
1126                <keepalive>3</keepalive>
1127                <stateless>1</stateless>
1128                <language>perl</language>
1129                <implementation>OpenILS::Application::Fielder</implementation>
1130                <max_requests>17</max_requests>
1131                <unix_config>
1132                   <unix_sock>open-ils.fielder_unix.sock</unix_sock>
1133                   <unix_pid>open-ils.fielder_unix.pid</unix_pid>
1134                   <max_requests>1000</max_requests>
1135                   <unix_log>open-ils.fielder_unix.log</unix_log>
1136                   <min_children>5</min_children>
1137                   <max_children>15</max_children>
1138                   <min_spare_children>3</min_spare_children>
1139                   <max_spare_children>5</max_spare_children>
1140                </unix_config>
1141             </open-ils.fielder>
1142
1143             <open-ils.vandelay>
1144                 <keepalive>5</keepalive>
1145                 <stateless>1</stateless>
1146                 <language>perl</language>
1147                 <implementation>OpenILS::Application::Vandelay</implementation>
1148                 <max_requests>100</max_requests>
1149                 <unix_config>
1150                     <unix_sock>vandelay_unix.sock</unix_sock>
1151                     <unix_pid>vandelay_unix.pid</unix_pid>
1152                     <unix_log>vandelay_unix.log</unix_log>
1153                     <max_requests>100</max_requests>
1154                     <min_children>1</min_children>
1155                     <max_children>15</max_children>
1156                     <min_spare_children>1</min_spare_children>
1157                     <max_spare_children>5</max_spare_children>
1158                 </unix_config>
1159                 <app_settings>
1160                     <databases>
1161                         <!-- temporary location for MARC import files.  
1162                             Files will be deleted after records are spooled.
1163                             *note:  in a multi-brick environment, this will need to
1164                             be on a write-able NFS share.  -->
1165                         <importer>/tmp</importer>
1166                     </databases>
1167                 </app_settings>
1168             </open-ils.vandelay>
1169
1170             <open-ils.serial>
1171                 <keepalive>3</keepalive>
1172                 <stateless>1</stateless>
1173                 <language>perl</language>
1174                 <implementation>OpenILS::Application::Serial</implementation>
1175                 <max_requests>17</max_requests>
1176                 <unix_config>
1177                     <unix_sock>open-ils.serial_unix.sock</unix_sock>
1178                     <unix_pid>open-ils.serial_unix.pid</unix_pid>
1179                     <max_requests>1000</max_requests>
1180                     <unix_log>open-ils.serial_unix.log</unix_log>
1181                     <min_children>5</min_children>
1182                     <max_children>15</max_children>
1183                     <min_spare_children>3</min_spare_children>
1184                     <max_spare_children>5</max_spare_children>
1185                 </unix_config>
1186                 <app_settings>
1187                 </app_settings>
1188             </open-ils.serial>
1189
1190         </apps>
1191     </default>
1192
1193     <hosts>
1194
1195         <localhost> 
1196             <!-- ^-=- 
1197             Should match the fully qualified domain name of the host.
1198
1199             On Linux, the output of the following command is authoritative:
1200             $ perl -MNet::Domain -e 'print Net::Domain::hostfqdn() . "\n";'
1201
1202             To use 'localhost' instead, run osrf_control with the 'localhost' flag
1203             -->
1204
1205             <activeapps>
1206                 <!-- services hosted on this machine -->
1207                 <appname>opensrf.settings</appname> 
1208                 <appname>opensrf.math</appname> 
1209                 <appname>opensrf.dbmath</appname> 
1210                 <appname>open-ils.acq</appname> 
1211                 <appname>open-ils.booking</appname>
1212                 <appname>open-ils.cat</appname> 
1213                 <appname>open-ils.supercat</appname> 
1214                 <appname>open-ils.search</appname> 
1215                 <appname>open-ils.circ</appname> 
1216                 <appname>open-ils.actor</appname> 
1217                 <appname>open-ils.auth</appname> 
1218                 <appname>open-ils.auth_proxy</appname> 
1219                 <appname>open-ils.storage</appname>  
1220                 <appname>open-ils.penalty</appname>  
1221                 <appname>open-ils.justintime</appname>  
1222                 <appname>open-ils.cstore</appname>  
1223                 <appname>open-ils.collections</appname>  
1224                 <appname>open-ils.reporter</appname>  
1225                 <appname>open-ils.reporter-store</appname>  
1226                 <!-- <appname>open-ils.resolver</appname> -->
1227                 <appname>open-ils.permacrud</appname>  
1228                 <appname>open-ils.pcrud</appname>  
1229                 <appname>open-ils.trigger</appname>  
1230                 <appname>open-ils.url_verify</appname>
1231                 <appname>open-ils.fielder</appname>  
1232                 <appname>open-ils.vandelay</appname>  
1233                 <appname>open-ils.serial</appname>  
1234             </activeapps>
1235         </localhost>
1236     </hosts>
1237
1238 </opensrf>