Overview

Namespaces

  • Alpha
    • Controller
      • Front
    • Exception
    • Model
      • Type
    • Task
    • Util
      • Backup
      • Cache
      • Code
        • Highlight
        • Metric
      • Config
      • Convertor
      • Email
      • Extension
      • Feed
      • File
      • Graph
      • Helper
      • Http
        • Filter
        • Session
      • Image
      • Logging
      • Search
      • Security
    • View
      • Renderer
        • Html
        • Json
      • Widget

Classes

  • ClientBlacklistFilter
  • ClientTempBlacklistFilter
  • IPBlacklistFilter

Interfaces

  • FilterInterface
  • Overview
  • Namespace
  • Class
  • Tree
 1: <?php
 2: 
 3: namespace Alpha\Util\Http\Filter;
 4: 
 5: use Alpha\Util\Logging\Logger;
 6: use Alpha\Model\BlacklistedIP;
 7: use Alpha\Exception\RecordNotFoundException;
 8: use Alpha\Exception\ResourceNotAllowedException;
 9: 
10: /**
11:  * Class for blocking requests from blacklisted IP addresses.
12:  *
13:  * @since 1.2
14:  *
15:  * @author John Collins <dev@alphaframework.org>
16:  * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
17:  * @copyright Copyright (c) 2015, John Collins (founder of Alpha Framework).
18:  * All rights reserved.
19:  *
20:  * <pre>
21:  * Redistribution and use in source and binary forms, with or
22:  * without modification, are permitted provided that the
23:  * following conditions are met:
24:  *
25:  * * Redistributions of source code must retain the above
26:  *   copyright notice, this list of conditions and the
27:  *   following disclaimer.
28:  * * Redistributions in binary form must reproduce the above
29:  *   copyright notice, this list of conditions and the
30:  *   following disclaimer in the documentation and/or other
31:  *   materials provided with the distribution.
32:  * * Neither the name of the Alpha Framework nor the names
33:  *   of its contributors may be used to endorse or promote
34:  *   products derived from this software without specific
35:  *   prior written permission.
36:  *
37:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
38:  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
39:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
40:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
41:  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
42:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
48:  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
49:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50:  * </pre>
51:  */
52: class IPBlacklistFilter implements FilterInterface
53: {
54:     /**
55:      * Trace logger.
56:      *
57:      * @var Alpha\Util\Logging\Logger;
58:      *
59:      * @since 1.2
60:      */
61:     private static $logger = null;
62: 
63:     /**
64:      * Constructor.
65:      *
66:      * @since 1.2
67:      */
68:     public function __construct()
69:     {
70:         self::$logger = new Logger('IPBlacklistFilter');
71:     }
72: 
73:     /**
74:      * {@inheritdoc}
75:      */
76:     public function process($request)
77:     {
78:         $ip = $request->getIP();
79: 
80:         if (!empty($ip)) {
81:             $badIP = new BlacklistedIP();
82: 
83:             try {
84:                 $badIP->loadByAttribute('IP', $ip);
85:             } catch (RecordNotFoundException $bonf) {
86:                 // ip is not on the list!
87:                 return;
88:             }
89: 
90:             // if we got this far then the IP is bad
91:             self::$logger->warn('The IP ['.$ip.'] was blocked from accessing the resource ['.$request->getURI().']');
92:             throw new ResourceNotAllowedException('Not allowed!');
93:         }
94:     }
95: }
96: 
Alpha Framework 2.0.4 API Documentation API documentation generated by ApiGen 2.8.0