X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=install.php;h=d72cf69b07b68dd1429755a73ad6fff4ee2b2d25;hb=b15f5f0cafc08c9b63090c5b4f7494fca0634238;hp=08555d19b9515ea2773a774e3403a0287e74fbdd;hpb=369885f04f6822355da24595637916e4263db702;p=quix0rs-gnu-social.git diff --git a/install.php b/install.php index 08555d19b9..d72cf69b07 100644 --- a/install.php +++ b/install.php @@ -27,10 +27,12 @@ * @author Craig Andrews * @author Eric Helgeson * @author Evan Prodromou + * @author Mikael Nordfeldth * @author Robin Millette * @author Sarven Capadisli * @author Tom Adams * @author Zach Copley + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license GNU Affero General Public License http://www.gnu.org/licenses/ * @version 0.9.x * @link http://status.net @@ -44,13 +46,61 @@ require INSTALLDIR . '/lib/installer.php'; * Helper class for building form */ class Posted { + /** + * HTML-friendly escaped string for the POST param of given name, or empty. + * @param string $name + * @return string + */ function value($name) + { + return htmlspecialchars($this->string($name)); + } + + /** + * The given POST parameter value, forced to a string. + * Missing value will give ''. + * + * @param string $name + * @return string + */ + function string($name) + { + return strval($this->raw($name)); + } + + /** + * The given POST parameter value, in its original form. + * Magic quotes are stripped, if provided. + * Missing value will give null. + * + * @param string $name + * @return mixed + */ + function raw($name) { if (isset($_POST[$name])) { - return htmlspecialchars(strval($_POST[$name])); + return $this->dequote($_POST[$name]); } else { - return ''; + return null; + } + } + + /** + * If necessary, strip magic quotes from the given value. + * + * @param mixed $val + * @return mixed + */ + function dequote($val) + { + if (get_magic_quotes_gpc()) { + if (is_string($val)) { + return stripslashes($val); + } else if (is_array($val)) { + return array_map(array($this, 'dequote'), $val); + } } + return $val; } } @@ -68,7 +118,7 @@ class WebInstaller extends Installer function main() { if (!$this->checkPrereqs()) { - $this->showForm(); + $this->warning(_('Please fix the above stated problems and refresh this page to continue installing.')); return; } @@ -106,11 +156,7 @@ class WebInstaller extends Installer global $dbModules; $post = new Posted(); $dbRadios = ''; - if (isset($_POST['dbtype'])) { - $dbtype = $_POST['dbtype']; - } else { - $dbtype = null; - } + $dbtype = $post->raw('dbtype'); foreach (self::$dbModules as $type => $info) { if ($this->checkExtension($info['check_module'])) { if ($dbtype == null || $dbtype == $type) { @@ -119,10 +165,19 @@ class WebInstaller extends Installer } else { $checked = ''; } - $dbRadios .= " $info[name]
\n"; + $dbRadios .= sprintf('%3$s
', + htmlspecialchars($type), $checked, + htmlspecialchars($info['name'])); } } + $ssl = array('always'=>null, 'never'=>null); + if (!empty($_SERVER['HTTPS'])) { + $ssl['always'] = 'checked="checked"'; + } else { + $ssl['never'] = 'checked="checked"'; + } + echo<<
@@ -140,6 +195,12 @@ class WebInstaller extends Installer disable

Enable fancy (pretty) URLs. Auto-detection failed, it depends on Javascript.

+
  • + + enable
    + disable
    +

    Enabling SSL (https://) requires extra webserver configuration and certificate generation not offered by this installation.

    +
  • @@ -153,7 +214,7 @@ class WebInstaller extends Installer
  • - $dbRadios + {$dbRadios}

    Database type

  • @@ -180,12 +241,12 @@ class WebInstaller extends Installer
  • -

    Nickname for the initial StatusNet user (administrator)

    +

    Nickname for the initial user (administrator)

  • -

    Password for the initial StatusNet user (administrator)

    +

    Password for the initial user (administrator)

  • @@ -194,12 +255,22 @@ class WebInstaller extends Installer
  • -

    Optional email address for the initial StatusNet user (administrator)

    +

    Optional email address for the initial user (administrator)

  • + + +
    + Site profile +
    • - - -

      Release and security feed from update@status.net (recommended)

      + + +

      Initial access settings for your site

    @@ -239,24 +310,28 @@ STR; /** * Read and validate input data. * May output side effects. - * + * * @return boolean success */ function prepare() { - $this->host = $_POST['host']; - $this->dbtype = $_POST['dbtype']; - $this->database = $_POST['database']; - $this->username = $_POST['dbusername']; - $this->password = $_POST['dbpassword']; - $this->sitename = $_POST['sitename']; - $this->fancy = !empty($_POST['fancy']); - - $this->adminNick = strtolower($_POST['admin_nickname']); - $this->adminPass = $_POST['admin_password']; - $adminPass2 = $_POST['admin_password2']; - $this->adminEmail = $_POST['admin_email']; - $this->adminUpdates = $_POST['admin_updates']; + $post = new Posted(); + $this->host = $post->string('host'); + $this->dbtype = $post->string('dbtype'); + $this->database = $post->string('database'); + $this->username = $post->string('dbusername'); + $this->password = $post->string('dbpassword'); + $this->sitename = $post->string('sitename'); + $this->fancy = (bool)$post->string('fancy'); + + $this->adminNick = strtolower($post->string('admin_nickname')); + $this->adminPass = $post->string('admin_password'); + $adminPass2 = $post->string('admin_password2'); + $this->adminEmail = $post->string('admin_email'); + + $this->siteProfile = $post->string('site_profile'); + + $this->ssl = $post->string('ssl'); $this->server = $_SERVER['HTTP_HOST']; $this->path = substr(dirname($_SERVER['PHP_SELF']), 1); @@ -269,12 +344,21 @@ STR; if (!$this->validateAdmin()) { $fail = true; } - + if ($this->adminPass != $adminPass2) { $this->updateStatus("Administrator passwords do not match. Did you mistype?", true); $fail = true; } - + + if (!in_array($this->ssl, array('never', 'sometimes', 'always'))) { + $this->updateStatus("Bad value for server SSL enabling."); + $fail = true; + } + + if (!$this->validateSiteProfile()) { + $fail = true; + } + return !$fail; } @@ -287,36 +371,47 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - Install StatusNet - - - - - - + Install GNU social + + + + +
    +
    +
    + +
    +
    +