]>
Commit | Line | Data |
---|---|---|
84fb5b46 MKG |
1 | #!/usr/bin/perl -w |
2 | # BEGIN BPS TAGGED BLOCK {{{ | |
3 | # | |
4 | # COPYRIGHT: | |
5 | # | |
320f0092 | 6 | # This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC |
84fb5b46 MKG |
7 | # <sales@bestpractical.com> |
8 | # | |
9 | # (Except where explicitly superseded by other copyright notices) | |
10 | # | |
11 | # | |
12 | # LICENSE: | |
13 | # | |
14 | # This work is made available to you under the terms of Version 2 of | |
15 | # the GNU General Public License. A copy of that license should have | |
16 | # been provided with this software, but in any event can be snarfed | |
17 | # from www.gnu.org. | |
18 | # | |
19 | # This work is distributed in the hope that it will be useful, but | |
20 | # WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
22 | # General Public License for more details. | |
23 | # | |
24 | # You should have received a copy of the GNU General Public License | |
25 | # along with this program; if not, write to the Free Software | |
26 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | |
27 | # 02110-1301 or visit their web page on the internet at | |
28 | # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. | |
29 | # | |
30 | # | |
31 | # CONTRIBUTION SUBMISSION POLICY: | |
32 | # | |
33 | # (The following paragraph is not intended to limit the rights granted | |
34 | # to you to modify and distribute this software under the terms of | |
35 | # the GNU General Public License and is only of importance to you if | |
36 | # you choose to contribute your changes and enhancements to the | |
37 | # community by submitting them to Best Practical Solutions, LLC.) | |
38 | # | |
39 | # By intentionally submitting any modifications, corrections or | |
40 | # derivatives to this work, or any other work intended for use with | |
41 | # Request Tracker, to Best Practical Solutions, LLC, you confirm that | |
42 | # you are the copyright holder for those contributions and you grant | |
43 | # Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, | |
44 | # royalty-free, perpetual, license to use, copy, create derivative | |
45 | # works based on those contributions, and sublicense and distribute | |
46 | # those contributions and any derivatives thereof. | |
47 | # | |
48 | # END BPS TAGGED BLOCK }}} | |
49 | use warnings; | |
50 | use strict; | |
51 | ||
84fb5b46 MKG |
52 | BEGIN { |
53 | die <<EOT if ${^TAINT}; | |
54 | RT does not run under Perl's "taint mode". Remove -T from the command | |
55 | line, or remove the PerlTaintCheck parameter from your mod_perl | |
56 | configuration. | |
57 | EOT | |
af59614d | 58 | } |
84fb5b46 | 59 | |
af59614d MKG |
60 | # fix lib paths, some may be relative |
61 | BEGIN { # BEGIN RT CMD BOILERPLATE | |
84fb5b46 | 62 | require File::Spec; |
af59614d | 63 | require Cwd; |
84fb5b46 MKG |
64 | my @libs = ("lib", "local/lib"); |
65 | my $bin_path; | |
66 | ||
67 | for my $lib (@libs) { | |
68 | unless ( File::Spec->file_name_is_absolute($lib) ) { | |
af59614d | 69 | $bin_path ||= ( File::Spec->splitpath(Cwd::abs_path(__FILE__)) )[1]; |
84fb5b46 MKG |
70 | $lib = File::Spec->catfile( $bin_path, File::Spec->updir, $lib ); |
71 | } | |
72 | unshift @INC, $lib; | |
73 | } | |
74 | ||
75 | } | |
76 | ||
77 | use Getopt::Long; | |
78 | no warnings 'once'; | |
79 | ||
80 | if (grep { m/help/ } @ARGV) { | |
81 | require Pod::Usage; | |
82 | print Pod::Usage::pod2usage( { verbose => 2 } ); | |
83 | exit; | |
84 | } | |
85 | ||
86 | require RT; | |
c33a4027 MKG |
87 | die "Wrong version of RT $RT::VERSION found; need 4.2.*" |
88 | unless $RT::VERSION =~ /^4\.2\./; | |
89 | ||
84fb5b46 | 90 | RT->LoadConfig(); |
403d7b0b | 91 | RT->InitPluginPaths(); |
b5747ff2 | 92 | RT->InitLogging(); |
84fb5b46 MKG |
93 | |
94 | require RT::Handle; | |
95 | my ($integrity, $state, $msg) = RT::Handle->CheckIntegrity; | |
96 | ||
97 | unless ( $integrity ) { | |
98 | print STDERR <<EOF; | |
af59614d | 99 | |
84fb5b46 MKG |
100 | RT couldn't connect to the database where tickets are stored. |
101 | If this is a new installation of RT, you should visit the URL below | |
102 | to configure RT and initialize your database. | |
103 | ||
104 | If this is an existing RT installation, this may indicate a database | |
105 | connectivity problem. | |
106 | ||
107 | The error RT got back when trying to connect to your database was: | |
108 | ||
109 | $msg | |
110 | ||
111 | EOF | |
112 | ||
113 | require RT::Installer; | |
114 | # don't enter install mode if the file exists but is unwritable | |
115 | if (-e RT::Installer->ConfigFile && !-w _) { | |
116 | die 'Since your configuration exists (' | |
117 | . RT::Installer->ConfigFile | |
118 | . ") but is not writable, I'm refusing to do anything.\n"; | |
119 | } | |
120 | ||
121 | RT->Config->Set( 'LexiconLanguages' => '*' ); | |
122 | RT::I18N->Init; | |
123 | ||
124 | RT->InstallMode(1); | |
125 | } else { | |
320f0092 | 126 | RT->Init( Heavy => 1 ); |
84fb5b46 MKG |
127 | |
128 | my ($status, $msg) = RT::Handle->CheckCompatibility( $RT::Handle->dbh, 'post'); | |
129 | unless ( $status ) { | |
130 | print STDERR $msg, "\n\n"; | |
131 | exit -1; | |
132 | } | |
133 | } | |
134 | ||
135 | # we must disconnect DB before fork | |
136 | if ($RT::Handle) { | |
c33a4027 | 137 | $RT::Handle->dbh->disconnect if $RT::Handle->dbh; |
84fb5b46 MKG |
138 | $RT::Handle->dbh(undef); |
139 | undef $RT::Handle; | |
140 | } | |
141 | ||
af59614d | 142 | require RT::PlackRunner; |
84fb5b46 MKG |
143 | # when used as a psgi file |
144 | if (caller) { | |
af59614d | 145 | return RT::PlackRunner->app; |
84fb5b46 MKG |
146 | } |
147 | ||
148 | ||
af59614d MKG |
149 | my $r = RT::PlackRunner->new( RT->InstallMode ? ( server => 'Standalone' ) : |
150 | $0 =~ /standalone/ ? ( server => 'Standalone' ) : | |
151 | $0 =~ /fcgi$/ ? ( server => 'FCGI', env => "deployment" ) | |
152 | : ( server => 'Starlet', env => "deployment" ) ); | |
153 | $r->parse_options(@ARGV); | |
84fb5b46 | 154 | |
af59614d MKG |
155 | # Try to clean up wrong-permissions var/ |
156 | $SIG{INT} = sub { | |
157 | local $@; | |
158 | system("chown", "-R", "httpd:httpd", "/www/var/rt/var"); | |
159 | exit 0; | |
160 | } if $> == 0; | |
84fb5b46 | 161 | |
af59614d | 162 | $r->run; |
84fb5b46 MKG |
163 | |
164 | __END__ | |
165 | ||
166 | =head1 NAME | |
167 | ||
168 | rt-server - RT standalone server | |
169 | ||
170 | =head1 SYNOPSIS | |
171 | ||
172 | # runs prefork server listening on port 8080, requires Starlet | |
173 | rt-server --port 8080 | |
174 | ||
175 | # runs server listening on port 8080 | |
176 | rt-server --server Standalone --port 8080 | |
177 | # or | |
178 | standalone_httpd --port 8080 | |
179 | ||
180 | # runs other PSGI server on port 8080 | |
181 | rt-server --server Starman --port 8080 |