22 |
|
|
23 |
sub config ($) { |
sub config ($) { |
24 |
my $WIKI = shift; |
my $WIKI = shift; |
25 |
|
use Cwd qw(abs_path); |
26 |
|
|
27 |
## -- Filesystem path mapping |
## -- Filesystem path mapping |
28 |
for ( |
for ( |
29 |
[db__cache__dir => q"./wikidata/lock/"], |
[db__cache__dir => q"./wikidata/lock/"], |
30 |
[db__content__dir => q"./wikidata/page"], |
[db__content__dir => q"./wikidata/page/"], |
31 |
[db__content__error_log => q"./wikidata/log/db-content.log"], |
[db__content__error_log => q"./wikidata/log/db-content.log"], |
32 |
|
[db__bdb__home_dir => q"./wikidata/lock/"], |
33 |
|
[db__bdb__log_dir => q"./wikidata/log/bdb/"], |
34 |
|
[db__bdb__log_file => q"./wikidata/log/bdb.log"], |
35 |
|
[db__bdb__temp_dir => q"./wikidata/lock/"], |
36 |
[db__lock__dir => q"./wikidata/lock/"], |
[db__lock__dir => q"./wikidata/lock/"], |
37 |
|
[db__lock__log_file => q"./wikidata/log/lock.log"], |
38 |
|
[db__log__dir => q"./wikidata/log/"], |
39 |
|
[db__temp__dir => q"./wikidata/lock/"], |
40 |
) { |
) { |
41 |
$WIKI->{config}->{path_to}->{$_->[0]} = $_->[1]; |
## On system that does not set current directory as main script |
42 |
|
## directory, you should specify it instead of using "abs_path". |
43 |
|
$WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1]; |
44 |
} |
} |
45 |
|
|
46 |
## -- WikiPlugin |
## -- WikiPlugin |
91 |
delete $opt{prop_info}->{-db}; |
delete $opt{prop_info}->{-db}; |
92 |
}}); |
}}); |
93 |
|
|
94 |
## Cache |
## Cache DBs |
95 |
require SuikaWiki::DB::FileSystem::SuikaWikiCache09; |
require SuikaWiki::DB::FileSystem::SuikaWikiCache09; |
96 |
my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new |
my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new |
97 |
(directory => $wiki->{config}->{path_to}->{db__cache__dir}); |
(directory => $wiki->{config}->{path_to}->{db__cache__dir}); |
108 |
delete $opt{prop_info}->{-db}; |
delete $opt{prop_info}->{-db}; |
109 |
}}); |
}}); |
110 |
|
|
111 |
|
## Berkely DB Environment Preparation |
112 |
|
use BerkeleyDB; |
113 |
|
my $bdbenv = new BerkeleyDB::Env |
114 |
|
-Home => $wiki->{config}->{path_to}->{db__bdb__home_dir}, |
115 |
|
-Config => { |
116 |
|
DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir}, |
117 |
|
DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir}, |
118 |
|
DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir}, |
119 |
|
}, |
120 |
|
-ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file}, |
121 |
|
-Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL, |
122 |
|
-Verbose => $wiki->{config}->{debug}->{db}; |
123 |
|
|
124 |
|
## Referer Database (See Referer plugin module) |
125 |
|
$wiki->{db}->_set_prop_db (referer => {-db_open => sub { |
126 |
|
require SuikaWiki::DB::Hash; |
127 |
|
new SuikaWiki::DB::Hash constructor => sub { |
128 |
|
tie my %db, 'BerkeleyDB::Hash', |
129 |
|
-Filename => 'referer.db', |
130 |
|
-Env => $bdbenv, |
131 |
|
-Flags => DB_CREATE, |
132 |
|
-Mode => 0644; |
133 |
|
\%db; |
134 |
|
}; |
135 |
|
}}); |
136 |
|
|
137 |
|
## HTTP Request Logging Database (See RequestLog plugin module) |
138 |
|
$wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub { |
139 |
|
require SuikaWiki::DB::Hash; |
140 |
|
new SuikaWiki::DB::Hash constructor => sub { |
141 |
|
tie my %db, 'BerkeleyDB::Hash', |
142 |
|
-Filename => 'http-request-log.db', |
143 |
|
-Env => $bdbenv, |
144 |
|
-Flags => DB_CREATE, |
145 |
|
-Mode => 0644; |
146 |
|
\%db; |
147 |
|
}; |
148 |
|
}}); |
149 |
|
|
150 |
## Additional WikiDB properties should be defined here |
## Additional WikiDB properties should be defined here |
151 |
# ... |
# ... |
152 |
}; |
}; |
153 |
|
|
154 |
|
push @{$WIKI->{event}->{input_close}}, sub { |
155 |
|
my ($wiki, $event) = @_; |
156 |
|
SuikaWiki::Plugin->module_package ('Referer') |
157 |
|
->add_referer (wiki => $wiki, |
158 |
|
uri => $wiki->{input}->meta_variable |
159 |
|
('HTTP_REFERER')); |
160 |
|
SuikaWiki::Plugin->module_package ('RequestLog') |
161 |
|
->http_request_log (wiki => $wiki, |
162 |
|
prop => 'log__http_request'); |
163 |
|
}; |
164 |
|
|
165 |
## -- WikiName of special purpose WikiPages |
## -- WikiName of special purpose WikiPages |
166 |
$WIKI->{config}->{page} = { |
$WIKI->{config}->{page} = { |
167 |
Default => $WIKI->name ([qw/HomePage/]), |
Default => $WIKI->name ([qw/HomePage/]), |
208 |
$WIKI->{config}->{debug} = { |
$WIKI->{config}->{debug} = { |
209 |
general => 1, |
general => 1, |
210 |
db => 0, |
db => 0, |
211 |
|
format => 0, |
212 |
view => 1, |
view => 1, |
213 |
}; |
}; |
214 |
|
|