mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-10-13 18:04:54 +02:00
bye bye trailing whitespaces (#442)
This commit is contained in:
@@ -1,311 +1,311 @@
|
||||
-- Start of Znote AAC database schema
|
||||
|
||||
SET @znote_version = '1.5_SVN';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote` (
|
||||
`id` int(10) NOT NULL AUTO_INCREMENT,
|
||||
`version` varchar(30) NOT NULL COMMENT 'Znote AAC version',
|
||||
`installed` int(10) NOT NULL,
|
||||
`cached` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_accounts` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`ip` bigint(20) UNSIGNED NOT NULL,
|
||||
`created` int(10) NOT NULL,
|
||||
`points` int(10) DEFAULT 0,
|
||||
`cooldown` int(10) DEFAULT 0,
|
||||
`active` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`active_email` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`activekey` int(11) NOT NULL DEFAULT '0',
|
||||
`flag` varchar(20) NOT NULL,
|
||||
`secret` char(16) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_news` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`date` int(11) NOT NULL,
|
||||
`pid` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_images` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`date` int(11) NOT NULL,
|
||||
`status` int(11) NOT NULL,
|
||||
`image` varchar(30) NOT NULL,
|
||||
`account_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_paypal` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`txn_id` varchar(30) NOT NULL,
|
||||
`email` varchar(255) NOT NULL,
|
||||
`accid` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_paygol` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
`message_id` varchar(255) NOT NULL,
|
||||
`service_id` varchar(255) NOT NULL,
|
||||
`shortcode` varchar(255) NOT NULL,
|
||||
`keyword` varchar(255) NOT NULL,
|
||||
`message` varchar(255) NOT NULL,
|
||||
`sender` varchar(255) NOT NULL,
|
||||
`operator` varchar(255) NOT NULL,
|
||||
`country` varchar(255) NOT NULL,
|
||||
`currency` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_players` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`hide_char` tinyint(4) NOT NULL,
|
||||
`comment` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_player_reports` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`posx` int(6) NOT NULL,
|
||||
`posy` int(6) NOT NULL,
|
||||
`posz` int(6) NOT NULL,
|
||||
`report_description` VARCHAR(255) NOT NULL,
|
||||
`date` INT(11) NOT NULL,
|
||||
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_changelog` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`text` VARCHAR(255) NOT NULL,
|
||||
`time` INT(11) NOT NULL,
|
||||
`report_id` INT(11) NOT NULL,
|
||||
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) DEFAULT NULL,
|
||||
`count` int(11) NOT NULL DEFAULT '1',
|
||||
`description` varchar(255) NOT NULL,
|
||||
`points` int(11) NOT NULL DEFAULT '10',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop_logs` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) NOT NULL,
|
||||
`count` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
`time` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop_orders` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) NOT NULL,
|
||||
`count` int(11) NOT NULL,
|
||||
`time` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_visitors` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`value` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_visitors_details` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`time` int(11) NOT NULL,
|
||||
`type` tinyint(4) NOT NULL,
|
||||
`account_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 1/3 (boards)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`access` tinyint(4) NOT NULL,
|
||||
`closed` tinyint(4) NOT NULL,
|
||||
`hidden` tinyint(4) NOT NULL,
|
||||
`guild_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 2/3 (threads)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum_threads` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`forum_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`player_name` varchar(50) NOT NULL,
|
||||
`title` varchar(50) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`updated` int(11) NOT NULL,
|
||||
`sticky` tinyint(4) NOT NULL,
|
||||
`hidden` tinyint(4) NOT NULL,
|
||||
`closed` tinyint(4) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 3/3 (posts)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum_posts` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`player_name` varchar(50) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`updated` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Pending characters for deletion
|
||||
CREATE TABLE IF NOT EXISTS `znote_deleted_characters` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`original_account_id` int(11) NOT NULL,
|
||||
`character_name` varchar(255) NOT NULL,
|
||||
`time` datetime NOT NULL,
|
||||
`done` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_guild_wars` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`limit` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Helpdesk system
|
||||
CREATE TABLE IF NOT EXISTS `znote_tickets` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`owner` int(11) NOT NULL,
|
||||
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
||||
`subject` text CHARACTER SET latin1 NOT NULL,
|
||||
`message` text CHARACTER SET latin1 NOT NULL,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`creation` int(11) NOT NULL,
|
||||
`status` varchar(20) CHARACTER SET latin1 NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_tickets_replies` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`tid` int(11) NOT NULL,
|
||||
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
||||
`message` text CHARACTER SET latin1 NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_global_storage` (
|
||||
`key` VARCHAR(32) NOT NULL,
|
||||
`value` TEXT NOT NULL,
|
||||
UNIQUE (`key`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Character auction system
|
||||
CREATE TABLE IF NOT EXISTS `znote_auction_player` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`original_account_id` int(11) NOT NULL,
|
||||
`bidder_account_id` int(11) NOT NULL,
|
||||
`time_begin` int(11) NOT NULL,
|
||||
`time_end` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`bid` int(11) NOT NULL,
|
||||
`deposit` int(11) NOT NULL,
|
||||
`sold` tinyint(1) NOT NULL,
|
||||
`claimed` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Populate basic info
|
||||
INSERT INTO `znote` (`version`, `installed`) VALUES
|
||||
(@znote_version, UNIX_TIMESTAMP(CURDATE()));
|
||||
|
||||
-- Add default forum boards
|
||||
INSERT INTO `znote_forum` (`name`, `access`, `closed`, `hidden`, `guild_id`) VALUES
|
||||
('Staff Board', '4', '0', '0', '0'),
|
||||
('Tutors Board', '2', '0', '0', '0'),
|
||||
('Discussion', '1', '0', '0', '0'),
|
||||
('Feedback', '1', '0', '1', '0');
|
||||
|
||||
-- Convert existing accounts in database to be Znote AAC compatible
|
||||
INSERT INTO `znote_accounts` (`account_id`, `ip`, `created`, `flag`)
|
||||
SELECT
|
||||
`a`.`id` AS `account_id`,
|
||||
0 AS `ip`,
|
||||
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
||||
'' AS `flag`
|
||||
FROM `accounts` AS `a`
|
||||
LEFT JOIN `znote_accounts` AS `z`
|
||||
ON `a`.`id` = `z`.`account_id`
|
||||
WHERE `z`.`created` IS NULL;
|
||||
|
||||
-- Convert existing players in database to be Znote AAC compatible
|
||||
INSERT INTO `znote_players` (`player_id`, `created`, `hide_char`, `comment`)
|
||||
SELECT
|
||||
`p`.`id` AS `player_id`,
|
||||
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
||||
0 AS `hide_char`,
|
||||
'' AS `comment`
|
||||
FROM `players` AS `p`
|
||||
LEFT JOIN `znote_players` AS `z`
|
||||
ON `p`.`id` = `z`.`player_id`
|
||||
WHERE `z`.`created` IS NULL;
|
||||
|
||||
-- Delete duplicate account records
|
||||
DELETE `d` FROM `znote_accounts` AS `d`
|
||||
INNER JOIN (
|
||||
SELECT `i`.`account_id`,
|
||||
MAX(`i`.`id`) AS `retain`
|
||||
FROM `znote_accounts` AS `i`
|
||||
GROUP BY `i`.`account_id`
|
||||
HAVING COUNT(`i`.`id`) > 1
|
||||
) AS `x`
|
||||
ON `d`.`account_id` = `x`.`account_id`
|
||||
AND `d`.`id` != `x`.`retain`;
|
||||
|
||||
-- Delete duplicate player records
|
||||
DELETE `d` FROM `znote_players` AS `d`
|
||||
INNER JOIN (
|
||||
SELECT `i`.`player_id`,
|
||||
MAX(`i`.`id`) AS `retain`
|
||||
FROM `znote_players` AS `i`
|
||||
GROUP BY `i`.`player_id`
|
||||
HAVING COUNT(`i`.`id`) > 1
|
||||
) AS `x`
|
||||
ON `d`.`player_id` = `x`.`player_id`
|
||||
AND `d`.`id` != `x`.`retain`;
|
||||
|
||||
-- End of Znote AAC database schema
|
||||
-- Start of Znote AAC database schema
|
||||
|
||||
SET @znote_version = '1.5_SVN';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote` (
|
||||
`id` int(10) NOT NULL AUTO_INCREMENT,
|
||||
`version` varchar(30) NOT NULL COMMENT 'Znote AAC version',
|
||||
`installed` int(10) NOT NULL,
|
||||
`cached` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_accounts` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`ip` bigint(20) UNSIGNED NOT NULL,
|
||||
`created` int(10) NOT NULL,
|
||||
`points` int(10) DEFAULT 0,
|
||||
`cooldown` int(10) DEFAULT 0,
|
||||
`active` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`active_email` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`activekey` int(11) NOT NULL DEFAULT '0',
|
||||
`flag` varchar(20) NOT NULL,
|
||||
`secret` char(16) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_news` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`date` int(11) NOT NULL,
|
||||
`pid` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_images` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`date` int(11) NOT NULL,
|
||||
`status` int(11) NOT NULL,
|
||||
`image` varchar(30) NOT NULL,
|
||||
`account_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_paypal` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`txn_id` varchar(30) NOT NULL,
|
||||
`email` varchar(255) NOT NULL,
|
||||
`accid` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_paygol` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
`message_id` varchar(255) NOT NULL,
|
||||
`service_id` varchar(255) NOT NULL,
|
||||
`shortcode` varchar(255) NOT NULL,
|
||||
`keyword` varchar(255) NOT NULL,
|
||||
`message` varchar(255) NOT NULL,
|
||||
`sender` varchar(255) NOT NULL,
|
||||
`operator` varchar(255) NOT NULL,
|
||||
`country` varchar(255) NOT NULL,
|
||||
`currency` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_players` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`hide_char` tinyint(4) NOT NULL,
|
||||
`comment` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_player_reports` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`posx` int(6) NOT NULL,
|
||||
`posy` int(6) NOT NULL,
|
||||
`posz` int(6) NOT NULL,
|
||||
`report_description` VARCHAR(255) NOT NULL,
|
||||
`date` INT(11) NOT NULL,
|
||||
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_changelog` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`text` VARCHAR(255) NOT NULL,
|
||||
`time` INT(11) NOT NULL,
|
||||
`report_id` INT(11) NOT NULL,
|
||||
`status` TINYINT(3) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) DEFAULT NULL,
|
||||
`count` int(11) NOT NULL DEFAULT '1',
|
||||
`description` varchar(255) NOT NULL,
|
||||
`points` int(11) NOT NULL DEFAULT '10',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop_logs` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) NOT NULL,
|
||||
`count` int(11) NOT NULL,
|
||||
`points` int(11) NOT NULL,
|
||||
`time` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_shop_orders` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`account_id` int(11) NOT NULL,
|
||||
`type` int(11) NOT NULL,
|
||||
`itemid` int(11) NOT NULL,
|
||||
`count` int(11) NOT NULL,
|
||||
`time` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_visitors` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`value` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_visitors_details` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`time` int(11) NOT NULL,
|
||||
`type` tinyint(4) NOT NULL,
|
||||
`account_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 1/3 (boards)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`access` tinyint(4) NOT NULL,
|
||||
`closed` tinyint(4) NOT NULL,
|
||||
`hidden` tinyint(4) NOT NULL,
|
||||
`guild_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 2/3 (threads)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum_threads` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`forum_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`player_name` varchar(50) NOT NULL,
|
||||
`title` varchar(50) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`updated` int(11) NOT NULL,
|
||||
`sticky` tinyint(4) NOT NULL,
|
||||
`hidden` tinyint(4) NOT NULL,
|
||||
`closed` tinyint(4) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Forum 3/3 (posts)
|
||||
CREATE TABLE IF NOT EXISTS `znote_forum_posts` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`player_name` varchar(50) NOT NULL,
|
||||
`text` text NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
`updated` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Pending characters for deletion
|
||||
CREATE TABLE IF NOT EXISTS `znote_deleted_characters` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`original_account_id` int(11) NOT NULL,
|
||||
`character_name` varchar(255) NOT NULL,
|
||||
`time` datetime NOT NULL,
|
||||
`done` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_guild_wars` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`limit` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Helpdesk system
|
||||
CREATE TABLE IF NOT EXISTS `znote_tickets` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`owner` int(11) NOT NULL,
|
||||
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
||||
`subject` text CHARACTER SET latin1 NOT NULL,
|
||||
`message` text CHARACTER SET latin1 NOT NULL,
|
||||
`ip` bigint(20) NOT NULL,
|
||||
`creation` int(11) NOT NULL,
|
||||
`status` varchar(20) CHARACTER SET latin1 NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_tickets_replies` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`tid` int(11) NOT NULL,
|
||||
`username` varchar(32) CHARACTER SET latin1 NOT NULL,
|
||||
`message` text CHARACTER SET latin1 NOT NULL,
|
||||
`created` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `znote_global_storage` (
|
||||
`key` VARCHAR(32) NOT NULL,
|
||||
`value` TEXT NOT NULL,
|
||||
UNIQUE (`key`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Character auction system
|
||||
CREATE TABLE IF NOT EXISTS `znote_auction_player` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`player_id` int(11) NOT NULL,
|
||||
`original_account_id` int(11) NOT NULL,
|
||||
`bidder_account_id` int(11) NOT NULL,
|
||||
`time_begin` int(11) NOT NULL,
|
||||
`time_end` int(11) NOT NULL,
|
||||
`price` int(11) NOT NULL,
|
||||
`bid` int(11) NOT NULL,
|
||||
`deposit` int(11) NOT NULL,
|
||||
`sold` tinyint(1) NOT NULL,
|
||||
`claimed` tinyint(1) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Populate basic info
|
||||
INSERT INTO `znote` (`version`, `installed`) VALUES
|
||||
(@znote_version, UNIX_TIMESTAMP(CURDATE()));
|
||||
|
||||
-- Add default forum boards
|
||||
INSERT INTO `znote_forum` (`name`, `access`, `closed`, `hidden`, `guild_id`) VALUES
|
||||
('Staff Board', '4', '0', '0', '0'),
|
||||
('Tutors Board', '2', '0', '0', '0'),
|
||||
('Discussion', '1', '0', '0', '0'),
|
||||
('Feedback', '1', '0', '1', '0');
|
||||
|
||||
-- Convert existing accounts in database to be Znote AAC compatible
|
||||
INSERT INTO `znote_accounts` (`account_id`, `ip`, `created`, `flag`)
|
||||
SELECT
|
||||
`a`.`id` AS `account_id`,
|
||||
0 AS `ip`,
|
||||
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
||||
'' AS `flag`
|
||||
FROM `accounts` AS `a`
|
||||
LEFT JOIN `znote_accounts` AS `z`
|
||||
ON `a`.`id` = `z`.`account_id`
|
||||
WHERE `z`.`created` IS NULL;
|
||||
|
||||
-- Convert existing players in database to be Znote AAC compatible
|
||||
INSERT INTO `znote_players` (`player_id`, `created`, `hide_char`, `comment`)
|
||||
SELECT
|
||||
`p`.`id` AS `player_id`,
|
||||
UNIX_TIMESTAMP(CURDATE()) AS `created`,
|
||||
0 AS `hide_char`,
|
||||
'' AS `comment`
|
||||
FROM `players` AS `p`
|
||||
LEFT JOIN `znote_players` AS `z`
|
||||
ON `p`.`id` = `z`.`player_id`
|
||||
WHERE `z`.`created` IS NULL;
|
||||
|
||||
-- Delete duplicate account records
|
||||
DELETE `d` FROM `znote_accounts` AS `d`
|
||||
INNER JOIN (
|
||||
SELECT `i`.`account_id`,
|
||||
MAX(`i`.`id`) AS `retain`
|
||||
FROM `znote_accounts` AS `i`
|
||||
GROUP BY `i`.`account_id`
|
||||
HAVING COUNT(`i`.`id`) > 1
|
||||
) AS `x`
|
||||
ON `d`.`account_id` = `x`.`account_id`
|
||||
AND `d`.`id` != `x`.`retain`;
|
||||
|
||||
-- Delete duplicate player records
|
||||
DELETE `d` FROM `znote_players` AS `d`
|
||||
INNER JOIN (
|
||||
SELECT `i`.`player_id`,
|
||||
MAX(`i`.`id`) AS `retain`
|
||||
FROM `znote_players` AS `i`
|
||||
GROUP BY `i`.`player_id`
|
||||
HAVING COUNT(`i`.`id`) > 1
|
||||
) AS `x`
|
||||
ON `d`.`player_id` = `x`.`player_id`
|
||||
AND `d`.`id` != `x`.`retain`;
|
||||
|
||||
-- End of Znote AAC database schema
|
||||
|
@@ -96,7 +96,7 @@
|
||||
|
||||
/**
|
||||
* Loads the content from a specified cache file.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return mixed
|
||||
**/
|
||||
|
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
<?php
|
||||
/* Returns a PHP array $id => 'name'
|
||||
$items = getItemList();
|
||||
echo $items[2160]; // Returns 'Crystal Coin'
|
||||
*/
|
||||
|
||||
function getItemList() {
|
||||
function getItemList() {
|
||||
return parseItems();
|
||||
}
|
||||
|
||||
@@ -31,4 +31,4 @@ function parseItems() {
|
||||
}
|
||||
return $file;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/** https://github.com/Voronenko/PHPOTP/blob/08cda9cb9c30b7242cf0b3a9100a6244a2874927/code/base32static.php
|
||||
* Encode in Base32 based on RFC 4648.
|
||||
* Requires 20% more space than base64
|
||||
* Requires 20% more space than base64
|
||||
* Great for case-insensitive filesystems like Windows and URL's (except for = char which can be excluded using the pad option for urls)
|
||||
*
|
||||
* @package default
|
||||
@@ -16,14 +16,14 @@ class Base32Static {
|
||||
'Y', 'Z', '2', '3', '4', '5', '6', '7', // 31
|
||||
'=' // padding character
|
||||
);
|
||||
|
||||
|
||||
private static $flippedMap = array(
|
||||
'A'=>'0', 'B'=>'1', 'C'=>'2', 'D'=>'3', 'E'=>'4', 'F'=>'5', 'G'=>'6', 'H'=>'7',
|
||||
'I'=>'8', 'J'=>'9', 'K'=>'10', 'L'=>'11', 'M'=>'12', 'N'=>'13', 'O'=>'14', 'P'=>'15',
|
||||
'Q'=>'16', 'R'=>'17', 'S'=>'18', 'T'=>'19', 'U'=>'20', 'V'=>'21', 'W'=>'22', 'X'=>'23',
|
||||
'Y'=>'24', 'Z'=>'25', '2'=>'26', '3'=>'27', '4'=>'28', '5'=>'29', '6'=>'30', '7'=>'31'
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Use padding false when encoding for urls
|
||||
*
|
||||
@@ -32,66 +32,66 @@ class Base32Static {
|
||||
**/
|
||||
public static function encode($input, $padding = true) {
|
||||
if(empty($input)) return "";
|
||||
|
||||
|
||||
$input = str_split($input);
|
||||
$binaryString = "";
|
||||
|
||||
|
||||
for($i = 0; $i < count($input); $i++) {
|
||||
$binaryString .= str_pad(base_convert(ord($input[$i]), 10, 2), 8, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
|
||||
$fiveBitBinaryArray = str_split($binaryString, 5);
|
||||
$base32 = "";
|
||||
$i=0;
|
||||
|
||||
while($i < count($fiveBitBinaryArray)) {
|
||||
|
||||
while($i < count($fiveBitBinaryArray)) {
|
||||
$base32 .= self::$map[base_convert(str_pad($fiveBitBinaryArray[$i], 5,'0'), 2, 10)];
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
if($padding && ($x = strlen($binaryString) % 40) != 0) {
|
||||
if($x == 8) $base32 .= str_repeat(self::$map[32], 6);
|
||||
else if($x == 16) $base32 .= str_repeat(self::$map[32], 4);
|
||||
else if($x == 24) $base32 .= str_repeat(self::$map[32], 3);
|
||||
else if($x == 32) $base32 .= self::$map[32];
|
||||
}
|
||||
|
||||
|
||||
return $base32;
|
||||
}
|
||||
|
||||
|
||||
public static function decode($input) {
|
||||
if(empty($input)) return;
|
||||
|
||||
|
||||
$paddingCharCount = substr_count($input, self::$map[32]);
|
||||
$allowedValues = array(6,4,3,1,0);
|
||||
|
||||
|
||||
if(!in_array($paddingCharCount, $allowedValues)) return false;
|
||||
|
||||
for($i=0; $i<4; $i++){
|
||||
if($paddingCharCount == $allowedValues[$i] &&
|
||||
|
||||
for($i=0; $i<4; $i++){
|
||||
if($paddingCharCount == $allowedValues[$i] &&
|
||||
substr($input, -($allowedValues[$i])) != str_repeat(self::$map[32], $allowedValues[$i])) return false;
|
||||
}
|
||||
|
||||
|
||||
$input = str_replace('=','', $input);
|
||||
$input = str_split($input);
|
||||
$binaryString = "";
|
||||
|
||||
|
||||
for($i=0; $i < count($input); $i = $i+8) {
|
||||
$x = "";
|
||||
|
||||
|
||||
if(!in_array($input[$i], self::$map)) return false;
|
||||
|
||||
|
||||
for($j=0; $j < 8; $j++) {
|
||||
$x .= str_pad(base_convert(@self::$flippedMap[@$input[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
|
||||
$eightBits = str_split($x, 8);
|
||||
|
||||
|
||||
for($z = 0; $z < count($eightBits); $z++) {
|
||||
$binaryString .= ( ($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48 ) ? $y:"";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $binaryString;
|
||||
}
|
||||
}
|
||||
@@ -100,25 +100,25 @@ class Base32Static {
|
||||
// https://github.com/Voronenko/PHPOTP/blob/08cda9cb9c30b7242cf0b3a9100a6244a2874927/code/rfc6238.php
|
||||
// Local changes: http -> https, consistent indentation, 200x200 -> 300x300 QR image size, PHP end tag
|
||||
class TokenAuth6238 {
|
||||
|
||||
|
||||
/**
|
||||
* verify
|
||||
*
|
||||
*
|
||||
* @param string $secretkey Secret clue (base 32).
|
||||
* @return bool True if success, false if failure
|
||||
*/
|
||||
*/
|
||||
public static function verify($secretkey, $code, $rangein30s = 3) {
|
||||
$key = base32static::decode($secretkey);
|
||||
$unixtimestamp = time()/30;
|
||||
|
||||
|
||||
for($i=-($rangein30s); $i<=$rangein30s; $i++) {
|
||||
$checktime = (int)($unixtimestamp+$i);
|
||||
$thiskey = self::oath_hotp($key, $checktime);
|
||||
|
||||
|
||||
if ((int)$code == self::oath_truncate($thiskey,6)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -128,40 +128,40 @@ class TokenAuth6238 {
|
||||
$result = "";
|
||||
$key = base32static::decode($secretkey);
|
||||
$unixtimestamp = time()/30;
|
||||
|
||||
|
||||
for($i=-($rangein30s); $i<=$rangein30s; $i++) {
|
||||
$checktime = (int)($unixtimestamp+$i);
|
||||
$thiskey = self::oath_hotp($key, $checktime);
|
||||
$result = $result." # ".self::oath_truncate($thiskey,6);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public static function getTokenCodeDebug($secretkey,$rangein30s = 3) {
|
||||
$result = "";
|
||||
print "<br/>SecretKey: $secretkey <br/>";
|
||||
|
||||
|
||||
$key = base32static::decode($secretkey);
|
||||
print "Key(base 32 decode): $key <br/>";
|
||||
|
||||
|
||||
$unixtimestamp = time()/30;
|
||||
print "UnixTimeStamp (time()/30): $unixtimestamp <br/>";
|
||||
|
||||
for($i=-($rangein30s); $i<=$rangein30s; $i++) {
|
||||
$checktime = (int)($unixtimestamp+$i);
|
||||
print "Calculating oath_hotp from (int)(unixtimestamp +- 30sec offset): $checktime basing on secret key<br/>";
|
||||
|
||||
|
||||
$thiskey = self::oath_hotp($key, $checktime, true);
|
||||
print "======================================================<br/>";
|
||||
print "CheckTime: $checktime oath_hotp:".$thiskey."<br/>";
|
||||
|
||||
$result = $result." # ".self::oath_truncate($thiskey,6,true);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public static function getBarCodeUrl($username, $domain, $secretkey, $issuer) {
|
||||
$url = "https://chart.apis.google.com/chart";
|
||||
$url = $url."?chs=300x300&chld=M|0&cht=qr&chl=otpauth://totp/";
|
||||
@@ -178,7 +178,7 @@ class TokenAuth6238 {
|
||||
|
||||
return $s;
|
||||
}
|
||||
|
||||
|
||||
private static function hotp_tobytestream($key) {
|
||||
$result = array();
|
||||
$last = strlen($key);
|
||||
@@ -188,42 +188,42 @@ class TokenAuth6238 {
|
||||
$x = hexdec($x);
|
||||
$result = $result.chr($x);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private static function oath_hotp ($key, $counter, $debug=false) {
|
||||
$result = "";
|
||||
$orgcounter = $counter;
|
||||
private static function oath_hotp ($key, $counter, $debug=false) {
|
||||
$result = "";
|
||||
$orgcounter = $counter;
|
||||
$cur_counter = array(0,0,0,0,0,0,0,0);
|
||||
|
||||
|
||||
if ($debug) {
|
||||
print "Packing counter $counter (".dechex($counter).")into binary string - pay attention to hex representation of key and binary representation<br/>";
|
||||
}
|
||||
|
||||
for($i=7;$i>=0;$i--) { // C for unsigned char, * for repeating to the end of the input data
|
||||
|
||||
for($i=7;$i>=0;$i--) { // C for unsigned char, * for repeating to the end of the input data
|
||||
$cur_counter[$i] = pack ('C*', $counter);
|
||||
|
||||
|
||||
if ($debug) {
|
||||
print $cur_counter[$i]."(".dechex(ord($cur_counter[$i])).")"." from $counter <br/>";
|
||||
}
|
||||
|
||||
|
||||
$counter = $counter >> 8;
|
||||
}
|
||||
|
||||
|
||||
if ($debug) {
|
||||
foreach ($cur_counter as $char) {
|
||||
print ord($char) . " ";
|
||||
}
|
||||
|
||||
|
||||
print "<br/>";
|
||||
}
|
||||
|
||||
|
||||
$binary = implode($cur_counter);
|
||||
|
||||
// Pad to 8 characters
|
||||
str_pad($binary, 8, chr(0), STR_PAD_LEFT);
|
||||
|
||||
|
||||
if ($debug) {
|
||||
print "Prior to HMAC calculation pad with zero on the left until 8 characters.<br/>";
|
||||
print "Calculate sha1 HMAC(Hash-based Message Authentication Code http://en.wikipedia.org/wiki/HMAC).<br/>";
|
||||
@@ -231,47 +231,47 @@ class TokenAuth6238 {
|
||||
}
|
||||
|
||||
$result = hash_hmac ('sha1', $binary, $key);
|
||||
|
||||
|
||||
if ($debug) {
|
||||
print "Result: $result <br/>";
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private static function oath_truncate($hash, $length = 6, $debug=false) {
|
||||
$result="";
|
||||
|
||||
$result="";
|
||||
|
||||
// Convert to dec
|
||||
if($debug) {
|
||||
print "converting hex hash into characters<br/>";
|
||||
}
|
||||
|
||||
|
||||
$hashcharacters = str_split($hash,2);
|
||||
|
||||
|
||||
if($debug) {
|
||||
print_r($hashcharacters);
|
||||
print "<br/>and convert to decimals:<br/>";
|
||||
print "<br/>and convert to decimals:<br/>";
|
||||
}
|
||||
|
||||
for ($j=0; $j<count($hashcharacters); $j++) {
|
||||
$hmac_result[]=hexdec($hashcharacters[$j]);
|
||||
}
|
||||
|
||||
|
||||
if($debug) {
|
||||
print_r($hmac_result);
|
||||
}
|
||||
|
||||
// http://php.net/manual/ru/function.hash-hmac.php
|
||||
// http://php.net/manual/ru/function.hash-hmac.php
|
||||
// adopted from brent at thebrent dot net 21-May-2009 08:17 comment
|
||||
|
||||
$offset = $hmac_result[19] & 0xf;
|
||||
|
||||
|
||||
if($debug) {
|
||||
print "Calculating offset as 19th element of hmac:".$hmac_result[19]."<br/>";
|
||||
print "offset:".$offset;
|
||||
}
|
||||
|
||||
|
||||
$result = (
|
||||
(($hmac_result[$offset+0] & 0x7f) << 24 ) |
|
||||
(($hmac_result[$offset+1] & 0xff) << 16 ) |
|
||||
@@ -282,4 +282,4 @@ class TokenAuth6238 {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
@@ -3,7 +3,7 @@
|
||||
class Token {
|
||||
public static function generate() {
|
||||
$token = sha1(uniqid(time(), true));
|
||||
|
||||
|
||||
$_SESSION['token'] = $token;
|
||||
}
|
||||
/**
|
||||
@@ -80,10 +80,10 @@
|
||||
**/
|
||||
public static function debug($post) {
|
||||
echo '<pre>', var_dump(array(
|
||||
'post' => $post,
|
||||
'post' => $post,
|
||||
'old_token' => $_SESSION['old_token'],
|
||||
'token' => self::get()
|
||||
)), '</pre>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
@@ -8,7 +8,7 @@ $l_start = $l_time;
|
||||
function elapsedTime($l_start = false, $l_time = false) {
|
||||
if ($l_start === false) global $l_start;
|
||||
if ($l_time === false) global $l_time;
|
||||
|
||||
|
||||
$l_time = explode(' ', microtime());
|
||||
$l_finish = $l_time[1] + $l_time[0];
|
||||
return round(($l_finish - $l_start), 4);
|
||||
@@ -32,7 +32,7 @@ if ($config['use_captcha'] && !extension_loaded('openssl')) {
|
||||
die("php openSSL is not enabled. It is required to for captcha services.<br>1. Find your php.ini file.<br>2. Uncomment extension=php_openssl<br>Restart web server.<br><br><b>If you don't want this then disable use_captcha in config.php.</b>");
|
||||
}
|
||||
|
||||
// References ( & ) works as an alias for a variable,
|
||||
// References ( & ) works as an alias for a variable,
|
||||
// they point to the same memmory, instead of duplicating it.
|
||||
if (!isset($config['TFSVersion'])) $config['TFSVersion'] = &$config['ServerEngine'];
|
||||
if (!isset($config['ServerEngine'])) $config['ServerEngine'] = &$config['TFSVersion'];
|
||||
@@ -62,7 +62,7 @@ $errors = array();
|
||||
// Log IP
|
||||
if ($config['log_ip']) {
|
||||
$visitor_config = $config['ip_security'];
|
||||
|
||||
|
||||
$flush = $config['flush_ip_logs'];
|
||||
if ($flush != false) {
|
||||
$timef = $time - $flush;
|
||||
@@ -72,14 +72,14 @@ if ($config['log_ip']) {
|
||||
setCache($time);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$visitor_data = znote_visitors_get_data();
|
||||
|
||||
|
||||
znote_visitor_set_data($visitor_data); // update or insert data
|
||||
znote_visitor_insert_detailed_data(0); // detailed data
|
||||
|
||||
|
||||
$visitor_detailed = znote_visitors_get_detailed_data($visitor_config['time_period']);
|
||||
|
||||
|
||||
// max activity
|
||||
$v_activity = 0;
|
||||
$v_register = 0;
|
||||
@@ -90,46 +90,46 @@ if ($config['log_ip']) {
|
||||
foreach ((array)$visitor_detailed as $v_d) {
|
||||
// Activity
|
||||
if ($v_d['ip'] == getIPLong()) {
|
||||
// count each type of visit
|
||||
// count each type of visit
|
||||
switch ($v_d['type']) {
|
||||
case 0: // max activity
|
||||
$v_activity++;
|
||||
break;
|
||||
|
||||
|
||||
case 1: // account registered
|
||||
$v_register++;
|
||||
$v_form++;
|
||||
break;
|
||||
|
||||
|
||||
case 2: // character creations
|
||||
$v_c_char++;
|
||||
$v_form++;
|
||||
break;
|
||||
|
||||
|
||||
case 3: // Highscore fetched
|
||||
$v_highscore++;
|
||||
$v_form++;
|
||||
break;
|
||||
|
||||
|
||||
case 4: // character searched
|
||||
$v_s_char++;
|
||||
$v_form++;
|
||||
break;
|
||||
|
||||
|
||||
case 5: // Other forms (login.?)
|
||||
$v_form++;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Deny access if activity is too high
|
||||
if ($v_activity > $visitor_config['max_activity']) die("Chill down. Your web activity is too big. max_activity");
|
||||
if ($v_register > $visitor_config['max_account']) die("Chill down. You can't create multiple accounts that fast. max_account");
|
||||
if ($v_c_char > $visitor_config['max_character']) die("Chill down. Your web activity is too big. max_character");
|
||||
if ($v_form > $visitor_config['max_post']) die("Chill down. Your web activity is too big. max_post");
|
||||
|
||||
|
||||
//var_dump($v_activity, $v_register, $v_highscore, $v_c_char, $v_s_char, $v_form);
|
||||
//echo ' <--- IP logging activity past 10 seconds.';
|
||||
}
|
||||
|
Reference in New Issue
Block a user