Plugin Directory

Changeset 3282442


Ignore:
Timestamp:
04/26/2025 03:26:39 PM (11 months ago)
Author:
fullworks
Message:

Adding version 1.7.1

Location:
stop-user-enumeration
Files:
2 deleted
32 edited
1 copied

Legend:

Unmodified
Added
Removed
  • stop-user-enumeration/tags/1.7.1/admin/class-admin-pages.php

    r2638659 r3282442  
    2626
    2727    public function settings_setup() {
     28        $this->settings_title = esc_html__( 'Stop User Enumeration', 'stop-user-enumeration' );
    2829        add_submenu_page(
    2930            'options-general.php',
  • stop-user-enumeration/tags/1.7.1/admin/class-admin-settings.php

    r3259418 r3282442  
    3333        $this->plugin_name    = $plugin_name;
    3434        $this->version        = $version;
    35         $this->settings_title = esc_html__( 'Stop User Enumeration', 'stop-user-enumeration' );
    3635        parent::__construct();
    3736        new \Fullworks_Free_Plugin_Lib\Main('stop-user-enumeration/stop-user-enumeration.php',
  • stop-user-enumeration/tags/1.7.1/changelog.txt

    r3259418 r3282442  
    11== Changelog ==
     2= 1.7.1 =
     3* add developer hooks and filters for extending plugin functionality
     4* added stop_user_enumeration_ip filter to allow modifying detected IP addresses
     5* added stop_user_enumeration_should_block filter to conditionally allow or block requests
     6* added stop_user_enumeration_attempt action hook for processing enumeration attempts
     7* fix doing_it_wrong notice  for WP 6.8
     8
    29= 1.7 =
    310* add opt in library
  • stop-user-enumeration/tags/1.7.1/composer.json

    r3259418 r3282442  
    1717    }
    1818  },
    19   "repositories": {
    20     "alanef/wp_autoloader": {
    21       "type": "vcs",
    22       "url": "https://github.com/alanef/wp_autoloader"
    23     }
     19  "autoload": {
     20    "classmap": [
     21      "."
     22    ]
    2423  },
    2524  "require": {
    2625    "php": ">=7.4",
    27     "alanef/wp_autoloader": "dev-main",
    2826    "alanef/free_plugin_lib": "^v1.0.0",
    2927    "composer/installers": "v1.0.12"
  • stop-user-enumeration/tags/1.7.1/composer.lock

    r3259418 r3282442  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "187c412ec756dec2fbedebfec6885a28",
     7    "content-hash": "5ceeafea73cf4061b84971f875180dce",
    88    "packages": [
    99        {
     
    5252            },
    5353            "time": "2025-02-18T15:16:14+00:00"
    54         },
    55         {
    56             "name": "alanef/wp_autoloader",
    57             "version": "dev-main",
    58             "source": {
    59                 "type": "git",
    60                 "url": "https://github.com/alanef/wp_autoloader.git",
    61                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d"
    62             },
    63             "dist": {
    64                 "type": "zip",
    65                 "url": "https://api.github.com/repos/alanef/wp_autoloader/zipball/ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    66                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    67                 "shasum": ""
    68             },
    69             "default-branch": true,
    70             "type": "library",
    71             "autoload": {
    72                 "psr-4": {
    73                     "Fullworks_WP_Autoloader\\": "src/"
    74                 }
    75             },
    76             "license": [
    77                 "GPL-2.0-or-later"
    78             ],
    79             "authors": [
    80                 {
    81                     "name": "alan",
    82                     "email": "alan@fullworks.net"
    83                 }
    84             ],
    85             "description": "A custom autoloader to comply with WP class file names",
    86             "support": {
    87                 "source": "https://github.com/alanef/wp_autoloader/tree/main",
    88                 "issues": "https://github.com/alanef/wp_autoloader/issues"
    89             },
    90             "time": "2024-10-24T10:54:40+00:00"
    9154        },
    9255        {
     
    182145    "aliases": [],
    183146    "minimum-stability": "stable",
    184     "stability-flags": {
    185         "alanef/wp_autoloader": 20
    186     },
     147    "stability-flags": [],
    187148    "prefer-stable": false,
    188149    "prefer-lowest": false,
  • stop-user-enumeration/tags/1.7.1/frontend/class-frontend.php

    r3259418 r3282442  
    109109        // Get the IP address of the request
    110110        $ip = $this->get_ip();
     111       
     112        // Allow filtering of the IP address for integration with external services
     113        $ip = apply_filters( 'stop_user_enumeration_ip', $ip );
    111114
    112115        // Check if the IP address is valid and logging is enabled in the plugin options
     
    125128            } else {
    126129                // Fallback logging mechanism using error_log
     130                // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- fall back logging
    127131                error_log( "Attempted user enumeration from " . esc_html( $ip ) );
    128132            }
     133           
     134            // Action hook for add-ons to process enumeration attempts (limit login, blocklists, etc.)
     135            do_action( 'stop_user_enumeration_attempt', $ip );
    129136        }
    130137    }
     
    191198                        return $access; // check not exception
    192199                    }
    193                     $this->sue_log();
    194 
    195                     return new WP_Error( 'rest_cannot_access', esc_html__( 'Only authenticated users can access the User endpoint REST API.', 'stop-user-enumeration' ), array( 'status' => rest_authorization_required_code() ) );
     200                   
     201                    // Get IP address for logging and filtering
     202                    $ip = $this->get_ip();
     203                   
     204                    // Filter to allow extensions to determine if blocking should occur
     205                    $should_block = apply_filters( 'stop_user_enumeration_should_block', true, $ip );
     206                   
     207                    if ( $should_block ) {
     208                        $this->sue_log();
     209                        return new WP_Error( 'rest_cannot_access', esc_html__( 'Only authenticated users can access the User endpoint REST API.', 'stop-user-enumeration' ), array( 'status' => rest_authorization_required_code() ) );
     210                    }
    196211                }
    197212            }
  • stop-user-enumeration/tags/1.7.1/includes/vendor/autoload.php

    r3259418 r3282442  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d::getLoader();
     25return ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce::getLoader();
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/autoload_classmap.php

    r3157454 r3282442  
    77
    88return array(
     9    'ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce' => $vendorDir . '/composer/autoload_real.php',
     10    'Composer\\Autoload\\ClassLoader' => $vendorDir . '/composer/ClassLoader.php',
     11    'Composer\\Autoload\\ComposerStaticInit5ceeafea73cf4061b84971f875180dce' => $vendorDir . '/composer/autoload_static.php',
    912    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     13    'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php',
     14    'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
     15    'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
     16    'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
     17    'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
     18    'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
     19    'Composer\\Installers\\CraftInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
     20    'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
     21    'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
     22    'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
     23    'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
     24    'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
     25    'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php',
     26    'Composer\\Installers\\JoomlaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
     27    'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
     28    'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
     29    'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
     30    'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
     31    'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
     32    'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
     33    'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
     34    'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
     35    'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
     36    'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
     37    'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
     38    'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
     39    'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
     40    'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
     41    'Composer\\Installers\\Symfony1Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
     42    'Composer\\Installers\\TYPO3CmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
     43    'Composer\\Installers\\TYPO3FlowInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
     44    'Composer\\Installers\\Test\\CakePHPInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php',
     45    'Composer\\Installers\\Test\\InstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/InstallerTest.php',
     46    'Composer\\Installers\\Test\\MediaWikiInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php',
     47    'Composer\\Installers\\Test\\PiwikInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php',
     48    'Composer\\Installers\\Test\\TestCase' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/TestCase.php',
     49    'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
     50    'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
     51    'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
     52    'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     53    'Fullworks_Free_Plugin_Lib\\Classes\\Advert' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Advert.php',
     54    'Fullworks_Free_Plugin_Lib\\Classes\\Email' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Email.php',
     55    'Fullworks_Free_Plugin_Lib\\Classes\\Security' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Security.php',
     56    'Fullworks_Free_Plugin_Lib\\Main' => $vendorDir . '/alanef/free_plugin_lib/src/Main.php',
     57    'Stop_User_Enumeration\\Admin\\Admin_Pages' => $baseDir . '/admin/class-admin-pages.php',
     58    'Stop_User_Enumeration\\Admin\\Admin_Settings' => $baseDir . '/admin/class-admin-settings.php',
     59    'Stop_User_Enumeration\\FrontEnd\\FrontEnd' => $baseDir . '/frontend/class-frontend.php',
     60    'Stop_User_Enumeration\\Includes\\Activator' => $baseDir . '/includes/class-activator.php',
     61    'Stop_User_Enumeration\\Includes\\Core' => $baseDir . '/includes/class-core.php',
     62    'Stop_User_Enumeration\\Includes\\Loader' => $baseDir . '/includes/class-loader.php',
     63    'Stop_User_Enumeration\\Includes\\Uninstall' => $baseDir . '/includes/class-uninstall.php',
     64    'Stop_User_Enumeration\\Includes\\i18n' => $baseDir . '/includes/class-i18n.php',
    1065);
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/autoload_psr4.php

    r3259418 r3282442  
    77
    88return array(
    9     'Fullworks_WP_Autoloader\\' => array($vendorDir . '/alanef/wp_autoloader/src'),
    109    'Fullworks_Free_Plugin_Lib\\' => array($vendorDir . '/alanef/free_plugin_lib/src'),
    1110);
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/autoload_real.php

    r3259418 r3282442  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d
     5class ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit5ceeafea73cf4061b84971f875180dce::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/autoload_static.php

    r3259418 r3282442  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d
     7class ComposerStaticInit5ceeafea73cf4061b84971f875180dce
    88{
    99    public static $prefixLengthsPsr4 = array (
    1010        'F' =>
    1111        array (
    12             'Fullworks_WP_Autoloader\\' => 24,
    1312            'Fullworks_Free_Plugin_Lib\\' => 26,
    1413        ),
     
    1615
    1716    public static $prefixDirsPsr4 = array (
    18         'Fullworks_WP_Autoloader\\' =>
    19         array (
    20             0 => __DIR__ . '/..' . '/alanef/wp_autoloader/src',
    21         ),
    2217        'Fullworks_Free_Plugin_Lib\\' =>
    2318        array (
     
    3732
    3833    public static $classMap = array (
     34        'ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce' => __DIR__ . '/..' . '/composer/autoload_real.php',
     35        'Composer\\Autoload\\ClassLoader' => __DIR__ . '/..' . '/composer/ClassLoader.php',
     36        'Composer\\Autoload\\ComposerStaticInit5ceeafea73cf4061b84971f875180dce' => __DIR__ . '/..' . '/composer/autoload_static.php',
    3937        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
     38        'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php',
     39        'Composer\\Installers\\AnnotateCmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
     40        'Composer\\Installers\\BaseInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
     41        'Composer\\Installers\\CakePHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
     42        'Composer\\Installers\\CodeIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
     43        'Composer\\Installers\\Concrete5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
     44        'Composer\\Installers\\CraftInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
     45        'Composer\\Installers\\CroogoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
     46        'Composer\\Installers\\DrupalInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
     47        'Composer\\Installers\\ElggInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
     48        'Composer\\Installers\\FuelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
     49        'Composer\\Installers\\HuradInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
     50        'Composer\\Installers\\Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Installer.php',
     51        'Composer\\Installers\\JoomlaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
     52        'Composer\\Installers\\KohanaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
     53        'Composer\\Installers\\LaravelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
     54        'Composer\\Installers\\LithiumInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
     55        'Composer\\Installers\\MODULEWorkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
     56        'Composer\\Installers\\MODXEvoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
     57        'Composer\\Installers\\MagentoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
     58        'Composer\\Installers\\MakoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
     59        'Composer\\Installers\\MediaWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
     60        'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
     61        'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
     62        'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
     63        'Composer\\Installers\\PiwikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
     64        'Composer\\Installers\\ShopwareInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
     65        'Composer\\Installers\\SilverStripeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
     66        'Composer\\Installers\\Symfony1Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
     67        'Composer\\Installers\\TYPO3CmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
     68        'Composer\\Installers\\TYPO3FlowInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
     69        'Composer\\Installers\\Test\\CakePHPInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php',
     70        'Composer\\Installers\\Test\\InstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/InstallerTest.php',
     71        'Composer\\Installers\\Test\\MediaWikiInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php',
     72        'Composer\\Installers\\Test\\PiwikInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php',
     73        'Composer\\Installers\\Test\\TestCase' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/TestCase.php',
     74        'Composer\\Installers\\WolfCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
     75        'Composer\\Installers\\WordPressInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
     76        'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
     77        'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     78        'Fullworks_Free_Plugin_Lib\\Classes\\Advert' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Advert.php',
     79        'Fullworks_Free_Plugin_Lib\\Classes\\Email' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Email.php',
     80        'Fullworks_Free_Plugin_Lib\\Classes\\Security' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Security.php',
     81        'Fullworks_Free_Plugin_Lib\\Main' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Main.php',
     82        'Stop_User_Enumeration\\Admin\\Admin_Pages' => __DIR__ . '/../../..' . '/admin/class-admin-pages.php',
     83        'Stop_User_Enumeration\\Admin\\Admin_Settings' => __DIR__ . '/../../..' . '/admin/class-admin-settings.php',
     84        'Stop_User_Enumeration\\FrontEnd\\FrontEnd' => __DIR__ . '/../../..' . '/frontend/class-frontend.php',
     85        'Stop_User_Enumeration\\Includes\\Activator' => __DIR__ . '/../../..' . '/includes/class-activator.php',
     86        'Stop_User_Enumeration\\Includes\\Core' => __DIR__ . '/../../..' . '/includes/class-core.php',
     87        'Stop_User_Enumeration\\Includes\\Loader' => __DIR__ . '/../../..' . '/includes/class-loader.php',
     88        'Stop_User_Enumeration\\Includes\\Uninstall' => __DIR__ . '/../../..' . '/includes/class-uninstall.php',
     89        'Stop_User_Enumeration\\Includes\\i18n' => __DIR__ . '/../../..' . '/includes/class-i18n.php',
    4090    );
    4191
     
    4393    {
    4494        return \Closure::bind(function () use ($loader) {
    45             $loader->prefixLengthsPsr4 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixLengthsPsr4;
    46             $loader->prefixDirsPsr4 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixDirsPsr4;
    47             $loader->prefixesPsr0 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixesPsr0;
    48             $loader->classMap = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$classMap;
     95            $loader->prefixLengthsPsr4 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixLengthsPsr4;
     96            $loader->prefixDirsPsr4 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixDirsPsr4;
     97            $loader->prefixesPsr0 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixesPsr0;
     98            $loader->classMap = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$classMap;
    4999
    50100        }, null, ClassLoader::class);
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/installed.json

    r3259418 r3282442  
    4949            },
    5050            "install-path": "../alanef/free_plugin_lib"
    51         },
    52         {
    53             "name": "alanef/wp_autoloader",
    54             "version": "dev-main",
    55             "version_normalized": "dev-main",
    56             "source": {
    57                 "type": "git",
    58                 "url": "https://github.com/alanef/wp_autoloader.git",
    59                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d"
    60             },
    61             "dist": {
    62                 "type": "zip",
    63                 "url": "https://api.github.com/repos/alanef/wp_autoloader/zipball/ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    64                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    65                 "shasum": ""
    66             },
    67             "time": "2024-10-24T10:54:40+00:00",
    68             "default-branch": true,
    69             "type": "library",
    70             "installation-source": "dist",
    71             "autoload": {
    72                 "psr-4": {
    73                     "Fullworks_WP_Autoloader\\": "src/"
    74                 }
    75             },
    76             "license": [
    77                 "GPL-2.0-or-later"
    78             ],
    79             "authors": [
    80                 {
    81                     "name": "alan",
    82                     "email": "alan@fullworks.net"
    83                 }
    84             ],
    85             "description": "A custom autoloader to comply with WP class file names",
    86             "support": {
    87                 "source": "https://github.com/alanef/wp_autoloader/tree/main",
    88                 "issues": "https://github.com/alanef/wp_autoloader/issues"
    89             },
    90             "install-path": "../alanef/wp_autoloader"
    9151        },
    9252        {
  • stop-user-enumeration/tags/1.7.1/includes/vendor/composer/installed.php

    r3259418 r3282442  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => '1f9d8726d88cd70e9fc59f7461034796df8ce1a2',
     6        'reference' => 'df3c3d40306aa96fb00e8506f9aeba9ba9a477a1',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../../',
     
    2020            'dev_requirement' => false,
    2121        ),
    22         'alanef/wp_autoloader' => array(
    23             'pretty_version' => 'dev-main',
    24             'version' => 'dev-main',
    25             'reference' => 'ab82c9014dd47efbe72cb3612c2a57715bcb212d',
    26             'type' => 'library',
    27             'install_path' => __DIR__ . '/../alanef/wp_autoloader',
    28             'aliases' => array(
    29                 0 => '9999999-dev',
    30             ),
    31             'dev_requirement' => false,
    32         ),
    3322        'composer/installers' => array(
    3423            'pretty_version' => 'v1.0.12',
     
    4332            'pretty_version' => 'dev-main',
    4433            'version' => 'dev-main',
    45             'reference' => '1f9d8726d88cd70e9fc59f7461034796df8ce1a2',
     34            'reference' => 'df3c3d40306aa96fb00e8506f9aeba9ba9a477a1',
    4635            'type' => 'wordpress-plugin',
    4736            'install_path' => __DIR__ . '/../../../',
  • stop-user-enumeration/tags/1.7.1/languages/stop-user-enumeration.pot

    r3259418 r3282442  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Stop User Enumeration 1.7\n"
     5"Project-Id-Version: Stop User Enumeration 1.7.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/stop-user-enumeration\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-03-20T17:26:47+00:00\n"
     12"POT-Creation-Date: 2025-04-26T15:20:35+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.10.0\n"
     
    1717#. Plugin Name of the plugin
    1818#: stop-user-enumeration.php
    19 #: admin/class-admin-settings.php:35
     19#: admin/class-admin-pages.php:28
    2020msgid "Stop User Enumeration"
    2121msgstr ""
     
    4141msgstr ""
    4242
    43 #: admin/class-admin-pages.php:156
     43#: admin/class-admin-pages.php:157
    4444msgid "Save Options"
    4545msgstr ""
    4646
    47 #: admin/class-admin-pages.php:182
     47#: admin/class-admin-pages.php:183
    4848msgid "Save"
    4949msgstr ""
    5050
    51 #: admin/class-admin-pages.php:193
     51#: admin/class-admin-pages.php:194
    5252msgid "Settings reset to defaults."
    5353msgstr ""
    5454
    55 #: admin/class-admin-settings.php:91
     55#: admin/class-admin-settings.php:95
    5656msgid "Information"
    5757msgstr ""
    5858
    59 #: admin/class-admin-settings.php:99
     59#: admin/class-admin-settings.php:103
    6060msgid "Options"
    6161msgstr ""
    6262
    63 #: admin/class-admin-settings.php:113
     63#: admin/class-admin-settings.php:118
    6464msgid "About this Plugin"
    6565msgstr ""
    6666
    67 #: admin/class-admin-settings.php:115
     67#: admin/class-admin-settings.php:120
    6868msgid "Stop User Enumeration detects attempts by malicious scanners to identify your users"
    6969msgstr ""
    7070
    71 #: admin/class-admin-settings.php:119
     71#: admin/class-admin-settings.php:124
    7272msgid ""
    7373"If a bot or user is caught scanning for user names they are denied access and their IP is\n"
     
    7575msgstr ""
    7676
    77 #: admin/class-admin-settings.php:128
     77#: admin/class-admin-settings.php:133
    7878msgid ""
    7979"When you are viewing an admin page, the plugin does nothing, this is designed this way as it is\n"
     
    8181msgstr ""
    8282
    83 #: admin/class-admin-settings.php:137
     83#: admin/class-admin-settings.php:142
    8484msgid ""
    8585"This plugin is best used in conjunction with a blocking tool to exclude the IP for longer. If you\n"
     
    8787msgstr ""
    8888
    89 #: admin/class-admin-settings.php:145
     89#: admin/class-admin-settings.php:150
    9090msgid "Also note: It is very common for users to leave their Display Name and Nickname the same as their Username, in which case the Username is leaked by so many things. Best to check at least your admins don't do this"
    9191msgstr ""
    9292
    93 #: admin/class-admin-settings.php:198
     93#: admin/class-admin-settings.php:203
    9494msgid "Stop REST API User calls"
    9595msgstr ""
    9696
    97 #: admin/class-admin-settings.php:205
     97#: admin/class-admin-settings.php:210
    9898msgid "WordPress allows anyone to find users by API call, by checking this box the calls will be restricted to logged in users only. Only untick this box if you need to allow unfettered API access to users"
    9999msgstr ""
    100100
    101 #: admin/class-admin-settings.php:210
     101#: admin/class-admin-settings.php:215
    102102msgid "Stop oEmbed calls revealing user ids"
    103103msgstr ""
    104104
    105 #: admin/class-admin-settings.php:217
     105#: admin/class-admin-settings.php:222
    106106msgid "WordPress reveals the user login ID through oEmbed calls by including the Author Archive link which contains the user id. When in many cases just the Author Name is enough. Note: remember it is not good idea to have login user id equal to your display name"
    107107msgstr ""
    108108
    109 #: admin/class-admin-settings.php:222
     109#: admin/class-admin-settings.php:227
    110110msgid "Disable WP Core Author sitemaps"
    111111msgstr ""
    112112
    113 #: admin/class-admin-settings.php:229
     113#: admin/class-admin-settings.php:234
    114114msgid "WordPress provides sitemaps for built-in content types like pages and author archives out of the box. The Author sitemap exposes the user id."
    115115msgstr ""
    116116
    117 #: admin/class-admin-settings.php:234
     117#: admin/class-admin-settings.php:239
    118118msgid "log attempts to AUTH LOG"
    119119msgstr ""
    120120
    121121#. translators: leave place holders
    122 #: admin/class-admin-settings.php:244
     122#: admin/class-admin-settings.php:249
    123123msgid "Leave this ticked if you are using %1$sFail2Ban%2$s on your VPS to block attempts at enumeration.%3$s If you are not running Fail2Ban or on a shared host this does not need to be ticked, however it normally will not cause a problem being ticked."
    124124msgstr ""
    125125
    126 #: admin/class-admin-settings.php:257
     126#: admin/class-admin-settings.php:262
    127127msgid "Remove numbers from comment authors"
    128128msgstr ""
    129129
    130 #: admin/class-admin-settings.php:265
     130#: admin/class-admin-settings.php:270
    131131msgid "This plugin uses JavaScript to remove any numbers from a comment author name, this is because numbers trigger enumeration checking. You can untick this if you do not use comments on your site or you use a different comment method than standard"
    132132msgstr ""
    133133
    134 #: frontend/class-frontend.php:67
     134#: frontend/class-frontend.php:80
    135135msgid "forbidden - number in author name not allowed = "
    136136msgstr ""
    137137
    138 #: frontend/class-frontend.php:128
     138#: frontend/class-frontend.php:209
    139139msgid "Only authenticated users can access the User endpoint REST API."
    140140msgstr ""
  • stop-user-enumeration/tags/1.7.1/readme.txt

    r3259418 r3282442  
    44Tags: User Enumeration, Security, WPSCAN, fail2ban, security
    55Requires at least: 6.3
    6 Tested up to: 6.7
     6Tested up to: 6.8
    77Requires PHP: 7.4
    8 Stable tag: 1.7
     8Stable tag: 1.7.1
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    7171Also usernames containing numbers may not work in the front end.  Additionally the default rule for   Rest APi is anything with users in it, so other plugins may set up endpoints.
    7272= How can I change the Rest API match rules =
    73 There are two filters `stop_user_enumeration_rest_stop_match` set  to `/users/i` by default and `stop_user_enumeration_rest_allow_match` set to `simple-jwt-login` by default ( to allow that plugin's endpoints )
     73There are two filters `stop_user_enumeration_rest_stop_match` set  to `/users/i` by default and `stop_user_enumeration_rest_allowed_match` set to `simple-jwt-login` by default ( to allow that plugin's endpoints )
     74
     75= Developer Hooks and Filters =
     76The following hooks and filters are available for developers:
     77
     78**Filters:**
     79* `stop_user_enumeration_rest_stop_match` - Modify the pattern used to detect REST API user queries (default: `/users/i`)
     80* `stop_user_enumeration_rest_allowed_match` - Add exceptions to the REST API blocking rules (default: `/simple-jwt-login/i`)
     81* `stop_user_enumeration_ip` - Filter the detected IP address before logging or processing (useful for integration with CDNs or proxies)
     82* `stop_user_enumeration_should_block` - Determine if a request should be blocked based on IP or other conditions (return false to allow the request)
     83
     84**Actions:**
     85* `stop_user_enumeration_attempt` - Triggered when user enumeration attempt is detected and logged (passes the IP address as parameter)
     86
     87These hooks enable add-on features like limit login attempts, block lists, WAF notifications, and integration with external services like Cloudflare.
    7488= Do I need fail2ban for this to work? =
    7589No, but fail2ban will allow you to block IP addresses at your VPS / Dedicated server firewall that attempt user enumeration.
  • stop-user-enumeration/tags/1.7.1/stop-user-enumeration.php

    r3259418 r3282442  
    44Plugin URI: https://fullworksplugins.com/products/stop-user-enumeration/
    55Description: Helps secure your site against hacking attacks through detecting  User Enumeration
    6 Version: 1.7
     6Version: 1.7.1
    77Author: Fullworks
    88Requires at least: 6.3
     
    3232namespace Stop_User_Enumeration;
    3333
    34 use Fullworks_WP_Autoloader\AutoloaderPlugin;
    3534use Stop_User_Enumeration\Includes\Core;
    3635
     
    4847// Include the autoloader to dynamically include the classes.
    4948require_once STOP_USER_ENUMERATION_PLUGIN_DIR  . 'includes/vendor/autoload.php';
    50 new AutoloaderPlugin(__NAMESPACE__, __DIR__);
    5149
    5250/**
  • stop-user-enumeration/trunk/admin/class-admin-pages.php

    r2638659 r3282442  
    2626
    2727    public function settings_setup() {
     28        $this->settings_title = esc_html__( 'Stop User Enumeration', 'stop-user-enumeration' );
    2829        add_submenu_page(
    2930            'options-general.php',
  • stop-user-enumeration/trunk/admin/class-admin-settings.php

    r3259418 r3282442  
    3333        $this->plugin_name    = $plugin_name;
    3434        $this->version        = $version;
    35         $this->settings_title = esc_html__( 'Stop User Enumeration', 'stop-user-enumeration' );
    3635        parent::__construct();
    3736        new \Fullworks_Free_Plugin_Lib\Main('stop-user-enumeration/stop-user-enumeration.php',
  • stop-user-enumeration/trunk/changelog.txt

    r3259418 r3282442  
    11== Changelog ==
     2= 1.7.1 =
     3* add developer hooks and filters for extending plugin functionality
     4* added stop_user_enumeration_ip filter to allow modifying detected IP addresses
     5* added stop_user_enumeration_should_block filter to conditionally allow or block requests
     6* added stop_user_enumeration_attempt action hook for processing enumeration attempts
     7* fix doing_it_wrong notice  for WP 6.8
     8
    29= 1.7 =
    310* add opt in library
  • stop-user-enumeration/trunk/composer.json

    r3259418 r3282442  
    1717    }
    1818  },
    19   "repositories": {
    20     "alanef/wp_autoloader": {
    21       "type": "vcs",
    22       "url": "https://github.com/alanef/wp_autoloader"
    23     }
     19  "autoload": {
     20    "classmap": [
     21      "."
     22    ]
    2423  },
    2524  "require": {
    2625    "php": ">=7.4",
    27     "alanef/wp_autoloader": "dev-main",
    2826    "alanef/free_plugin_lib": "^v1.0.0",
    2927    "composer/installers": "v1.0.12"
  • stop-user-enumeration/trunk/composer.lock

    r3259418 r3282442  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "187c412ec756dec2fbedebfec6885a28",
     7    "content-hash": "5ceeafea73cf4061b84971f875180dce",
    88    "packages": [
    99        {
     
    5252            },
    5353            "time": "2025-02-18T15:16:14+00:00"
    54         },
    55         {
    56             "name": "alanef/wp_autoloader",
    57             "version": "dev-main",
    58             "source": {
    59                 "type": "git",
    60                 "url": "https://github.com/alanef/wp_autoloader.git",
    61                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d"
    62             },
    63             "dist": {
    64                 "type": "zip",
    65                 "url": "https://api.github.com/repos/alanef/wp_autoloader/zipball/ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    66                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    67                 "shasum": ""
    68             },
    69             "default-branch": true,
    70             "type": "library",
    71             "autoload": {
    72                 "psr-4": {
    73                     "Fullworks_WP_Autoloader\\": "src/"
    74                 }
    75             },
    76             "license": [
    77                 "GPL-2.0-or-later"
    78             ],
    79             "authors": [
    80                 {
    81                     "name": "alan",
    82                     "email": "alan@fullworks.net"
    83                 }
    84             ],
    85             "description": "A custom autoloader to comply with WP class file names",
    86             "support": {
    87                 "source": "https://github.com/alanef/wp_autoloader/tree/main",
    88                 "issues": "https://github.com/alanef/wp_autoloader/issues"
    89             },
    90             "time": "2024-10-24T10:54:40+00:00"
    9154        },
    9255        {
     
    182145    "aliases": [],
    183146    "minimum-stability": "stable",
    184     "stability-flags": {
    185         "alanef/wp_autoloader": 20
    186     },
     147    "stability-flags": [],
    187148    "prefer-stable": false,
    188149    "prefer-lowest": false,
  • stop-user-enumeration/trunk/frontend/class-frontend.php

    r3259418 r3282442  
    109109        // Get the IP address of the request
    110110        $ip = $this->get_ip();
     111       
     112        // Allow filtering of the IP address for integration with external services
     113        $ip = apply_filters( 'stop_user_enumeration_ip', $ip );
    111114
    112115        // Check if the IP address is valid and logging is enabled in the plugin options
     
    125128            } else {
    126129                // Fallback logging mechanism using error_log
     130                // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- fall back logging
    127131                error_log( "Attempted user enumeration from " . esc_html( $ip ) );
    128132            }
     133           
     134            // Action hook for add-ons to process enumeration attempts (limit login, blocklists, etc.)
     135            do_action( 'stop_user_enumeration_attempt', $ip );
    129136        }
    130137    }
     
    191198                        return $access; // check not exception
    192199                    }
    193                     $this->sue_log();
    194 
    195                     return new WP_Error( 'rest_cannot_access', esc_html__( 'Only authenticated users can access the User endpoint REST API.', 'stop-user-enumeration' ), array( 'status' => rest_authorization_required_code() ) );
     200                   
     201                    // Get IP address for logging and filtering
     202                    $ip = $this->get_ip();
     203                   
     204                    // Filter to allow extensions to determine if blocking should occur
     205                    $should_block = apply_filters( 'stop_user_enumeration_should_block', true, $ip );
     206                   
     207                    if ( $should_block ) {
     208                        $this->sue_log();
     209                        return new WP_Error( 'rest_cannot_access', esc_html__( 'Only authenticated users can access the User endpoint REST API.', 'stop-user-enumeration' ), array( 'status' => rest_authorization_required_code() ) );
     210                    }
    196211                }
    197212            }
  • stop-user-enumeration/trunk/includes/vendor/autoload.php

    r3259418 r3282442  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d::getLoader();
     25return ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce::getLoader();
  • stop-user-enumeration/trunk/includes/vendor/composer/autoload_classmap.php

    r3157454 r3282442  
    77
    88return array(
     9    'ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce' => $vendorDir . '/composer/autoload_real.php',
     10    'Composer\\Autoload\\ClassLoader' => $vendorDir . '/composer/ClassLoader.php',
     11    'Composer\\Autoload\\ComposerStaticInit5ceeafea73cf4061b84971f875180dce' => $vendorDir . '/composer/autoload_static.php',
    912    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     13    'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php',
     14    'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
     15    'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
     16    'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
     17    'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
     18    'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
     19    'Composer\\Installers\\CraftInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
     20    'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
     21    'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
     22    'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
     23    'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
     24    'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
     25    'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php',
     26    'Composer\\Installers\\JoomlaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
     27    'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
     28    'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
     29    'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
     30    'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
     31    'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
     32    'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
     33    'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
     34    'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
     35    'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
     36    'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
     37    'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
     38    'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
     39    'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
     40    'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
     41    'Composer\\Installers\\Symfony1Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
     42    'Composer\\Installers\\TYPO3CmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
     43    'Composer\\Installers\\TYPO3FlowInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
     44    'Composer\\Installers\\Test\\CakePHPInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php',
     45    'Composer\\Installers\\Test\\InstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/InstallerTest.php',
     46    'Composer\\Installers\\Test\\MediaWikiInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php',
     47    'Composer\\Installers\\Test\\PiwikInstallerTest' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php',
     48    'Composer\\Installers\\Test\\TestCase' => $vendorDir . '/composer/installers/tests/Composer/Installers/Test/TestCase.php',
     49    'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
     50    'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
     51    'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
     52    'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     53    'Fullworks_Free_Plugin_Lib\\Classes\\Advert' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Advert.php',
     54    'Fullworks_Free_Plugin_Lib\\Classes\\Email' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Email.php',
     55    'Fullworks_Free_Plugin_Lib\\Classes\\Security' => $vendorDir . '/alanef/free_plugin_lib/src/Classes/Security.php',
     56    'Fullworks_Free_Plugin_Lib\\Main' => $vendorDir . '/alanef/free_plugin_lib/src/Main.php',
     57    'Stop_User_Enumeration\\Admin\\Admin_Pages' => $baseDir . '/admin/class-admin-pages.php',
     58    'Stop_User_Enumeration\\Admin\\Admin_Settings' => $baseDir . '/admin/class-admin-settings.php',
     59    'Stop_User_Enumeration\\FrontEnd\\FrontEnd' => $baseDir . '/frontend/class-frontend.php',
     60    'Stop_User_Enumeration\\Includes\\Activator' => $baseDir . '/includes/class-activator.php',
     61    'Stop_User_Enumeration\\Includes\\Core' => $baseDir . '/includes/class-core.php',
     62    'Stop_User_Enumeration\\Includes\\Loader' => $baseDir . '/includes/class-loader.php',
     63    'Stop_User_Enumeration\\Includes\\Uninstall' => $baseDir . '/includes/class-uninstall.php',
     64    'Stop_User_Enumeration\\Includes\\i18n' => $baseDir . '/includes/class-i18n.php',
    1065);
  • stop-user-enumeration/trunk/includes/vendor/composer/autoload_psr4.php

    r3259418 r3282442  
    77
    88return array(
    9     'Fullworks_WP_Autoloader\\' => array($vendorDir . '/alanef/wp_autoloader/src'),
    109    'Fullworks_Free_Plugin_Lib\\' => array($vendorDir . '/alanef/free_plugin_lib/src'),
    1110);
  • stop-user-enumeration/trunk/includes/vendor/composer/autoload_real.php

    r3259418 r3282442  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d
     5class ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit26453b414d4d8df0e1a74d359d301a2d', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit5ceeafea73cf4061b84971f875180dce::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • stop-user-enumeration/trunk/includes/vendor/composer/autoload_static.php

    r3259418 r3282442  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d
     7class ComposerStaticInit5ceeafea73cf4061b84971f875180dce
    88{
    99    public static $prefixLengthsPsr4 = array (
    1010        'F' =>
    1111        array (
    12             'Fullworks_WP_Autoloader\\' => 24,
    1312            'Fullworks_Free_Plugin_Lib\\' => 26,
    1413        ),
     
    1615
    1716    public static $prefixDirsPsr4 = array (
    18         'Fullworks_WP_Autoloader\\' =>
    19         array (
    20             0 => __DIR__ . '/..' . '/alanef/wp_autoloader/src',
    21         ),
    2217        'Fullworks_Free_Plugin_Lib\\' =>
    2318        array (
     
    3732
    3833    public static $classMap = array (
     34        'ComposerAutoloaderInit5ceeafea73cf4061b84971f875180dce' => __DIR__ . '/..' . '/composer/autoload_real.php',
     35        'Composer\\Autoload\\ClassLoader' => __DIR__ . '/..' . '/composer/ClassLoader.php',
     36        'Composer\\Autoload\\ComposerStaticInit5ceeafea73cf4061b84971f875180dce' => __DIR__ . '/..' . '/composer/autoload_static.php',
    3937        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
     38        'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php',
     39        'Composer\\Installers\\AnnotateCmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php',
     40        'Composer\\Installers\\BaseInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BaseInstaller.php',
     41        'Composer\\Installers\\CakePHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php',
     42        'Composer\\Installers\\CodeIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php',
     43        'Composer\\Installers\\Concrete5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Concrete5Installer.php',
     44        'Composer\\Installers\\CraftInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CraftInstaller.php',
     45        'Composer\\Installers\\CroogoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CroogoInstaller.php',
     46        'Composer\\Installers\\DrupalInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DrupalInstaller.php',
     47        'Composer\\Installers\\ElggInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ElggInstaller.php',
     48        'Composer\\Installers\\FuelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelInstaller.php',
     49        'Composer\\Installers\\HuradInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/HuradInstaller.php',
     50        'Composer\\Installers\\Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Installer.php',
     51        'Composer\\Installers\\JoomlaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/JoomlaInstaller.php',
     52        'Composer\\Installers\\KohanaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KohanaInstaller.php',
     53        'Composer\\Installers\\LaravelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LaravelInstaller.php',
     54        'Composer\\Installers\\LithiumInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LithiumInstaller.php',
     55        'Composer\\Installers\\MODULEWorkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php',
     56        'Composer\\Installers\\MODXEvoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php',
     57        'Composer\\Installers\\MagentoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MagentoInstaller.php',
     58        'Composer\\Installers\\MakoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MakoInstaller.php',
     59        'Composer\\Installers\\MediaWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php',
     60        'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php',
     61        'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php',
     62        'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php',
     63        'Composer\\Installers\\PiwikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PiwikInstaller.php',
     64        'Composer\\Installers\\ShopwareInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php',
     65        'Composer\\Installers\\SilverStripeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php',
     66        'Composer\\Installers\\Symfony1Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Symfony1Installer.php',
     67        'Composer\\Installers\\TYPO3CmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php',
     68        'Composer\\Installers\\TYPO3FlowInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php',
     69        'Composer\\Installers\\Test\\CakePHPInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php',
     70        'Composer\\Installers\\Test\\InstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/InstallerTest.php',
     71        'Composer\\Installers\\Test\\MediaWikiInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/MediaWikiInstallerTest.php',
     72        'Composer\\Installers\\Test\\PiwikInstallerTest' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php',
     73        'Composer\\Installers\\Test\\TestCase' => __DIR__ . '/..' . '/composer/installers/tests/Composer/Installers/Test/TestCase.php',
     74        'Composer\\Installers\\WolfCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php',
     75        'Composer\\Installers\\WordPressInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WordPressInstaller.php',
     76        'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
     77        'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     78        'Fullworks_Free_Plugin_Lib\\Classes\\Advert' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Advert.php',
     79        'Fullworks_Free_Plugin_Lib\\Classes\\Email' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Email.php',
     80        'Fullworks_Free_Plugin_Lib\\Classes\\Security' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Classes/Security.php',
     81        'Fullworks_Free_Plugin_Lib\\Main' => __DIR__ . '/..' . '/alanef/free_plugin_lib/src/Main.php',
     82        'Stop_User_Enumeration\\Admin\\Admin_Pages' => __DIR__ . '/../../..' . '/admin/class-admin-pages.php',
     83        'Stop_User_Enumeration\\Admin\\Admin_Settings' => __DIR__ . '/../../..' . '/admin/class-admin-settings.php',
     84        'Stop_User_Enumeration\\FrontEnd\\FrontEnd' => __DIR__ . '/../../..' . '/frontend/class-frontend.php',
     85        'Stop_User_Enumeration\\Includes\\Activator' => __DIR__ . '/../../..' . '/includes/class-activator.php',
     86        'Stop_User_Enumeration\\Includes\\Core' => __DIR__ . '/../../..' . '/includes/class-core.php',
     87        'Stop_User_Enumeration\\Includes\\Loader' => __DIR__ . '/../../..' . '/includes/class-loader.php',
     88        'Stop_User_Enumeration\\Includes\\Uninstall' => __DIR__ . '/../../..' . '/includes/class-uninstall.php',
     89        'Stop_User_Enumeration\\Includes\\i18n' => __DIR__ . '/../../..' . '/includes/class-i18n.php',
    4090    );
    4191
     
    4393    {
    4494        return \Closure::bind(function () use ($loader) {
    45             $loader->prefixLengthsPsr4 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixLengthsPsr4;
    46             $loader->prefixDirsPsr4 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixDirsPsr4;
    47             $loader->prefixesPsr0 = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$prefixesPsr0;
    48             $loader->classMap = ComposerStaticInit26453b414d4d8df0e1a74d359d301a2d::$classMap;
     95            $loader->prefixLengthsPsr4 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixLengthsPsr4;
     96            $loader->prefixDirsPsr4 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixDirsPsr4;
     97            $loader->prefixesPsr0 = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$prefixesPsr0;
     98            $loader->classMap = ComposerStaticInit5ceeafea73cf4061b84971f875180dce::$classMap;
    4999
    50100        }, null, ClassLoader::class);
  • stop-user-enumeration/trunk/includes/vendor/composer/installed.json

    r3259418 r3282442  
    4949            },
    5050            "install-path": "../alanef/free_plugin_lib"
    51         },
    52         {
    53             "name": "alanef/wp_autoloader",
    54             "version": "dev-main",
    55             "version_normalized": "dev-main",
    56             "source": {
    57                 "type": "git",
    58                 "url": "https://github.com/alanef/wp_autoloader.git",
    59                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d"
    60             },
    61             "dist": {
    62                 "type": "zip",
    63                 "url": "https://api.github.com/repos/alanef/wp_autoloader/zipball/ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    64                 "reference": "ab82c9014dd47efbe72cb3612c2a57715bcb212d",
    65                 "shasum": ""
    66             },
    67             "time": "2024-10-24T10:54:40+00:00",
    68             "default-branch": true,
    69             "type": "library",
    70             "installation-source": "dist",
    71             "autoload": {
    72                 "psr-4": {
    73                     "Fullworks_WP_Autoloader\\": "src/"
    74                 }
    75             },
    76             "license": [
    77                 "GPL-2.0-or-later"
    78             ],
    79             "authors": [
    80                 {
    81                     "name": "alan",
    82                     "email": "alan@fullworks.net"
    83                 }
    84             ],
    85             "description": "A custom autoloader to comply with WP class file names",
    86             "support": {
    87                 "source": "https://github.com/alanef/wp_autoloader/tree/main",
    88                 "issues": "https://github.com/alanef/wp_autoloader/issues"
    89             },
    90             "install-path": "../alanef/wp_autoloader"
    9151        },
    9252        {
  • stop-user-enumeration/trunk/includes/vendor/composer/installed.php

    r3259418 r3282442  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => '1f9d8726d88cd70e9fc59f7461034796df8ce1a2',
     6        'reference' => 'df3c3d40306aa96fb00e8506f9aeba9ba9a477a1',
    77        'type' => 'wordpress-plugin',
    88        'install_path' => __DIR__ . '/../../../',
     
    2020            'dev_requirement' => false,
    2121        ),
    22         'alanef/wp_autoloader' => array(
    23             'pretty_version' => 'dev-main',
    24             'version' => 'dev-main',
    25             'reference' => 'ab82c9014dd47efbe72cb3612c2a57715bcb212d',
    26             'type' => 'library',
    27             'install_path' => __DIR__ . '/../alanef/wp_autoloader',
    28             'aliases' => array(
    29                 0 => '9999999-dev',
    30             ),
    31             'dev_requirement' => false,
    32         ),
    3322        'composer/installers' => array(
    3423            'pretty_version' => 'v1.0.12',
     
    4332            'pretty_version' => 'dev-main',
    4433            'version' => 'dev-main',
    45             'reference' => '1f9d8726d88cd70e9fc59f7461034796df8ce1a2',
     34            'reference' => 'df3c3d40306aa96fb00e8506f9aeba9ba9a477a1',
    4635            'type' => 'wordpress-plugin',
    4736            'install_path' => __DIR__ . '/../../../',
  • stop-user-enumeration/trunk/languages/stop-user-enumeration.pot

    r3259418 r3282442  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Stop User Enumeration 1.7\n"
     5"Project-Id-Version: Stop User Enumeration 1.7.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/stop-user-enumeration\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
     
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-03-20T17:26:47+00:00\n"
     12"POT-Creation-Date: 2025-04-26T15:20:35+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.10.0\n"
     
    1717#. Plugin Name of the plugin
    1818#: stop-user-enumeration.php
    19 #: admin/class-admin-settings.php:35
     19#: admin/class-admin-pages.php:28
    2020msgid "Stop User Enumeration"
    2121msgstr ""
     
    4141msgstr ""
    4242
    43 #: admin/class-admin-pages.php:156
     43#: admin/class-admin-pages.php:157
    4444msgid "Save Options"
    4545msgstr ""
    4646
    47 #: admin/class-admin-pages.php:182
     47#: admin/class-admin-pages.php:183
    4848msgid "Save"
    4949msgstr ""
    5050
    51 #: admin/class-admin-pages.php:193
     51#: admin/class-admin-pages.php:194
    5252msgid "Settings reset to defaults."
    5353msgstr ""
    5454
    55 #: admin/class-admin-settings.php:91
     55#: admin/class-admin-settings.php:95
    5656msgid "Information"
    5757msgstr ""
    5858
    59 #: admin/class-admin-settings.php:99
     59#: admin/class-admin-settings.php:103
    6060msgid "Options"
    6161msgstr ""
    6262
    63 #: admin/class-admin-settings.php:113
     63#: admin/class-admin-settings.php:118
    6464msgid "About this Plugin"
    6565msgstr ""
    6666
    67 #: admin/class-admin-settings.php:115
     67#: admin/class-admin-settings.php:120
    6868msgid "Stop User Enumeration detects attempts by malicious scanners to identify your users"
    6969msgstr ""
    7070
    71 #: admin/class-admin-settings.php:119
     71#: admin/class-admin-settings.php:124
    7272msgid ""
    7373"If a bot or user is caught scanning for user names they are denied access and their IP is\n"
     
    7575msgstr ""
    7676
    77 #: admin/class-admin-settings.php:128
     77#: admin/class-admin-settings.php:133
    7878msgid ""
    7979"When you are viewing an admin page, the plugin does nothing, this is designed this way as it is\n"
     
    8181msgstr ""
    8282
    83 #: admin/class-admin-settings.php:137
     83#: admin/class-admin-settings.php:142
    8484msgid ""
    8585"This plugin is best used in conjunction with a blocking tool to exclude the IP for longer. If you\n"
     
    8787msgstr ""
    8888
    89 #: admin/class-admin-settings.php:145
     89#: admin/class-admin-settings.php:150
    9090msgid "Also note: It is very common for users to leave their Display Name and Nickname the same as their Username, in which case the Username is leaked by so many things. Best to check at least your admins don't do this"
    9191msgstr ""
    9292
    93 #: admin/class-admin-settings.php:198
     93#: admin/class-admin-settings.php:203
    9494msgid "Stop REST API User calls"
    9595msgstr ""
    9696
    97 #: admin/class-admin-settings.php:205
     97#: admin/class-admin-settings.php:210
    9898msgid "WordPress allows anyone to find users by API call, by checking this box the calls will be restricted to logged in users only. Only untick this box if you need to allow unfettered API access to users"
    9999msgstr ""
    100100
    101 #: admin/class-admin-settings.php:210
     101#: admin/class-admin-settings.php:215
    102102msgid "Stop oEmbed calls revealing user ids"
    103103msgstr ""
    104104
    105 #: admin/class-admin-settings.php:217
     105#: admin/class-admin-settings.php:222
    106106msgid "WordPress reveals the user login ID through oEmbed calls by including the Author Archive link which contains the user id. When in many cases just the Author Name is enough. Note: remember it is not good idea to have login user id equal to your display name"
    107107msgstr ""
    108108
    109 #: admin/class-admin-settings.php:222
     109#: admin/class-admin-settings.php:227
    110110msgid "Disable WP Core Author sitemaps"
    111111msgstr ""
    112112
    113 #: admin/class-admin-settings.php:229
     113#: admin/class-admin-settings.php:234
    114114msgid "WordPress provides sitemaps for built-in content types like pages and author archives out of the box. The Author sitemap exposes the user id."
    115115msgstr ""
    116116
    117 #: admin/class-admin-settings.php:234
     117#: admin/class-admin-settings.php:239
    118118msgid "log attempts to AUTH LOG"
    119119msgstr ""
    120120
    121121#. translators: leave place holders
    122 #: admin/class-admin-settings.php:244
     122#: admin/class-admin-settings.php:249
    123123msgid "Leave this ticked if you are using %1$sFail2Ban%2$s on your VPS to block attempts at enumeration.%3$s If you are not running Fail2Ban or on a shared host this does not need to be ticked, however it normally will not cause a problem being ticked."
    124124msgstr ""
    125125
    126 #: admin/class-admin-settings.php:257
     126#: admin/class-admin-settings.php:262
    127127msgid "Remove numbers from comment authors"
    128128msgstr ""
    129129
    130 #: admin/class-admin-settings.php:265
     130#: admin/class-admin-settings.php:270
    131131msgid "This plugin uses JavaScript to remove any numbers from a comment author name, this is because numbers trigger enumeration checking. You can untick this if you do not use comments on your site or you use a different comment method than standard"
    132132msgstr ""
    133133
    134 #: frontend/class-frontend.php:67
     134#: frontend/class-frontend.php:80
    135135msgid "forbidden - number in author name not allowed = "
    136136msgstr ""
    137137
    138 #: frontend/class-frontend.php:128
     138#: frontend/class-frontend.php:209
    139139msgid "Only authenticated users can access the User endpoint REST API."
    140140msgstr ""
  • stop-user-enumeration/trunk/readme.txt

    r3259418 r3282442  
    44Tags: User Enumeration, Security, WPSCAN, fail2ban, security
    55Requires at least: 6.3
    6 Tested up to: 6.7
     6Tested up to: 6.8
    77Requires PHP: 7.4
    8 Stable tag: 1.7
     8Stable tag: 1.7.1
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    7171Also usernames containing numbers may not work in the front end.  Additionally the default rule for   Rest APi is anything with users in it, so other plugins may set up endpoints.
    7272= How can I change the Rest API match rules =
    73 There are two filters `stop_user_enumeration_rest_stop_match` set  to `/users/i` by default and `stop_user_enumeration_rest_allow_match` set to `simple-jwt-login` by default ( to allow that plugin's endpoints )
     73There are two filters `stop_user_enumeration_rest_stop_match` set  to `/users/i` by default and `stop_user_enumeration_rest_allowed_match` set to `simple-jwt-login` by default ( to allow that plugin's endpoints )
     74
     75= Developer Hooks and Filters =
     76The following hooks and filters are available for developers:
     77
     78**Filters:**
     79* `stop_user_enumeration_rest_stop_match` - Modify the pattern used to detect REST API user queries (default: `/users/i`)
     80* `stop_user_enumeration_rest_allowed_match` - Add exceptions to the REST API blocking rules (default: `/simple-jwt-login/i`)
     81* `stop_user_enumeration_ip` - Filter the detected IP address before logging or processing (useful for integration with CDNs or proxies)
     82* `stop_user_enumeration_should_block` - Determine if a request should be blocked based on IP or other conditions (return false to allow the request)
     83
     84**Actions:**
     85* `stop_user_enumeration_attempt` - Triggered when user enumeration attempt is detected and logged (passes the IP address as parameter)
     86
     87These hooks enable add-on features like limit login attempts, block lists, WAF notifications, and integration with external services like Cloudflare.
    7488= Do I need fail2ban for this to work? =
    7589No, but fail2ban will allow you to block IP addresses at your VPS / Dedicated server firewall that attempt user enumeration.
  • stop-user-enumeration/trunk/stop-user-enumeration.php

    r3259418 r3282442  
    44Plugin URI: https://fullworksplugins.com/products/stop-user-enumeration/
    55Description: Helps secure your site against hacking attacks through detecting  User Enumeration
    6 Version: 1.7
     6Version: 1.7.1
    77Author: Fullworks
    88Requires at least: 6.3
     
    3232namespace Stop_User_Enumeration;
    3333
    34 use Fullworks_WP_Autoloader\AutoloaderPlugin;
    3534use Stop_User_Enumeration\Includes\Core;
    3635
     
    4847// Include the autoloader to dynamically include the classes.
    4948require_once STOP_USER_ENUMERATION_PLUGIN_DIR  . 'includes/vendor/autoload.php';
    50 new AutoloaderPlugin(__NAMESPACE__, __DIR__);
    5149
    5250/**
Note: See TracChangeset for help on using the changeset viewer.