diff --git a/public/setup.php b/public/setup.php
index a7e2c42c..508c3001 100644
--- a/public/setup.php
+++ b/public/setup.php
@@ -17,7 +17,7 @@
define('POSTFIXADMIN', 1); # by defining it here, common.php will not start a session.
-require_once(dirname(__FILE__).'/common.php'); # make sure correct common.php is used.
+require_once(dirname(__FILE__) . '/common.php'); # make sure correct common.php is used.
$CONF['show_header_text'] = 'NO';
$CONF['theme_logo'] = 'images/logo-default.png';
@@ -26,427 +26,429 @@ require(dirname(__FILE__) . '/../templates/header.php');
?>
-
Postfix Admin Setup Checker
-
-
Running software:
-
-Error: Depends on: PHP v5+
\n";
- $error += 1;
- } elseif (version_compare(phpversion(), '7.0') < 0) {
- $phpversion = 5;
- print "- Recommended PHP version: >= 7.0, you have " . phpversion() . "; you should upgrade.
\n";
- } else {
- print "- PHP version " . phpversion() . " - Good
\n";
- }
-} else {
- print "- DANGER Unable to check for PHP version. (missing function: phpversion())
\n";
- $error++;
-}
-
-//
-// Check for Apache version
-//
-if ($f_apache_get_version == 1) {
- print "- " . apache_get_version() . "
\n";
-} else {
- # not running on Apache.
- # However postfixadmin _is_ running, so obviously we are on a supported webserver ;-))
- # No need to confuse the user with a warning.
-}
-
-print "
";
-print "
Checking environment:\n";
-print "
\n";
-
-//
-// Check for Magic Quotes
-//
-if ($f_get_magic_quotes_gpc == 1) {
- if (get_magic_quotes_gpc() == 0) {
- print "- Magic Quotes: Disabled - OK
\n";
- } else {
- print "- Warning: Magic Quotes: ON (internal work around to disable is in place)
\n";
- }
-}
-
-
-//
-// Check for config.local.php
-//
-if ($file_local_config == 1) {
- print "- Depends on: presence config.local.php - Found
\n";
-} else {
- print "- Warning: config.local.php - NOT FOUND
\n";
- print "It's Recommended to store your own settings in config.local.php instead of editing config.inc.php
";
- print "Create the file, and edit as appropriate (e.g. select database type etc)
";
-}
-
-//
-// Check if there is support for at least 1 database
-//
-if (($f_mysql_connect == 0) and ($f_mysqli_connect == 0) and ($f_pg_connect == 0) and ($f_sqlite_open == 0)) {
- print "- Error: There is no database support in your PHP setup
\n";
- print "To install MySQL 3.23 or 4.0 support on FreeBSD:
\n";
- print "% cd /usr/ports/databases/php{$phpversion}-mysql/\n";
- print "% make clean install\n";
- print " - or with portupgrade -\n";
- print "% portinstall php{$phpversion}-mysql
\n";
- if ($phpversion >= 5) {
- print "To install MySQL 4.1 support on FreeBSD:
\n";
- print "% cd /usr/ports/databases/php5-mysqli/\n";
- print "% make clean install\n";
- print " - or with portupgrade -\n";
- print "% portinstall php5-mysqli
\n";
- }
- print "To install PostgreSQL support on FreeBSD:
\n";
- print "% cd /usr/ports/databases/php{$phpversion}-pgsql/\n";
- print "% make clean install\n";
- print " - or with portupgrade -\n";
- print "% portinstall php{$phpversion}-pgsql
\n";
- $error += 1;
-}
-
-if ($f_mysqli_connect == 1) {
- print "- Database - MySQL (mysqli_ functions) - Found\n";
- if (Config::read_string('database_type') != 'mysqli') {
- print "
(change the database_type to 'mysqli' in config.local.php if you want to use MySQL)\n";
- }
- print " ";
-} else {
- print "- Database - MySQL (mysqli_ functions) - Not found
";
-}
-
+ Postfix Admin Setup Checker
+
+ Running software:
+
+ Warning: your configured database_type 'mysql' is deprecated; you must move to use 'mysqli' in your config.local.php.\n";
- $error++;
-}
+ $error = 0;
+
+ $errormsg = array();
+
+ //
+ // Check for PHP version
+ //
+ $phpversion = 'unknown-version';
+
+ if ($f_phpversion == 1) {
+ if (version_compare(phpversion(), '5', '<')) {
+ print "- Error: Depends on: PHP v5+
\n";
+ $error += 1;
+ } elseif (version_compare(phpversion(), '7.0') < 0) {
+ $phpversion = 5;
+ print "- Recommended PHP version: >= 7.0, you have " . phpversion() . "; you should upgrade.
\n";
+ } else {
+ print "- PHP version " . phpversion() . " - Good
\n";
+ }
+ } else {
+ print "- DANGER Unable to check for PHP version. (missing function: phpversion())
\n";
+ $error++;
+ }
-//
-// PostgreSQL functions
-//
-if ($f_pg_connect == 1) {
- print "- Database : PostgreSQL support (pg_ functions) - Found\n";
- if (Config::read_string('database_type') != 'pgsql') {
- print "
(change the database_type to 'pgsql' in config.local.php if you want to use PostgreSQL)\n";
- }
- print " ";
-} else {
- print "- Database - PostgreSQL (pg_ functions) - Not found
";
-}
+ //
+ // Check for Apache version
+ //
+ if ($f_apache_get_version == 1) {
+ print "- " . apache_get_version() . "
\n";
+ } else {
+ # not running on Apache.
+ # However postfixadmin _is_ running, so obviously we are on a supported webserver ;-))
+ # No need to confuse the user with a warning.
+ }
-if ($f_sqlite_open == 1) {
- print "- Database : SQLite support (SQLite3) - Found \n";
- if (Config::read_string('database_type') != 'sqlite') {
- print "
(change the database_type to 'sqlite' in config.local.php if you want to use SQLite)\n";
- }
- print " ";
-} else {
- print "- Database - SQLite (SQLite3) - Not found
";
-}
+ print "
";
+ print "Checking environment:\n";
+ print "
\n";
+
+ //
+ // Check for Magic Quotes
+ //
+ if ($f_get_magic_quotes_gpc == 1) {
+ if (get_magic_quotes_gpc() == 0) {
+ print "- Magic Quotes: Disabled - OK
\n";
+ } else {
+ print "- Warning: Magic Quotes: ON (internal work around to disable is in place)
\n";
+ }
+ }
-//
-// Database connection
-//
-$link = null;
-$error_text = null;
-try {
- $link = db_connect();
-} catch (Exception $e) {
- $error_text = $e->getMessage();
-}
+ //
+ // Check for config.local.php
+ //
+ if ($file_local_config == 1) {
+ print "- Depends on: presence config.local.php - Found
\n";
+ } else {
+ print "- Warning: config.local.php - NOT FOUND
\n";
+ print "It's Recommended to store your own settings in config.local.php instead of editing config.inc.php
";
+ print "Create the file, and edit as appropriate (e.g. select database type etc)
";
+ }
-if (!empty($link) && $error_text == "") {
- print "- Testing database connection (using {$CONF['database_type']}) - Success
";
-} else {
- print "- Error: Can't connect to database
\n";
- print "Please check the \$CONF['database_*'] parameters in config.local.php.
\n";
- print "$error_text \n";
- $error ++;
-}
+ //
+ // Check if there is support for at least 1 database
+ //
+ if (($f_mysql_connect == 0) and ($f_mysqli_connect == 0) and ($f_pg_connect == 0) and ($f_sqlite_open == 0)) {
+ print "- Error: There is no database support in your PHP setup
\n";
+ print "To install MySQL 3.23 or 4.0 support on FreeBSD:
\n";
+ print "% cd /usr/ports/databases/php{$phpversion}-mysql/\n";
+ print "% make clean install\n";
+ print " - or with portupgrade -\n";
+ print "% portinstall php{$phpversion}-mysql
\n";
+ if ($phpversion >= 5) {
+ print "To install MySQL 4.1 support on FreeBSD:
\n";
+ print "% cd /usr/ports/databases/php5-mysqli/\n";
+ print "% make clean install\n";
+ print " - or with portupgrade -\n";
+ print "% portinstall php5-mysqli
\n";
+ }
+ print "To install PostgreSQL support on FreeBSD:
\n";
+ print "% cd /usr/ports/databases/php{$phpversion}-pgsql/\n";
+ print "% make clean install\n";
+ print " - or with portupgrade -\n";
+ print "% portinstall php{$phpversion}-pgsql
\n";
+ $error += 1;
+ }
-//
-// Session functions
-//
-if ($f_session_start == 1) {
- print "- Depends on: session - OK
\n";
-} else {
- print "- Error: Depends on: session - NOT FOUND
\n";
- print "To install session support on FreeBSD:
\n";
- print "% cd /usr/ports/www/php$phpversion-session/\n";
- print "% make clean install\n";
- print " - or with portupgrade -\n";
- print "% portinstall php$phpversion-session
\n";
- $error += 1;
-}
+ if ($f_mysqli_connect == 1) {
+ print "- Database - MySQL (mysqli_ functions) - Found\n";
+ if (Config::read_string('database_type') != 'mysqli') {
+ print "
(change the database_type to 'mysqli' in config.local.php if you want to use MySQL)\n";
+ }
+ print " ";
+ } else {
+ print "- Database - MySQL (mysqli_ functions) - Not found
";
+ }
-//
-// PCRE functions
-//
-if ($f_preg_match == 1) {
- print "- Depends on: pcre - Found
\n";
-} else {
- print "- Error: Depends on: pcre - NOT FOUND
\n";
- print "To install pcre support on FreeBSD:
\n";
- print "% cd /usr/ports/devel/php$phpversion-pcre/\n";
- print "% make clean install\n";
- print " - or with portupgrade -\n";
- print "% portinstall php$phpversion-pcre
\n";
- $error += 1;
-}
-//
-// Multibyte functions
-//
-if ($f_mb_encode_mimeheader == 1) {
- print "- Depends on: multibyte string - Found
\n";
-} else {
- print "- Error: Depends on: multibyte string - NOT FOUND
\n";
- print "To install multibyte string support, install php$phpversion-mbstring \n";
- $error += 1;
-}
+ if (Config::read_string('database_type') == 'mysql') {
+ print "- Warning: your configured database_type 'mysql' is deprecated; you must move to use 'mysqli' in your config.local.php.
\n";
+ $error++;
+ }
+ //
+ // PostgreSQL functions
+ //
+ if ($f_pg_connect == 1) {
+ print "- Database : PostgreSQL support (pg_ functions) - Found\n";
+ if (Config::read_string('database_type') != 'pgsql') {
+ print "
(change the database_type to 'pgsql' in config.local.php if you want to use PostgreSQL)\n";
+ }
+ print " ";
+ } else {
+ print "- Database - PostgreSQL (pg_ functions) - Not found
";
+ }
-//
-// Imap functions
-//
-if ($f_imap_open == 1) {
- print "- IMAP functions - Found
\n";
-} else {
- print "- Warning: May depend on: IMAP functions - Not Found
\n";
- print "To install IMAP support, install php$phpversion-imap
\n";
- print "Without IMAP support, you won't be able to create subfolders when creating mailboxes. \n";
-}
+ if ($f_sqlite_open == 1) {
+ print "- Database : SQLite support (SQLite3) - Found \n";
+ if (Config::read_string('database_type') != 'sqlite') {
+ print "
(change the database_type to 'sqlite' in config.local.php if you want to use SQLite)\n";
+ }
+ print " ";
+ } else {
+ print "- Database - SQLite (SQLite3) - Not found
";
+ }
+ //
+ // Database connection
+ //
+ $link = null;
+ $error_text = null;
-//
-// If PHP <7.0, require random_compat works. Currently we bundle it via the Phar extension.
-//
+ try {
+ $link = db_connect();
+ } catch (Exception $e) {
+ $error_text = $e->getMessage();
+ }
-if (version_compare(phpversion(), "7.0", '<')
- && !extension_loaded('Phar')
- && $CONF['configured']
- && $CONF['encrypt'] == 'php_crypt') {
- print "- PHP before 7.0 requires 'Phar' extension support for secure random_int() function fallback";
- print "
Either enable the 'Phar' extension, or install the random_compat library files from https://github.com/paragonie/random_compat and include/require them from functions.inc.php";
- print "
PostfixAdmin has bundled lib/random_compat.phar but it's not usable on your installation due to the missing Phar extension. ";
- $error += 1;
-}
+ if (!empty($link) && $error_text == "") {
+ print "- Testing database connection (using {$CONF['database_type']}) - Success
";
+ } else {
+ print "- Error: Can't connect to database
\n";
+ print "Please check the \$CONF['database_*'] parameters in config.local.php.
\n";
+ print "$error_text \n";
+ $error++;
+ }
+ //
+ // Session functions
+ //
+ if ($f_session_start == 1) {
+ print "- Depends on: session - OK
\n";
+ } else {
+ print "- Error: Depends on: session - NOT FOUND
\n";
+ print "To install session support on FreeBSD:
\n";
+ print "% cd /usr/ports/www/php$phpversion-session/\n";
+ print "% make clean install\n";
+ print " - or with portupgrade -\n";
+ print "% portinstall php$phpversion-session
\n";
+ $error += 1;
+ }
+ //
+ // PCRE functions
+ //
+ if ($f_preg_match == 1) {
+ print "- Depends on: pcre - Found
\n";
+ } else {
+ print "- Error: Depends on: pcre - NOT FOUND
\n";
+ print "To install pcre support on FreeBSD:
\n";
+ print "% cd /usr/ports/devel/php$phpversion-pcre/\n";
+ print "% make clean install\n";
+ print " - or with portupgrade -\n";
+ print "% portinstall php$phpversion-pcre
\n";
+ $error += 1;
+ }
-print "
";
+ //
+ // Multibyte functions
+ //
+ if ($f_mb_encode_mimeheader == 1) {
+ print "- Depends on: multibyte string - Found
\n";
+ } else {
+ print "- Error: Depends on: multibyte string - NOT FOUND
\n";
+ print "To install multibyte string support, install php$phpversion-mbstring \n";
+ $error += 1;
+ }
-if ($error != 0) {
- print "Please fix the errors listed above.
";
-} else {
- print "Everything seems fine... attempting to create/update database structure
\n";
- require_once(dirname(__FILE__) .'/upgrade.php');
- $tUsername = '';
- $setupMessage = '';
- $lostpw_error = 0;
+ //
+ // Imap functions
+ //
+ if ($f_imap_open == 1) {
+ print "- IMAP functions - Found
\n";
+ } else {
+ print "- Warning: May depend on: IMAP functions - Not Found
\n";
+ print "To install IMAP support, install php$phpversion-imap
\n";
+ print "Without IMAP support, you won't be able to create subfolders when creating mailboxes. \n";
+ }
- $setuppw = "";
- if (isset($CONF['setup_password'])) {
- $setuppw = $CONF['setup_password'];
- }
- if (safepost("form") == "setuppw") {
- # "setup password" form submitted
- if (safepost('setup_password') != safepost('setup_password2')) {
- $setupMessage = "The two passwords differ!";
- $lostpw_error = 1;
- } else {
- list($lostpw_error, $lostpw_result) = check_setup_password(safepost('setup_password'), 1);
- $setupMessage = $lostpw_result;
- $setuppw = "changed";
- }
- } elseif (safepost("form") == "createadmin") {
- # "create admin" form submitted
- list($pw_check_error, $pw_check_result) = check_setup_password(safepost('setup_password'));
- if ($pw_check_result != 'pass_OK') {
- $error += 1;
- $setupMessage = $pw_check_result;
- }
+ //
+ // If PHP <7.0, require random_compat works. Currently we bundle it via the Phar extension.
+ //
- if ($error == 0 && $pw_check_result == 'pass_OK') {
- // XXX need to ensure domains table includes an 'ALL' entry.
- $table_domain = table_by_key('domain');
- $rows = db_query_all("SELECT * FROM $table_domain WHERE domain = 'ALL'");
- if (empty($rows)) {
- db_insert('domain', array('domain' => 'ALL', 'description' => '', 'transport' => '')); // all other fields should default through the schema.
+ if (version_compare(phpversion(), "7.0", '<')
+ && !extension_loaded('Phar')
+ && $CONF['configured']
+ && $CONF['encrypt'] == 'php_crypt') {
+ print "- PHP before 7.0 requires 'Phar' extension support for secure random_int() function fallback";
+ print "
Either enable the 'Phar' extension, or install the random_compat library files from https://github.com/paragonie/random_compat and include/require them from functions.inc.php";
+ print "
PostfixAdmin has bundled lib/random_compat.phar but it's not usable on your installation due to the missing Phar extension. ";
+ $error += 1;
}
- $values = array(
- 'username' => safepost('username'),
- 'password' => safepost('password'),
- 'password2' => safepost('password2'),
- 'superadmin' => 1,
- 'domains' => array(),
- 'active' => 1,
- );
- list($error, $setupMessage, $errormsg) = create_admin($values);
+ print "
";
if ($error != 0) {
- $tUsername = htmlentities($values['username']);
+ print "
Please fix the errors listed above.
";
} else {
- $setupMessage .= "
You are done with your basic setup. ";
- $setupMessage .= "
You can now login to PostfixAdmin using the account you just created.";
- }
- }
- }
+ print "
Everything seems fine... attempting to create/update database structure
\n";
+ require_once(dirname(__FILE__) . '/upgrade.php');
- if (($setuppw == "" || $setuppw == "changeme" || safeget("lostpw") == 1 || $lostpw_error != 0) /* && $_SERVER['REQUEST_METHOD'] != "POST" */) {
- # show "create setup password" form?>
-
-
-
+ $tUsername = '';
+ $setupMessage = '';
+ $lostpw_error = 0;
-
-
-
-
+ $setuppw = "";
+ if (isset($CONF['setup_password'])) {
+ $setuppw = $CONF['setup_password'];
+ }
-
+ if (safepost("form") == "setuppw") {
+ # "setup password" form submitted
+ if (safepost('setup_password') != safepost('setup_password2')) {
+ $setupMessage = "The two passwords differ!";
+ $lostpw_error = 1;
+ } else {
+ list($lostpw_error, $lostpw_result) = check_setup_password(safepost('setup_password'), 1);
+ $setupMessage = $lostpw_result;
+ $setuppw = "changed";
+ }
+ } elseif (safepost("form") == "createadmin") {
+ # "create admin" form submitted
+ list($pw_check_error, $pw_check_result) = check_setup_password(safepost('setup_password'));
+ if ($pw_check_result != 'pass_OK') {
+ $error += 1;
+ $setupMessage = $pw_check_result;
+ }
+
+ if ($error == 0 && $pw_check_result == 'pass_OK') {
+ // XXX need to ensure domains table includes an 'ALL' entry.
+ $table_domain = table_by_key('domain');
+ $rows = db_query_all("SELECT * FROM $table_domain WHERE domain = 'ALL'");
+ if (empty($rows)) {
+ db_insert('domain', array('domain' => 'ALL', 'description' => '', 'transport' => '')); // all other fields should default through the schema.
+ }
+
+ $values = array(
+ 'username' => safepost('username'),
+ 'password' => safepost('password'),
+ 'password2' => safepost('password2'),
+ 'superadmin' => 1,
+ 'domains' => array(),
+ 'active' => 1,
+ );
+
+ list($error, $setupMessage, $errormsg) = create_admin($values);
+
+ if ($error != 0) {
+ $tUsername = htmlentities($values['username']);
+ } else {
+ $setupMessage .= "
You are done with your basic setup. ";
+ $setupMessage .= "
You can now login to PostfixAdmin using the account you just created.";
+ }
+ }
+ }
+
+ if (($setuppw == "" || $setuppw == "changeme" || safeget("lostpw") == 1 || $lostpw_error != 0) /* && $_SERVER['REQUEST_METHOD'] != "POST" */) {
+ # show "create setup password" form?>
+
+
+
+
+
+
+
+
+
+
Since version 2.3 there is no requirement to delete setup.php
Check the config.inc.php file for any other settings that you may need to change.
-
+