19 |
|
|
20 |
package wiki::driver::http; |
package wiki::driver::http; |
21 |
use strict; |
use strict; |
22 |
|
use Message::Util::Error; |
23 |
|
|
24 |
sub config ($) { |
push our @Config, sub ($) { |
25 |
my $WIKI = shift; |
my $WIKI = shift; |
26 |
use Cwd qw(abs_path); |
use Cwd qw(abs_path); |
27 |
|
|
28 |
## -- Filesystem path mapping |
## -- Filesystem path mapping |
29 |
for ( |
for ( |
30 |
[db__cache__dir => q"./wikidata/lock/"], |
[db__cache__dir => q"./wikidata/lock/"], |
31 |
|
[db__cache_struct__file => q"./wikidata/lock/struct.db"], |
32 |
[db__content__dir => q"./wikidata/page/"], |
[db__content__dir => q"./wikidata/page/"], |
33 |
[db__content__error_log => q"./wikidata/log/db-content.log"], |
[db__content__error_log => q"./wikidata/log/db-content.log"], |
34 |
[db__bdb__home_dir => q"./wikidata/lock/"], |
[db__bdb__home_dir => q"./wikidata/lock/"], |
109 |
$opt{prop_info}->{-db}->close; |
$opt{prop_info}->{-db}->close; |
110 |
delete $opt{prop_info}->{-db}; |
delete $opt{prop_info}->{-db}; |
111 |
}}); |
}}); |
112 |
|
$wiki->{db}->_set_prop_db (ref__item_template => |
113 |
|
{-db => $cachedb, -prop => 'refereritem', -db_close => sub { |
114 |
|
my %opt = @_; |
115 |
|
$opt{prop_info}->{-db}->close; |
116 |
|
delete $opt{prop_info}->{-db}; |
117 |
|
}}); |
118 |
|
|
119 |
## Berkely DB Environment Preparation |
## Berkely DB Environment Preparation |
120 |
use BerkeleyDB; |
use BerkeleyDB; |
128 |
-ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file}, |
-ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file}, |
129 |
-Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL, |
-Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL, |
130 |
-Verbose => $wiki->{config}->{debug}->{db}; |
-Verbose => $wiki->{config}->{debug}->{db}; |
131 |
|
|
132 |
|
$wiki->{db}->_set_prop_db (content__structured => {-db_open => sub { |
133 |
|
require SuikaWiki::DB::Hash; |
134 |
|
new SuikaWiki::DB::Hash constructor => sub { |
135 |
|
use MLDBM qw(BerkeleyDB::Hash);# Storable); |
136 |
|
tie my %mldb, 'MLDBM', |
137 |
|
-Filename => $wiki->{config}->{path_to} |
138 |
|
->{db__cache_struct__file}, |
139 |
|
-Env => $bdbenv, |
140 |
|
-Flags => DB_CREATE, |
141 |
|
-Mode => 0644; |
142 |
|
\%mldb; |
143 |
|
}; |
144 |
|
}}); |
145 |
|
|
146 |
## Referer Database (See Referer plugin module) |
## Referer Database (See Referer plugin module) |
147 |
$wiki->{db}->_set_prop_db (referer => {-db_open => sub { |
$wiki->{db}->_set_prop_db (referer => {-db_open => sub { |
175 |
|
|
176 |
push @{$WIKI->{event}->{input_close}}, sub { |
push @{$WIKI->{event}->{input_close}}, sub { |
177 |
my ($wiki, $event) = @_; |
my ($wiki, $event) = @_; |
178 |
SuikaWiki::Plugin->module_package ('Referer') |
try { |
179 |
|
SuikaWiki::Plugin->module_package ('Referer') |
180 |
->add_referer (wiki => $wiki, |
->add_referer (wiki => $wiki, |
181 |
uri => $wiki->{input}->meta_variable |
uri => $wiki->{input}->meta_variable |
182 |
('HTTP_REFERER')); |
('HTTP_REFERER')); |
183 |
SuikaWiki::Plugin->module_package ('RequestLog') |
} catch SuikaWiki::Plugin::error with { |
184 |
|
my $err = shift; |
185 |
|
$err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND'; |
186 |
|
}; |
187 |
|
try { |
188 |
|
SuikaWiki::Plugin->module_package ('RequestLog') |
189 |
->http_request_log (wiki => $wiki, |
->http_request_log (wiki => $wiki, |
190 |
prop => 'log__http_request'); |
prop => 'log__http_request'); |
191 |
|
} catch SuikaWiki::Plugin::error with { |
192 |
|
my $err = shift; |
193 |
|
$err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND'; |
194 |
|
}; |
195 |
}; |
}; |
196 |
|
|
197 |
## -- WikiName of special purpose WikiPages |
## -- WikiName of special purpose WikiPages |
238 |
|
|
239 |
## -- Debug mode |
## -- Debug mode |
240 |
$WIKI->{config}->{debug} = { |
$WIKI->{config}->{debug} = { |
241 |
general => 1, |
general => 0, |
242 |
db => 0, |
db => 0, |
243 |
format => 0, |
format => 0, |
244 |
view => 1, |
view => 0, |
245 |
}; |
}; |
246 |
|
|
247 |
} |
}; |
248 |
|
|
249 |
=head1 SEE ALSO |
=head1 SEE ALSO |
250 |
|
|