4 * Proxy script to load a file from other domain
8 * Copyright (c) 2010-2011 Shinya Muramatsu
10 * Permission is hereby granted, free of charge, to any person obtaining a
11 * copy of this software and associated documentation files (the "Software"),
12 * to deal in the Software without restriction, including without limitation
13 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 * and/or sell copies of the Software, and to permit persons to whom the
15 * Software is furnished to do so, subject to the following conditions:
17 * The above copyright notice and this permission notice shall be included in
18 * all copies or substantial portions of the Software.
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26 * DEALINGS IN THE SOFTWARE.
28 * @author Shinya Muramatsu <revulon@gmail.com>
29 * @copyright 2010-2011 Shinya Muramatsu
30 * @license http://www.opensource.org/licenses/mit-license.php MIT License
31 * @link http://flashcanvas.net/
32 * @link http://code.google.com/p/flashcanvas/
35 // Whether we check referrer or not
36 define('CHECK_REFERRER', true);
38 // Check that the request is from FlashCanvas
40 if (empty($_SERVER['HTTP_REFERER'])) {
43 if (!preg_match('#/flash\d*canvas\.swf$#', $_SERVER['HTTP_REFERER'])) {
48 // Check that the request has a valid URL parameter
49 if (empty($_GET['url'])) {
52 if (!preg_match('#^https?://#', $_GET['url'])) {
56 // Percent-encode special characters in the URL
57 $search = array( '%', '#', ' ');
58 $replace = array('%25', '%23', '%20');
59 $url = str_replace($search, $replace, $_GET['url']);
61 // Disable compression
62 header('Content-Encoding: none');
64 // Load and output the file
65 if (extension_loaded('curl')) {
67 $ch = curl_init($url);
71 // Use the http:// wrapper