| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
################################################################################ |
|
2
|
|
|
|
|
|
|
# |
|
3
|
|
|
|
|
|
|
# Apache::Voodoo::Install::Config - Apache Voodoo global settings writer |
|
4
|
|
|
|
|
|
|
# |
|
5
|
|
|
|
|
|
|
# This object is used by Voodoo internally by "voodoo-control setconfig". |
|
6
|
|
|
|
|
|
|
# |
|
7
|
|
|
|
|
|
|
################################################################################ |
|
8
|
|
|
|
|
|
|
package Apache::Voodoo::Install::Config; |
|
9
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
$VERSION = "3.0200"; |
|
11
|
|
|
|
|
|
|
|
|
12
|
1
|
|
|
1
|
|
1808
|
use strict; |
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
43
|
|
|
13
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
|
1
|
|
|
|
|
1
|
|
|
|
1
|
|
|
|
|
61
|
|
|
14
|
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
# There doesn't seem to be another "user input prompt" mechanism installed |
|
16
|
|
|
|
|
|
|
# by default other that this one. Seems kinda strange to have to use an |
|
17
|
|
|
|
|
|
|
# object designed for make file creation for this...oh well. |
|
18
|
1
|
|
|
1
|
|
7
|
use ExtUtils::MakeMaker qw{ prompt }; |
|
|
1
|
|
|
|
|
3
|
|
|
|
1
|
|
|
|
|
93
|
|
|
19
|
1
|
|
|
1
|
|
7
|
use Data::Dumper; |
|
|
1
|
|
|
|
|
3
|
|
|
|
1
|
|
|
|
|
2454
|
|
|
20
|
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
$Data::Dumper::Indent=1; |
|
22
|
|
|
|
|
|
|
$Data::Dumper::Terse=1; |
|
23
|
|
|
|
|
|
|
$Data::Dumper::Sortkeys=1; |
|
24
|
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
sub new { |
|
26
|
0
|
|
|
0
|
0
|
|
my $class = shift; |
|
27
|
0
|
|
|
|
|
|
my %params = @_; |
|
28
|
|
|
|
|
|
|
|
|
29
|
0
|
|
|
|
|
|
my $self = {}; |
|
30
|
0
|
0
|
|
|
|
|
if (defined($params{PREFIX})) { |
|
31
|
|
|
|
|
|
|
# take whatever is supplied |
|
32
|
0
|
|
|
|
|
|
foreach (keys %params) { |
|
33
|
0
|
|
|
|
|
|
$self->{$_} = $params{$_}; |
|
34
|
|
|
|
|
|
|
} |
|
35
|
|
|
|
|
|
|
} |
|
36
|
|
|
|
|
|
|
|
|
37
|
0
|
|
|
|
|
|
bless ($self,$class); |
|
38
|
|
|
|
|
|
|
|
|
39
|
0
|
|
|
|
|
|
return $self; |
|
40
|
|
|
|
|
|
|
} |
|
41
|
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
sub do_config_setup { |
|
43
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
44
|
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
# get settings |
|
46
|
0
|
|
|
|
|
|
$self->prefix(); |
|
47
|
0
|
|
|
|
|
|
$self->install_path(); |
|
48
|
0
|
|
|
|
|
|
$self->session_path(); |
|
49
|
0
|
|
|
|
|
|
$self->conf_path(); |
|
50
|
0
|
|
|
|
|
|
$self->updates_path(); |
|
51
|
0
|
|
|
|
|
|
$self->conf_file(); |
|
52
|
0
|
|
|
|
|
|
$self->tmpl_path(); |
|
53
|
0
|
|
|
|
|
|
$self->code_path(); |
|
54
|
0
|
|
|
|
|
|
$self->apache_uid(); |
|
55
|
0
|
|
|
|
|
|
$self->apache_gid(); |
|
56
|
0
|
|
|
|
|
|
$self->debug_dbd(); |
|
57
|
0
|
|
|
|
|
|
$self->debug_path(); |
|
58
|
|
|
|
|
|
|
|
|
59
|
0
|
0
|
|
|
|
|
return if $self->{"pretend"}; |
|
60
|
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
# save settings |
|
62
|
0
|
|
|
|
|
|
my %cfg = %{$self}; |
|
|
0
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
|
|
64
|
0
|
|
0
|
|
|
|
my $path = $INC{"Apache/Voodoo/MyConfig.pm"} || $INC{"Apache/Voodoo/Install/Config.pm"}; |
|
65
|
0
|
|
|
|
|
|
$path =~ s/Install\/Config.pm$/MyConfig\.pm/; |
|
66
|
|
|
|
|
|
|
|
|
67
|
0
|
0
|
|
|
|
|
open(OUT,">$path") || die "Can't write to $path: $!"; |
|
68
|
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
# I had this as a print block, but it tripped up the cpan.org formatter |
|
70
|
0
|
|
|
|
|
|
print OUT "################################################################################\n"; |
|
71
|
0
|
|
|
|
|
|
print OUT "#\n"; |
|
72
|
0
|
|
|
|
|
|
print OUT "# Installation specific settings for Apache Voodoo are stored here.\n"; |
|
73
|
0
|
|
|
|
|
|
print OUT "# Do not edit this file directly. Use the \"voodoo-control\" command instead.\n"; |
|
74
|
0
|
|
|
|
|
|
print OUT "#\n"; |
|
75
|
0
|
|
|
|
|
|
print OUT "################################################################################\n"; |
|
76
|
0
|
|
|
|
|
|
print OUT "package Apache::Voodoo::MyConfig;\n"; |
|
77
|
0
|
|
|
|
|
|
print OUT "\n"; |
|
78
|
|
|
|
|
|
|
|
|
79
|
0
|
|
|
|
|
|
print OUT '$CONFIG = '. Dumper(\%cfg).";\n"; |
|
80
|
|
|
|
|
|
|
|
|
81
|
0
|
|
|
|
|
|
print OUT "\n"; |
|
82
|
0
|
|
|
|
|
|
print OUT "1;\n"; |
|
83
|
|
|
|
|
|
|
|
|
84
|
0
|
|
|
|
|
|
close(OUT); |
|
85
|
0
|
|
|
|
|
|
print "\n\nSetting saved\n"; |
|
86
|
|
|
|
|
|
|
} |
|
87
|
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
sub prefix { |
|
89
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
90
|
|
|
|
|
|
|
|
|
91
|
0
|
0
|
|
|
|
|
unless ($self->{PREFIX}) { |
|
92
|
|
|
|
|
|
|
# test some of the common apache install locations to come up with a sensible default. |
|
93
|
0
|
|
|
|
|
|
foreach ("/data/apache","/usr/local/apache","/etc/apache/","/etc/apache2") { |
|
94
|
0
|
0
|
0
|
|
|
|
if (-e $_ && -d $_) { |
|
95
|
0
|
|
|
|
|
|
$self->{PREFIX} = $_; |
|
96
|
0
|
|
|
|
|
|
last; |
|
97
|
|
|
|
|
|
|
} |
|
98
|
|
|
|
|
|
|
} |
|
99
|
|
|
|
|
|
|
} |
|
100
|
|
|
|
|
|
|
|
|
101
|
0
|
|
|
|
|
|
while (1) { |
|
102
|
0
|
|
|
|
|
|
my $ans = prompt("Apache Prefix Path",$self->{PREFIX}); |
|
103
|
0
|
|
|
|
|
|
$ans =~ s/\/$//; |
|
104
|
|
|
|
|
|
|
|
|
105
|
0
|
0
|
0
|
|
|
|
if (-e $ans && -d $ans) { |
|
106
|
0
|
|
|
|
|
|
$self->{PREFIX} = $ans; |
|
107
|
0
|
|
|
|
|
|
last; |
|
108
|
|
|
|
|
|
|
} |
|
109
|
|
|
|
|
|
|
|
|
110
|
0
|
|
|
|
|
|
print "That directory doesn't exist. Please try again.\n"; |
|
111
|
|
|
|
|
|
|
} |
|
112
|
|
|
|
|
|
|
} |
|
113
|
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
sub install_path { |
|
115
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
116
|
|
|
|
|
|
|
|
|
117
|
0
|
0
|
|
|
|
|
unless ($self->{INSTALL_PATH}) { |
|
118
|
0
|
|
|
|
|
|
$self->{INSTALL_PATH} = $self->{PREFIX} . "/sites"; |
|
119
|
|
|
|
|
|
|
} |
|
120
|
|
|
|
|
|
|
|
|
121
|
0
|
|
|
|
|
|
$self->{INSTALL_PATH} = prompt("App Install Path",$self->{INSTALL_PATH}); |
|
122
|
0
|
|
|
|
|
|
$self->{INSTALL_PATH} =~ s/\/$//; |
|
123
|
|
|
|
|
|
|
} |
|
124
|
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
sub session_path { |
|
126
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
127
|
|
|
|
|
|
|
|
|
128
|
0
|
0
|
|
|
|
|
unless ($self->{SESSION_PATH}) { |
|
129
|
0
|
|
|
|
|
|
$self->{SESSION_PATH} = $self->{PREFIX} . "/session"; |
|
130
|
|
|
|
|
|
|
} |
|
131
|
|
|
|
|
|
|
|
|
132
|
0
|
|
|
|
|
|
$self->{SESSION_PATH} = prompt("Session Path",$self->{SESSION_PATH}); |
|
133
|
0
|
|
|
|
|
|
$self->{SESSION_PATH} =~ s/\/$//; |
|
134
|
|
|
|
|
|
|
} |
|
135
|
|
|
|
|
|
|
|
|
136
|
|
|
|
|
|
|
sub conf_path { |
|
137
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
138
|
|
|
|
|
|
|
|
|
139
|
0
|
0
|
|
|
|
|
unless ($self->{CONF_PATH}) { |
|
140
|
0
|
|
|
|
|
|
$self->{CONF_PATH} = "etc"; |
|
141
|
|
|
|
|
|
|
} |
|
142
|
|
|
|
|
|
|
|
|
143
|
0
|
|
|
|
|
|
$self->{CONF_PATH} = prompt("Config File Path (relative to App Install Path)",$self->{CONF_PATH}); |
|
144
|
0
|
|
|
|
|
|
$self->{CONF_PATH} =~ s/\/$//; |
|
145
|
|
|
|
|
|
|
} |
|
146
|
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
sub conf_file { |
|
148
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
149
|
|
|
|
|
|
|
|
|
150
|
0
|
0
|
|
|
|
|
unless ($self->{CONF_FILE}) { |
|
151
|
0
|
|
|
|
|
|
$self->{CONF_FILE} = "etc/voodoo.conf"; |
|
152
|
|
|
|
|
|
|
} |
|
153
|
|
|
|
|
|
|
|
|
154
|
0
|
|
|
|
|
|
$self->{CONF_FILE} = prompt("Config File Name (relative to App Install Path)",$self->{CONF_FILE}); |
|
155
|
0
|
|
|
|
|
|
$self->{CONF_FILE} =~ s/\/$//; |
|
156
|
|
|
|
|
|
|
} |
|
157
|
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
sub updates_path { |
|
159
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
160
|
|
|
|
|
|
|
|
|
161
|
0
|
0
|
|
|
|
|
unless ($self->{UPDATES_PATH}) { |
|
162
|
0
|
|
|
|
|
|
$self->{UPDATES_PATH} = "etc/updates"; |
|
163
|
|
|
|
|
|
|
} |
|
164
|
|
|
|
|
|
|
|
|
165
|
0
|
|
|
|
|
|
$self->{UPDATES_PATH} = prompt("Update File Path (relative to App Install Path)",$self->{UPDATES_PATH}); |
|
166
|
0
|
|
|
|
|
|
$self->{UPDATES_PATH} =~ s/\/$//; |
|
167
|
|
|
|
|
|
|
} |
|
168
|
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
sub tmpl_path { |
|
170
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
171
|
|
|
|
|
|
|
|
|
172
|
0
|
0
|
|
|
|
|
unless ($self->{TMPL_PATH}) { |
|
173
|
0
|
|
|
|
|
|
$self->{TMPL_PATH} = "html"; |
|
174
|
|
|
|
|
|
|
} |
|
175
|
|
|
|
|
|
|
|
|
176
|
0
|
|
|
|
|
|
$self->{TMPL_PATH} = prompt("Template File Path (relative to App Install Path)",$self->{TMPL_PATH}); |
|
177
|
0
|
|
|
|
|
|
$self->{TMPL_PATH} =~ s/\/$//; |
|
178
|
|
|
|
|
|
|
} |
|
179
|
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
sub code_path { |
|
181
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
182
|
|
|
|
|
|
|
|
|
183
|
0
|
0
|
|
|
|
|
unless ($self->{CODE_PATH}) { |
|
184
|
0
|
|
|
|
|
|
$self->{CODE_PATH} = "code"; |
|
185
|
|
|
|
|
|
|
} |
|
186
|
|
|
|
|
|
|
|
|
187
|
0
|
|
|
|
|
|
$self->{CODE_PATH} = prompt("Perl Module Path (relative to App Install Path)",$self->{CODE_PATH}); |
|
188
|
0
|
|
|
|
|
|
$self->{CODE_PATH} =~ s/\/$//; |
|
189
|
|
|
|
|
|
|
} |
|
190
|
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
sub apache_uid { |
|
192
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
193
|
|
|
|
|
|
|
|
|
194
|
0
|
|
|
|
|
|
my $default = "apache"; |
|
195
|
0
|
0
|
|
|
|
|
if ($self->{'APACHE_UID'}) { |
|
196
|
0
|
|
|
|
|
|
my $d = (getpwuid($self->{APACHE_UID}))[0]; |
|
197
|
0
|
0
|
|
|
|
|
$default = $d if ($d); |
|
198
|
|
|
|
|
|
|
} |
|
199
|
|
|
|
|
|
|
|
|
200
|
0
|
|
|
|
|
|
while (1) { |
|
201
|
0
|
|
|
|
|
|
my $apache = prompt("User that Apache runs as",$default); |
|
202
|
0
|
|
|
|
|
|
my (undef,undef,$uid,undef) = getpwnam($apache); |
|
203
|
0
|
0
|
|
|
|
|
if ($uid =~ /^\d+$/) { |
|
204
|
0
|
|
|
|
|
|
$self->{'APACHE_UID'} = $uid; |
|
205
|
0
|
|
|
|
|
|
last; |
|
206
|
|
|
|
|
|
|
} |
|
207
|
0
|
|
|
|
|
|
print "Can't find this user. Please try again.\n"; |
|
208
|
|
|
|
|
|
|
} |
|
209
|
|
|
|
|
|
|
} |
|
210
|
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
sub apache_gid { |
|
212
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
213
|
|
|
|
|
|
|
|
|
214
|
0
|
|
|
|
|
|
my $default = "apache"; |
|
215
|
0
|
0
|
|
|
|
|
if ($self->{'APACHE_GID'}) { |
|
216
|
0
|
|
|
|
|
|
my $d = (getgrgid($self->{APACHE_GID}))[0]; |
|
217
|
0
|
0
|
|
|
|
|
$default = $d if ($d); |
|
218
|
|
|
|
|
|
|
} |
|
219
|
|
|
|
|
|
|
|
|
220
|
0
|
|
|
|
|
|
while (1) { |
|
221
|
0
|
|
|
|
|
|
my $apache = prompt("Group that Apache runs as",$default); |
|
222
|
0
|
|
|
|
|
|
my (undef,undef,undef,$gid) = getpwnam($apache); |
|
223
|
0
|
0
|
|
|
|
|
if ($gid =~ /^\d+$/) { |
|
224
|
0
|
|
|
|
|
|
$self->{'APACHE_GID'} = $gid; |
|
225
|
0
|
|
|
|
|
|
last; |
|
226
|
|
|
|
|
|
|
} |
|
227
|
0
|
|
|
|
|
|
print "Can't find this group. Please try again.\n"; |
|
228
|
|
|
|
|
|
|
} |
|
229
|
|
|
|
|
|
|
} |
|
230
|
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
sub debug_dbd { |
|
232
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
233
|
|
|
|
|
|
|
|
|
234
|
0
|
0
|
|
|
|
|
unless ($self->{DEBUG_DBD}) { |
|
235
|
0
|
|
|
|
|
|
$self->{DEBUG_DBD} = ['dbi:SQLite:dbname=/tmp/apachevoodoo.db','','']; |
|
236
|
|
|
|
|
|
|
} |
|
237
|
|
|
|
|
|
|
|
|
238
|
0
|
|
|
|
|
|
$self->{DEBUG_DBD}->[0] = prompt("Debug Database Connect", $self->{DEBUG_DBD}->[0]); |
|
239
|
0
|
|
|
|
|
|
$self->{DEBUG_DBD}->[1] = prompt("Debug Database Username",$self->{DEBUG_DBD}->[1]); |
|
240
|
0
|
|
|
|
|
|
$self->{DEBUG_DBD}->[2] = prompt("Debug Database Password",$self->{DEBUG_DBD}->[2]); |
|
241
|
|
|
|
|
|
|
} |
|
242
|
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
sub debug_path { |
|
244
|
0
|
|
|
0
|
0
|
|
my $self = shift; |
|
245
|
|
|
|
|
|
|
|
|
246
|
0
|
0
|
|
|
|
|
unless ($self->{DEBUG_PATH}) { |
|
247
|
0
|
|
|
|
|
|
$self->{DEBUG_PATH} = "/debug"; |
|
248
|
|
|
|
|
|
|
} |
|
249
|
|
|
|
|
|
|
|
|
250
|
0
|
|
|
|
|
|
$self->{DEBUG_PATH} = prompt("URL Path to the debug handler",$self->{DEBUG_PATH}); |
|
251
|
|
|
|
|
|
|
} |
|
252
|
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
1; |
|
254
|
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
################################################################################ |
|
256
|
|
|
|
|
|
|
# Copyright (c) 2005-2010 Steven Edwards (maverick@smurfbane.org). |
|
257
|
|
|
|
|
|
|
# All rights reserved. |
|
258
|
|
|
|
|
|
|
# |
|
259
|
|
|
|
|
|
|
# You may use and distribute Apache::Voodoo under the terms described in the |
|
260
|
|
|
|
|
|
|
# LICENSE file include in this package. The summary is it's a legalese version |
|
261
|
|
|
|
|
|
|
# of the Artistic License :) |
|
262
|
|
|
|
|
|
|
# |
|
263
|
|
|
|
|
|
|
################################################################################ |