Merge pull request #17 from CodeForFame/master

Bug Fixes
This commit is contained in:
CodeForFame 2011-07-22 12:27:45 -07:00
commit c8312b5298
12 changed files with 863 additions and 917 deletions

View File

@ -1,7 +1,7 @@
-- MoparRSC DB Structure
--
-- ------------------------------------------------------
-- Server version 5.1.49-1ubuntu8.1
-- Server version 5.1.49-1ubuntu8.1-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
@ -20,42 +20,24 @@
CREATE DATABASE IF NOT EXISTS moparclassic;
USE moparclassic;
CREATE TABLE `moparclassic`.`bans` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(200) DEFAULT NULL,
`ip` varchar(255) DEFAULT NULL,
`email` varchar(80) DEFAULT NULL,
`message` varchar(255) DEFAULT NULL,
`expire` int(10) unsigned DEFAULT NULL,
`ban_creator` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `bans_username_idx` (`username`(25))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`categories` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cat_name` varchar(80) NOT NULL DEFAULT 'New Category',
`disp_position` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`censoring` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`search_for` varchar(60) NOT NULL DEFAULT '',
`replace_with` varchar(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`config` (
`conf_name` varchar(255) NOT NULL DEFAULT '',
`conf_value` text,
PRIMARY KEY (`conf_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`drops`
--
DROP TABLE IF EXISTS `moparclassic`.`drops`;
CREATE TABLE `moparclassic`.`drops` (
`id` int(11) DEFAULT NULL,
`item` varchar(255) DEFAULT NULL,
`amount` int(11) DEFAULT NULL,
`weight` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`dupe_data`
--
DROP TABLE IF EXISTS `moparclassic`.`dupe_data`;
CREATE TABLE `moparclassic`.`dupe_data` (
`user` varchar(255) NOT NULL,
`userhash` varchar(255) NOT NULL,
@ -63,92 +45,33 @@ CREATE TABLE `moparclassic`.`dupe_data` (
`time` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`error_reports`
--
DROP TABLE IF EXISTS `moparclassic`.`error_reports`;
CREATE TABLE `moparclassic`.`error_reports` (
`data` text,
`email` varchar(255) DEFAULT NULL,
`ip` varchar(255) DEFAULT NULL,
`unix` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`forum_perms` (
`group_id` int(10) NOT NULL DEFAULT '0',
`forum_id` int(10) NOT NULL DEFAULT '0',
`read_forum` tinyint(1) NOT NULL DEFAULT '1',
`post_replies` tinyint(1) NOT NULL DEFAULT '1',
`post_topics` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`group_id`,`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`forums` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`forum_name` varchar(80) NOT NULL DEFAULT 'New forum',
`forum_desc` text,
`redirect_url` varchar(100) DEFAULT NULL,
`moderators` text,
`num_topics` mediumint(8) unsigned NOT NULL DEFAULT '0',
`num_posts` mediumint(8) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_post_id` int(10) unsigned DEFAULT NULL,
`last_poster` varchar(200) DEFAULT NULL,
`sort_by` tinyint(1) NOT NULL DEFAULT '0',
`disp_position` int(10) NOT NULL DEFAULT '0',
`cat_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`gp_count`
--
DROP TABLE IF EXISTS `moparclassic`.`gp_count`;
CREATE TABLE `moparclassic`.`gp_count` (
`unixtime` varchar(255) DEFAULT NULL,
`amount` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`groups` (
`g_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`g_title` varchar(50) NOT NULL DEFAULT '',
`g_user_title` varchar(50) DEFAULT NULL,
`g_moderator` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_edit_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_rename_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_change_passwords` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_ban_users` tinyint(1) NOT NULL DEFAULT '0',
`g_read_board` tinyint(1) NOT NULL DEFAULT '1',
`g_view_users` tinyint(1) NOT NULL DEFAULT '1',
`g_post_replies` tinyint(1) NOT NULL DEFAULT '1',
`g_post_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_edit_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_set_title` tinyint(1) NOT NULL DEFAULT '1',
`g_search` tinyint(1) NOT NULL DEFAULT '1',
`g_search_users` tinyint(1) NOT NULL DEFAULT '1',
`g_send_email` tinyint(1) NOT NULL DEFAULT '1',
`g_post_flood` smallint(6) NOT NULL DEFAULT '30',
`g_search_flood` smallint(6) NOT NULL DEFAULT '30',
`g_email_flood` smallint(6) NOT NULL DEFAULT '60',
PRIMARY KEY (`g_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`invites` (
`owner` varchar(255) NOT NULL DEFAULT '',
`code` varchar(255) NOT NULL DEFAULT '',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`invites` varchar(255) NOT NULL DEFAULT '1',
`email` varchar(255) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`irc_online` (
`username` varchar(255) NOT NULL,
`rank` int(1) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`irc_stats` (
`username` varchar(255) NOT NULL,
`messages` int(10) DEFAULT NULL,
`modes` int(10) DEFAULT NULL,
`kicks` int(10) DEFAULT NULL,
`kicked` int(10) DEFAULT NULL,
`lastTimeSpoken` bigint(11) DEFAULT NULL,
`joins` int(10) DEFAULT NULL,
`parts` int(10) DEFAULT NULL,
`randomstring` text,
`moderatedchan` int(10) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`items`
--
DROP TABLE IF EXISTS `moparclassic`.`items`;
CREATE TABLE `moparclassic`.`items` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
@ -157,41 +80,22 @@ CREATE TABLE `moparclassic`.`items` (
`stackable` varchar(255) DEFAULT NULL,
`wieldable` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`logins` (
`id` int(10) DEFAULT NULL,
`login_ip` varchar(15) DEFAULT NULL,
`time` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`messages` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`owner` int(10) NOT NULL DEFAULT '0',
`subject` varchar(120) NOT NULL DEFAULT '',
`message` text,
`sender` varchar(120) NOT NULL DEFAULT '',
`sender_id` int(10) NOT NULL DEFAULT '0',
`posted` int(10) NOT NULL DEFAULT '0',
`sender_ip` varchar(120) NOT NULL DEFAULT '0.0.0.0',
`smileys` tinyint(1) NOT NULL DEFAULT '1',
`status` tinyint(1) NOT NULL DEFAULT '0',
`showed` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `messages_owner_idx` (`owner`)
) ENGINE=MyISAM AUTO_INCREMENT=23964 DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`online` (
`user_id` int(10) unsigned NOT NULL DEFAULT '1',
`ident` varchar(200) NOT NULL DEFAULT '',
`logged` int(10) unsigned NOT NULL DEFAULT '0',
`idle` tinyint(1) NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_search` int(10) unsigned DEFAULT NULL,
UNIQUE KEY `online_user_id_ident_idx` (`user_id`,`ident`(25)),
KEY `online_ident_idx` (`ident`(25)),
KEY `online_logged_idx` (`logged`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`online_count`
--
DROP TABLE IF EXISTS `moparclassic`.`online_count`;
CREATE TABLE `moparclassic`.`online_count` (
`unixtime` varchar(255) DEFAULT NULL,
`online` int(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_bank`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_bank`;
CREATE TABLE `moparclassic`.`pk_bank` (
`user` varchar(255) DEFAULT NULL,
`id` int(10) unsigned NOT NULL,
@ -202,6 +106,11 @@ CREATE TABLE `moparclassic`.`pk_bank` (
KEY `amount` (`amount`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_banlog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_banlog`;
CREATE TABLE `moparclassic`.`pk_banlog` (
`user` varchar(255) DEFAULT NULL,
`staff` varchar(255) DEFAULT NULL,
@ -210,6 +119,12 @@ CREATE TABLE `moparclassic`.`pk_banlog` (
KEY `time` (`time`),
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_curstats`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_curstats`;
CREATE TABLE `moparclassic`.`pk_curstats` (
`user` varchar(255) NOT NULL,
`cur_attack` int(5) unsigned NOT NULL DEFAULT '1',
@ -235,6 +150,11 @@ CREATE TABLE `moparclassic`.`pk_curstats` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350943 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_experience`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_experience`;
CREATE TABLE `moparclassic`.`pk_experience` (
`user` varchar(255) NOT NULL,
`exp_attack` int(10) unsigned NOT NULL DEFAULT '0',
@ -278,18 +198,35 @@ CREATE TABLE `moparclassic`.`pk_experience` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350943 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_friends`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_friends`;
CREATE TABLE `moparclassic`.`pk_friends` (
`user` varchar(255) NOT NULL,
`friend` varchar(255) NOT NULL,
KEY `user` (`user`),
KEY `friend` (`friend`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_ignores`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_ignores`;
CREATE TABLE `moparclassic`.`pk_ignores` (
`user` varchar(255) NOT NULL,
`ignore` varchar(255) NOT NULL,
KEY `ignore` (`ignore`),
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_invitems`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_invitems`;
CREATE TABLE `moparclassic`.`pk_invitems` (
`user` varchar(255) NOT NULL,
`id` int(10) unsigned NOT NULL,
@ -299,17 +236,34 @@ CREATE TABLE `moparclassic`.`pk_invitems` (
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_ipbans`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_ipbans`;
CREATE TABLE `moparclassic`.`pk_ipbans` (
`ip` varchar(15) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Definition of table `moparclassic`.`pk_kills`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_kills`;
CREATE TABLE `moparclassic`.`pk_kills` (
`user` varchar(255) NOT NULL,
`type` tinyint(1) NOT NULL DEFAULT '0',
`killed` varchar(45) NOT NULL,
`time` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_logins`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_logins`;
CREATE TABLE `moparclassic`.`pk_logins` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(45) NOT NULL,
@ -317,8 +271,13 @@ CREATE TABLE `moparclassic`.`pk_logins` (
`ip` varchar(15) NOT NULL DEFAULT '0.0.0.0',
PRIMARY KEY (`id`),
KEY `ip` (`ip`)
) ENGINE=MyISAM AUTO_INCREMENT=4254489 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
) ENGINE=MyISAM AUTO_INCREMENT=4254616 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
--
-- Definition of table `moparclassic`.`pk_market`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_market`;
CREATE TABLE `moparclassic`.`pk_market` (
`owner` int(10) NOT NULL,
`item_id` int(10) NOT NULL,
@ -326,6 +285,12 @@ CREATE TABLE `moparclassic`.`pk_market` (
`selling_price` int(10) NOT NULL,
PRIMARY KEY (`owner`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_mutelog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_mutelog`;
CREATE TABLE `moparclassic`.`pk_mutelog` (
`user` varchar(255) NOT NULL,
`staff` varchar(255) NOT NULL,
@ -333,6 +298,12 @@ CREATE TABLE `moparclassic`.`pk_mutelog` (
`report_id` int(11) NOT NULL,
`duration` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_online`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_online`;
CREATE TABLE `moparclassic`.`pk_online` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user` varchar(45) NOT NULL,
@ -342,6 +313,12 @@ CREATE TABLE `moparclassic`.`pk_online` (
`world` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC COMMENT='InnoDB free: 9216 kB';
--
-- Definition of table `moparclassic`.`pk_players`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_players`;
CREATE TABLE `moparclassic`.`pk_players` (
`user` varchar(255) NOT NULL,
`username` varchar(255) NOT NULL DEFAULT '',
@ -393,6 +370,11 @@ CREATE TABLE `moparclassic`.`pk_players` (
KEY `user` (`user`)
) ENGINE=MyISAM AUTO_INCREMENT=350944 DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 9216 kB';
--
-- Definition of table `moparclassic`.`pk_quests`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_quests`;
CREATE TABLE `moparclassic`.`pk_quests` (
`id` int(11) DEFAULT NULL,
`stage` int(11) DEFAULT NULL,
@ -400,6 +382,11 @@ CREATE TABLE `moparclassic`.`pk_quests` (
KEY `user` (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_reports`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_reports`;
CREATE TABLE `moparclassic`.`pk_reports` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`from` varchar(255) NOT NULL,
@ -418,6 +405,12 @@ CREATE TABLE `moparclassic`.`pk_reports` (
`sendToMod` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4340 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_reports_comments`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_reports_comments`;
CREATE TABLE `moparclassic`.`pk_reports_comments` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`report_id` int(10) NOT NULL,
@ -426,6 +419,12 @@ CREATE TABLE `moparclassic`.`pk_reports_comments` (
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4222 DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_stat_reduction`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_stat_reduction`;
CREATE TABLE `moparclassic`.`pk_stat_reduction` (
`user` int(10) NOT NULL,
`account` varchar(255) NOT NULL,
@ -434,6 +433,12 @@ CREATE TABLE `moparclassic`.`pk_stat_reduction` (
`voucher` varchar(255) DEFAULT NULL,
`time` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_tradelog`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_tradelog`;
CREATE TABLE `moparclassic`.`pk_tradelog` (
`from` varchar(255) DEFAULT NULL,
`to` varchar(255) DEFAULT NULL,
@ -448,6 +453,11 @@ CREATE TABLE `moparclassic`.`pk_tradelog` (
KEY `tradelog_time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Definition of table `moparclassic`.`pk_worlds`
--
DROP TABLE IF EXISTS `moparclassic`.`pk_worlds`;
CREATE TABLE `moparclassic`.`pk_worlds` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`location` varchar(45) NOT NULL,
@ -455,182 +465,6 @@ CREATE TABLE `moparclassic`.`pk_worlds` (
`port` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
CREATE TABLE `moparclassic`.`posts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`poster` varchar(200) NOT NULL DEFAULT '',
`poster_id` int(10) unsigned NOT NULL DEFAULT '1',
`poster_ip` varchar(39) DEFAULT NULL,
`poster_email` varchar(80) DEFAULT NULL,
`message` text,
`hide_smilies` tinyint(1) NOT NULL DEFAULT '0',
`posted` int(10) unsigned NOT NULL DEFAULT '0',
`edited` int(10) unsigned DEFAULT NULL,
`edited_by` varchar(200) DEFAULT NULL,
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `posts_topic_id_idx` (`topic_id`),
KEY `posts_multi_idx` (`poster_id`,`topic_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`ranks` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rank` varchar(50) NOT NULL DEFAULT '',
`min_posts` mediumint(8) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`reports` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
`reported_by` int(10) unsigned NOT NULL DEFAULT '0',
`created` int(10) unsigned NOT NULL DEFAULT '0',
`message` text,
`zapped` int(10) unsigned DEFAULT NULL,
`zapped_by` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `reports_zapped_idx` (`zapped`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`reputation` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`from_user_id` int(10) unsigned NOT NULL DEFAULT '0',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`reason` text NOT NULL,
`rep_plus` tinyint(1) unsigned NOT NULL DEFAULT '0',
`rep_minus` tinyint(1) unsigned NOT NULL DEFAULT '0',
`topics_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `rep_post_id_idx` (`post_id`),
KEY `rep_multi_user_id_idx` (`topics_id`,`from_user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=15940 DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`search_cache` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`ident` varchar(200) NOT NULL DEFAULT '',
`search_data` mediumtext,
PRIMARY KEY (`id`),
KEY `search_cache_ident_idx` (`ident`(8))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`search_matches` (
`post_id` int(10) unsigned NOT NULL DEFAULT '0',
`word_id` int(10) unsigned NOT NULL DEFAULT '0',
`subject_match` tinyint(1) NOT NULL DEFAULT '0',
KEY `search_matches_word_id_idx` (`word_id`),
KEY `search_matches_post_id_idx` (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`search_words` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`word` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
PRIMARY KEY (`word`),
KEY `search_words_id_idx` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`stats` (
`date` int(10) unsigned NOT NULL DEFAULT '0',
`posts` varchar(255) NOT NULL DEFAULT '',
`users` varchar(255) NOT NULL DEFAULT '',
`players` varchar(255) NOT NULL DEFAULT '',
`active_users` varchar(255) NOT NULL DEFAULT '',
`active_players` varchar(255) NOT NULL DEFAULT '',
`topics` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`stats_2` (
`logins` int(5) DEFAULT NULL,
`unique_logins` int(5) DEFAULT NULL,
`updated` int(11) DEFAULT NULL,
`hits` int(5) DEFAULT NULL,
`unique_hits` int(5) DEFAULT NULL,
`alexa_rank` int(5) DEFAULT NULL,
`kills` int(5) DEFAULT NULL,
`total_kills` int(5) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`subs` (
`user_id` int(10) DEFAULT NULL,
`months` int(10) DEFAULT NULL,
`google_no` varchar(255) DEFAULT NULL,
`redeem` int(10) DEFAULT NULL,
`status` int(5) DEFAULT NULL,
`order_time` int(10) DEFAULT NULL,
`last_time` int(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `moparclassic`.`subscriptions` (
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`topic_id` int(10) unsigned NOT NULL DEFAULT '0',
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`,`topic_id`,`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`topics` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`poster` varchar(200) NOT NULL DEFAULT '',
`subject` varchar(255) NOT NULL DEFAULT '',
`posted` int(10) unsigned NOT NULL DEFAULT '0',
`first_post_id` int(10) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned NOT NULL DEFAULT '0',
`last_post_id` int(10) unsigned NOT NULL DEFAULT '0',
`last_poster` varchar(200) DEFAULT NULL,
`num_views` mediumint(8) unsigned NOT NULL DEFAULT '0',
`num_replies` mediumint(8) unsigned NOT NULL DEFAULT '0',
`closed` tinyint(1) NOT NULL DEFAULT '0',
`sticky` tinyint(1) NOT NULL DEFAULT '0',
`moved_to` int(10) unsigned DEFAULT NULL,
`forum_id` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `topics_forum_id_idx` (`forum_id`),
KEY `topics_moved_to_idx` (`moved_to`),
KEY `topics_last_post_idx` (`last_post`),
KEY `topics_first_post_id_idx` (`first_post_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `moparclassic`.`users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`group_id` int(10) unsigned NOT NULL DEFAULT '3',
`username` varchar(200) NOT NULL DEFAULT '',
`password` varchar(40) NOT NULL DEFAULT '',
`email` varchar(80) NOT NULL DEFAULT '',
`title` varchar(50) DEFAULT NULL,
`realname` varchar(40) DEFAULT NULL,
`url` varchar(100) DEFAULT NULL,
`jabber` varchar(80) DEFAULT NULL,
`icq` varchar(12) DEFAULT NULL,
`msn` varchar(80) DEFAULT NULL,
`aim` varchar(30) DEFAULT NULL,
`yahoo` varchar(30) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
`signature` text,
`disp_topics` tinyint(3) unsigned DEFAULT NULL,
`disp_posts` tinyint(3) unsigned DEFAULT NULL,
`email_setting` tinyint(1) NOT NULL DEFAULT '1',
`notify_with_post` tinyint(1) NOT NULL DEFAULT '0',
`auto_notify` tinyint(1) NOT NULL DEFAULT '0',
`show_smilies` tinyint(1) NOT NULL DEFAULT '1',
`show_img` tinyint(1) NOT NULL DEFAULT '1',
`show_img_sig` tinyint(1) NOT NULL DEFAULT '1',
`show_avatars` tinyint(1) NOT NULL DEFAULT '1',
`show_sig` tinyint(1) NOT NULL DEFAULT '1',
`timezone` float NOT NULL DEFAULT '0',
`dst` tinyint(1) NOT NULL DEFAULT '0',
`time_format` tinyint(1) NOT NULL DEFAULT '0',
`date_format` tinyint(1) NOT NULL DEFAULT '0',
`language` varchar(25) NOT NULL DEFAULT 'English',
`style` varchar(25) NOT NULL DEFAULT 'Air',
`num_posts` int(10) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_search` int(10) unsigned DEFAULT NULL,
`last_email_sent` int(10) unsigned DEFAULT NULL,
`registered` int(10) unsigned NOT NULL DEFAULT '0',
`registration_ip` varchar(39) NOT NULL DEFAULT '0.0.0.0',
`last_visit` int(10) unsigned NOT NULL DEFAULT '0',
`admin_note` varchar(30) DEFAULT NULL,
`activate_string` varchar(80) DEFAULT NULL,
`activate_key` varchar(8) DEFAULT NULL,
`sub_expires` int(10) unsigned DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `users_username_idx` (`username`(25)),
KEY `users_registered_idx` (`registered`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

View File

@ -18,8 +18,26 @@
<entry key="members">false</entry>
<entry key="f2pwildy">true</entry>
<entry key="expRate">4.0</entry>
<entry key="subExpRate">4.0</entry>
<!-- The minimum level required for the player to get the non-combat bonus
XP for being in the wilderness -->
<entry key="wild-non-combat-min-level">999</entry>
<!-- The following two are rates that are added to the player's XP rate -->
<entry key="wild-non-combat-bonus">0</entry>
<entry key="wild-combat-bonus">0</entry>
<!-- The amount of time (in ms) that a player must stand still in the wild
(without being in combat) before they can log out. The message will say they
must wait x seconds. -->
<entry key="wild-stand-still-time">10000</entry>
<!-- If true, a message will be sent to all online players when someone
reaches the max level for a skill -->
<entry key="max-level-congrats">false</entry>
<!-- Separate names by commas -->
<entry key="pmods">None</entry>
@ -27,7 +45,7 @@
<entry key="admins">None</entry>
<entry key="ip-ban-removal-delay">1800000</entry>
<entry key="os-level-blocking">true</entry>
<entry key="os-level-blocking">false</entry>
<entry key="os-level-block-command">sudo route add -host ${ip} reject</entry>
<entry key="os-level-unblock-command">sudo route del -host ${ip} reject</entry>
<entry key="application-level-blocking">true</entry>
@ -44,8 +62,9 @@
This uses a LRUMap, and only has a limited number of entries, so only the
most active IPs will be stored at a time. -->
<entry key="connection-throttle">5</entry>
<!-- The amount of time (in ms) after a connection is closed that the count is kept.
This is used to throttle spam logging. -->
<entry key="connection-throttle-remove-delay">180000</entry>
<!-- Every 100 minutes -->
<entry key="garbage-collect-interval">6000000</entry>

View File

@ -28,17 +28,20 @@ public class Config {
public static boolean members, f2pWildy, APPLICATION_LEVEL_BLOCKING;
public static double expRate, subExpRate;
public static double expRate, subExpRate, WILD_NON_COMBAT_BONUS,
WILD_COMBAT_BONUS;
public static String[] pmods, mods, admins;
public static int IP_BAN_REMOVAL_DELAY;
public static int GARBAGE_COLLECT_INTERVAL;
public static int SAVE_INTERVAL;
public static int IP_BAN_REMOVAL_DELAY, GARBAGE_COLLECT_INTERVAL,
SAVE_INTERVAL;
public static String DATE_FORMAT, BLOCK_COMMAND, UNBLOCK_COMMAND,
ALERT_CONFIG, COMMAND_CONFIG;
public static int CONNECTION_THROTTLE_SIZE;
public static int CONNECTION_THROTTLE_SIZE,
WILD_LEVEL_FOR_NON_COMBAT_BONUS, WILD_STAND_STILL_TIME,
DELAY_REMOVAL;
public static boolean OS_LEVEL_BLOCKING, APPLICATION_LEVEL_THROTTLE_ALERT,
OS_LEVEL_THROTTLE_ALERT, OS_LEVEL_UNBLOCK_FAILED_ALERT;
OS_LEVEL_THROTTLE_ALERT, OS_LEVEL_UNBLOCK_FAILED_ALERT,
CONGRATS_FOR_MAX_LEVEL;
static {
loadEnv();
@ -102,6 +105,8 @@ public class Config {
.getProperty("os-level-blocking-throttle-alert"));
OS_LEVEL_UNBLOCK_FAILED_ALERT = Boolean.parseBoolean(props
.getProperty("os-level-blocking-unblock-failed-alert"));
DELAY_REMOVAL = Integer.parseInt(props
.getProperty("connection-throttle-remove-delay"));
GARBAGE_COLLECT_INTERVAL = Integer.parseInt(props
.getProperty("garbage-collect-interval"));
@ -112,6 +117,17 @@ public class Config {
ALERT_CONFIG = props.getProperty("alert-config");
COMMAND_CONFIG = props.getProperty("command-config");
WILD_STAND_STILL_TIME = Integer.parseInt(props
.getProperty("wild-stand-still-time"));
WILD_LEVEL_FOR_NON_COMBAT_BONUS = Integer.parseInt(props
.getProperty("wild-non-combat-min-level"));
WILD_NON_COMBAT_BONUS = Double.parseDouble(props
.getProperty("wild-non-combat-bonus"));
WILD_COMBAT_BONUS = Double.parseDouble(props
.getProperty("wild-combat-bonus"));
CONGRATS_FOR_MAX_LEVEL = Boolean.parseBoolean(props
.getProperty("max-level-congrats"));
props.clear();
Constants.GameServer.MOTD = "@yel@Welcome to @whi@"

View File

@ -79,6 +79,12 @@ public class Formulae {
private static Random r = new Random();
public static final int[] runeIDs = { 31, 32, 33, 34, 35, 36, 37, 38, 40,
41, 42, 46, 619, 825 };
/**
* Safe packets:<br>
* PlayerAppearanceUpdater<br>
* FollowRequest<br>
* InvUseOnItem<br>
*/
public static final int[] safePacketIDs = { 70, 123, 128, 255 };
public static final String[] statArray = { "attack", "defense", "strength",
"hits", "ranged", "prayer", "magic", "cooking", "woodcut",

View File

@ -1,34 +0,0 @@
package org.moparscape.msc.gs;
import java.util.Map;
import org.apache.commons.collections.map.LRUMap;
/**
* A basic cache backed by a {@link LRUMap}.
*
* @author CodeForFame
*
*/
public class Cache<K, V> {
private Map<K, V> cache;
public Cache() {
this(100);
}
@SuppressWarnings("unchecked")
public Cache(int size) {
cache = new LRUMap(size);
}
public V get(K key) {
return cache.get(key);
}
public void put(K key, V value) {
cache.put(key, value);
}
}

View File

@ -7,25 +7,34 @@ import org.apache.mina.common.IoFilter;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.BlacklistFilter;
import org.moparscape.msc.config.Config;
import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.event.SingleEvent;
import org.moparscape.msc.gs.util.Cache;
public class ConnectionFilter extends BlacklistFilter {
private Cache<InetSocketAddress, Integer> connections = new Cache<InetSocketAddress, Integer>(
private Cache<String, Integer> connections = new Cache<String, Integer>(
Config.CONNECTION_THROTTLE_SIZE);
public void sessionCreated(IoFilter.NextFilter nextFilter, IoSession session) {
final SocketAddress sa = session.getRemoteAddress();
if (sa != null && sa instanceof InetSocketAddress) {
final InetSocketAddress a = (InetSocketAddress) sa;
if (IPBanManager.isBlocked(a)) {
final String host = a.getAddress().getHostAddress();
if (IPBanManager.isBlocked(host)) {
block(a.getAddress());
session.close();
return;
}
final Integer val = connections.get(a);
final Integer retVal = connections
.put(a, val == null ? 1 : val + 1);
if (retVal != null && retVal > Config.CONENCTION_THROTTLE_THRESHOLD) {
Integer val;
synchronized (connections) {
val = connections.get(host);
connections.put(host, val == null ? 1 : val + 1);
}
if (val != null
&& val + 1 >= Config.CONENCTION_THROTTLE_THRESHOLD && !IPBanManager.isBlocked(host)) {
IPBanManager.block(host);
block(a.getAddress());
session.close();
return;
}
}
@ -37,14 +46,42 @@ public class ConnectionFilter extends BlacklistFilter {
final SocketAddress sa = session.getRemoteAddress();
if (sa != null && sa instanceof InetSocketAddress) {
final InetSocketAddress a = (InetSocketAddress) sa;
final Integer val = connections.get(a);
final Integer retVal = connections
.put(a, val == null ? 1 : val + 1);
if (retVal != null
&& retVal - 1 <= Config.CONENCTION_THROTTLE_THRESHOLD) {
unblock(a.getAddress());
final Integer val;
synchronized (connections) {
val = connections.get(a.getAddress().getHostAddress());
}
if (val != null) {
if (Config.DELAY_REMOVAL > 0) {
Instance.getDelayedEventHandler().add(
new SingleEvent(null, Config.DELAY_REMOVAL) {
public void action() {
unblock(a);
}
});
} else {
unblock(a);
}
}
}
super.sessionClosed(nextFilter, session);
}
private void unblock(InetSocketAddress a) {
final String host = a.getAddress().getHostAddress();
final Integer val;
synchronized (connections) {
val = connections.get(host);
if (val == 1) {
connections.remove(host);
} else {
connections.put(host, val - 1);
}
}
if (val != null && val - 1 < Config.CONENCTION_THROTTLE_THRESHOLD) {
if (IPBanManager.isBlocked(a))
IPBanManager.unblock(a);
unblock(a.getAddress());
}
}
}

View File

@ -15,13 +15,12 @@ import org.moparscape.msc.gs.db.DataRequestHandler
object IPBanManager extends Blocker {
override def isBlocked(ip: String) = {
var v = false
if (Config.APPLICATION_LEVEL_BLOCKING)
v = ApplicationLevelBlocking.isBlocked(ip)
if (Config.OS_LEVEL_BLOCKING)
v = v || OSLevelBlocking.isBlocked(ip)
v
override def isBlocked(ip: String): Boolean = {
if (Config.APPLICATION_LEVEL_BLOCKING && ApplicationLevelBlocking.isBlocked(ip))
return true
if (Config.OS_LEVEL_BLOCKING && OSLevelBlocking.isBlocked(ip))
return true
return false
}
def isBlocked(ip: SocketAddress): Boolean = {
@ -113,7 +112,7 @@ private object ApplicationLevelBlocking extends Blocker {
private val events = Server.getServer().getEngine().getEventHandler()
override def isBlocked(ip: String) = {
blocked.contains(ip)
blocked.contains(ip) || throttled.contains(ip)
}
override def block(ip: String) = {
@ -185,7 +184,7 @@ private object OSLevelBlocking extends Blocker {
private val events = Server.getServer().getEngine().getEventHandler()
override def isBlocked(ip: String) = {
blocked.contains(ip)
blocked.contains(ip) || throttled.contains(ip)
}
override def throttle(ip: String) {

View File

@ -13,7 +13,7 @@ import org.moparscape.msc.config.Config;
import org.moparscape.msc.gs.Instance;
import org.moparscape.msc.gs.connection.PacketQueue;
import org.moparscape.msc.gs.connection.RSCPacket;
import org.moparscape.msc.gs.connection.filter.OSLevelBlocking;
import org.moparscape.msc.gs.connection.filter.IPBanManager;
import org.moparscape.msc.gs.event.DelayedEvent;
import org.moparscape.msc.gs.model.ActiveTile;
import org.moparscape.msc.gs.model.Npc;
@ -228,7 +228,7 @@ public final class GameEngine extends Thread {
if (player.getUsername() == null && p.getID() != 32
&& p.getID() != 77 && p.getID() != 0) {
final String ip = player.getCurrentIP();
OSLevelBlocking.throttle(ip);
IPBanManager.throttle(ip);
continue;
}
PacketHandler handler = packetHandlers.get(p.getID());

View File

@ -584,6 +584,12 @@ public final class Player extends Mob {
}
}
/**
* This method acts as a throttle for packets, and adds them to a list.<br>
* If the player sends more than 20 packets per second they're disconnected (60 packets per 3000ms)
*
* @param p - the packet to add...
*/
public void addPacket(RSCPacket p) {
long now = GameEngine.getTime();
if (now - lastCount > 3000) {
@ -591,7 +597,7 @@ public final class Player extends Mob {
packetCount = 0;
}
if (!DataConversions.inArray(Formulae.safePacketIDs, p.getID())
&& packetCount++ >= 60) {
&& ++packetCount >= 60) {
destroy(false);
}
if (lastPackets.size() >= 60) {
@ -653,14 +659,14 @@ public final class Player extends Mob {
public boolean canLogout() {
if (this != null && this.location != null
&& this.location.inWilderness()) {
if (GameEngine.getTime() - this.getLastMoved() < 10000) {
if (GameEngine.getTime() - this.getLastMoved() < Config.WILD_STAND_STILL_TIME) {
getActionSender()
.sendMessage(
"You must stand peacefully in one place for 10 seconds!");
"You must stand peacefully in one place for " + Config.WILD_STAND_STILL_TIME + " seconds!");
return false;
}
}
return !isBusy() && GameEngine.getTime() - getCombatTimer() > 10000;
return !isBusy() && GameEngine.getTime() - getCombatTimer() > Config.WILD_STAND_STILL_TIME;
}
public boolean canReport() {
@ -1564,7 +1570,6 @@ public final class Player extends Mob {
return wrongwords;
}
// incExp
public int ignoreCount() {
return ignoreList.size();
}
@ -1600,13 +1605,8 @@ public final class Player extends Mob {
}
}
if (combat && i < 3
&& (combatStyleToIndex() != i && getCombatStyle() != 0)) { // fix
// for
// accidental
// exp
// in
// other
// stats?
&& (combatStyleToIndex() != i && getCombatStyle() != 0)) {
// fix for accidental exp in other stats?
return;
}
@ -1617,9 +1617,9 @@ public final class Player extends Mob {
if (getLocation().wildernessLevel() > 1) {
if (combat)
exprate = exprate * 2;
if (getLocation().wildernessLevel() > 10 && !combat)
exprate = exprate * 2;
exprate += Config.WILD_COMBAT_BONUS;
if (getLocation().wildernessLevel() > Config.WILD_LEVEL_FOR_NON_COMBAT_BONUS && !combat)
exprate += Config.WILD_NON_COMBAT_BONUS;
}
exp[i] += amount * exprate;
@ -1633,7 +1633,7 @@ public final class Player extends Mob {
incCurStat(i, advanced);
incMaxStat(i, advanced);
int stat = this.getMaxStat(i);
if (stat == 99) {
if (stat == 99 && Config.CONGRATS_FOR_MAX_LEVEL) {
for (Player p : world.getPlayers()) {
if (p != null) {
p.getActionSender()

View File

@ -11,17 +11,16 @@ import org.apache.commons.collections.map.LRUMap;
*
*/
public class Cache<K, V> {
private final Map<K, V> cache;
private Map<K, V> cache;
public Cache() {
this(100);
}
@SuppressWarnings("unchecked")
// Commons and their failure to support generics...
public Cache(int maxSize) {
cache = new LRUMap(maxSize);
public Cache(int size) {
cache = new LRUMap(size);
}
public V get(K key) {
@ -31,5 +30,17 @@ public class Cache<K, V> {
public V put(K key, V value) {
return cache.put(key, value);
}
public V remove(K key) {
return cache.remove(key);
}
public V remove(K key, V value) {
V v = cache.get(key);
if(v.equals(value)) {
return cache.remove(value);
}
return null;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -68,21 +68,21 @@ public class PlayerLoginHandler implements PacketHandler {
byte returnVal = 0;
try {
ResultSet result = Server.db.getQuery("SELECT r.pass, r.banned, r.owner, u.group_id, b.id AS b_id FROM `pk_players` AS r INNER JOIN `users` AS u ON u.id=r.owner LEFT JOIN `bans` AS b on (b.username LIKE u.username OR b.ip LIKE '" + ip + "') WHERE `user`='" + user + "'");
ResultSet result = Server.db.getQuery("SELECT banned, owner, group_id FROM `pk_players` WHERE `user` = '" + user + "'");
if (!result.next()) {
return 2;
return 2;
}
if (!Auth.check_auth(DataConversions.hashToUsername(user), pass, new StringBuilder())) {
return 2;
return 2;
}
if (result.getInt("banned") == 1 || result.getInt("b_id") != 0) {
System.out.println("Banned player: " + DataConversions.hashToUsername(user) + " trying to login.");
return 6;
if (result.getInt("banned") == 1) {
System.out.println("Banned player: " + DataConversions.hashToUsername(user) + " trying to login.");
return 6;
}
if (result.getInt("group_id") == 1 || result.getInt("group_id") == 2) {
returnVal = 99;
if (result.getInt("group_id") >= 5) {
returnVal = 99;
}
int owner = result.getInt("owner");