/[suikacvs]/2005/helowiki/suikawiki-config.ph
Suika

Contents of /2005/helowiki/suikawiki-config.ph

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Fri Jan 21 14:38:15 2005 UTC (19 years, 3 months ago) by hero
Branch: MAIN
CVS Tags: HEAD
New from SuikaWiki default distribution

1 =head1 NAME
2
3 suikawiki-config.ph - SuikaWiki: Configuration for SuikaWiki HTTP CGI Driver
4
5 =head1 DESCRIPTION
6
7 This is a configuration file for SuikaWiki Driver for HTTP CGI Script
8 (SWHCS). Basic options such as WikiDB directory mapping and
9 special purpose WikiPage names can be customized with this file.
10
11 More complex customizing, e.g. modifying navigation bar or
12 adding new mode, is also possible by config.ph (generated from
13 config.wp2) and WikiPlugin modules. For more information,
14 see <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>.
15
16 This file is part of SuikaWiki.
17
18 =cut
19
20 package wiki::driver::http;
21 use strict;
22
23 ## These lines should be removed after utf8 support
24 BEGIN {
25 $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26 require Message::Util::Formatter::Base;
27 }
28 use Message::Util::Error;
29
30 use Message::Util::QName::General [q<ExpandedURI>], {
31 'media-type' => q<http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#>,
32 };
33
34 push our @Config, sub ($) {
35 my $WIKI = shift;
36 use FindBin q($Bin);
37 use File::Spec;
38
39 ## -- Filesystem path mapping
40 for (
41 [db__cache__dir => q"./wikidata/cache/"],
42 [db__cache_struct__file => q"./wikidata/cache/struct.db"],
43 [db__content__dir => q"./wikidata/page/"],
44 [db__content__error_log => q"./wikidata/log/db-content.log"],
45 [db__bdb__home_dir => q"./wikidata/lock/"],
46 [db__bdb__log_dir => q"./wikidata/log/bdb/"],
47 [db__bdb__log_file => q"./wikidata/log/bdb.log"],
48 [db__bdb__temp_dir => q"./wikidata/lock/"],
49 [db__lock__dir => q"./wikidata/lock/"],
50 [db__lock__log_file => q"./wikidata/log/lock.log"],
51 [db__log__dir => q"./wikidata/log/"],
52 [db__temp__dir => q"./wikidata/lock/"],
53 # [namazu__index_dir => q"/var/namazu/index/wiki"],
54 ) {
55 ## On system that does not set current directory as main script
56 ## directory, you should specify it instead of using "abs_path".
57 $WIKI->{config}->{path_to}->{$_->[0]} = File::Spec->rel2abs ($_->[1], $Bin);
58 }
59
60 =begin comment
61
62 ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
63 $WIKI->{config}->{nmz__uri_to_uri} = sub {
64 my ($nmzuri, %opt) = @_;
65 if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
66 $nmzuri =~ s/\.txt$//;
67 return $opt{o}->{wiki}->uri_reference
68 (page => $opt{o}->{wiki}->name ([
69 map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
70 split m!\.ns/!, $nmzuri
71 ]), base => 1);
72 } else {
73 return ($nmzuri, $nmzuri);
74 }
75 };
76
77 =end comment
78
79 =cut
80
81 ## -- WikiPlugin
82 push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
83 my $wiki = shift;
84
85 ## Installed plugin modules
86 $wiki->{plugin}->load_directory (qw(
87 lib/SuikaWiki/Plugin/
88 misc/plugins/
89 misc/plugins/form/
90 misc/plugins/format/
91 misc/plugins/link/
92 misc/plugins/view/
93 ));
94
95 ## Configuration file as pseudo-plugin module
96 require 'wikidata/config.ph';
97 };
98
99 ## -- WikiDatabase: Mapping logical to physical
100 push @{$WIKI->{event}->{database_loaded}}, sub {
101 my $wiki = shift;
102
103 ## Main content
104 $wiki->{db}->_set_prop_db (content => {-db_open => sub {
105 require SuikaWiki::DB::FileSystem::LeafFile;
106 SuikaWiki::DB::FileSystem::LeafFile->new
107 (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
108 directory_suffix => '.ns',
109 file_suffix => '.txt',
110 root_key => $wiki->{config}->{page}->{Default},
111 -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
112 }, -db_close => sub {
113 my %opt = @_;
114 $opt{prop_info}->{-db}->close;
115 delete $opt{prop_info}->{-db};
116 }});
117
118 ## Properties
119 $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
120 require SuikaWiki::DB::FileSystem::LeafProp;
121 SuikaWiki::DB::FileSystem::LeafProp->new
122 (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
123 directory_suffix => '.ns',
124 file_suffix => '.prop',
125 root_key => $wiki->{config}->{page}->{Default},
126 -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
127 }, -db_close => sub {
128 my %opt = @_;
129 $opt{prop_info}->{-db}->close;
130 delete $opt{prop_info}->{-db};
131 }});
132
133 ## Last modified
134 $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
135 require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
136 SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
137 (directory => $wiki->{config}->{path_to}->{db__content__dir},
138 -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
139 }, -prop => 'last_modified', -db_close => sub {
140 my %opt = @_;
141 $opt{prop_info}->{-db}->close;
142 delete $opt{prop_info}->{-db};
143 }});
144
145 ## Cache DBs
146 require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
147 my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
148 (directory => $wiki->{config}->{path_to}->{db__cache__dir},
149 expires => 86400 * 3, removes => 86400 * 3); # 3 days
150 $wiki->{db}->_set_prop_db (m__search_result =>
151 {-db => $cachedb, -prop => 'search_result', -db_close => sub {
152 my %opt = @_;
153 $opt{prop_info}->{-db}->close;
154 delete $opt{prop_info}->{-db};
155 }});
156 $wiki->{db}->_set_prop_db (wpp__headsummary =>
157 {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
158 my %opt = @_;
159 $opt{prop_info}->{-db}->close;
160 delete $opt{prop_info}->{-db};
161 }});
162 $wiki->{db}->_set_prop_db (ref__item_template =>
163 {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
164 my %opt = @_;
165 $opt{prop_info}->{-db}->close;
166 delete $opt{prop_info}->{-db};
167 }});
168
169 ## Referer Database (See Referer plugin module)
170 $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
171 require SuikaWiki::DB::FileSystem::Count;
172 SuikaWiki::DB::FileSystem::Count->new
173 (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
174 directory_suffix => '.ns',
175 file_suffix => '.ref',
176 root_key => $wiki->{config}->{page}->{Default},
177 auto_mkdir => 0,
178 -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
179 }, -db_close => sub {
180 my %opt = @_;
181 $opt{prop_info}->{-db}->close;
182 delete $opt{prop_info}->{-db};
183 }});
184
185 ## Additional WikiDB properties should be defined here
186 # ...
187 };
188
189 ## -- WikiName of special purpose WikiPages
190 $WIKI->{config}->{page} = {
191 Default => $WIKI->name ([qw/HomePage/]),
192 InterWikiName => $WIKI->name ([qw/Wiki InterWikiName/]),
193 NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
194 'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
195 };
196
197 ## -- WikiNamespace constants
198 $WIKI->{config}->{name}->{space} = {
199 separator => '//',
200 separator_reg => qr#\s*//\s*#,
201 self => '.',
202 parent => '..',
203 root => '//',
204 };
205
206 ## -- Default character codes
207 $WIKI->{config}->{charset} = {
208 ## Internal code - MUST be ASCII + 8bit coding scheme
209 internal => 'euc-jp',
210 ## Default output code
211 output => 'iso-2022-jp',
212 ## "query" part in URI reference
213 uri_query => '', # auto-detected
214 uri_query_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
215 uri_param => '', # auto-detected
216 uri_param_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
217 ## PATH_INFO part in URI reference
218 uri_path_info => 'x-utf-8-10646', ## Reserved for future use
219 ## Fragment identifier in URI reference
220 uri_fragment => 'x-punycode', ## Reserved for possible future use
221 };
222
223 ## -- User option for media types
224 $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
225 q<IMT:text/css##> => 1,
226 q<IMT:text/plain##> => 1,
227 q<IMT:text/x-suikawiki;version="0.9"##> => 1,
228 q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
229 };
230
231 ## -- Expires duration templates
232 $WIKI->{config}->{entity}->{expires} = {
233 edit => {delta => 60},
234 view => {delta => 2*3600},
235 list => {delta => 60},
236 lm_flaged => {delta => 30*24*3600},
237 stylesheet => {delta => 30*24*3600},
238 error => {delta => 60},
239 };
240
241 ## -- Debug mode
242 $WIKI->{config}->{debug} = {
243 general => 0,
244 db => 0,
245 format => 0,
246 view => 0,
247 };
248
249 };
250
251 =head1 SEE ALSO
252
253 C<lib/suikawiki.pl>, C<wiki.cgi>,
254 <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
255 <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
256
257 =head1 LICENSE
258
259 Copyright 2003-2004 Wakaba <w@suika.fam.cx>. All rights reserved.
260
261 This program is free software; you can redistribute it and/or
262 modify it under the same terms as Perl itself.
263
264 =cut
265
266 1; # $Date: 2004/05/07 07:51:33 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24