aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/develop/add_permissions.php4
-rw-r--r--phpBB/includes/functions_admin.php16
-rw-r--r--phpBB/includes/functions_transfer.php295
-rw-r--r--phpBB/includes/functions_user.php2
-rw-r--r--phpBB/install/schemas/schema_data.sql4
-rw-r--r--phpBB/language/en/acp/common.php1
-rw-r--r--phpBB/language/en/common.php2
7 files changed, 317 insertions, 7 deletions
diff --git a/phpBB/develop/add_permissions.php b/phpBB/develop/add_permissions.php
index 51578b4341..1f79716657 100644
--- a/phpBB/develop/add_permissions.php
+++ b/phpBB/develop/add_permissions.php
@@ -101,9 +101,7 @@ $m_permissions = array(
$a_permissions = array(
'a_' => array(0, 1),
'a_server' => array(0, 1),
- 'a_defaults'=> array(0, 1),
'a_board' => array(0, 1),
- 'a_cookies' => array(0, 1),
'a_clearlogs' => array(0, 1),
'a_words' => array(0, 1),
'a_icons' => array(0, 1),
@@ -219,7 +217,7 @@ foreach ($prefixes as $prefix)
mass_auth('group', 0, 'inactive_coppa', $auth_option, ACL_NO);
mass_auth('group', 0, 'registered_coppa', $auth_option, ACL_NO);
mass_auth('group', 0, 'registered', $auth_option, (($prefix != 'm_' && $prefix != 'a_') ? ACL_YES : ACL_NO));
- mass_auth('group', 0, 'super_moderators', $auth_option, (($prefix != 'a_') ? ACL_YES : ACL_NO));
+ mass_auth('group', 0, 'global_moderators', $auth_option, (($prefix != 'a_') ? ACL_YES : ACL_NO));
mass_auth('group', 0, 'administrators', $auth_option, ACL_YES);
mass_auth('group', 0, 'bots', $auth_option, (($prefix != 'm_' && $prefix != 'a_') ? ACL_YES : ACL_NO));
}
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 06417d051b..7b3c7e68f1 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -1812,6 +1812,22 @@ function cache_moderators()
{
foreach ($forum_id_ary as $forum_id => $auth_ary)
{
+ $flag = false;
+ foreach ($auth_ary as $auth_option => $setting)
+ {
+ // Make sure at least one ACL_YES option is set...
+ if ($setting == ACL_YES)
+ {
+ $flag = true;
+ break;
+ }
+ }
+
+ if (!$flag)
+ {
+ continue;
+ }
+
$sql_ary[] = array(
'forum_id' => $forum_id,
'user_id' => 0,
diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php
index 2be9790e09..1cc0c48406 100644
--- a/phpBB/includes/functions_transfer.php
+++ b/phpBB/includes/functions_transfer.php
@@ -212,12 +212,18 @@ class transfer
function methods()
{
$methods = array();
+ $disabled_functions = explode(',', @ini_get('disable_functions'));
if (@extension_loaded('ftp'))
{
$methods[] = 'ftp';
}
+ if (!in_array('fsockopen', $disabled_functions))
+ {
+ $methods[] = 'ftp_fsock';
+ }
+
return $methods;
}
}
@@ -419,4 +425,293 @@ class ftp extends transfer
}
}
+/**
+* @package phpBB3
+* FTP fsock transfer class
+* @author wGEric
+*/
+class ftp_fsock extends transfer
+{
+ var $data_connection;
+
+ /**
+ * Standard parameters for FTP session
+ */
+ function ftp_fsock($host, $username, $password, $root_path, $port = 21, $timeout = 10)
+ {
+ $this->host = $host;
+ $this->port = $port;
+ $this->username = $username;
+ $this->password = $password;
+ $this->timeout = $timeout;
+
+ // Make sure $this->root_path is layed out the same way as the $user->page['root_script_path'] value (prefixed with / and no / at the end)
+ $this->root_path = str_replace('\\', '/', $this->root_path);
+ $this->root_path = (($root_path{0} != '/' ) ? '/' : '') . ((substr($root_path, -1, 1) == '/') ? substr($root_path, 0, -1) : $root_path);
+
+ // Init some needed values
+ transfer::transfer();
+
+ return;
+ }
+
+ /**
+ * Requests data
+ */
+ function data()
+ {
+ global $user;
+
+ return array('host' => 'localhost' , 'username' => 'anonymous', 'password' => '', 'root_path' => $user->page['root_script_path'], 'port' => 21, 'timeout' => 10);
+ }
+
+ /**
+ * Init FTP Session
+ */
+ function _init()
+ {
+ $errno = 0;
+ $errstr = '';
+
+ // connect to the server
+ $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
+
+ if (!$this->connection || !$this->_check_command())
+ {
+ return false;
+ }
+
+ @stream_set_timeout($this->connection, $this->timeout);
+
+ // login
+ if (!$this->_send_command('USER', $this->username))
+ {
+ return false;
+ }
+
+ if (!$this->_send_command('PASS', $this->password))
+ {
+ return false;
+ }
+
+ // change to the root directory
+ if (!$this->_chdir($this->root_path))
+ {
+ return 'Unable to change directory';
+ }
+
+ return true;
+ }
+
+ /**
+ * Create Directory (MKDIR)
+ */
+ function _mkdir($dir)
+ {
+ return $this->_send_command('MKD', $dir);
+ }
+
+ /**
+ * Remove directory (RMDIR)
+ */
+ function _rmdir($dir)
+ {
+ return $this->_send_command('RMD', $dir);
+ }
+
+ /**
+ * Change current working directory (CHDIR)
+ */
+ function _chdir($dir = '')
+ {
+ if (substr($dir, -1, 1) == '/')
+ {
+ $dir = substr($dir, 0, -1);
+ }
+
+ return $this->_send_command('CWD', $dir);
+ }
+
+ /**
+ * change file permissions (CHMOD)
+ */
+ function _chmod($file, $perms)
+ {
+ return $this->_send_command('SITE CHMOD', $perms . ' ' . $file);;
+ }
+
+ /**
+ * Upload file to location (PUT)
+ */
+ function _put($from_file, $to_file)
+ {
+ // We only use the BINARY file mode to cicumvent rewrite actions from ftp server (mostly linefeeds being replaced)
+ // 'I' == BINARY
+ // 'A' == ASCII
+ if (!$this->_send_command('TYPE', 'I'))
+ {
+ return false;
+ }
+
+ $this->_putcmd('STOR', $to_file, false);
+
+ // open the connection to send file over
+ if (!$this->_open_data_connection())
+ {
+ return false;
+ }
+
+ // send the file
+ $fp = @fopen($from_file, 'rb');
+ while (!@feof($fp))
+ {
+ @fwrite($$this->data_connection, @fread($fp, 4096));
+ }
+ @fclose($fp);
+
+ // close connection
+ $this->_close_data_connection();
+
+ return $this->_check_command();
+ }
+
+ /**
+ * Delete file (DELETE)
+ */
+ function _delete($file)
+ {
+ return $this->_send_command('DELE', $file);
+ }
+
+ /**
+ * Close ftp session (CLOSE)
+ */
+ function _close()
+ {
+ if (!$this->connection)
+ {
+ return false;
+ }
+
+ return $this->_send_command('QUIT');
+ }
+
+ /**
+ * Return current working directory (CWD)
+ * At the moment not used by parent class
+ */
+ function _cwd()
+ {
+ $this->_send_command('PWD', '', false);
+ return preg_replace('#^[0-9]{3} "(.+)" .+\r\n#', '\\1', $this->_check_command(true));
+ }
+
+ /**
+ * Return list of files in a given directory (LS)
+ * At the moment not used by parent class
+ */
+ function _ls($dir = './')
+ {
+ if (!$this->_open_data_connection())
+ {
+ return false;
+ }
+
+ $this->_send_command('NLST', $dir);
+
+ $list = array();
+ while (!@feof($this->data_connection))
+ {
+ $list[] = preg_replace('#[\r\n]#', '', @fgets($this->data_connection, 512));
+ }
+ $this->_close_data_connection();
+
+ return $list;
+ }
+
+ /**
+ * Send a command to server (FTP fsock only function)
+ */
+ function _send_command($command, $args = '', $check = true)
+ {
+ if (!empty($args))
+ {
+ $command = "$command $args";
+ }
+
+ fwrite($this->connection, $command . "\r\n");
+
+ if ($check === true && !$this->_check_command())
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Opens a connection to send data (FTP fosck only function)
+ */
+ function _open_data_connection()
+ {
+ $this->_send_command('PASV', '', false);
+
+ if (!$ip_port = $this->_check_command(true))
+ {
+ return false;
+ }
+
+ // open the connection to start sending the file
+ if (!preg_match('#[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+#', $ip_port, $temp))
+ {
+ // bad ip and port
+ return false;
+ }
+
+ $temp = explode(',', $temp[0]);
+ $server_ip = $temp[0] . '.' . $temp[1] . '.' . $temp[2] . '.' . $temp[3];
+ $server_port = $temp[4] * 256 + $temp[5];
+ $errno = 0;
+ $errstr = '';
+
+ if (!$this->data_connection = @fsockopen($server_ip, $server_port, $errno, $errstr, $this->timeout))
+ {
+ return false;
+ }
+ @stream_set_timeout($$this->data_connection, $this->timeout);
+
+ return true;
+ }
+
+ /**
+ * Closes a connection used to send data
+ */
+ function _close_data_connection()
+ {
+ return @fclose($this->data_connecton);
+ }
+
+ /**
+ * Check to make sure command was successful (FTP fsock only function)
+ */
+ function _check_command($return = false)
+ {
+ $response = '';
+
+ do
+ {
+ $result = @fgets($this->connection, 512);
+ $response .= $result;
+ }
+ while (substr($response, 3, 1) != ' ');
+
+ if (!preg_match('#^[123]#', $response))
+ {
+ return false;
+ }
+
+ return ($return) ? $response : true;
+ }
+}
+
?> \ No newline at end of file
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index c404c096fb..6ac71e86db 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -1417,7 +1417,7 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,
{
global $db, $auth;
- $group_order = array('ADMINISTRATORS', 'SUPER_MODERATORS', 'REGISTERED_COPPA', 'REGISTERED', 'BOTS', 'GUESTS');
+ $group_order = array('ADMINISTRATORS', 'GLOBAL_MODERATORS', 'REGISTERED_COPPA', 'REGISTERED', 'BOTS', 'GUESTS');
// We need both username and user_id info
user_get_id_name($user_id_ary, $username_ary);
diff --git a/phpBB/install/schemas/schema_data.sql b/phpBB/install/schemas/schema_data.sql
index 4f3350aae9..45cad94836 100644
--- a/phpBB/install/schemas/schema_data.sql
+++ b/phpBB/install/schemas/schema_data.sql
@@ -417,7 +417,7 @@ INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, gr
INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('INACTIVE_COPPA', 3, '', 0, '', '', '');
INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('REGISTERED', 3, '', 0, '', '', '');
INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('REGISTERED_COPPA', 3, '', 0, '', '', '');
-INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('SUPER_MODERATORS', 3, '00AA00', 0, '', '', '');
+INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('GLOBAL_MODERATORS', 3, '00AA00', 0, '', '', '');
INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('ADMINISTRATORS', 3, 'AA0000', 1, '', '', '');
INSERT INTO phpbb_groups (group_name, group_type, group_colour, group_legend, group_avatar, group_desc, group_desc_uid) VALUES ('BOTS', 3, '9E8DA7', 1, '', '', '');
@@ -671,7 +671,7 @@ INSERT INTO phpbb_auth_groups (group_id, forum_id, auth_option_id, auth_setting)
INSERT INTO phpbb_auth_groups (group_id, forum_id, auth_option_id, auth_setting) SELECT 7, 1, auth_option_id, 1 FROM phpbb_auth_options WHERE auth_option IN ('f_poll', 'f_announce', 'f_sticky', 'f_attach');
INSERT INTO phpbb_auth_groups (group_id, forum_id, auth_option_id, auth_setting) SELECT 7, 2, auth_option_id, 1 FROM phpbb_auth_options WHERE auth_option IN ('f_poll', 'f_announce', 'f_sticky', 'f_attach');
-# SUPER MODERATOR group - moderator rights
+# GLOBAL MODERATOR group - moderator rights
INSERT INTO phpbb_auth_groups (group_id, forum_id, auth_option_id, auth_setting) SELECT 6, 0, auth_option_id, 1 FROM phpbb_auth_options WHERE auth_option LIKE 'u_%' AND auth_option NOT IN ('u_chggrp', 'u_chgname');
INSERT INTO phpbb_auth_groups (group_id, forum_id, auth_option_id, auth_setting) SELECT 6, 0, auth_option_id, 1 FROM phpbb_auth_options WHERE auth_option LIKE 'm_%';
diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php
index 471c5d2b1d..83bd7ceaa2 100644
--- a/phpBB/language/en/acp/common.php
+++ b/phpBB/language/en/acp/common.php
@@ -395,6 +395,7 @@ $lang = array_merge($lang, array(
'LOG_CONFIG_SEARCH' => '<b>Altered search settings</b>',
'LOG_CONFIG_SERVER' => '<b>Altered server settings</b>',
'LOG_CONFIG_SETTINGS' => '<b>Altered board settings</b>',
+ 'LOG_CONFIG_VISUAL' => '<b>Altered visual confirmation settings</b>',
'LOG_DISALLOW_ADD' => '<b>Added disallowed username</b><br />&#187; %s',
'LOG_DISALLOW_DELETE' => '<b>Deleted disallowed username</b>',
diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php
index 377415c221..220ca9c7db 100644
--- a/phpBB/language/en/common.php
+++ b/phpBB/language/en/common.php
@@ -189,7 +189,7 @@ $lang = array_merge($lang, array(
'G_INACTIVE_COPPA' => 'Unapproved COPPA Users',
'G_REGISTERED' => 'Registered Users',
'G_REGISTERED_COPPA' => 'Registered COPPA Users',
- 'G_SUPER_MODERATORS' => 'Super Moderators',
+ 'G_GLOBAL_MODERATORS' => 'Global Moderators',
'HIDDEN_USERS_ONLINE' => '%d Hidden users online',
'HIDDEN_USERS_TOTAL' => '%d Hidden and ',