"Fossies" - the Fresh Open Source Software Archive

Member "mrbs-1.9.2/web/lib/CAS/ProxyChain/AllowedList.php" (14 Oct 2020, 3550 Bytes) of package /linux/www/mrbs-1.9.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "AllowedList.php" see the Fossies "Dox" file reference documentation.

    1 <?php
    2 
    3 /**
    4  * Licensed to Jasig under one or more contributor license
    5  * agreements. See the NOTICE file distributed with this work for
    6  * additional information regarding copyright ownership.
    7  *
    8  * Jasig licenses this file to you under the Apache License,
    9  * Version 2.0 (the "License"); you may not use this file except in
   10  * compliance with the License. You may obtain a copy of the License at:
   11  *
   12  * http://www.apache.org/licenses/LICENSE-2.0
   13  *
   14  * Unless required by applicable law or agreed to in writing, software
   15  * distributed under the License is distributed on an "AS IS" BASIS,
   16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   17  * See the License for the specific language governing permissions and
   18  * limitations under the License.
   19  *
   20  * PHP Version 5
   21  *
   22  * @file     CAS/ProxyChain/AllowedList.php
   23  * @category Authentication
   24  * @package  PhpCAS
   25  * @author   Adam Franco <afranco@middlebury.edu>
   26  * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
   27  * @link     https://wiki.jasig.org/display/CASC/phpCAS
   28  */
   29 
   30 
   31 /**
   32  * ProxyChain is a container for storing chains of valid proxies that can
   33  * be used to validate proxied requests to a service
   34  *
   35  * @class    CAS_ProxyChain_AllowedList
   36  * @category Authentication
   37  * @package  PhpCAS
   38  * @author   Adam Franco <afranco@middlebury.edu>
   39  * @license  http://www.apache.org/licenses/LICENSE-2.0  Apache License 2.0
   40  * @link     https://wiki.jasig.org/display/CASC/phpCAS
   41  */
   42 
   43 class CAS_ProxyChain_AllowedList
   44 {
   45 
   46     private $_chains = array();
   47 
   48     /**
   49      * Check whether proxies are allowed by configuration
   50      *
   51      * @return bool
   52      */
   53     public function isProxyingAllowed()
   54     {
   55         return (count($this->_chains) > 0);
   56     }
   57 
   58     /**
   59      * Add a chain of proxies to the list of possible chains
   60      *
   61      * @param CAS_ProxyChain_Interface $chain A chain of proxies
   62      *
   63      * @return void
   64      */
   65     public function allowProxyChain(CAS_ProxyChain_Interface $chain)
   66     {
   67         $this->_chains[] = $chain;
   68     }
   69 
   70     /**
   71      * Check if the proxies found in the response match the allowed proxies
   72      *
   73      * @param array $proxies list of proxies to check
   74      *
   75      * @return bool whether the proxies match the allowed proxies
   76      */
   77     public function isProxyListAllowed(array $proxies)
   78     {
   79         phpCAS::traceBegin();
   80         if (empty($proxies)) {
   81             phpCAS::trace("No proxies were found in the response");
   82             phpCAS::traceEnd(true);
   83             return true;
   84         } elseif (!$this->isProxyingAllowed()) {
   85             phpCAS::trace("Proxies are not allowed");
   86             phpCAS::traceEnd(false);
   87             return false;
   88         } else {
   89             $res = $this->contains($proxies);
   90             phpCAS::traceEnd($res);
   91             return $res;
   92         }
   93     }
   94 
   95     /**
   96      * Validate the proxies from the proxy ticket validation against the
   97      * chains that were definded.
   98      *
   99      * @param array $list List of proxies from the proxy ticket validation.
  100      *
  101      * @return if any chain fully matches the supplied list
  102      */
  103     public function contains(array $list)
  104     {
  105         phpCAS::traceBegin();
  106         $count = 0;
  107         foreach ($this->_chains as $chain) {
  108             phpCAS::trace("Checking chain ". $count++);
  109             if ($chain->matches($list)) {
  110                 phpCAS::traceEnd(true);
  111                 return true;
  112             }
  113         }
  114         phpCAS::trace("No proxy chain matches.");
  115         phpCAS::traceEnd(false);
  116         return false;
  117     }
  118 }
  119 ?>