summaryrefslogtreecommitdiff
path: root/ics.php.txt
blob: db4140b636b67a65df79ea9a5ba4c0db6c634986 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/*
    ics.php "reverse-proxy"
    Copyright (C) 2011 Yves Fischer (i08005)

    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 <http://www.gnu.org/licenses/>.
*/


$proxy_url = "https://dualical.ba-horb.de:8443/dhbwcalendar/ics";
$curl_handler = curl_init($proxy_url);

curl_setopt($curl_handler, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handler, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl_handler, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl_handler, CURLOPT_WRITEFUNCTION, 'readResponse');
curl_setopt($curl_handler, CURLOPT_HEADERFUNCTION, 'readHeaders');
curl_setopt($curl_handler, CURLOPT_SSLVERSION, 3);
curl_setopt($curl_handler, CURLOPT_CAINFO, getcwd() . "/ics_certificate.pem");
curl_setopt($curl_handler, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl_handler, CURLOPT_VERBOSE, 0);

function readResponse(&$curl, $string) {
	echo $string;
	return strlen($string);
}

function readHeaders(&$curl, $string) {
        $length = strlen($string);
        if ($string !== "\r\n") {
		header(rtrim($string));
        }
        return $length;
}

$headers = apache_request_headers();
$client_headers = array();
foreach ($headers as $header => $value) {
    switch($header) {
	case 'Host':
	    break;
	default:
            $client_headers[] = sprintf('%s: %s', $header, $value);
	    break;
    }
} 

curl_setopt($curl_handler, CURLOPT_HTTPHEADER, $client_headers);
curl_exec($curl_handler);
//echo print_r(curl_getinfo($curl_handler), true);
?>