From da5629192a369e6c8a48ac11e40285ee06fdcb14 Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@theke.io>
Date: Tue, 20 Oct 2015 22:50:47 -0300
Subject: [PATCH] Bug 7895: Test for PSGI-related env to report in about.pl

This patch introduces a test for psgi/plack in %ENV and uses that data
to report in the about page.

To test:
- On current master (without Plack), go to about.pl
- Notice no mention of Plack
- Apply the patch
- Reload the about page
=> SUCCESS: No change
- Enable plack, and access the about page through Plack
=> SUCCESS: There is a PSGI label, showing that you are running Plack
- Sign off :-D

Regards

PS: I haven't tested the mod_perl scenario, I just grabbed the MOD_PERL env var
from the docs.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
---
 about.pl                                         | 14 ++++++++++++--
 koha-tmpl/intranet-tmpl/prog/en/modules/about.tt |  3 +++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/about.pl b/about.pl
index 4c27366..01e941c 100755
--- a/about.pl
+++ b/about.pl
@@ -20,10 +20,10 @@
 # You should have received a copy of the GNU General Public License
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
-use warnings;
+use Modern::Perl;
 
 use CGI qw ( -utf8 );
+use List::MoreUtils qw/ any /;
 use LWP::Simple;
 use XML::Simple;
 use Config;
@@ -65,6 +65,16 @@ $apacheVersion    = `httpd2 -v 2> /dev/null` unless $apacheVersion;
 $apacheVersion    = `httpd -v 2> /dev/null` unless $apacheVersion;
 my $zebraVersion = `zebraidx -V`;
 
+# Check running PSGI env
+if ( any { /(^psgi\.|^plack\.)/i } keys %ENV ) {
+    $template->param(
+        is_psgi => 1,
+        psgi_server => ($ENV{ PLACK_ENV }) ? "Plack ($ENV{PLACK_ENV})" :
+                       ($ENV{ MOD_PERL })  ? "mod_perl ($ENV{MOD_PERL})" :
+                                             'Unknown'
+    );
+}
+
 # Additional system information for warnings
 my $prefAutoCreateAuthorities = C4::Context->preference('AutoCreateAuthorities');
 my $prefBiblioAddsAuthorities = C4::Context->preference('BiblioAddsAuthorities');
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
index bcf4b5c..079a340 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
@@ -48,6 +48,9 @@
             </td></tr>
             <tr><th scope="row">MySQL version: </th><td>[% mysqlVersion |html %]</td></tr>
             <tr><th scope="row">Apache version: </th><td>[% apacheVersion |html %]</td></tr>
+          [% IF (is_psgi) %]
+            <tr><th scope="row">PSGI: </th><td>[% psgi_server |html %]</td></tr>
+          [% END %]
             <tr><th scope="row">Zebra version: </th><td>[% zebraVersion |html %]</td></tr>
             [% IF (errZebraConnection == 10000) %]
             <tr><th scope="row"><b>Error</b> </th><td>Zebra server seems not to be available. Is it started?</td></tr>
-- 
2.6.3