/[pub]/suikawiki/script/default/suikawiki-config.ph
Suika

Contents of /suikawiki/script/default/suikawiki-config.ph

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (hide annotations) (download)
Wed Feb 18 07:23:48 2004 UTC (20 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.11: +65 -4 lines
New pathes and event handler

1 wakaba 1.10 =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 w 1.1 use strict;
22 wakaba 1.4
23 wakaba 1.10 sub config ($) {
24     my $WIKI = shift;
25 wakaba 1.12 use Cwd qw(abs_path);
26 wakaba 1.10
27     ## -- Filesystem path mapping
28 wakaba 1.6 for (
29 wakaba 1.10 [db__cache__dir => q"./wikidata/lock/"],
30 wakaba 1.12 [db__content__dir => q"./wikidata/page/"],
31 wakaba 1.6 [db__content__error_log => q"./wikidata/log/db-content.log"],
32 wakaba 1.12 [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 wakaba 1.6 [db__lock__dir => q"./wikidata/lock/"],
37 wakaba 1.12 [db__lock__log_file => q"./wikidata/log/lock.log"],
38     [db__log__dir => q"./wikidata/log/"],
39     [db__temp__dir => q"./wikidata/lock/"],
40 wakaba 1.6 ) {
41 wakaba 1.12 ## 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 wakaba 1.6 }
45    
46 wakaba 1.10 ## -- WikiPlugin
47 wakaba 1.6 push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
48 wakaba 1.8 my $wiki = shift;
49 wakaba 1.10
50     ## Installed plugin modules
51 wakaba 1.8 $wiki->{plugin}->load_directory (qw(
52     lib/SuikaWiki/Plugin/
53     misc/plugins/
54 wakaba 1.10 misc/plugins/form/
55 wakaba 1.9 misc/plugins/format/
56 wakaba 1.10 misc/plugins/link/
57 wakaba 1.8 misc/plugins/view/
58     ));
59 wakaba 1.10
60     ## Configuration file as pseudo-plugin module
61 wakaba 1.6 require 'wikidata/config.ph';
62     };
63    
64 wakaba 1.10 ## -- WikiDatabase: Mapping logical to physical
65 wakaba 1.6 push @{$WIKI->{event}->{database_loaded}}, sub {
66 wakaba 1.10 my $wiki = shift;
67    
68 wakaba 1.6 ## Main content
69 wakaba 1.10 $wiki->{db}->_set_prop_db (content => {-db_open => sub {
70 wakaba 1.6 require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
71     SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
72 wakaba 1.10 (directory => $wiki->{config}->{path_to}->{db__content__dir},
73     logfile => $wiki->{config}->{path_to}->{db__content__error_log},
74 wakaba 1.6 suffix => '.txt',
75 wakaba 1.10 -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
76 wakaba 1.8 }, -db_close => sub {
77     my %opt = @_;
78     $opt{prop_info}->{-db}->close;
79     delete $opt{prop_info}->{-db};
80     }});
81 wakaba 1.6
82     ## Last modified
83 wakaba 1.10 $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
84 wakaba 1.6 require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
85     SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
86 wakaba 1.10 (directory => $wiki->{config}->{path_to}->{db__content__dir},
87     -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
88 wakaba 1.8 }, -prop => 'last_modified', -db_close => sub {
89     my %opt = @_;
90     $opt{prop_info}->{-db}->close;
91     delete $opt{prop_info}->{-db};
92     }});
93 wakaba 1.10
94 wakaba 1.12 ## Cache DBs
95 wakaba 1.10 require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
96     my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
97     (directory => $wiki->{config}->{path_to}->{db__cache__dir});
98     $wiki->{db}->_set_prop_db (m__search_result =>
99     {-db => $cachedb, -prop => 'search_result', -db_close => sub {
100     my %opt = @_;
101     $opt{prop_info}->{-db}->close;
102     delete $opt{prop_info}->{-db};
103     }});
104     $wiki->{db}->_set_prop_db (wpp__headsummary =>
105     {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
106     my %opt = @_;
107     $opt{prop_info}->{-db}->close;
108     delete $opt{prop_info}->{-db};
109     }});
110    
111 wakaba 1.12 ## 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 wakaba 1.10 ## Additional WikiDB properties should be defined here
151     # ...
152 wakaba 1.6 };
153    
154 wakaba 1.12 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 wakaba 1.10 ## -- WikiName of special purpose WikiPages
166 wakaba 1.8 $WIKI->{config}->{page} = {
167 wakaba 1.11 Default => $WIKI->name ([qw/HomePage/]),
168     InterWikiName => $WIKI->name ([qw/Wiki InterWikiName/]),
169     NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
170     'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
171 wakaba 1.8 };
172    
173 wakaba 1.10 ## -- WikiNamespace constants
174 wakaba 1.11 $WIKI->{config}->{name}->{space} = {
175     separator => '//',
176     separator_reg => qr#\s*//\s*#,
177     self => '.',
178     parent => '..',
179     };
180 wakaba 1.7
181 wakaba 1.10 ## -- Default character codes
182 wakaba 1.11 $WIKI->{config}->{charset} = {
183     ## Internal code - MUST be ASCII + 8bit coding scheme
184     internal => 'euc-jp',
185     ## Default output code
186     output => 'iso-2022-jp',
187     ## "query" part in URI reference
188     uri_query => '', # auto-detected
189     uri_query_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
190     uri_param => '', # auto-detected
191     uri_param_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
192     ## PATH_INFO part in URI reference
193     uri_path_info => 'x-utf-8-10646', ## Reserved for future use
194     ## Fragment identifier in URI reference
195     uri_fragment => 'x-punycode', ## Reserved for possible future use
196     };
197 wakaba 1.7
198 wakaba 1.10 ## -- Expires duration templates
199 wakaba 1.6 $WIKI->{config}->{entity}->{expires} = {
200 wakaba 1.7 edit => {delta => 60},
201     view => {delta => 2*3600},
202 wakaba 1.6 lm_flaged => {delta => 30*24*3600},
203 wakaba 1.11 stylesheet => {delta => 30*24*3600},
204     error => {delta => 60},
205     };
206    
207     ## -- Debug mode
208     $WIKI->{config}->{debug} = {
209     general => 1,
210     db => 0,
211 wakaba 1.12 format => 0,
212 wakaba 1.11 view => 1,
213 wakaba 1.6 };
214 wakaba 1.4
215 wakaba 1.10 }
216 wakaba 1.8
217 wakaba 1.10 =head1 SEE ALSO
218 w 1.3
219 wakaba 1.10 C<lib/suikawiki.pl>, C<wiki.cgi>,
220     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
221     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
222 w 1.3
223     =head1 LICENSE
224    
225 wakaba 1.10 Copyright 2003-2004 Wakaba <w@suika.fam.cx>. All rights reserved.
226 w 1.3
227     This program is free software; you can redistribute it and/or
228     modify it under the same terms as Perl itself.
229    
230     =cut
231 w 1.1
232 wakaba 1.12 1; # $Date: 2004/02/08 09:01:57 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24