File Editor
Directories:
.. (Back)
Diff
dashboard
rest-api
Files:
Diff.php
IPTraf.php
IPTrafList.php
WFLSPHP52Compatability.php
compat.php
diffResult.php
email_genericAlert.php
email_newIssues.php
email_unlockRequest.php
email_unsubscribeRequest.php
flags.php
live_activity.php
menu_dashboard.php
menu_dashboard_options.php
menu_firewall.php
menu_firewall_blocking.php
menu_firewall_blocking_options.php
menu_firewall_waf.php
menu_firewall_waf_options.php
menu_install.php
menu_options.php
menu_scanner.php
menu_scanner_credentials.php
menu_scanner_options.php
menu_support.php
menu_tools.php
menu_tools_diagnostic.php
menu_tools_importExport.php
menu_tools_livetraffic.php
menu_tools_twoFactor.php
menu_tools_whois.php
menu_wordfence_central.php
sysinfo.php
viewFullActivityLog.php
wf503.php
wfAPI.php
wfActivityReport.php
wfAdminNoticeQueue.php
wfAlerts.php
wfArray.php
wfBrowscap.php
wfBrowscapCache.php
wfBulkCountries.php
wfCache.php
wfCentralAPI.php
wfConfig.php
wfCrawl.php
wfCredentialsController.php
wfCrypt.php
wfCurlInterceptor.php
wfDB.php
wfDashboard.php
wfDateLocalization.php
wfDeactivationOption.php
wfDiagnostic.php
wfDict.php
wfDirectoryIterator.php
wfFileUtils.php
wfHelperBin.php
wfHelperString.php
wfIPWhitelist.php
wfImportExportController.php
wfInvalidPathException.php
wfIpLocation.php
wfIpLocator.php
wfIssues.php
wfJWT.php
wfLicense.php
wfLockedOut.php
wfLog.php
wfMD5BloomFilter.php
wfModuleController.php
wfNotification.php
wfOnboardingController.php
wfPersistenceController.php
wfRESTAPI.php
wfScan.php
wfScanEngine.php
wfScanEntrypoint.php
wfScanFile.php
wfScanFileLink.php
wfScanMonitor.php
wfScanPath.php
wfSchema.php
wfStyle.php
wfSupportController.php
wfUnlockMsg.php
wfUpdateCheck.php
wfUtils.php
wfVersionCheckController.php
wfView.php
wfViewResult.php
wfWebsite.php
wordfenceClass.php
wordfenceConstants.php
wordfenceHash.php
wordfenceScanner.php
wordfenceURLHoover.php
Create New File
Create
Edit File: wfSchema.php
<?php require_once(dirname(__FILE__) . '/wfDB.php'); class wfSchema { const TABLE_CASE_OPTION = 'wordfence_case'; //false is camel case, true is lower private static $_usingLowercase = null; private static $deprecatedTables = array( 'wfBlocks', 'wfBlocksAdv', 'wfLockedOut', 'wfThrottleLog', 'wfNet404s', 'wfBlockedCommentLog', 'wfVulnScanners', 'wfBadLeechers', 'wfLeechers', 'wfScanners', ); private static $tables = array( "wfBlocks7" => "( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `type` int(10) unsigned NOT NULL DEFAULT '0', `IP` binary(16) NOT NULL DEFAULT '\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0', `blockedTime` bigint(20) NOT NULL, `reason` varchar(255) NOT NULL, `lastAttempt` int(10) unsigned DEFAULT '0', `blockedHits` int(10) unsigned DEFAULT '0', `expiration` bigint(20) unsigned NOT NULL DEFAULT '0', `parameters` text, PRIMARY KEY (`id`), KEY `type` (`type`), KEY `IP` (`IP`), KEY `expiration` (`expiration`) ) DEFAULT CHARSET=utf8", "wfConfig" => "( `name` varchar(100) NOT NULL, `val` longblob, `autoload` enum('no','yes') NOT NULL DEFAULT 'yes', PRIMARY KEY (`name`) ) DEFAULT CHARSET=utf8", "wfCrawlers" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `patternSig` binary(16) NOT NULL, `status` char(8) NOT NULL, `lastUpdate` int(10) unsigned NOT NULL, `PTR` varchar(255) DEFAULT '', PRIMARY KEY (`IP`,`patternSig`) ) DEFAULT CHARSET=utf8", "wfFileChanges" => "( `filenameHash` char(64) NOT NULL, `file` varchar(1000) NOT NULL, `md5` char(32) NOT NULL, PRIMARY KEY (`filenameHash`) ) CHARSET=utf8", "wfHits" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `attackLogTime` double(17,6) unsigned NOT NULL, `ctime` double(17,6) unsigned NOT NULL, `IP` binary(16) DEFAULT NULL, `jsRun` tinyint(4) DEFAULT '0', `statusCode` int(11) NOT NULL DEFAULT '200', `isGoogle` tinyint(4) NOT NULL, `userID` int(10) unsigned NOT NULL, `newVisit` tinyint(3) unsigned NOT NULL, `URL` text, `referer` text, `UA` text, `action` varchar(64) NOT NULL DEFAULT '', `actionDescription` text, `actionData` text, PRIMARY KEY (`id`), KEY `k1` (`ctime`), KEY `k2` (`IP`,`ctime`), KEY `attackLogTime` (`attackLogTime`) ) DEFAULT CHARSET=utf8", "wfIssues" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time` int(10) unsigned NOT NULL, `lastUpdated` int(10) unsigned NOT NULL, `status` varchar(10) NOT NULL, `type` varchar(20) NOT NULL, `severity` tinyint(3) unsigned NOT NULL, `ignoreP` char(32) NOT NULL, `ignoreC` char(32) NOT NULL, `shortMsg` varchar(255) NOT NULL, `longMsg` text, `data` text, PRIMARY KEY (`id`), KEY `lastUpdated` (`lastUpdated`), KEY `status` (`status`), KEY `ignoreP` (`ignoreP`), KEY `ignoreC` (`ignoreC`) ) DEFAULT CHARSET=utf8", "wfPendingIssues" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `time` int(10) unsigned NOT NULL, `lastUpdated` int(10) unsigned NOT NULL, `status` varchar(10) NOT NULL, `type` varchar(20) NOT NULL, `severity` tinyint(3) unsigned NOT NULL, `ignoreP` char(32) NOT NULL, `ignoreC` char(32) NOT NULL, `shortMsg` varchar(255) NOT NULL, `longMsg` text, `data` text, PRIMARY KEY (`id`), KEY `lastUpdated` (`lastUpdated`), KEY `status` (`status`), KEY `ignoreP` (`ignoreP`), KEY `ignoreC` (`ignoreC`) ) DEFAULT CHARSET=utf8", "wfTrafficRates" => "( `eMin` int(10) unsigned NOT NULL, `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `hitType` enum('hit','404') NOT NULL DEFAULT 'hit', `hits` int(10) unsigned NOT NULL, PRIMARY KEY (`eMin`,`IP`,`hitType`) ) DEFAULT CHARSET=utf8", "wfLocs" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `ctime` int(10) unsigned NOT NULL, `failed` tinyint(3) unsigned NOT NULL, `city` varchar(255) DEFAULT '', `region` varchar(255) DEFAULT '', `countryName` varchar(255) DEFAULT '', `countryCode` char(2) DEFAULT '', `lat` float(10,7) DEFAULT '0.0000000', `lon` float(10,7) DEFAULT '0.0000000', PRIMARY KEY (`IP`) ) DEFAULT CHARSET=utf8", "wfLogins" => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `hitID` int(11) DEFAULT NULL, `ctime` double(17,6) unsigned NOT NULL, `fail` tinyint(3) unsigned NOT NULL, `action` varchar(40) NOT NULL, `username` varchar(255) NOT NULL, `userID` int(10) unsigned NOT NULL, `IP` binary(16) DEFAULT NULL, `UA` text, PRIMARY KEY (`id`), KEY `k1` (`IP`,`fail`), KEY `hitID` (`hitID`) ) DEFAULT CHARSET=utf8", "wfReverseCache" => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `host` varchar(255) NOT NULL, `lastUpdate` int(10) unsigned NOT NULL, PRIMARY KEY (`IP`) ) DEFAULT CHARSET=utf8", "wfStatus" => "( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `ctime` double(17,6) unsigned NOT NULL, `level` tinyint(3) unsigned NOT NULL, `type` char(5) NOT NULL, `msg` varchar(1000) NOT NULL, PRIMARY KEY (`id`), KEY `k1` (`ctime`), KEY `k2` (`type`) ) DEFAULT CHARSET=utf8", 'wfHoover' => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `owner` text, `host` text, `path` text, `hostKey` varbinary(124) DEFAULT NULL, PRIMARY KEY (`id`), KEY `k2` (`hostKey`) ) DEFAULT CHARSET=utf8", 'wfFileMods' => "( `filenameMD5` binary(16) NOT NULL, `filename` varchar(1000) NOT NULL, `knownFile` tinyint(3) unsigned NOT NULL, `oldMD5` binary(16) NOT NULL, `newMD5` binary(16) NOT NULL, `SHAC` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `stoppedOnSignature` varchar(255) NOT NULL DEFAULT '', `stoppedOnPosition` int(10) unsigned NOT NULL DEFAULT '0', `isSafeFile` varchar(1) NOT NULL DEFAULT '?', PRIMARY KEY (`filenameMD5`) ) DEFAULT CHARSET=utf8", 'wfBlockedIPLog' => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `countryCode` varchar(2) NOT NULL, `blockCount` int(10) unsigned NOT NULL DEFAULT '0', `unixday` int(10) unsigned NOT NULL, `blockType` varchar(50) NOT NULL DEFAULT 'generic', PRIMARY KEY (`IP`,`unixday`,`blockType`) ) DEFAULT CHARSET=utf8", 'wfSNIPCache' => "( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `IP` varchar(45) NOT NULL DEFAULT '', `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `body` varchar(255) NOT NULL DEFAULT '', `count` int(10) unsigned NOT NULL DEFAULT '0', `type` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `expiration` (`expiration`), KEY `IP` (`IP`), KEY `type` (`type`) ) DEFAULT CHARSET=utf8", 'wfKnownFileList' => "( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `path` text NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8", 'wfNotifications' => "( `id` varchar(32) NOT NULL DEFAULT '', `new` tinyint(3) unsigned NOT NULL DEFAULT '1', `category` varchar(255) NOT NULL, `priority` int(11) NOT NULL DEFAULT '1000', `ctime` int(10) unsigned NOT NULL, `html` text NOT NULL, `links` text NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8;", 'wfLiveTrafficHuman' => "( `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `identifier` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0', `expiration` int(10) unsigned NOT NULL, PRIMARY KEY (`IP`,`identifier`), KEY `expiration` (`expiration`) ) DEFAULT CHARSET=utf8;", ); private $db = false; public function __construct($dbhost = false, $dbuser = false, $dbpassword = false, $dbname = false){ $this->db = new wfDB(); } public function dropAll(){ foreach(self::$tables as $table => $def) { $originalTable = wfDB::networkPrefix() . $table; $convertedTable = wfDB::networkPrefix() . strtolower($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } foreach (self::$deprecatedTables as $table) { $originalTable = wfDB::networkTable($table, false); $convertedTable = wfDB::networkTable($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); if ($originalTable !== $convertedTable) { $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } } } public function createAll() { foreach(self::$tables as $table => $def){ $this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . $def); } } public function create($table) { $this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . self::$tables[$table]); } public function drop($table) { $originalTable = wfDB::networkTable($table, false); $convertedTable = wfDB::networkTable($table); $this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}"); if ($originalTable !== $convertedTable) { $this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}"); } } public static function tableList() { return array_keys(self::$tables); } public static function updateTableCase() { global $wpdb; $hasCamelCaseTable = !!$wpdb->get_var($wpdb->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s', wfDB::networkTable('wfConfig', false))); if (is_multisite() && function_exists('update_network_option')) { update_network_option(null, self::TABLE_CASE_OPTION, !$hasCamelCaseTable); self::$_usingLowercase = !$hasCamelCaseTable; } else { update_option(self::TABLE_CASE_OPTION, !$hasCamelCaseTable); self::$_usingLowercase = !$hasCamelCaseTable; } } public static function usingLowercase() { if (self::$_usingLowercase === null) { if (is_multisite() && function_exists('update_network_option')) { self::$_usingLowercase = !!get_network_option(null, self::TABLE_CASE_OPTION); } else { self::$_usingLowercase = !!get_option(self::TABLE_CASE_OPTION); } } return self::$_usingLowercase; } }
Save Changes
Rename File
Rename