File indexing completed on 2024-12-22 05:36:23

0001 <?php
0002 
0003 /**
0004  *  ocs-webserver
0005  *
0006  *  Copyright 2016 by pling GmbH.
0007  *
0008  *    This file is part of ocs-webserver.
0009  *
0010  *    This program is free software: you can redistribute it and/or modify
0011  *    it under the terms of the GNU Affero General Public License as
0012  *    published by the Free Software Foundation, either version 3 of the
0013  *    License, or (at your option) any later version.
0014  *
0015  *    This program is distributed in the hope that it will be useful,
0016  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  *    GNU Affero General Public License for more details.
0019  *
0020  *    You should have received a copy of the GNU Affero General Public License
0021  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  **/
0023 class Local_Filter_Url_Encrypt implements Zend_Filter_Interface
0024 {
0025 
0026     /**
0027      * Returns the result of filtering $value
0028      *
0029      * @param  mixed $value
0030      *
0031      * @throws Zend_Filter_Exception If filtering $value is impossible
0032      * @return mixed
0033      */
0034     public function filter($value)
0035     {
0036         return $this->encryptForUrl($value);
0037     }
0038 
0039     /**
0040      * @param string $url
0041      * @param bool   $setHomeIfEmpty
0042      *
0043      * @return string
0044      */
0045     protected function encryptForUrl($url)
0046     {
0047         if (empty($url)) {
0048             return '';
0049         }
0050 
0051         /*  Set various encryption options. */
0052         $options = array(
0053             // Encryption type - Openssl or Mcrypt
0054             'adapter'   => 'mcrypt',
0055             // Initialization vector
0056             'vector'    => '236587hgtyujkirtfgty5678',
0057             // Encryption algorithm
0058             'algorithm' => 'rijndael-192',
0059             // Encryption key
0060             'key'       => 'KFJGKDK$$##^FFS345678FG2'
0061         );
0062 
0063         /* Initialize the library and pass the options */
0064         $filter = new Zend_Filter_Encrypt($options);
0065 
0066         return $this->base64url_encode($filter->filter(trim($url)));
0067     }
0068 
0069     protected function base64url_encode($data)
0070     {
0071         return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
0072     }
0073 
0074 }