Пример #1
0
 public static function enable()
 {
     require_once 'KokenPlugin.php';
     require_once 'Contracts/KokenCache.php';
     require_once 'Contracts/KokenEmail.php';
     require_once 'Contracts/KokenDatabaseConfiguration.php';
     require_once 'Contracts/KokenEncryptionKey.php';
     require_once 'Contracts/KokenOriginalStore.php';
     $root = dirname(dirname(dirname(dirname(__FILE__))));
     self::scan('app/plugins', true, true);
     if (getenv('KOKEN_SHUTTER_AUTOLOAD')) {
         self::scan(getenv('KOKEN_SHUTTER_AUTOLOAD'), true, true);
     }
     $compiled = self::get_cache('plugins/compiled.cache');
     if (!$compiled && strpos($_SERVER['QUERY_STRING'], 'plugins/compile') === false) {
         include dirname(__DIR__) . '/Utils/KokenAPI.php';
         $api = new KokenAPI();
         $api->get('/plugins/compile');
     }
     $compiled = self::get_cache('plugins/compiled.cache');
     Shutter::$email_provider = self::$class_map['DDI_Email'];
     if ($compiled) {
         $compiled_plugins = unserialize($compiled['data']);
         foreach ($compiled_plugins['plugins'] as $plugin) {
             self::parse($root . '/storage/plugins/' . $plugin['path'], true, false, isset($plugin['data']) ? $plugin['data'] : array());
         }
         if (isset($compiled_plugins['info']['email_handler']) && isset(self::$class_map[$compiled_plugins['info']['email_handler']])) {
             self::$email_provider = self::$class_map[$compiled_plugins['info']['email_handler']];
         }
         if (isset($compiled_plugins['info']['email_delivery_address'])) {
             self::$email_delivery_address = $compiled_plugins['info']['email_delivery_address'];
         }
     }
 }
Пример #2
0
 if (empty($matches)) {
     preg_match('/^\\/((?:[0-9]{3}\\/[0-9]{3})|custom)\\/(.*)[,\\/]([0-9]+)\\.([0-9]+)\\.([0-9]{1,3})\\.([0-9]{1,3})\\.(crop\\.)?(2x\\.)?(?:\\d{9,10}\\.)?(?P<ext>jpe?g|gif|png|svg)(\\.dl|.64)?$/i', $path, $matches);
     $preset = false;
 }
 if (empty($matches)) {
     // Bad request
     header('HTTP/1.1 403 Forbidden');
     exit;
 }
 $custom = $matches[1] === 'custom';
 // No path traversing in file name
 if (preg_match("/[^a-zA-Z0-9._-]/", $matches[2])) {
     header('HTTP/1.1 403 Forbidden');
     exit;
 }
 $KokenAPI = new KokenAPI();
 $settings = $KokenAPI->get('/settings');
 if ($custom) {
     $original = $root . $ds . 'storage' . $ds . 'custom' . $ds . preg_replace('/\\-(jpe?g|gif|png)$/i', '.$1', $matches[2]);
     list($source_width, $source_height) = getimagesize($original);
 } else {
     $id = (int) str_replace('/', '', $matches[1]);
     $content = $KokenAPI->get('/content/' . $id);
     $original_info = pathinfo($content['filename']);
     if (!isset($content['html']) && strtolower($original_info['filename']) !== strtolower($matches[2])) {
         $KokenAPI->clear();
         header('HTTP/1.1 404 Not Found');
         exit;
     }
     if (isset($content['original']['preview'])) {
         if (isset($content['original']['preview']['relative_url'])) {