Credits:
Originally coded by MoggieX - Stripped and rebuilt to be threaded
Target Audience
This plugin is aimed at server operators that require to have a single point of reference for all thier game server bans.
What does it do?
Writes bans to the MySQL database and kicks any users with matching bans as they attempt to join. For timed bans, the ban will automatically delete itself from the database on the next connection attempt after the ban expires. Each player is checked on connect, if they are a BOT they are ignored. Now times this over 4 or more servers and happy days!
Compatibility:
This will work on any sourcemod game.
Requirements:
These are out of scope for the install of this plugin, but must be performed for it to work...
1. A working MySQL Database
2. A correctly set up 'default' connection to the db in '<mod-dir>/addons/sourcemod/configs/databases.cfg' (see here for more info
http://wiki.alliedmods.net/SQL_Admin...#Configuration)
Commands:
You can use any normal ban command (E.x. sm_ban, sm_unban, ban, unban). This plugin will catch these commands and overwrite them. So you don't need to tell your admins to use a new command, or unload/modify any base plugins. Plug, and Play.
How to Install:
1. Put the
mysql_bans.smx file in your
plugins directory
2. On first load the plugin will automatically create a table to store bans in your 'default' connection in databases.cfg. The table columns can be found below.
Current Version & Changelog
1 Feb 13 - V1.3
-Added SQL input validation on fields
-Now storing player_name in database
10 Sept 12 - V1.2
-Fixed bug that caused perm ban users to get unbanned after 2 reconnection attempts
07 Aug 12 - V1.1
-Created OnBanClient OnRemoveBan forward calls to redirect normal ban functionality
-Added console logging
06 Aug 12 - V1.03
-Minor change to SQL
30 July 12 - V1.02
-Fixed a bug in the code
28 July 12 - V1.01
-Fixed a bug in the code
Code:
CREATE TABLE IF NOT EXISTS `my_bans` (
`id` int(11) NOT NULL auto_increment,
`steam_id` varchar(32) NOT NULL,
`player_name` varchar(65) NOT NULL,
`ban_length` int(1) NOT NULL default '0',
`ban_reason` varchar(100) NOT NULL,
`banned_by` varchar(100) NOT NULL,
`timestamp` timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `steam_id` (`steam_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;