public function processRequest() { if (!PhabricatorEnv::getEnvConfig('files.enable-proxy')) { return new Aphront400Response(); } $request = $this->getRequest(); $uri = $request->getStr('uri'); $proxy = id(new PhabricatorFileProxyImage())->loadOneWhere('uri = %s', $uri); if (!$proxy) { // This write is fine to skip CSRF checks for, we're just building a // cache of some remote image. $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); $file = PhabricatorFile::newFromFileDownload($uri, nonempty(basename($uri), 'proxied-file')); if ($file) { $proxy = new PhabricatorFileProxyImage(); $proxy->setURI($uri); $proxy->setFilePHID($file->getPHID()); $proxy->save(); } unset($unguarded); } if ($proxy) { $view_uri = PhabricatorFileURI::getViewURIForPHID($proxy->getFilePHID()); return id(new AphrontRedirectResponse())->setURI($view_uri); } return new Aphront400Response(); }
public function processRequest() { if (!PhabricatorEnv::getEnvConfig('files.enable-proxy')) { return new Aphront400Response(); } $request = $this->getRequest(); $uri = $request->getStr('uri'); $proxy = id(new PhabricatorFileProxyImage())->loadOneWhere('uri = %s', $uri); if (!$proxy) { $file = PhabricatorFile::newFromFileDownload($uri, nonempty(basename($uri), 'proxied-file')); if ($file) { $proxy = new PhabricatorFileProxyImage(); $proxy->setURI($uri); $proxy->setFilePHID($file->getPHID()); $proxy->save(); } } if ($proxy) { $view_uri = PhabricatorFileURI::getViewURIForPHID($proxy->getFilePHID()); return id(new AphrontRedirectResponse())->setURI($view_uri); } return new Aphront400Response(); }
public function markupProxyImage($matches) { $uri = PhabricatorFileProxyImage::getProxyImageURI($matches[1]); return $this->getEngine()->storeText(phutil_render_tag('a', array('href' => $uri, 'target' => '_blank'), phutil_render_tag('img', array('src' => $uri, 'class' => 'remarkup-proxy-image')))); }