File indexing completed on 2025-03-02 05:29:09

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