From 5d9ebd0f48be73dfc6fc60c6a95b11f28f6a8c86 Mon Sep 17 00:00:00 2001 From: carstenklapp Date: Mon, 25 Feb 2002 18:14:11 +0000 Subject: [PATCH] Now handles about two thirds of the settings in config.php, and incorporates the password encryption functions from passencrypt.php for generating an encoded admin password if the crypt() function is available. git-svn-id: svn://svn.code.sf.net/p/phpwiki/code/trunk@2194 96ab9672-09ca-45d6-a79d-3d69d39ca109 --- configurator.php | 382 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 362 insertions(+), 20 deletions(-) diff --git a/configurator.php b/configurator.php index a312c85d9..4bdebad2a 100644 --- a/configurator.php +++ b/configurator.php @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - + @@ -73,15 +73,15 @@ $preamble = ' -$properties['part0'] = -new part('Part Zero', false, ' +$properties['Part Zero'] = +new part('part0', false, ' Part Zero: If PHP needs help in finding where you installed the rest of the PhpWiki code, you can set the include_path here.'); $properties['PHP include_path'] = -new iniset('include_path', false, " +new iniset('include_path', "\$include_path", " NOTE: phpwiki uses the PEAR library of php code for SQL database access. Your PHP is probably already configured to set include_path so that PHP can find the pear code. If not (or if you @@ -116,17 +116,22 @@ if (substr(PHP_OS,0,3) == 'WIN') { -$properties['partnull'] = -new part('Part Null', " -define ('PHPWIKI_VERSION', '1.3.2-jeffs-hacks'); -require \"lib/prepend.php\"; -rcs_id('$Id: configurator.php,v 1.1 2002-02-22 07:12:09 carstenklapp Exp $'); -", " +$properties['Part Null'] = +new part('partnullheader', "", " Part Null: Don't touch this!"); -$properties['partone'] = -new part('Part One', "/////////////////////////////////////////////////////////////////// + +$properties['Part Null Settings'] = +new unchangeable_property('partnullsettings', " +define ('PHPWIKI_VERSION', '1.3.3-jeffs-hacks'); +require \"lib/prepend.php\"; +rcs_id('\$Id: configurator.php,v 1.2 2002-02-25 18:14:11 carstenklapp Exp $');", ""); + + + +$properties['Part One'] = +new part('partone', "/////////////////////////////////////////////////////////////////// ", " Part One: @@ -160,14 +165,14 @@ Username and password of administrator. Set these to your preferences. For heaven's sake pick a good password!"); $properties['Admin Password'] = -new defines('ADMIN_PASSWD', "", ""); +new defines_password('ADMIN_PASSWD', "", ""); $properties['ZIPdump Authentication'] = new defines_boolean('ZIPDUMP_AUTH', - array('false' => 'everyone', - 'true' => 'only admin'), " + array('false' => 'everyone may download zip dumps', + 'true' => 'only admin may download zip dumps'), " If true, only the admin user can make zip dumps, else zip dumps require no authentication."); @@ -206,17 +211,182 @@ will be off."); +//fixme: new property subclass +$properties['Disabled Actions'] = +new property('DisabledActions', "array('dumpserial', 'loadfile')", " +Actions listed in this array will not be allowed."); + + + +//fixme: commented out by default +$properties['Access Log'] = +new defines('ACCESS_LOG', "/tmp/wiki_access_log", " +PhpWiki can generate an access_log (in \"NCSA combined log\" format) +for you. If you want one, define this to the name of the log file."); + + + +$properties['Strict Login'] = +new defines_boolean('ALLOW_BOGO_LOGIN', + array('true' => 'Users may Sign In with any WikiWord', + 'false' => 'Only admin may Sign In'), " +If ALLOW_BOGO_LOGIN is true, users are allowed to login (with +any/no password) using any userid which: 1) is not the ADMIN_USER, +2) is a valid WikiWord (matches $WikiNameRegexp.)"); + + + +$properties['Require Sign In Before Editing'] = +new defines_boolean('REQUIRE_SIGNIN_BEFORE_EDIT', + array('false' => 'Do not require Sign In', + 'true' => 'Require Sign In'), " +If set, then if an anonymous user attempts to edit a page he will +be required to sign in. (If ALLOW_BOGO_LOGIN is true, of course, +no password is required, but the user must still sign in under +some sort of BogoUserId.)"); + +$properties['Path for PHP Session Support'] = +new iniset('session.save_path', 'some_other_directory', " +The login code now uses PHP's session support. Usually, the default +configuration of PHP is to store the session state information in +/tmp. That probably will work fine, but fails e.g. on clustered +servers where each server has their own distinct /tmp (this is the +case on SourceForge's project web server.) You can specify an +alternate directory in which to store state information like so +(whatever user your httpd runs as must have read/write permission +in this directory):"); +$properties['Disable PHP Transparent Session ID'] = +new unchangeable_property('session.use_trans_sid', "@ini_set('session.use_trans_sid', 0);", " +If your php was compiled with --enable-trans-sid it tries to +add a PHPSESSID query argument to all URL strings when cookie +support isn't detected in the client browser. For reasons +which aren't entirely clear (PHP bug) this screws up the URLs +generated by PhpWiki. Therefore, transparent session ids +should be disabled. This next line does that. + +(At the present time, you will not be able to log-in to PhpWiki, +or set any user preferences, unless your browser supports cookies.)"); + + + +$properties['Part Two'] = +new part('parttwo', "/////////////////////////////////////////////////////////////////// +", " + +Part Two: +Database Selection +"); + // MORE CONFIG OPTIONS GO IN HERE +$properties['Page Revisions'] = +new part('parttworevisions', " +", " + +The next section controls how many old revisions of each page are +kept in the database. + +There are two basic classes of revisions: major and minor. Which +class a revision belongs in is determined by whether the author +checked the \"this is a minor revision\" checkbox when they saved the +page. + +There is, additionally, a third class of revisions: author +revisions. The most recent non-mergable revision from each distinct +author is and author revision. + +The expiry parameters for each of those three classes of revisions +can be adjusted seperately. For each class there are five +parameters (usually, only two or three of the five are actually +set) which control how long those revisions are kept in the +database. +
+   max_keep: If set, this specifies an absolute maximum for the
+            number of archived revisions of that class. This is
+            meant to be used as a safety cap when a non-zero
+            min_age is specified. It should be set relatively high,
+            and it's purpose is to prevent malicious or accidental
+            database overflow due to someone causing an
+            unreasonable number of edits in a short period of time.
+
+  min_age:  Revisions younger than this (based upon the supplanted
+            date) will be kept unless max_keep is exceeded. The age
+            should be specified in days. It should be a
+            non-negative, real number,
+
+  min_keep: At least this many revisions will be kept.
+
+  keep:     No more than this many revisions will be kept.
+
+  max_age:  No revision older than this age will be kept.
+
+Supplanted date: Revisions are timestamped at the instant that they +cease being the current revision. Revision age is computed using +this timestamp, not the edit time of the page. + +Merging: When a minor revision is deleted, if the preceding +revision is by the same author, the minor revision is merged with +the preceding revision before it is deleted. Essentially: this +replaces the content (and supplanted timestamp) of the previous +revision with the content after the merged minor edit, the rest of +the page metadata for the preceding version (summary, mtime, ...) +is not changed. +"); + + + +// MORE CONFIG OPTIONS GO IN HERE + + + +$properties['Part Three'] = +new part('partthree', "/////////////////////////////////////////////////////////////////// +", " + +Part Three: +Page appearance and layout +"); + + + +$properties['Theme'] = +new defines_selection('THEME', + array('default' => 'default', + 'Hawaiian' => 'Hawaiian', + 'MacOSX' => 'MacOSX', + 'Portland' => 'Portland', + 'Sidebar' => 'Sidebar', + 'SpaceWiki' => 'SpaceWiki'), " +THEME + +Most of the page appearance is controlled by files in the theme +subdirectory. + +There are a number of pre-defined themes shipped with PhpWiki. +Or you may create your own (e.g. by copying and then modifying one of +stock themes.) + +Pick one. +
+define('THEME', 'default');
+define('THEME', 'Hawaiian');
+define('THEME', 'MacOSX');
+define('THEME', 'Portland');
+define('THEME', 'Sidebar');
+define('THEME', 'SpaceWiki');
"); + + + + $properties['Character Set'] = new defines('CHARSET', 'iso-8859-1', " Select a valid charset name to be inserted into the xml/html pages, @@ -269,6 +439,85 @@ valid locale before gettext() will work, i.e., use 'de_DE', 'nl_NL'."); +$properties['Part Four'] = +new part('partfour', "/////////////////////////////////////////////////////////////////// +", " + +Part Four: +Mark-up options. +"); + + + +//fixme: new property subclass +$properties['Allowed Protocols'] = +new property('AllowedProtocols', "http|https|mailto|ftp|news|nntp|ssh|gopher", " +allowed protocols for links - be careful not to allow \"javascript:\" +URL of these types will be automatically linked. +within a named link [name|uri] one more protocol is defined: phpwiki"); + + + +//fixme: new property subclass +$properties['Inline Images'] = +new property('InlineImages', "png|jpg|gif", " +URLs ending with the following extension should be inlined as images"); + + + +$properties['WikiName Regexp'] = +new property('WikiNameRegexp', "(? +'; + + + // end of configuration options /////////////////////////////// // begin class definitions @@ -320,6 +569,23 @@ class property { } } +class unchangeable_property extends property { + function get_html() { + return ""; + } + function get_config_line($posted_value) { + if ($this->description) + $n = "\n"; + return "${n}".$this->default_value; + } + function get_instructions($title) { + $i = "

" . $title . "

\n

" . str_replace("\n\n", "

", $this->get_description()) . "

\n"; + $i = $i ."Not editable.
\n
" . $this->default_value."
"; + return "\n\n" .$i ."\n"; + } + +} + class selection extends property { function get_html() { $output = 'get_config_item_name() . "\" value=\"" . $this->default_value . "\">"; + } +} + + class defines_numeric extends property { function get_config_line($posted_value) { if ($this->description) @@ -360,7 +700,7 @@ class iniset extends property { if ($posted_value) return "\nini_set('".$this->get_config_item_name()."', '$posted_value');"; else - return "\n//ini_set('".$this->get_config_item_name()."', '\$".$this->get_config_item_name()."');"; + return "\n//ini_set('".$this->get_config_item_name()."', '".$this->default_value."');"; } } @@ -385,11 +725,13 @@ class defines_boolean extends property { class part extends property { function get_config($posted_value) { + $d = str_replace("
", "", $this->get_description());
+        $d = str_replace("
", "", $d); $separator = "\n/////////////////////////////////////////////////////////////////////"; - return $separator . str_replace("\n", "\n// ", $this->get_description()) ."\n$this->default_value"; + return $separator . str_replace("\n", "\n// ", $d) ."\n$this->default_value"; } function get_instructions($title) { - $i = "

".$this->get_config_item_name()."

\n$this->description\n"; + $i = "

" . $title . "

\n

" . str_replace("\n\n", "

", $this->get_description()) . "

\n"; return "\n\n" .$i ."\n"; } function get_html() { @@ -433,8 +775,8 @@ if ($action == 'make_config') { } $diemsg = "The configurator.php is provided for testing purposes only.\nYou can't use this file with your PhpWiki server yet!!"; - $config .= "\ndie(\"$diemsg\");"; - $config .= "\n?>\n"; + $config .= "\ndie(\"$diemsg\");\n"; + $config .= $end; /* We first check if the config-file exists. */ if (file_exists('defaults.php')) { -- 2.45.0