summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2007-09-29 18:15:05 +0000
committerthomascube <thomas@roundcube.net>2007-09-29 18:15:05 +0000
commit97bd2c0537bc3edb3751b3020f37e680944ac41c (patch)
tree3845f62069bbfc9ddb67447f07e504f0f455077a /bin
parentca2b4ddfcc7a506925c9d5b3a798a4c74147c2e1 (diff)
Filter linked/imported CSS files (#1484056)
Diffstat (limited to 'bin')
-rw-r--r--bin/modcss.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/bin/modcss.php b/bin/modcss.php
new file mode 100644
index 000000000..e482389a8
--- /dev/null
+++ b/bin/modcss.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/bin/modcss.php |
+ | |
+ | This file is part of the RoundCube Webmail client |
+ | Copyright (C) 2007, RoundCube Dev. - Switzerland |
+ | Licensed under the GNU GPL |
+ | |
+ | PURPOSE: |
+ | Modify CSS source from a URL |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+
+ $Id: $
+
+*/
+
+$INSTALL_PATH = realpath("./../") . "/";
+ini_set('include_path', $INSTALL_PATH.PATH_SEPARATOR.$INSTALL_PATH.'program'.PATH_SEPARATOR.ini_get('include_path'));
+
+require 'include/main.inc';
+
+$source = "";
+if ($url = preg_replace('/[^a-z0-9.-_\?\$&=%]/i', '', $_GET['u']))
+{
+ $a_uri = parse_url($url);
+ $port = $a_uri['port'] ? $a_uri['port'] : 80;
+ $host = $a_uri['host'];
+ $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '');
+
+
+ if ($fp = fsockopen($host, $port, $errno, $errstr, 30))
+ {
+ $out = "GET $path HTTP/1.0\r\n";
+ $out .= "Host: $host\r\n";
+ $out .= "Connection: Close\r\n\r\n";
+ fwrite($fp, $out);
+
+ $header = true;
+ while (!feof($fp))
+ {
+ $line = trim(fgets($fp, 4048));
+
+ if ($header && preg_match('/^HTTP\/1\..\s+(\d+)/', $line, $regs) && intval($regs[1]) != 200)
+ break;
+ else if (empty($line) && $header)
+ $header = false;
+ else if (!$header)
+ $source .= "$line\n";
+ }
+ fclose($fp);
+ }
+}
+
+if (!empty($source))
+{
+ header("Content-Type: text/css");
+ echo rcmail_mod_css_styles($source, preg_replace('/[^a-z0-9]/i', '', $_GET['c']), $url);
+}
+else
+ header("HTTP/1.0 404 Not Found");
+
+?>