forked from plainblack/webgui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
preload.perl
112 lines (91 loc) · 2.84 KB
/
preload.perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
my $webguiRoot;
my $customLibs;
BEGIN {
$webguiRoot = "/data/WebGUI";
unshift (@INC, $webguiRoot."/lib");
@{$customLibs} = ();
open(FILE,"<".$webguiRoot."/sbin/preload.custom");
while (my $line = <FILE>) {
chomp $line;
next unless $line;
next if $line =~ /^#/;
if (!-d $line) {
print "WARNING: Not adding lib directory '$line' from $webguiRoot/sbin/preload.custom: Directory does not exist.\n";
next;
}
push(@{$customLibs}, $line);
}
close(FILE);
foreach my $lib (@{$customLibs}) {
unshift @INC, $lib;
}
}
$|=1;
use strict;
print "\nStarting WebGUI ".$WebGUI::VERSION."\n";
#----------------------------------------
# Logger
#----------------------------------------
use Log::Log4perl;
Log::Log4perl->init( $webguiRoot."/etc/log.conf" );
#----------------------------------------
# Database connectivity.
#----------------------------------------
#use Apache::DBI (); # Uncomment if you want to enable connection pooling. Not recommended on servers with many sites, or those using db slaves.
use Log::Log4perl ();
use DBI ();
DBI->install_driver("mysql"); # Change to match your database driver.
#----------------------------------------
# WebGUI modules.
#----------------------------------------
use WebGUI ();
use WebGUI::Utility ();
use File::Find ();
my @modules = ();
# these modules should always be skipped
my @excludes = qw(WebGUI::i18n::English::Automated_Information WebGUI::PerformanceProfiler);
open(FILE,"<".$webguiRoot."/sbin/preload.exclude");
while (my $line = <FILE>) {
next if $line =~ m/^#/;
chomp $line;
push(@excludes, $line);
}
close(FILE);
my @folders = ($webguiRoot."/lib/WebGUI");
foreach my $lib (@{$customLibs}) {
push(@folders, $lib."/WebGUI");
}
File::Find::find(\&getWebGUIModules, @folders);
foreach my $package (@modules) {
next if (WebGUI::Utility::isIn($package,@excludes));
(my $file = "$package.pm") =~ s{::|'}{/}g;
if (!eval { require $file; 1 }) {
warn "Error loading $package! - $@";
}
}
use Apache2::ServerUtil ();
{
# Add WebGUI to Apache version tokens
my $server = Apache2::ServerUtil->server;
my $sub = sub {
$server->add_version_component("WebGUI/".$WebGUI::VERSION);
};
$server->push_handlers(PerlPostConfigHandler => $sub);
}
use APR::Request::Apache2 ();
use Apache2::Cookie ();
#----------------------------------------
# Preload all site configs.
#----------------------------------------
WebGUI::Config->loadAllConfigs($webguiRoot);
print "WebGUI Started!\n";
#----------------------------------------
sub getWebGUIModules {
my $filename = $File::Find::dir."/".$_;
return unless $filename =~ m/\.pm$/;
my $package = $filename;
$package =~ s/.*\/lib\/(.*)\.pm$/$1/;
$package =~ s/\//::/g;
push(@modules,$package);
}
1;