%# BEGIN BPS TAGGED BLOCK {{{ %# %# COPYRIGHT: %# %# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) %# %# %# LICENSE: %# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. %# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. %# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. %# %# %# CONTRIBUTION SUBMISSION POLICY: %# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) %# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that %# you are the copyright holder for those contributions and you grant %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} <%init> require Module::Versions::Report; my $title = loc('System Configuration'); unless ($session{'CurrentUser'}->HasRight( Object=> $RT::System, Right => 'SuperUser')) { Abort(loc('This feature is only available to system administrators')); } <& /Admin/Elements/Header, Title => $title &> <& /Elements/Tabs &> <&|/Widgets/TitleBox, title => loc("RT Configuration") &> <%PERL> my $index_conf; foreach my $key ( RT->Config->Options( Overridable => undef, Sorted => 0 ) ) { my $val = RT->Config->GetObfuscated( $key ); next unless defined $val; my $meta = RT->Config->Meta( $key ); my $description = ''; if ( $meta->{'Source'}{'Extension'} && $meta->{'Source'}{'SiteConfig'} ) { $description = loc("[_1] site config", $meta->{'Source'}{'Extension'}); } elsif ( $meta->{'Source'}{'Extension'} ) { $description = loc("[_1] core config", $meta->{'Source'}{'Extension'}); } elsif ( $meta->{'Source'}{'SiteConfig'} ) { $description = loc("site config"); } else { $description = loc("core config"); } $index_conf++; % }
<&|/l&>Option <&|/l&>Value <&|/l&>Source
<% $key %> % if ( $key =~ /Password(?!Length)/i ) { <% loc('Password not printed' ) %>\ % } else { <% stringify($val) |n %>\ % } % if ( $meta->{'Source'}{'SiteConfig'} ) { <% $description %> % } else { <% $description %> % }
<&|/Widgets/TitleBox, title=> loc("RT core variables") &> <%PERL> { no strict qw/refs/; my %config_opt = map { $_ => 1 } RT->Config->Options( Overridable => undef ); my $index_var; foreach my $key ( sort keys %{*RT::} ) { next if !${'RT::'.$key} || ref ${'RT::'.$key} || $config_opt{ $key }; $index_var++; % } % }
<&|/l&>Variable <&|/l&>Value
RT::<% $key %> % if ( $key =~ /Password(?!Length)/i ) { <% loc('Password not printed' ) %>\ % } else { <% ${'RT::'.$key} %> % }
<&|/Widgets/TitleBox, title => loc("RT Size") &> <%PERL> my ($index_size, $user_count, $privileged_count); for my $type (qw/Tickets Queues Transactions Groups PrivilegedUsers UnprivilegedUsers/) { my $count; my $class = 'RT::' . $type; $class =~ s/Privileged|Unprivileged//; my $collection = $class->new(RT->SystemUser); $collection->UnLimit; $collection->FindAllRows; # find disabled if ($type =~ /PrivilegedUsers/) { $user_count = $collection->CountAll; $collection->LimitToPrivileged; $count = $privileged_count = $collection->CountAll; } elsif ($type =~ /UnprivilegedUsers/) { $count = $user_count - $privileged_count; } else { $count = $collection->CountAll; } $index_size++; % }
<&|/l&>Object <&|/l&>Size
<% $type %> <% $count %>
<&|/Widgets/TitleBox, title => loc("Mason template search order") &>
    % foreach my $path ( RT::Interface::Web->ComponentRoots ) {
  1. <% $path %>
  2. % }
<&|/Widgets/TitleBox, title => loc("Perl library search order") &>
    % foreach my $inc (@INC) {
  1. <% $inc %>
  2. % }
<&|/Widgets/TitleBox, title=> loc("Loaded config files") &>
    % foreach my $config (RT->Config->LoadedConfigs) { % if ($config->{site}) {
  1. <% $config->{filename} %>
  2. % } else {
  3. <% $config->{filename} %>
  4. % } % }
<&|/Widgets/TitleBox, title=> loc("Logging summary") &> <& /Admin/Elements/LoggingSummary &>
<&|/Widgets/TitleBox, title => loc("Global Attributes") &> % my $attrs = $RT::System->Attributes; % my $index_size = 0; % while ( my $attr = $attrs->Next ) { % next if $attr->Name eq 'UpgradeHistory'; % if ($attr->Name eq 'UserLogo') { % my $content = $attr->Content; % $content->{data} = defined $content->{data} ? 'DATA' : 'undef' % if exists $content->{data}; % } else { % } % $index_size++; % }
<&|/l&>Name <&|/l&>Value
<% $attr->Name %><% stringify($content) |n %><% $attr->Name %><% stringify($attr->Content) |n %>
<&|/Widgets/TitleBox, title => loc("Loaded perl modules")&> <%perl> my $i = 0; my $report = Module::Versions::Report::report(); my @report = grep /v\d/, split("\n",$report); shift @report; # throw away the perl version my ($ver, $source, $distfile); foreach my $item (@report) { if ($item =~ /^\s*(.*?)\s*v(\S+);/) { $item = $1; $ver = $2; $distfile = $item.".pm"; $distfile =~ s|::|/|g; } % }
<&|/l&>Module <&|/l&>Version <&|/l&>Source
<% $item %> <%$ver%> <% $INC{$distfile} || '' %>
<&|/Widgets/TitleBox, title => loc("RT upgrade history")&> <& /Admin/Elements/UpgradeHistory &> <&|/Widgets/TitleBox, title => loc("Perl configuration") &> % require Config;
<% Config::myconfig() %>
<&|/Widgets/TitleBox, title=> loc("Environment variables") &> % my $row = 0; % for my $key (sort keys %ENV) { % }
<&|/l&>Variable <&|/l&>Value
<% $key %> <% $ENV{$key} %>
<&|/Widgets/TitleBox, title => loc("Operating System") &> <%perl> my @os = ( "Distribution" => 'lsb_release --all', "uname -a" => 'uname -a', "SELinux status" => 'getenforce', "Apache" => [map { "$_ -V" } qw(apache2ctl apachectl httpdctl)], "nginx" => 'nginx -V 2>&1', "lighttpd" => 'lighttpd -V', ); my @os_info; while (my ($name, $cmd) = splice @os, 0, 2) { $cmd = [$cmd] unless ref $cmd eq 'ARRAY'; for my $run (@$cmd) { $run .= " /; my $result = `$run`; if (defined $result and $result =~ /\S/) { push @os_info, $name => $result; last; } } } my $row = 1; % while (my ($name, $output) = splice @os_info, 0, 2) { "> % }
Deployment type <% $INC{'mod_perl.pm'} ? "mod_perl" : $INC{'FCGI.pm'} ? "fastcgi" : "standalone" %>
<% $name %> <% $output %>
<%INIT> use Data::Dumper; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 2; sub stringify { my $value = shift; my $output = Dumper $value; RT::Interface::Web::EscapeHTML(\$output); $output =~ s/ / /g; $output =~ s!\n!
!g; return $output; }