summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Installer.pm
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/Installer.pm')
-rw-r--r--rt/lib/RT/Installer.pm340
1 files changed, 0 insertions, 340 deletions
diff --git a/rt/lib/RT/Installer.pm b/rt/lib/RT/Installer.pm
deleted file mode 100644
index 2cc5ba9..0000000
--- a/rt/lib/RT/Installer.pm
+++ /dev/null
@@ -1,340 +0,0 @@
-# BEGIN BPS TAGGED BLOCK {{{
-#
-# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-# <jesse@bestpractical.com>
-#
-# (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 }}}
-
-package RT::Installer;
-use strict;
-use warnings;
-
-require UNIVERSAL::require;
-my %Meta = (
- DatabaseType => {
- Widget => '/Widgets/Form/Select',
- WidgetArguments => {
- Description => 'Database type', # loc
- Values => [
- grep {
- my $m = 'DBD::' . $_;
- $m->require ? 1 : 0
- } qw/mysql Pg SQLite Oracle/
- ],
- ValuesLabel => {
- mysql => 'MySQL', #loc
- Pg => 'PostgreSQL', #loc
- SQLite => 'SQLite', #loc
- Oracle => 'Oracle', #loc
- },
- },
- },
- DatabaseHost => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Database host', #loc
- Default => 1,
- DefaultLabel => "Keep 'localhost' if you're not sure. Leave blank to connect locally over a socket", #loc
- Hints => "The domain name of your database server (like 'db.example.com').", #loc
- },
- },
- DatabasePort => {
- Widget => '/Widgets/Form/Integer',
- WidgetArguments => {
- Description => 'Database port', #loc
- Default => 1,
- DefaultLabel =>
- 'Leave empty to use the default value for your database', #loc
- },
- },
- DatabaseName => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Database name', #loc
- },
- },
- DatabaseAdmin => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Default => 1,
- Hints => "Leave this alone to use the default dba username for your database type", #loc
- Description => 'DBA username', # loc
- DefaultLabel => '',
- },
- },
- DatabaseAdminPassword => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'DBA password', #loc
- DefaultLabel => "The DBA's database password",#loc
- Type => 'password',
- Hints => "You must provide the dba's password so we can create the RT database and user.",
- },
- },
- DatabaseUser => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Database username for RT', #loc
- Hints => 'RT will connect to the database using this user. It will be created for you.', #loc
- },
- },
- DatabasePassword => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Database password for RT', #loc
- Type => 'password',
- Hints => 'The password RT should use to connect to the database.',
- },
- },
- DatabaseRequireSSL => {
- Widget => '/Widgets/Form/Boolean',
- WidgetArguments => {
- Description => 'Use SSL?', # loc
- },
- },
- rtname => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Site name', #loc
- Hints => 'RT will use this string to uniquely identify your installation and looks for it in the subject of emails to decide what ticket a message applies to. We recommend that you set this to your internet domain. (ex: example.com)' #loc
- },
- },
- MinimumPasswordLength => {
- Widget => '/Widgets/Form/Integer',
- WidgetArguments => {
- Description => 'Minimum password length', #loc
- },
- },
- Password => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Administrative password', #loc
- Hints => 'RT will create a user called "root" and set this as their password', #loc
- Type => 'password',
- },
- },
- OwnerEmail => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'RT Administrator Email', #loc
- Hints => "When RT can't handle an email message, where should it be forwarded?", #loc
- },
- },
- CommentAddress => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Comment address', #loc
- Hints =>
-'the default addresses that will be listed in From: and Reply-To: headers of comment mail.' #loc
- },
- },
- CorrespondAddress => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Correspond address', #loc
- Hints =>
-'the default addresses that will be listed in From: and Reply-To: headers of correspondence mail.' #loc
- },
- },
- SendmailPath => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Hints => 'Where to find your sendmail binary.', #loc
- Description => 'Path to sendmail', #loc
- },
- },
- WebDomain => {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Domain name', #loc
- Hints => "Don't include http://, just something like 'localhost', 'rt.example.com'", #loc
- },
- },
- WebPort => {
- Widget => '/Widgets/Form/Integer',
- WidgetArguments => {
- Description => 'Web port', #loc
- Hints => 'which port your web server will listen to, e.g. 8080', #loc
- },
- },
-
-);
-
-my $HAS_DATETIME_TZ = eval { require DateTime::TimeZone };
-
-if ($HAS_DATETIME_TZ) {
- $Meta{Timezone} = {
- Widget => '/Widgets/Form/Select',
- WidgetArguments => {
- Description => 'Timezone', #loc
- Callback => sub {
- my $ret;
- $ret->{Values} = ['', DateTime::TimeZone->all_names];
-
- my $has_datetime = eval { require DateTime };
- if ( $has_datetime ) {
- my $dt = DateTime->now;
- for my $tz ( DateTime::TimeZone->all_names ) {
- $dt->set_time_zone( $tz );
- $ret->{ValuesLabel}{$tz} =
- $tz . ' ' . $dt->strftime('%z');
- }
- }
- $ret->{ValuesLabel}{''} = 'System Default'; #loc
-
- return $ret;
- },
- },
- };
-}
-else {
- $Meta{Timezone} = {
- Widget => '/Widgets/Form/String',
- WidgetArguments => {
- Description => 'Timezone', #loc
- },
- };
-}
-
-sub Meta {
- my $class = shift;
- my $type = shift;
- return $Meta{$type} if $type;
- return \%Meta;
-}
-
-sub CurrentValue {
- my $class = shift;
- my $type = shift;
- $type = $class if !ref $class && $class && $class ne 'RT::Installer';
-
- return undef unless $type;
- return $RT::Installer
- && exists $RT::Installer->{InstallConfig}{$type}
- ? $RT::Installer->{InstallConfig}{$type}
- : scalar RT->Config->Get($type);
-}
-
-sub CurrentValues {
- my $class = shift;
- my @types = @_;
- push @types, $class if !ref $class && $class && $class ne 'RT::Installer';
-
- return { map { $_ => CurrentValue($_) } @types };
-}
-
-sub ConfigFile {
- require File::Spec;
- return File::Spec->catfile( $RT::EtcPath, 'RT_SiteConfig.pm' );
-}
-
-sub SaveConfig {
- my $class = shift;
-
- my $file = $class->ConfigFile;
-
- my $content;
-
- {
- local $/;
- open my $fh, '<', $file or die $!;
- $content = <$fh>;
- $content =~ s/^\s*1;\s*$//m;
- }
-
- # make organization the same as rtname
- $RT::Installer->{InstallConfig}{Organization} =
- $RT::Installer->{InstallConfig}{rtname};
-
- if ( open my $fh, '>', $file ) {
- for ( keys %{ $RT::Installer->{InstallConfig} } ) {
-
- # we don't want to store root's password in config.
- next if $_ eq 'Password';
-
- $RT::Installer->{InstallConfig}{$_} = ''
- unless defined $RT::Installer->{InstallConfig}{$_};
-
- # remove obsolete settings we'll add later
- $content =~ s/^\s* Set \s* \( \s* \$$_ .*$//xm;
-
- $content .= "Set( \$$_, '$RT::Installer->{InstallConfig}{$_}' );\n";
- }
- $content .= "1;\n";
- print $fh $content;
- close $fh;
-
- return ( 1, "Successfully saved configuration to $file." );
- }
-
- return ( 0, "Cannot save configuration to $file: $!" );
-}
-
-=head1 NAME
-
- RT::Installer - RT's Installer
-
-=head1 SYNOPSYS
-
- use RT::Installer;
- my $meta = RT::Installer->Meta;
-
-=head1 DESCRIPTION
-
-C<RT::Installer> class provides access to RT Installer Meta
-
-=cut
-
-eval "require RT::Installer_Vendor";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Vendor.pm}) {
- die $@;
-};
-
-eval "require RT::Installer_Local";
-if ($@ && $@ !~ qr{^Can't locate RT/Installer_Local.pm}) {
- die $@;
-};
-
-1;
-