]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/SugarCharts/Jit/FlashCanvas/proxy.php
Release 6.5.0
[Github/sugarcrm.git] / include / SugarCharts / Jit / FlashCanvas / proxy.php
1 <?php
2
3 /**
4  * Proxy script to load a file from other domain
5  *
6  * PHP versions 4 and 5
7  *
8  * Copyright (c) 2010-2011 Shinya Muramatsu
9  *
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:
16  *
17  * The above copyright notice and this permission notice shall be included in
18  * all copies or substantial portions of the Software.
19  *
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.
27  *
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/
33  */
34
35 // Whether we check referrer or not
36 define('CHECK_REFERRER', true);
37
38 // Check that the request is from FlashCanvas
39 if (CHECK_REFERRER) {
40     if (empty($_SERVER['HTTP_REFERER'])) {
41         exit;
42     }
43     if (!preg_match('#/flash\d*canvas\.swf$#', $_SERVER['HTTP_REFERER'])) {
44         exit;
45     }
46 }
47
48 // Check that the request has a valid URL parameter
49 if (empty($_GET['url'])) {
50     exit;
51 }
52 if (!preg_match('#^https?://#', $_GET['url'])) {
53     exit;
54 }
55
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']);
60
61 // Disable compression
62 header('Content-Encoding: none');
63
64 // Load and output the file
65 if (extension_loaded('curl')) {
66     // Use cURL extension
67     $ch = curl_init($url);
68     curl_exec($ch);
69     curl_close($ch);
70 } else {
71     // Use the http:// wrapper
72     readfile($url);
73 }