]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Proxy.php
Merge pull request #10022 from Quix0r/fixes/chmod-proxy
[friendica.git] / src / Module / Proxy.php
index ed7cabfefb26b1926aee2a60c444fc135bfac85b..10ddd56334c043a65a49d10af71e484c20fd641b 100644 (file)
@@ -1,13 +1,27 @@
 <?php
 /**
- * @file src/Module/Proxy.php
- * @brief Based upon "Privacy Image Cache" by Tobias Hößl <https://github.com/CatoTH/>
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
  */
+
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
-use Friendica\Core\L10n;
-use Friendica\Core\System;
 use Friendica\Core\Logger;
 use Friendica\DI;
 use Friendica\Model\Photo;
@@ -16,7 +30,7 @@ use Friendica\Util\HTTPSignature;
 use Friendica\Util\Proxy as ProxyUtils;
 
 /**
- * @brief Module Proxy
+ * Module Proxy
  *
  * urls:
  * /proxy/[sub1/[sub2/]]<base64url image url>[.ext][:size]
@@ -26,7 +40,7 @@ class Proxy extends BaseModule
 {
 
        /**
-        * @brief Initializer method for this class.
+        * Initializer method for this class.
         *
         * Sets application instance and checks if /proxy/ path is writable.
         *
@@ -90,7 +104,7 @@ class Proxy extends BaseModule
 
                // It shouldn't happen but it does - spaces in URL
                $request['url'] = str_replace(' ', '+', $request['url']);
-               $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), true, ['timeout' => 10]);
+               $fetchResult = HTTPSignature::fetchRaw($request['url'], local_user(), ['timeout' => 10]);
                $img_str = $fetchResult->getBody();
 
                // If there is an error then return a blank image
@@ -117,7 +131,9 @@ class Proxy extends BaseModule
                // Store original image
                if ($direct_cache) {
                        // direct cache , store under ./proxy/
-                       file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true), $image->asString());
+                       $filename = $basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true);
+                       file_put_contents($filename, $image->asString());
+                       chmod($filename, DI::config()->get('system', 'proxy_file_chmod'));
                } elseif($cachefile !== '') {
                        // cache file
                        file_put_contents($cachefile, $image->asString());
@@ -135,7 +151,9 @@ class Proxy extends BaseModule
 
                // Store scaled image
                if ($direct_cache && $request['sizetype'] != '') {
-                       file_put_contents($basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true) . $request['sizetype'], $image->asString());
+                       $filename = $basepath . '/proxy/' . ProxyUtils::proxifyUrl($request['url'], true) . $request['sizetype'];
+                       file_put_contents($filename, $image->asString());
+                       chmod($filename, DI::config()->get('system', 'proxy_file_chmod'));
                }
 
                self::responseImageHttpCache($image);
@@ -144,7 +162,7 @@ class Proxy extends BaseModule
 
 
        /**
-        * @brief Build info about requested image to be proxied
+        * Build info about requested image to be proxied
         *
         * @return array
         *    [
@@ -224,7 +242,7 @@ class Proxy extends BaseModule
 
 
        /**
-        * @brief setup ./proxy folder for direct cache
+        * setup ./proxy folder for direct cache
         *
         * @return bool  False if direct cache can't be used.
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
@@ -249,7 +267,7 @@ class Proxy extends BaseModule
 
 
        /**
-        * @brief Try to reply with image in cachefile
+        * Try to reply with image in cachefile
         *
         * @param array $request Array from getRequestInfo
         *
@@ -271,7 +289,7 @@ class Proxy extends BaseModule
        }
 
        /**
-        * @brief Try to reply with image in database
+        * Try to reply with image in database
         *
         * @param array $request Array from getRequestInfo
         *
@@ -301,7 +319,7 @@ class Proxy extends BaseModule
        }
 
        /**
-        * @brief Output the image with cache headers
+        * Output the image with cache headers
         *
         * @param Image $img
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException