[Evergreen-general] Evergreen 3.11.0a not properly switching into Czech in the staff client

Linda Jansová linda.jansova at gmail.com
Mon Jun 19 08:30:09 EDT 2023


Dear all,

We have just installed Evergreen 3.11.0a (it is a fresh install from the 
tarball) and have proceeded to setting up Czech as a language to be used 
not only in the Bootstrap OPAC but also in the staff client.

However, it seems that the staff client does not reliably keep Czech as 
the interface language beyond the login screen.

After logging into the staff client (with the original login screen 
being in Czech), a browser developer tool in Firefox says that "Some 
cookies are misusing the recommended “SameSite“ attribute" (the attached 
screenshot provides the same information in a visual format).

There is a link that provides more information on the nature of the 
attribute:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value

It appears that eg.auth.token and eg.auth.time do not provide a valid 
value for the aforementioned SameSite attribute, meaning that Lax (as a 
fallback value) is used instead. This, according to Mozilla.org, "Means 
that the cookie is not sent on cross-site requests, such as on requests 
to load images or frames, but is sent when a user is navigating to the 
origin site from an external site (for example, when following a link). 
This is the default behavior if the |SameSite| attribute is not specified."

Could that be a reason why the staff client does not honor the selected 
locale and keeps changing things from Czech to English (and sometimes 
also vice versa)?

If so, do you have any idea how to properly fix it?

If not, where else should we look?

I am also attaching our eg_vhost.conf with our current setup.

Thank you very much for any kind of help provided!

Linda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.evergreen-ils.org/pipermail/evergreen-general/attachments/20230619/bd4751e4/attachment-0001.htm>
-------------- next part --------------
# ----------------------------------------------------------------------------------
# This is the global Evergreen virtual host config.  Anything you want published
# through all virtual hosts (port 80, port 443, etc.) should live in here.
# ----------------------------------------------------------------------------------

# ----------------------------------------------------------------------------------
# Point / to the opac - if you have a custom skin or locale, point at it here
# ----------------------------------------------------------------------------------
RewriteRule ^/$ %{REQUEST_SCHEME}://%{HTTP_HOST}/eg/opac/home [R=301,L]

# ----------------------------------------------------------------------------------
# Redirect staff to the correct URL if they forget to include the final /
# ----------------------------------------------------------------------------------
RewriteRule ^/eg/staff$ https://%{HTTP_HOST}/eg/staff/ [R=301,L]

# ----------------------------------------------------------------------------------
# Point / to the IP address redirector
# ----------------------------------------------------------------------------------
#<LocationMatch ^/$>
#    SetHandler perl-script
#    PerlHandler OpenILS::WWW::Redirect
#    Options +ExecCGI
#    PerlSendHeader On
#    #PerlSetVar OILSRedirectSkin "default"
#    # OILSRedirectDepth defaults to the depth of the branch that the OPAC was directed to
#    #PerlSetVar OILSRedirectDepth "0"
#    #PerlSetVar OILSRedirectLocale "en-US"
#    # Use the template-toolkit opac
#    #PerlSetVar OILSRedirectTpac "true"
#    allow from all
#</LocationMatch>


# ----------------------------------------------------------------------------------
# Assign a default locale to the accessible OPAC
# ----------------------------------------------------------------------------------
RewriteRule ^/opac/extras/slimpac/start.html$ %{REQUEST_SCHEME}://%{HTTP_HOST}/opac/en-US/extras/slimpac/start.html [R=301,L]
RewriteRule ^/opac/extras/slimpac/advanced.html$ %{REQUEST_SCHEME}://%{HTTP_HOST}/opac/en-US/extras/slimpac/advanced.html [R=301,L]

# ----------------------------------------------------------------------------------
# Configure the gateway and translator
# ----------------------------------------------------------------------------------
OSRFGatewayConfig /openils/conf/opensrf_core.xml
OSRFTranslatorConfig /openils/conf/opensrf_core.xml
# Translator memcache server.  Default is localhost
# OSRFTranslatorCacheServer 127.0.0.1:11211

# ----------------------------------------------------------------------------------
# Log redaction
# ----------------------------------------------------------------------------------
<Location />
    # handler for redacting URL query parameters from
    # the access log
    PerlLogHandler OpenILS::WWW::EGWeb::log_handler
    PerlAddVar OILSUrlParamToRedact "geographic-location"
</Location>

# ----------------------------------------------------------------------------------
# Added content plugin
# ----------------------------------------------------------------------------------
<Location /opac/extras/ac/>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::AddedContent
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>

# Lock clearing cache down to STAFF_LOGIN
<Location /opac/extras/ac/clearcache/>
    PerlAccessHandler OpenILS::WWW::AccessHandler
    PerlSetVar OILSAccessHandlerPermission "STAFF_LOGIN"
</Location>

# Autosuggest for searches
<Location /opac/extras/autosuggest>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::AutoSuggest
    PerlSendHeader On
    Require all granted 
</Location>

# Flattener service
<Location /opac/extras/flattener>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::FlatFielder
    PerlSendHeader On
    Require all granted 
</Location>

# Uncomment this section to enable the OAI2 provider service.
#<Location /opac/extras/oai>
#    SetHandler perl-script
#    PerlHandler OpenILS::WWW::SuperCat::OAI
#    Options +ExecCGI
#    PerlSendHeader On
#    Require all granted
#</Location>

# ----------------------------------------------------------------------------------
# Replace broken cover images with a transparent GIF by default
# ----------------------------------------------------------------------------------
RewriteEngine ON
RewriteRule ^/opac/extras/ac/jacket/(small|medium|large)/$ \
    /opac/images/blank.png [P,L]

<Location /opac/extras/ac/jacket>
        ErrorDocument 404 /opac/images/blank.png
</Location>

# Uncomment one or more of these to have a "no image" image other than the blank
# image above.

# Note: There are no default images provided for these, you will need to provide
# your own "no image" image(s).

#<Location /opac/extras/ac/jacket/small>
#        ErrorDocument 404 /opac/images/noimage_small.png
#</Location>

#<Location /opac/extras/ac/jacket/medium>
#        ErrorDocument 404 /opac/images/noimage_medium.png
#</Location>

#<Location /opac/extras/ac/jacket/large>
#        ErrorDocument 404 /opac/images/noimage_large.png
#</Location>

# ----------------------------------------------------------------------------------
# Add the row ID (RID) and date so we can make unAPI happy
# ----------------------------------------------------------------------------------
RewriteCond %{QUERY_STRING} (^r|&r)=(\d+)
RewriteRule . - [E=OILS_OPAC_RID:%2,E=OILS_TIME_YEAR:%{TIME_YEAR}]

# ----------------------------------------------------------------------------------
# Pull the locale from the URL
# ----------------------------------------------------------------------------------
RewriteCond %{REQUEST_URI} ^/opac/(.*?)/
RewriteRule . - [E=locale:%1]

# ----------------------------------------------------------------------------------
# Rewrite JSPac->TPac with redirects
# ----------------------------------------------------------------------------------
# My Account
RewriteRule /opac/[^/]*/skin/default/xml/myopac.xml %{REQUEST_SCHEME}://%{HTTP_HOST}/eg/opac/myopac/main?%{ENV:OILS_JSPAC_SEARCH_TYPE}%{ENV:OILS_JSPAC_SEARCH_TERMS}%{ENV:OILS_JSPAC_SEARCH_LOCATION} [NE,R,L]

# -----------------------------------------------------------------------------$
# Force HTTPS for /eg/circ/selfcheck
# -----------------------------------------------------------------------------$
RewriteCond %{HTTPS} off
RewriteRule ^(/eg/circ/selfcheck) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

# ----------------------------------------------------------------------------------
# For sanity reasons, default indexes to Off
# ----------------------------------------------------------------------------------
Options -Indexes

# ----------------------------------------------------------------------------------
# Configure the OPAC
# ----------------------------------------------------------------------------------
<LocationMatch /opac/>
    SSILegacyExprParser on
    AddType application/xhtml+xml .xml
   
    # - configure mod_xmlent
    XMLEntStripPI "yes"
    XMLEntEscapeScript "no"
    XMLEntStripComments "yes"
    XMLEntContentType "text/html; charset=utf-8"
    # forces quirks mode which we want for now
    XMLEntStripDoctype "yes" 

    # - set up the include handlers
    Options +Includes
    AddOutputFilter INCLUDES .xsl
    AddOutputFilter INCLUDES;XMLENT .xml
		    
    SetEnvIf Request_URI ".*" OILS_OPAC_BASE=/opac/
    
    # This gives you the option to configure a different host to serve OPAC images from
    # Specify the hostname (without protocol) and path to the images.  Protocol will
    # be determined at runtime
    #SetEnvIf Request_URI ".*" OILS_OPAC_IMAGES_HOST=static.example.org/opac/

    # In addition to loading images from a static host, you can also load CSS and/or
    # Javascript from a static host or hosts. Protocol will be determined at runtime
    # and/or by configuration options immediately following.
    #SetEnvIf Request_URI ".*" OILS_OPAC_CSS_HOST=static.example.org/opac/
    #SetEnvIf Request_URI ".*" OILS_OPAC_JS_HOST=static.example.org/opac/

    # If you are not able to serve static content via https and 
    # wish to force http:// (and are comfortable with mixed-content
    # warnings in client browsers), set this:
    #SetEnvIf Request_URI ".*" OILS_OPAC_STATIC_PROTOCOL=http

    # If you would prefer to fall back to your non-static servers for 
    # https pages, avoiding mixed-content warnings in client browsers
    # and are willing to accept some increased server load, set this:
    #SetEnvIf Request_URI ".*" OILS_OPAC_BYPASS_STATIC_FOR_HTTPS=yes

    # Specify a ChiliFresh account to integrate their services with the OPAC
    #SetEnv OILS_CHILIFRESH_ACCOUNT
    #SetEnv OILS_CHILIFRESH_PROFILE
    #SetEnv OILS_CHILIFRESH_URL http://chilifresh.com/on-site/js/evergreen.js
    #SetEnv OILS_CHILIFRESH_HTTPS_URL https://secure.chilifresh.com/on-site/js/evergreen.js

    # Specify the initial script URL for Novelist (containing account credentials, etc.)
    #SetEnv OILS_NOVELIST_URL
    #SetEnv OILS_NOVELIST_PROFILE
    #SetEnv OILS_NOVELIST_PASSWORD

    # Uncomment to force SSL any time a patron is logged in.  This protects 
    # authentication tokens.  Left commented out for backwards compat for now.
    #SetEnv OILS_OPAC_FORCE_LOGIN_SSL 1

    # If set, the skin uses the combined JS file at $SKINDIR/js/combined.js
    #SetEnv OILS_OPAC_COMBINED_JS 1

</LocationMatch>

<Location /opac/>
    # ----------------------------------------------------------------------------------
    # Some mod_deflate fun
    # ----------------------------------------------------------------------------------
    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE

        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>

</Location>

<Location //opac/>
    # ----------------------------------------------------------------------------------
    # Some mod_deflate fun
    # ----------------------------------------------------------------------------------
    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE

        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>

</Location>

# ----------------------------------------------------------------------------------
# Force SSL on the OPAC's "My Account" page
# ----------------------------------------------------------------------------------
<LocationMatch .*/myopac.xml>
    SSLRequireSSL
</LocationMatch>

RewriteCond %{QUERY_STRING} locale=([^&]*)
RewriteRule ^/opac/[a-z]{2}-[A-Z]{2}/extras/slimpac/(.*)$ %{REQUEST_SCHEME}://%{HTTP_HOST}/opac/%1/extras/slimpac/$1? [redirect]
<LocationMatch /opac/[a-z]{2}-[A-Z]{2}/extras/slimpac/>
    AddOutputFilter INCLUDES;XMLENT .html
</LocationMatch>

# ----------------------------------------------------------------------------------
# Run server-side XUL and XHTML through xmlent to load the correct XML entities
# ----------------------------------------------------------------------------------
RewriteCond %{HTTP:Accept-Language} ^([a-z]{2}-[A-Z]{2})$
# Default to en-US if we haven't matched a locale of the form xx-YY 
RewriteRule .? - [S=4]
RewriteRule ^/xul/      -       [E=locale:en-US]
RewriteRule ^/reports/  -       [E=locale:en-US]
RewriteRule .? - [E=locale:en-US]
RewriteRule .? - [S=3]
# Otherwise, set our real locale
RewriteRule ^/xul/      -       [E=locale:%{HTTP:Accept-Language}]
RewriteRule ^/reports/  -       [E=locale:%{HTTP:Accept-Language}]
RewriteRule .? - [E=locale:%{HTTP:Accept-Language}]

<LocationMatch /xul/.*\.x?html$>
    SSILegacyExprParser on
    Options +Includes
    XMLEntEscapeScript "no"
    XMLEntStripComments "yes"
    XMLEntStripPI "yes"
    XMLEntStripDoctype "yes"
    XMLEntContentType "text/html; charset=utf-8"
    AddOutputFilter INCLUDES;XMLENT .xhtml
    AddOutputFilter INCLUDES;XMLENT .html
    SetEnv no-gzip
    Require all granted 
</LocationMatch>


<LocationMatch /xul/.*\.xul$>
    SSILegacyExprParser on
    Options +Includes
    XMLEntContentType "application/vnd.mozilla.xul+xml"
    AddOutputFilter INCLUDES;XMLENT .xul
    SetEnv no-gzip
    Require all granted 
</LocationMatch>

# ----------------------------------------------------------------------------------
# Supercat feeds
# ----------------------------------------------------------------------------------
<Location /opac/extras/oisbn>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::oisbn
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/supercat>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::supercat
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/unapi>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::unapi
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/feed/bookbag>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::bookbag_feed
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/opensearch>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::opensearch_feed
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/sru>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::sru_search
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/sru_auth>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::sru_auth_search
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/feed/freshmeat>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::changes_feed
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>
<Location /opac/extras/browse>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::string_browse
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location> 	
<Location /opac/extras/startwith>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::SuperCat::string_startwith
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location> 	
	
# ----------------------------------------------------------------------------------
# Module for displaying OpenSRF API documentation
# ----------------------------------------------------------------------------------
<Location /opac/extras/docgen.xsl>
    AddOutputFilter INCLUDES .xsl
</Location>

# ----------------------------------------------------------------------------------
# Module for processing staff-client offline scripts lives here
# ----------------------------------------------------------------------------------
<Directory "/openils/var/cgi-bin/offline">
    AddHandler cgi-script .pl
    AllowOverride None
    Options +ExecCGI
    Require all granted 
</Directory>
	
	
# ----------------------------------------------------------------------------------
# XXX Note, it's important to explicitly set the JSON encoding style 
# (OSRFGatewayLegacyJSON), since the default encoding style will likely change 
# with OpenSRF 1.0
# ----------------------------------------------------------------------------------
# OpenSRF JSON legacy gateway
# ----------------------------------------------------------------------------------
<Location /gateway>
    SetHandler osrf_json_gateway_module
    OSRFGatewayLegacyJSON "true"
    Require all granted 
</Location>
# ----------------------------------------------------------------------------------
# New-style OpenSRF JSON gateway
# ----------------------------------------------------------------------------------
<Location /osrf-gateway-v1>
    SetHandler osrf_json_gateway_module
    OSRFGatewayLegacyJSON "false"
    Require all granted 
</Location>

# ----------------------------------------------------------------------------------
# OpenSRF-over-HTTP translator
# (http://open-ils.org/dokuwiki/doku.php?id=opensrf_over_http)
# ----------------------------------------------------------------------------------

# OPTIONAL: Running the translator behind a proxy requires accessing
# the client IP address via mod_remoteip (sudo a2enmod remoteip).
# Below is a sample configuration for a proxy running on the same
# server and passing the client IP address via the X-Forwarded-For header.
#
#RemoteIPInternalProxy 127.0.0.1/24
#RemoteIPInternalProxy ::1
#RemoteIPHeader X-Forwarded-For

<Location /osrf-http-translator>
    SetHandler osrf_http_translator_module
    Require all granted 
</Location>

# ----------------------------------------------------------------------------------
# The exporter lives here
# ----------------------------------------------------------------------------------
<Location /exporter>
    SetHandler perl-script
    AuthType Basic
    AuthName "Exporter Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    PerlHandler OpenILS::WWW::Exporter
    Options +ExecCGI
    PerlSendHeader On
</Location>

<Location /opac/extras/merge_template>
    SetHandler perl-script
    AuthType Basic
    AuthName "Batch Update Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    PerlHandler OpenILS::WWW::TemplateBatchBibUpdate
    PerlSendHeader On
    Options +ExecCGI
</Location>

<Location /opac/extras/circ>
    AuthType Basic
    AuthName "Circ Extras Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    Options +ExecCGI
    PerlSendHeader On
</Location>

<Location /collections>
    SetHandler perl-script
    AuthType Basic
    AuthName "Collections Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "money.collections_tracker.create"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    Options +ExecCGI
    PerlSendHeader On
</Location>

# ----------------------------------------------------------------------------------
# Protect Standalone/Offline mode files from public view
# ----------------------------------------------------------------------------------
<Location /standalone/>
    AuthType Basic
    AuthName "Standalone Mode Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    PerlSendHeader On
    allow from all
    SSLRequireSSL
</Location>

# ----------------------------------------------------------------------------------
# Reporting output lives here
# ----------------------------------------------------------------------------------
<Location /reporter/>
    AuthType Basic
    AuthName "Report Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "VIEW_REPORT_OUTPUT"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    Options +ExecCGI
    PerlSendHeader On
</Location>

# ----------------------------------------------------------------------------------
# Reports GUI
# ----------------------------------------------------------------------------------
<LocationMatch /reports.*\.x?html>
    SSILegacyExprParser on
    Options +Includes
    XMLEntContentType "text/html; charset=utf-8"
    AddOutputFilter INCLUDES;XMLENT .xhtml
    AddOutputFilter INCLUDES;XMLENT .html
</LocationMatch>

<LocationMatch /reports>
    SSILegacyExprParser on
    Options +Includes
    AddOutputFilter INCLUDES;XMLENT .xhtml
</LocationMatch>

# capture locale CGI param for /reports/fm_IDL.xml
RewriteCond %{REQUEST_URI} ^/reports/fm_IDL.xml
RewriteCond %{QUERY_STRING} locale=([^&;]*)
RewriteRule . - [E=locale:%1]

<LocationMatch /reports/fm_IDL.xml>
    IDLChunkStripPI "yes"
    IDLChunkEscapeScript "no"
    IDLChunkStripComments "yes"
    IDLChunkStripDoctype "yes"
    IDLChunkContentType "application/xml; charset=utf-8"
    AddOutputFilter INCLUDES;IDLCHUNK .xml
    SetEnv no-gzip
</LocationMatch>

# ----------------------------------------------------------------------------------
# EDI Message viewer
# ----------------------------------------------------------------------------------
<Location /edi>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::EDI
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location> 	

# ----------------------------------------------------------------------------------
# XML-RPC gateway
# ----------------------------------------------------------------------------------
<Location /xml-rpc>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::XMLRPCGateway
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
    <IfModule mod_headers.c>
        Header onsuccess set Cache-Control no-cache
    </IfModule>
</Location>

# ----------------------------------------------------------------------------------
# Conify - next-generation Evergreen administration interface
# ----------------------------------------------------------------------------------
RewriteRule ^/conify/([a-z]{2}-[A-Z]{2})/global/(.*)$ /conify/global/$2 [E=locale:$1,L]
<Location /conify>
    SSILegacyExprParser on
    Options +Includes
    XMLEntStripPI "yes"
    XMLEntEscapeScript "no"
    XMLEntStripComments "no"
    XMLEntContentType "text/html; charset=utf-8"
    AddOutputFilter INCLUDES;XMLENT .html
 
    AuthType Basic
    AuthName "Dojo Admin Login"
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Require valid-user
    Options +ExecCGI
    PerlSendHeader On
</Location>

# ----------------------------------------------------------------------------------
# The PhoneList lives here
# ----------------------------------------------------------------------------------
<Location /phonelist>
    SetHandler perl-script
    AuthType Basic
    AuthName "PhoneList Login"
    Require valid-user
    PerlOptions +GlobalRequest
    PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
    PerlHandler OpenILS::WWW::PhoneList
    PerlAuthenHandler OpenILS::WWW::Proxy::Authen
    Options +ExecCGI
    PerlSendHeader On
    <IfModule mod_headers.c>
        Header onsuccess set Cache-Control no-cache
    </IfModule>
</Location>
<Location /vandelay-upload>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::Vandelay::spool_marc
    Options +ExecCGI
    Require all granted 
</Location>
<Location /jacket-upload>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::Vandelay::spool_jacket
    Options +ExecCGI
    Require all granted 
</Location>

# OpenURL 0.1 searching based on OpenSearch
RewriteMap openurl prg:/openils/bin/openurl_map.pl
RewriteCond %{QUERY_STRING} (^.*$)
RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]



# General Evergreen web template processor
<Location /eg>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::EGWeb
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 

    PerlSetVar OILSWebBasePath "/eg"
    PerlSetVar OILSWebWebDir "/openils/var/web"
    PerlSetVar OILSWebDefaultTemplateExtension "tt2"

    # Port Apache listens on for HTTP traffic.  Used for HTTP requests 
    # routed from Perl handlers back to the same Apache instance, like
    # added content requests.  Use this when running Apache with a 
    # non-standard port, typical with a proxy setup.  Defaults to "80".
    # PerlSetVar OILSWebInternalHTTPPort "7080"

    # Enable Template-Toolkit error debugging messages (apache error log)
    PerlSetVar OILSWebDebugTemplate "false"
    # local cache of compiled Template Toolkit templates
    PerlSetVar OILSWebCompiledTemplateCache "/tmp/eg_template_cache"
    # template TTL - how long, in seconds, that Template Toolkit
    # waits to check for updated template files
    #PerlSetVar OILSWebTemplateStatTTL 60

    # -------------------------------------------------------
    # Media Prefix.  In the 3rd example, the protocol (http) is enforced
    #PerlSetVar OILSWebMediaPrefix "/media"
    #PerlSetVar OILSWebMediaPrefix "static.example.com/media"
    #PerlSetVar OILSWebMediaPrefix "http://static.example.com/media"

    # Locale messages files:
    #
    # These appear in pairs; the first represents the user agent
    # Accept-Language header locale, and the second represents
    # the fully-qualified path for the corresponding PO file that
    # contains the messages.
    #
    # If you enable two or more locales, then users will be able to
    # select their preferred locale from a locale picker in the Bootstrap OPAC.
    #
    #PerlAddVar OILSWebLocale "en"
    #PerlAddVar OILSWebLocale "/openils/var/data/locale/bootstrap-opac/messages.en.po"
    PerlAddVar OILSWebLocale "en_ca"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/bootstrap-opac/en-CA.po"
    PerlAddVar OILSWebLocale "fr_ca"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/bootstrap-opac/fr-CA.po"
    PerlAddVar OILSWebLocale "cs_cz"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/bootstrap-opac/cs-CZ.po"

    # If you're using the TPAC OPAC, you should instead set the locales
    # like this:
    #PerlAddVar OILSWebLocale "en"
    #PerlAddVar OILSWebLocale "/openils/var/data/locale/opac/messages.en.po"
    #PerlAddVar OILSWebLocale "en_ca"
    #PerlAddVar OILSWebLocale "/openils/var/data/locale/opac/en-CA.po"
    #PerlAddVar OILSWebLocale "fr_ca"
    #PerlAddVar OILSWebLocale "/openils/var/data/locale/opac/fr-CA.po"

    # Set the default locale: defaults to en-US
    PerlAddVar OILSWebDefaultLocale "cs_cz"
    
    # Templates will be loaded from the following paths in reverse order.
    PerlAddVar OILSWebTemplatePath "/openils/var/templates"
    PerlAddVar OILSWebTemplatePath "/openils/var/templates-bootstrap" # Comment this line out to use the legacy TPAC
    #PerlAddVar OILSWebTemplatePath "/openils/var/templates_localskin"

    #-------------------------------------------------
    # Added Content Configuration
    #-------------------------------------------------
    # Content Cafe
    #SetEnv OILS_CONTENT_CAFE_USER MYUSER
    #SetEnv OILS_CONTENT_CAFE_PASS MYPASS
    
    # LibraryThing
    #SetEnv OILS_LIBRARYTHING_URL http://ltfl.librarything.com/forlibraries/widget.js?id=MYID
    #SetEnv OILS_LIBRARYTHING_HTTPS_URL https://ltfl.librarything.com/forlibraries/widget.js?id=MYID
    
    # ChiliFresh
    #SetEnv OILS_CHILIFRESH_ACCOUNT
    #SetEnv OILS_CHILIFRESH_URL http://chilifresh.com/on-site/js/evergreen.js
    #SetEnv OILS_CHILIFRESH_HTTPS_URL https://secure.chilifresh.com/on-site/js/evergreen.js

    # Novelist
    # SetEnv OILS_NOVELIST_URL http://imageserver.ebscohost.com/novelistselect/ns2init.js
    # SetEnv OILS_NOVELIST_PROFILE <profile>
    # SetEnv OILS_NOVELIST_PASSWORD <password>

    #-------------------------------------------------

    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        <IfModule mod_headers.c>
            Header append Cache-Control "public"
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>
</Location>
<LocationMatch ^/(images|css|js)/>
    # should pick up the default expire time from eg.conf...
    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        <IfModule mod_headers.c>
            Header append Cache-Control "public"
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>
</LocationMatch>
<Location /eg/opac>
    # Uncomment the entries below to enable Shibboleth authentication
    #AuthType shibboleth
    #Require shibboleth

    PerlSetVar OILSWebContextLoader "OpenILS::WWW::EGCatLoader"
    # Expire the HTML quickly since we're loading dynamic data for each page
    ExpiresActive On
    ExpiresByType text/html "access plus 5 seconds"
</Location>
<Location /eg/kpac>
    PerlSetVar OILSWebContextLoader "OpenILS::WWW::EGKPacLoader"
    PerlSetVar KPacConfigFile "/openils/conf/kpac.xml.example"
    ExpiresActive On
    ExpiresByType text/html "access plus 5 seconds"
</Location>

# Note: the template processor will decline handling anything it does not
# have an explicit configuration for, which means it will fall back to 
# Apache to serve the file.  However, in the interest of speed, go ahead 
# and tell Apache to avoid asking OpenILS::WWW::EGWeb for static content.
# Add more exemptions as needed.
<LocationMatch ^/eg/.*(\.js|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
    SetHandler None
</LocationMatch>

# ----------------------------------------------------------------------------------
# Some mod_deflate setup
# ----------------------------------------------------------------------------------
<IfModule mod_deflate.c>

    ## optional logging for mod_deflate debugging
    ##DeflateFilterNote Input instream
    ##DeflateFilterNote Output outstream
    ##DeflateFilterNote Ratio ratio
    ##
    ##LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
    ##CustomLog /var/log/apache2/deflate_log deflate

    # There are problems with XMLENT and mod_deflate - so lets disable it
    # This is where we don't have a pre-existing LocationMatch directive earlier
    <LocationMatch /opac/.*\.xml$>
        SetEnv no-gzip
    </LocationMatch>
    <LocationMatch /opac/[a-z]{2}-[A-Z]{2}/extras/slimpac/.*\.html$>
        SetEnv no-gzip
    </LocationMatch>
    <LocationMatch /reports/.*\.xhtml$>
        SetEnv no-gzip
    </LocationMatch>
    <LocationMatch /conify/.*\.html$>
        SetEnv no-gzip
    </LocationMatch>
</IfModule>

<Location /print_template>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::PrintTemplate
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 
</Location>


<Location /IDL2js>

    SetHandler perl-script
    PerlHandler OpenILS::WWW::IDL2js
    Options +ExecCGI
    PerlSendHeader On
    Require all granted 

    <IfModule mod_headers.c>
        Header append Cache-Control "public"
    </IFModule>

    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>
</Location>

<LocationMatch /eg/staff/>
    Options -MultiViews
    PerlSetVar OILSWebStopAtIndex "true"

    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R,L]

    # sample staff-specific translation files
    PerlAddVar OILSWebLocale "en_ca"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/en-CA.po"
    PerlAddVar OILSWebLocale "fr_ca"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/fr-CA.po"
    PerlAddVar OILSWebLocale "cs_cz"
    PerlAddVar OILSWebLocale "/openils/var/data/locale/staff/cs-CZ.po"
</LocationMatch>

<Location /js/>
    <IfModule mod_headers.c>
        Header append Cache-Control "public"
    </IFModule>
    <IfModule mod_deflate.c>
        SetOutputFilter DEFLATE
        BrowserMatch ^Mozilla/4 gzip-only-text/html
        BrowserMatch ^Mozilla/4\.0[678] no-gzip
        BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
        <IfModule mod_headers.c>
            Header append Vary User-Agent env=!dont-vary
        </IfModule>
    </IfModule>
</Location>

<Location /api/basicauth>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::RemoteAuth
    Options +ExecCGI

    # access restricted to localhost by default; since this module provides no
    # client authentiation, restricting access by IP or other means is stongly
    # recommended
    Require local

    # remoteauth profile name
    PerlSetVar OILSRemoteAuthProfile "Basic"
    # Perl module for processing requests
    PerlSetVar OILSRemoteAuthHandler "OpenILS::WWW::RemoteAuth::Basic"

    # staff username/password for config lookup and patron retrieval
    PerlSetVar OILSRemoteAuthClientUsername "admin"
    PerlSetVar OILSRemoteAuthClientPassword "demo123"
</Location>

<Location /api/ezproxy>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::RemoteAuth
    Options +ExecCGI

    # access restricted to localhost by default; since this module provides no
    # client authentiation, restricting access by IP or other means is stongly
    # recommended
    Require local

    # remoteauth profile name
    PerlSetVar OILSRemoteAuthProfile "EZProxyCGI"
    # Perl module for processing requests
    PerlSetVar OILSRemoteAuthHandler "OpenILS::WWW::RemoteAuth::EZProxyCGI"

    # staff username/password for config lookup and patron retrieval
    PerlSetVar OILSRemoteAuthClientUsername "admin"
    PerlSetVar OILSRemoteAuthClientPassword "demo123"

    # Location of TT2 templates for EZProxy login form and error pages.
    # Templates will be loaded from the following paths in reverse order.
    PerlAddVar OILSRemoteAuthTemplatePath "/openils/var/templates/remoteauth/ezproxycgi"
    #PerlAddVar OILSRemoteAuthTemplatePath "/openils/var/templates_localskin/remoteauth/ezproxycgi"

    # Locale (defaults to en_us)
    #PerlAddVar OILSRemoteAuthLocale "en_us"

    # Base URI of your EZProxy server; be sure there is no trailing slash
    PerlSetVar OILSRemoteAuthEZProxyBaseURI "http://example.com/ezproxy"

    # shared secret used to generate EZProxy authentication ticket
    # This should be the same as the value in the MD5 line of your EZProxy users.txt configuration
    # This default value is not suitable for production!
    PerlSetVar OILSRemoteAuthEZProxySecret "secret"
</Location>

<Location /api/patronapi>
    SetHandler perl-script
    PerlHandler OpenILS::WWW::RemoteAuth
    Options +ExecCGI

    # access restricted to localhost by default; since this module provides no
    # client authentication and can be configured to return detailed personal
    # information, restricting access by IP or other means is stongly
    # recommended
    Require local

    # remoteauth profile name
    PerlSetVar OILSRemoteAuthProfile "PatronAPI"
    # Perl module for processing requests
    PerlSetVar OILSRemoteAuthHandler "OpenILS::WWW::RemoteAuth::PatronAPI"

    # staff username/password for config lookup and patron retrieval
    PerlSetVar OILSRemoteAuthClientUsername "admin"
    PerlSetVar OILSRemoteAuthClientPassword "demo123"

    # Location of TT2 templates for PatronAPI responses.
    # Templates will be loaded from the following paths in reverse order.
    PerlAddVar OILSRemoteAuthTemplatePath "/openils/var/templates/remoteauth/patronapi"
    #PerlAddVar OILSRemoteAuthTemplatePath "/openils/var/templates_localskin/remoteauth/patronapi"

    # Locale (defaults to en_us)
    #PerlAddVar OILSRemoteAuthLocale "en_us"

    # set to "true" to allow retrieval of detailed patron information
    # without patron authorization
    PerlSetVar OILSRemoteAuthPatronAPIAllowDump "false"

    # identifier type for patron information requests (/dump)
    # permitted values: "barcode" (default), "username"
    #PerlSetVar OILSRemoteAuthPatronAPIIDType "barcode"
</Location>

# Uncomment the following to force SSL for everything. Note that this defeats caching
# and you will suffer a performance hit.
#RewriteCond %{HTTPS} off
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R,L]

# ------------------------------------------------------------------------
# /eg2/ client setup and locale configuration.
#
# If a valid locale cookie is present that does not match the current
# path, redirect to the requested locale path.
# Otherwise, if no locale is active, redirect to the default locale.

# fr-CA
#RewriteCond %{REQUEST_URI} ^/eg2/
#RewriteCond %{REQUEST_URI} !^/eg2/fr-CA/
#RewriteCond %{HTTP_COOKIE} eg_locale=fr_ca
#RewriteRule ^/eg2/(.*) https://%{HTTP_HOST}/eg2/fr-CA/$1 [NE,R=307,L]

# cs-CZ
RewriteCond %{REQUEST_URI} ^/eg2/
RewriteCond %{REQUEST_URI} !^/eg2/cs-CZ/
RewriteCond %{HTTP_COOKIE} eg_locale=cs_cz
RewriteRule ^/eg2/(.*) https://%{HTTP_HOST}/eg2/cs-CZ/$1 [NE,R=307,L]

# Default / en-US.
# No alternate supported cookie provided.
RewriteCond %{REQUEST_URI}  ^/eg2/
RewriteCond %{REQUEST_URI}  !^/eg2/([a-z]{2}-[A-Z]{2})/
RewriteRule ^/eg2/(.*) https://%{HTTP_HOST}/eg2/en-US/$1 [NE,R=307,L]

# en-US build
# This is the only required configuration when only using the default locale.
<Directory "/openils/var/web/eg2/en-US">
    FallbackResource /eg2/en-US/index.html
    <Files "index.html">
      <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
      </IfModule>
    </Files>
</Directory>

# fr-CA build
#<Directory "/openils/var/web/eg2/fr-CA">
#    FallbackResource /eg2/fr-CA/index.html
#    <Files "index.html">
#      <IfModule mod_headers.c>
#        Header set Cache-Control "no-cache, no-store, must-revalidate"
#        Header set Pragma "no-cache"
#        Header set Expires 0
#      </IfModule>
#    </Files>
#</Directory>

# cs-CZ build
<Directory "/openils/var/web/eg2/cs-CZ">
    FallbackResource /eg2/cs-CZ/index.html
    <Files "index.html">
      <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
      </IfModule>
    </Files>
</Directory>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screenshot at 2023-06-19 14-05-14.png
Type: image/png
Size: 132532 bytes
Desc: not available
URL: <http://list.evergreen-ils.org/pipermail/evergreen-general/attachments/20230619/bd4751e4/attachment-0001.png>


More information about the Evergreen-general mailing list