X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT.pm.in;h=db37250373aeadefd779710b084ac23b0d77c3d9;hp=065734e2f962df62e138dba9eabf60ff12adead7;hb=f7fd2a3e34da751cbc02bbf215e99c6dc89adc15;hpb=0ebeec96313dd7edfca340f01f8fbbbac1f4aa1d diff --git a/rt/lib/RT.pm.in b/rt/lib/RT.pm.in index 065734e2f..db3725037 100644 --- a/rt/lib/RT.pm.in +++ b/rt/lib/RT.pm.in @@ -1,29 +1,48 @@ -# BEGIN LICENSE BLOCK +# {{{ BEGIN BPS TAGGED BLOCK # -# Copyright (c) 1996-2002 Jesse Vincent +# COPYRIGHT: +# +# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC +# # -# (Except where explictly superceded by other copyright notices) +# (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 +# 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., 675 Mass Ave, Cambridge, MA 02139, USA. # -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. # +# CONTRIBUTION SUBMISSION POLICY: # -# END LICENSE BLOCK - - +# (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; use strict; use RT::I18N; @@ -33,7 +52,6 @@ use RT::System; use vars qw($VERSION $System $SystemUser $Nobody $Handle $Logger $CORE_CONFIG_FILE $SITE_CONFIG_FILE - $VENDOR_CONFIG_FILE $BasePath $EtcPath $VarPath @@ -51,6 +69,8 @@ $VERSION = '@RT_VERSION_MAJOR@.@RT_VERSION_MINOR@.@RT_VERSION_PATCH@'; $CORE_CONFIG_FILE = "@CONFIG_FILE_PATH@/RT_Config.pm"; $SITE_CONFIG_FILE = "@CONFIG_FILE_PATH@/RT_SiteConfig.pm"; +@DATABASE_ENV_PREF@ + $BasePath = '@RT_PATH@'; $EtcPath = '@RT_ETC_PATH@'; @@ -94,7 +114,6 @@ $MasonSessionDir = '@MASON_SESSION_PATH@'; =item LoadConfig Load RT's config file. First, go after the core config file. -After that, try to load the vendor config. After that, go after the site config. =cut @@ -117,13 +136,10 @@ sub LoadConfig { =cut sub Init { - require RT::Handle; + #Get a database connection - unless ($Handle && $Handle->dbh->ping) { - $Handle = RT::Handle->new(); - } - $Handle->Connect(); - + ConnectToDatabase(); + #RT's system user is a genuine database user. its id lives here $SystemUser = new RT::CurrentUser(); $SystemUser->LoadByName('RT_System'); @@ -137,6 +153,21 @@ sub Init { InitLogging(); } + +=head2 ConnectToDatabase + +Get a database connection + +=cut + +sub ConnectToDatabase { + require RT::Handle; + unless ($Handle && $Handle->dbh && $Handle->dbh->ping) { + $Handle = RT::Handle->new(); + } + $Handle->Connect(); +} + =head2 InitLogging Create the RT::Logger object. @@ -156,21 +187,23 @@ sub InitLogging { $RT::Logger=Log::Dispatch->new(); if ($RT::LogToFile) { - - unless (-d $RT::LogDir && -w $RT::LogDir) { - # localizing here would be hard when we don't have a current user yet - # die $self->loc("Log directory [_1] not found or couldn't be written.\n RT can't run.", $RT::LogDir); - die ("Log directory $RT::LogDir not found or couldn't be written.\n RT can't run."); - } - - my $filename; + my ($filename, $logdir); if ($RT::LogToFileNamed =~ m![/\\]!) { # looks like an absolute path. $filename = $RT::LogToFileNamed; + ($logdir) = $RT::LogToFileNamed =~ m!^(.*[/\\])!; } else { $filename = "$RT::LogDir/$RT::LogToFileNamed"; + $logdir = $RT::LogDir; } + + unless ( -d $logdir && ( ( -f $filename && -w $filename ) || -w $logdir ) ) { + # localizing here would be hard when we don't have a current user yet + # die $self->loc("Log directory [_1] not found or couldn't be written.\n RT can't run.", $RT::LogDir); + die ("Log file $filename couldn't be written or created.\n RT can't run."); + } + require Log::Dispatch::File; @@ -219,7 +252,8 @@ sub InitLogging { return "$p{message} ($filename:$line)\n"} }, - stderr => 1 + stderr => 1, + @RT::LogToSyslogConf )); } @@ -264,25 +298,20 @@ sub Nobody { } -=head2 DropSetGIDPermissions - -Drops setgid permissions. +=head1 SYNOPSIS -=cut +=head1 BUGS -sub DropSetGIDPermissions { - # Now that we got the config read in, we have the database - # password and don't need to be setgid - # make the effective group the real group - $) = $(; -} +Please report them to rt-bugs@fsck.com, if you know what's broken and have at least +some idea of what needs to be fixed. +If you're not sure what's going on, report them rt-devel@lists.bestpractical.com. -=head1 SYNOPSIS +=head1 SEE ALSO -=head1 BUGS +L +L -=head1 SEE ALSO =begin testing