mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/9992] Clarify explanations of ip and account limits on login [ticket/9992] Add a comma to language for IP_LOGIN_LIMIT_MAX_EXPLAIN [ticket/9992] Use sql_fetchfield for single row and single column result [ticket/9992] Adding a limit on login attempts per IP. [ticket/9992] Make sql_create_table and sql_table_exists available in updater
This commit is contained in:
@@ -983,9 +983,29 @@ function database_update_info()
|
||||
'3.0.7-PL1' => array(),
|
||||
// No changes from 3.0.8-RC1 to 3.0.8
|
||||
'3.0.8-RC1' => array(),
|
||||
|
||||
// Changes from 3.0.8 to 3.0.9-RC1
|
||||
'3.0.8' => array(
|
||||
'add_tables' => array(
|
||||
LOGIN_ATTEMPT_TABLE => array(
|
||||
'COLUMNS' => array(
|
||||
'attempt_id' => array('UINT', NULL, 'auto_increment'),
|
||||
'attempt_ip' => array('VCHAR:40', ''),
|
||||
'attempt_browser' => array('VCHAR:150', ''),
|
||||
'attempt_forwarded_for' => array('VCHAR:255', ''),
|
||||
'attempt_time' => array('TIMESTAMP', 0),
|
||||
'user_id' => array('UINT', 0),
|
||||
'username' => array('VCHAR_UNI:255', 0),
|
||||
'username_clean' => array('VCHAR_CI', 0),
|
||||
),
|
||||
'PRIMARY_KEY' => 'attempt_id',
|
||||
'KEYS' => array(
|
||||
'attempt_ip' => array('INDEX', array('attempt_ip', 'attempt_time')),
|
||||
'attempt_forwarded_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')),
|
||||
'attempt_time' => array('INDEX', array('attempt_time')),
|
||||
'user_id' => array('INDEX', 'user_id'),
|
||||
),
|
||||
),
|
||||
),
|
||||
'change_columns' => array(
|
||||
BBCODES_TABLE => array(
|
||||
'bbcode_id' => array('USINT', 0),
|
||||
@@ -1954,6 +1974,10 @@ function change_database_data(&$no_updates, $version)
|
||||
|
||||
// Changes from 3.0.8 to 3.0.9-RC1
|
||||
case '3.0.8':
|
||||
set_config('ip_login_limit_max', '50');
|
||||
set_config('ip_login_limit_time', '21600');
|
||||
set_config('ip_login_limit_use_forwarded', '0');
|
||||
|
||||
// Update file extension group names to use language strings, again.
|
||||
$sql = 'SELECT group_id, group_name
|
||||
FROM ' . EXTENSION_GROUPS_TABLE . '
|
||||
@@ -2451,6 +2475,260 @@ class updater_db_tools
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if table exists
|
||||
*
|
||||
*
|
||||
* @param string $table_name The table name to check for
|
||||
* @return bool true if table exists, else false
|
||||
*/
|
||||
function sql_table_exists($table_name)
|
||||
{
|
||||
$this->db->sql_return_on_error(true);
|
||||
$result = $this->db->sql_query_limit('SELECT * FROM ' . $table_name, 1);
|
||||
$this->db->sql_return_on_error(false);
|
||||
|
||||
if ($result)
|
||||
{
|
||||
$this->db->sql_freeresult($result);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create SQL Table
|
||||
*
|
||||
* @param string $table_name The table name to create
|
||||
* @param array $table_data Array containing table data.
|
||||
* @return array Statements if $return_statements is true.
|
||||
*/
|
||||
function sql_create_table($table_name, $table_data)
|
||||
{
|
||||
// holds the DDL for a column
|
||||
$columns = $statements = array();
|
||||
|
||||
if ($this->sql_table_exists($table_name))
|
||||
{
|
||||
return $this->_sql_run_sql($statements);
|
||||
}
|
||||
|
||||
// Begin transaction
|
||||
$statements[] = 'begin';
|
||||
|
||||
// Determine if we have created a PRIMARY KEY in the earliest
|
||||
$primary_key_gen = false;
|
||||
|
||||
// Determine if the table must be created with TEXTIMAGE
|
||||
$create_textimage = false;
|
||||
|
||||
// Determine if the table requires a sequence
|
||||
$create_sequence = false;
|
||||
|
||||
// Begin table sql statement
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'mssql':
|
||||
case 'mssqlnative':
|
||||
$table_sql = 'CREATE TABLE [' . $table_name . '] (' . "\n";
|
||||
break;
|
||||
|
||||
default:
|
||||
$table_sql = 'CREATE TABLE ' . $table_name . ' (' . "\n";
|
||||
break;
|
||||
}
|
||||
|
||||
// Iterate through the columns to create a table
|
||||
foreach ($table_data['COLUMNS'] as $column_name => $column_data)
|
||||
{
|
||||
// here lies an array, filled with information compiled on the column's data
|
||||
$prepared_column = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
|
||||
|
||||
// here we add the definition of the new column to the list of columns
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'mssql':
|
||||
case 'mssqlnative':
|
||||
$columns[] = "\t [{$column_name}] " . $prepared_column['column_type_sql_default'];
|
||||
break;
|
||||
|
||||
default:
|
||||
$columns[] = "\t {$column_name} " . $prepared_column['column_type_sql'];
|
||||
break;
|
||||
}
|
||||
|
||||
// see if we have found a primary key set due to a column definition if we have found it, we can stop looking
|
||||
if (!$primary_key_gen)
|
||||
{
|
||||
$primary_key_gen = isset($prepared_column['primary_key_set']) && $prepared_column['primary_key_set'];
|
||||
}
|
||||
|
||||
// create textimage DDL based off of the existance of certain column types
|
||||
if (!$create_textimage)
|
||||
{
|
||||
$create_textimage = isset($prepared_column['textimage']) && $prepared_column['textimage'];
|
||||
}
|
||||
|
||||
// create sequence DDL based off of the existance of auto incrementing columns
|
||||
if (!$create_sequence && isset($prepared_column['auto_increment']) && $prepared_column['auto_increment'])
|
||||
{
|
||||
$create_sequence = $column_name;
|
||||
}
|
||||
}
|
||||
|
||||
// this makes up all the columns in the create table statement
|
||||
$table_sql .= implode(",\n", $columns);
|
||||
|
||||
// Close the table for two DBMS and add to the statements
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'firebird':
|
||||
$table_sql .= "\n);";
|
||||
$statements[] = $table_sql;
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'mssqlnative':
|
||||
$table_sql .= "\n) ON [PRIMARY]" . (($create_textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '');
|
||||
$statements[] = $table_sql;
|
||||
break;
|
||||
}
|
||||
|
||||
// we have yet to create a primary key for this table,
|
||||
// this means that we can add the one we really wanted instead
|
||||
if (!$primary_key_gen)
|
||||
{
|
||||
// Write primary key
|
||||
if (isset($table_data['PRIMARY_KEY']))
|
||||
{
|
||||
if (!is_array($table_data['PRIMARY_KEY']))
|
||||
{
|
||||
$table_data['PRIMARY_KEY'] = array($table_data['PRIMARY_KEY']);
|
||||
}
|
||||
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'mysql_40':
|
||||
case 'mysql_41':
|
||||
case 'postgres':
|
||||
case 'sqlite':
|
||||
$table_sql .= ",\n\t PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ')';
|
||||
break;
|
||||
|
||||
case 'firebird':
|
||||
case 'mssql':
|
||||
case 'mssqlnative':
|
||||
// We need the data here
|
||||
$old_return_statements = $this->return_statements;
|
||||
$this->return_statements = true;
|
||||
|
||||
$primary_key_stmts = $this->sql_create_primary_key($table_name, $table_data['PRIMARY_KEY']);
|
||||
foreach ($primary_key_stmts as $pk_stmt)
|
||||
{
|
||||
$statements[] = $pk_stmt;
|
||||
}
|
||||
|
||||
$this->return_statements = $old_return_statements;
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$table_sql .= ",\n\t CONSTRAINT pk_{$table_name} PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ')';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// close the table
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'mysql_41':
|
||||
// make sure the table is in UTF-8 mode
|
||||
$table_sql .= "\n) CHARACTER SET `utf8` COLLATE `utf8_bin`;";
|
||||
$statements[] = $table_sql;
|
||||
break;
|
||||
|
||||
case 'mysql_40':
|
||||
case 'sqlite':
|
||||
$table_sql .= "\n);";
|
||||
$statements[] = $table_sql;
|
||||
break;
|
||||
|
||||
case 'postgres':
|
||||
// do we need to add a sequence for auto incrementing columns?
|
||||
if ($create_sequence)
|
||||
{
|
||||
$statements[] = "CREATE SEQUENCE {$table_name}_seq;";
|
||||
}
|
||||
|
||||
$table_sql .= "\n);";
|
||||
$statements[] = $table_sql;
|
||||
break;
|
||||
|
||||
case 'oracle':
|
||||
$table_sql .= "\n);";
|
||||
$statements[] = $table_sql;
|
||||
|
||||
// do we need to add a sequence and a tigger for auto incrementing columns?
|
||||
if ($create_sequence)
|
||||
{
|
||||
// create the actual sequence
|
||||
$statements[] = "CREATE SEQUENCE {$table_name}_seq";
|
||||
|
||||
// the trigger is the mechanism by which we increment the counter
|
||||
$trigger = "CREATE OR REPLACE TRIGGER t_{$table_name}\n";
|
||||
$trigger .= "BEFORE INSERT ON {$table_name}\n";
|
||||
$trigger .= "FOR EACH ROW WHEN (\n";
|
||||
$trigger .= "\tnew.{$create_sequence} IS NULL OR new.{$create_sequence} = 0\n";
|
||||
$trigger .= ")\n";
|
||||
$trigger .= "BEGIN\n";
|
||||
$trigger .= "\tSELECT {$table_name}_seq.nextval\n";
|
||||
$trigger .= "\tINTO :new.{$create_sequence}\n";
|
||||
$trigger .= "\tFROM dual\n";
|
||||
$trigger .= "END;";
|
||||
|
||||
$statements[] = $trigger;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'firebird':
|
||||
if ($create_sequence)
|
||||
{
|
||||
$statements[] = "CREATE SEQUENCE {$table_name}_seq;";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Write Keys
|
||||
if (isset($table_data['KEYS']))
|
||||
{
|
||||
foreach ($table_data['KEYS'] as $key_name => $key_data)
|
||||
{
|
||||
if (!is_array($key_data[1]))
|
||||
{
|
||||
$key_data[1] = array($key_data[1]);
|
||||
}
|
||||
|
||||
$old_return_statements = $this->return_statements;
|
||||
$this->return_statements = true;
|
||||
|
||||
$key_stmts = ($key_data[0] == 'UNIQUE') ? $this->sql_create_unique_index($table_name, $key_name, $key_data[1]) : $this->sql_create_index($table_name, $key_name, $key_data[1]);
|
||||
|
||||
foreach ($key_stmts as $key_stmt)
|
||||
{
|
||||
$statements[] = $key_stmt;
|
||||
}
|
||||
|
||||
$this->return_statements = $old_return_statements;
|
||||
}
|
||||
}
|
||||
|
||||
// Commit Transaction
|
||||
$statements[] = 'commit';
|
||||
|
||||
return $this->_sql_run_sql($statements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle passed database update array.
|
||||
* Expected structure...
|
||||
@@ -2488,6 +2766,19 @@ class updater_db_tools
|
||||
$sqlite = true;
|
||||
}
|
||||
|
||||
// Add tables?
|
||||
if (!empty($schema_changes['add_tables']))
|
||||
{
|
||||
foreach ($schema_changes['add_tables'] as $table => $table_data)
|
||||
{
|
||||
$result = $this->sql_create_table($table, $table_data);
|
||||
if ($this->return_statements)
|
||||
{
|
||||
$statements = array_merge($statements, $result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Change columns?
|
||||
if (!empty($schema_changes['change_columns']))
|
||||
{
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id$
|
||||
# $Id: $
|
||||
#
|
||||
|
||||
|
||||
@@ -547,6 +547,36 @@ BEGIN
|
||||
END;;
|
||||
|
||||
|
||||
# Table: 'phpbb_login_attempts'
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id INTEGER NOT NULL,
|
||||
attempt_ip VARCHAR(40) CHARACTER SET NONE DEFAULT '' NOT NULL,
|
||||
attempt_browser VARCHAR(150) CHARACTER SET NONE DEFAULT '' NOT NULL,
|
||||
attempt_forwarded_for VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL,
|
||||
attempt_time INTEGER DEFAULT 0 NOT NULL,
|
||||
user_id INTEGER DEFAULT 0 NOT NULL,
|
||||
username VARCHAR(255) CHARACTER SET UTF8 DEFAULT 0 NOT NULL COLLATE UNICODE,
|
||||
username_clean VARCHAR(255) CHARACTER SET UTF8 DEFAULT 0 NOT NULL COLLATE UNICODE
|
||||
);;
|
||||
|
||||
ALTER TABLE phpbb_login_attempts ADD PRIMARY KEY (attempt_id);;
|
||||
|
||||
CREATE INDEX phpbb_login_attempts_attempt_ip ON phpbb_login_attempts(attempt_ip, attempt_time);;
|
||||
CREATE INDEX phpbb_login_attempts_attempt_forwarded_for ON phpbb_login_attempts(attempt_forwarded_for, attempt_time);;
|
||||
CREATE INDEX phpbb_login_attempts_attempt_time ON phpbb_login_attempts(attempt_time);;
|
||||
CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts(user_id);;
|
||||
|
||||
CREATE GENERATOR phpbb_login_attempts_gen;;
|
||||
SET GENERATOR phpbb_login_attempts_gen TO 0;;
|
||||
|
||||
CREATE TRIGGER t_phpbb_login_attempts FOR phpbb_login_attempts
|
||||
BEFORE INSERT
|
||||
AS
|
||||
BEGIN
|
||||
NEW.attempt_id = GEN_ID(phpbb_login_attempts_gen, 1);
|
||||
END;;
|
||||
|
||||
|
||||
# Table: 'phpbb_moderator_cache'
|
||||
CREATE TABLE phpbb_moderator_cache (
|
||||
forum_id INTEGER DEFAULT 0 NOT NULL,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
$Id$
|
||||
$Id: $
|
||||
|
||||
*/
|
||||
|
||||
@@ -653,6 +653,41 @@ CREATE INDEX [user_id] ON [phpbb_log]([user_id]) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
||||
/*
|
||||
Table: 'phpbb_login_attempts'
|
||||
*/
|
||||
CREATE TABLE [phpbb_login_attempts] (
|
||||
[attempt_id] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
[attempt_ip] [varchar] (40) DEFAULT ('') NOT NULL ,
|
||||
[attempt_browser] [varchar] (150) DEFAULT ('') NOT NULL ,
|
||||
[attempt_forwarded_for] [varchar] (255) DEFAULT ('') NOT NULL ,
|
||||
[attempt_time] [int] DEFAULT (0) NOT NULL ,
|
||||
[user_id] [int] DEFAULT (0) NOT NULL ,
|
||||
[username] [varchar] (255) DEFAULT (0) NOT NULL ,
|
||||
[username_clean] [varchar] (255) DEFAULT (0) NOT NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
ALTER TABLE [phpbb_login_attempts] WITH NOCHECK ADD
|
||||
CONSTRAINT [PK_phpbb_login_attempts] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[attempt_id]
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE INDEX [attempt_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE INDEX [attempt_forwarded_for] ON [phpbb_login_attempts]([attempt_forwarded_for], [attempt_time]) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE INDEX [attempt_time] ON [phpbb_login_attempts]([attempt_time]) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE INDEX [user_id] ON [phpbb_login_attempts]([user_id]) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
||||
/*
|
||||
Table: 'phpbb_moderator_cache'
|
||||
*/
|
||||
@@ -1735,3 +1770,4 @@ ALTER TABLE [phpbb_zebra] WITH NOCHECK ADD
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id$
|
||||
# $Id: $
|
||||
#
|
||||
|
||||
# Table: 'phpbb_attachments'
|
||||
@@ -371,6 +371,24 @@ CREATE TABLE phpbb_log (
|
||||
);
|
||||
|
||||
|
||||
# Table: 'phpbb_login_attempts'
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
||||
attempt_ip varbinary(40) DEFAULT '' NOT NULL,
|
||||
attempt_browser varbinary(150) DEFAULT '' NOT NULL,
|
||||
attempt_forwarded_for varbinary(255) DEFAULT '' NOT NULL,
|
||||
attempt_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
username blob NOT NULL,
|
||||
username_clean blob NOT NULL,
|
||||
PRIMARY KEY (attempt_id),
|
||||
KEY attempt_ip (attempt_ip, attempt_time),
|
||||
KEY attempt_forwarded_for (attempt_forwarded_for, attempt_time),
|
||||
KEY attempt_time (attempt_time),
|
||||
KEY user_id (user_id)
|
||||
);
|
||||
|
||||
|
||||
# Table: 'phpbb_moderator_cache'
|
||||
CREATE TABLE phpbb_moderator_cache (
|
||||
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id$
|
||||
# $Id: $
|
||||
#
|
||||
|
||||
# Table: 'phpbb_attachments'
|
||||
@@ -371,6 +371,24 @@ CREATE TABLE phpbb_log (
|
||||
) CHARACTER SET `utf8` COLLATE `utf8_bin`;
|
||||
|
||||
|
||||
# Table: 'phpbb_login_attempts'
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
||||
attempt_ip varchar(40) DEFAULT '' NOT NULL,
|
||||
attempt_browser varchar(150) DEFAULT '' NOT NULL,
|
||||
attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL,
|
||||
attempt_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
username varchar(255) DEFAULT '0' NOT NULL,
|
||||
username_clean varchar(255) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (attempt_id),
|
||||
KEY attempt_ip (attempt_ip, attempt_time),
|
||||
KEY attempt_forwarded_for (attempt_forwarded_for, attempt_time),
|
||||
KEY attempt_time (attempt_time),
|
||||
KEY user_id (user_id)
|
||||
) CHARACTER SET `utf8` COLLATE `utf8_bin`;
|
||||
|
||||
|
||||
# Table: 'phpbb_moderator_cache'
|
||||
CREATE TABLE phpbb_moderator_cache (
|
||||
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
$Id$
|
||||
$Id: $
|
||||
|
||||
*/
|
||||
|
||||
@@ -743,6 +743,47 @@ END;
|
||||
/
|
||||
|
||||
|
||||
/*
|
||||
Table: 'phpbb_login_attempts'
|
||||
*/
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id number(8) NOT NULL,
|
||||
attempt_ip varchar2(40) DEFAULT '' ,
|
||||
attempt_browser varchar2(150) DEFAULT '' ,
|
||||
attempt_forwarded_for varchar2(255) DEFAULT '' ,
|
||||
attempt_time number(11) DEFAULT '0' NOT NULL,
|
||||
user_id number(8) DEFAULT '0' NOT NULL,
|
||||
username varchar2(765) DEFAULT '0' NOT NULL,
|
||||
username_clean varchar2(255) DEFAULT '0' NOT NULL,
|
||||
CONSTRAINT pk_phpbb_login_attempts PRIMARY KEY (attempt_id)
|
||||
)
|
||||
/
|
||||
|
||||
CREATE INDEX phpbb_login_attempts_attempt_ip ON phpbb_login_attempts (attempt_ip, attempt_time)
|
||||
/
|
||||
CREATE INDEX phpbb_login_attempts_attempt_forwarded_for ON phpbb_login_attempts (attempt_forwarded_for, attempt_time)
|
||||
/
|
||||
CREATE INDEX phpbb_login_attempts_attempt_time ON phpbb_login_attempts (attempt_time)
|
||||
/
|
||||
CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts (user_id)
|
||||
/
|
||||
|
||||
CREATE SEQUENCE phpbb_login_attempts_seq
|
||||
/
|
||||
|
||||
CREATE OR REPLACE TRIGGER t_phpbb_login_attempts
|
||||
BEFORE INSERT ON phpbb_login_attempts
|
||||
FOR EACH ROW WHEN (
|
||||
new.attempt_id IS NULL OR new.attempt_id = 0
|
||||
)
|
||||
BEGIN
|
||||
SELECT phpbb_login_attempts_seq.nextval
|
||||
INTO :new.attempt_id
|
||||
FROM dual;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
/*
|
||||
Table: 'phpbb_moderator_cache'
|
||||
*/
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
|
||||
$Id$
|
||||
$Id: $
|
||||
|
||||
*/
|
||||
|
||||
@@ -526,6 +526,28 @@ CREATE INDEX phpbb_log_topic_id ON phpbb_log (topic_id);
|
||||
CREATE INDEX phpbb_log_reportee_id ON phpbb_log (reportee_id);
|
||||
CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id);
|
||||
|
||||
/*
|
||||
Table: 'phpbb_login_attempts'
|
||||
*/
|
||||
CREATE SEQUENCE phpbb_login_attempts_seq;
|
||||
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id INT4 DEFAULT nextval('phpbb_login_attempts_seq'),
|
||||
attempt_ip varchar(40) DEFAULT '' NOT NULL,
|
||||
attempt_browser varchar(150) DEFAULT '' NOT NULL,
|
||||
attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL,
|
||||
attempt_time INT4 DEFAULT '0' NOT NULL CHECK (attempt_time >= 0),
|
||||
user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0),
|
||||
username varchar(255) DEFAULT '0' NOT NULL,
|
||||
username_clean varchar_ci DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (attempt_id)
|
||||
);
|
||||
|
||||
CREATE INDEX phpbb_login_attempts_attempt_ip ON phpbb_login_attempts (attempt_ip, attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_attempt_forwarded_for ON phpbb_login_attempts (attempt_forwarded_for, attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_attempt_time ON phpbb_login_attempts (attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts (user_id);
|
||||
|
||||
/*
|
||||
Table: 'phpbb_moderator_cache'
|
||||
*/
|
||||
|
@@ -136,6 +136,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_thumb_widt
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_width', '0');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_min_thumb_filesize', '12000');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('ip_check', '3');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('ip_login_limit_max', '50');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('ip_login_limit_time', '21600');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('ip_login_limit_use_forwarded', '0');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_enable', '0');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_host', '');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('jab_password', '');
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# $Id$
|
||||
# $Id: $
|
||||
#
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
@@ -359,6 +359,23 @@ CREATE INDEX phpbb_log_topic_id ON phpbb_log (topic_id);
|
||||
CREATE INDEX phpbb_log_reportee_id ON phpbb_log (reportee_id);
|
||||
CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id);
|
||||
|
||||
# Table: 'phpbb_login_attempts'
|
||||
CREATE TABLE phpbb_login_attempts (
|
||||
attempt_id INTEGER PRIMARY KEY NOT NULL ,
|
||||
attempt_ip varchar(40) NOT NULL DEFAULT '',
|
||||
attempt_browser varchar(150) NOT NULL DEFAULT '',
|
||||
attempt_forwarded_for varchar(255) NOT NULL DEFAULT '',
|
||||
attempt_time INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
||||
user_id INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
||||
username varchar(255) NOT NULL DEFAULT '0',
|
||||
username_clean varchar(255) NOT NULL DEFAULT '0'
|
||||
);
|
||||
|
||||
CREATE INDEX phpbb_login_attempts_attempt_ip ON phpbb_login_attempts (attempt_ip, attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_attempt_forwarded_for ON phpbb_login_attempts (attempt_forwarded_for, attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_attempt_time ON phpbb_login_attempts (attempt_time);
|
||||
CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts (user_id);
|
||||
|
||||
# Table: 'phpbb_moderator_cache'
|
||||
CREATE TABLE phpbb_moderator_cache (
|
||||
forum_id INTEGER UNSIGNED NOT NULL DEFAULT '0',
|
||||
|
Reference in New Issue
Block a user