Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/javascript/piwik.php')
-rw-r--r--tests/javascript/piwik.php58
1 files changed, 45 insertions, 13 deletions
diff --git a/tests/javascript/piwik.php b/tests/javascript/piwik.php
index 856193e330..c1c0f5ae20 100644
--- a/tests/javascript/piwik.php
+++ b/tests/javascript/piwik.php
@@ -9,6 +9,11 @@ function sendWebBug() {
print(base64_decode($trans_gif_64));
}
+function isPost()
+{
+ return $_SERVER['REQUEST_METHOD'] == 'POST';
+}
+
if (!file_exists("enable_sqlite")) {
sendWebBug();
exit;
@@ -35,6 +40,22 @@ if (filesize(dirname(__FILE__).'/unittest.dbf') == 0)
}
}
+function logRequest($sqlite, $uri, $data) {
+ $ip = $_SERVER['REMOTE_ADDR'];
+ $ts = $_SERVER['REQUEST_TIME'];
+
+// $uri = htmlspecialchars($uri);
+
+ $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
+ $ua = $_SERVER['HTTP_USER_AGENT'];
+
+ $token = isset($data['token']) ? $data['token'] : '';
+
+ $query = $sqlite->exec("INSERT INTO requests (token, ip, ts, uri, referer, ua) VALUES (\"$token\", \"$ip\", \"$ts\", \"$uri\", \"$referrer\", \"$ua\")");
+
+ return $query;
+}
+
if (isset($_GET['requests'])) {
$token = get_magic_quotes_gpc() ? stripslashes($_GET['requests']) : $_GET['requests'];
$ua = $_SERVER['HTTP_USER_AGENT'];
@@ -56,25 +77,36 @@ if (isset($_GET['requests'])) {
echo "</body></html>\n";
} else {
+
if (!isset($_REQUEST['data'])) {
- header("HTTP/1.0 400 Bad Request");
+ header("HTTP/1.0 400 Bad Request");
} else {
- $ip = $_SERVER['REMOTE_ADDR'];
- $ts = $_SERVER['REQUEST_TIME'];
- $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
- if($_SERVER['REQUEST_METHOD'] == 'POST') {
- $uri .= '?' . file_get_contents('php://input');
- }
-// $uri = htmlspecialchars($uri);
+ $uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
+
+ $input = file_get_contents("php://input");
+ $requests = @json_decode($input, true);
+ $data = json_decode(get_magic_quotes_gpc() ? stripslashes($_REQUEST['data']) : $_REQUEST['data'], true);
+
+ if (!empty($requests) && isPost()) {
+ $query = true;
+ foreach ($requests['requests'] as $request) {
+ if (empty($data) && preg_match('/data=%7B%22token%22%3A%22([a-z0-9A-Z]*?)%22%7D/', $request, $matches)) {
+ // safari and opera
+ $data = array('token' => $matches[1]);
+ }
+
+ $query = $query && logRequest($sqlite, $uri . $request, $data);
+ }
+ } else {
- $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
- $ua = $_SERVER['HTTP_USER_AGENT'];
+ if (isPost()) {
+ $uri .= '?' . file_get_contents('php://input');
+ }
- $data = json_decode(get_magic_quotes_gpc() ? stripslashes($_REQUEST['data']) : $_REQUEST['data'], true);
- $token = isset($data['token']) ? $data['token'] : '';
+ $query = logRequest($sqlite, $uri, $data);
+ }
- $query = $sqlite->exec("INSERT INTO requests (token, ip, ts, uri, referer, ua) VALUES (\"$token\", \"$ip\", \"$ts\", \"$uri\", \"$referrer\", \"$ua\")");
if (!$query) {
header("HTTP/1.0 500 Internal Server Error");
} else {