Exemple #1
0
function endElement($parser, $name)
{
    global $inLocTag, $buffer, $user_id;
    if (strtolower($name) == 'loc') {
        $inLocTag = false;
        // Now, let's process the contents
        $url = $buffer;
        $buffer = '';
        $url_id = getUrlId(resolveRedirects($url), false);
        if (is_null($url_id)) {
            error_log("Troubles getting / creating a URL for {$url}. Skipping.");
            return;
        }
        $query = sprintf("INSERT IGNORE INTO user_urls (user_id, url_id) VALUES (%d, %d)", $user_id, $url_id);
        $result = mysql_query($query);
        if (!$result) {
            error_log(mysql_error());
        }
    }
}
Exemple #2
0
<?php

require_once dirname(dirname(dirname(__FILE__))) . '/global.php';
function updateUrlAggregates($url_id, $measurement_id)
{
    # updating latest values for the URL
    $query = sprintf("UPDATE urls SET pagetest_last_id = %d, last_update = now(), pagetest_refresh_request = 0 WHERE id = %d", mysql_real_escape_string($measurement_id), mysql_real_escape_string($url_id));
    $result = mysql_query($query);
    if (!$result) {
        beaconError(mysql_error());
    }
}
$post_data = file_get_contents("php://input");
$post = json_decode($post_data, true);
if (!is_null($post) && array_key_exists('url', $post) && array_key_exists('id', $post)) {
    $url_id = getUrlId(urldecode($post['url']));
    // fixing up -1 into nulls
    foreach (array_keys($post['first']) as $metric) {
        if ($post['first'][$metric] == -1) {
            $post['first'][$metric] = null;
        }
    }
    foreach (array_keys($post['repeat']) as $metric) {
        if ($post['repeat'][$metric] == -1) {
            $post['repeat'][$metric] = null;
        }
    }
    # adding new entry
    $query = sprintf("/* WPT POST */ REPLACE INTO pagetest (\n\t\ttimestamp, url_id, test_id, location, version,\n\t\tf_LoadTime, r_LoadTime, f_TTFB, r_TTFB,\n\t\tf_bytesIn, r_bytesIn, f_bytesInDoc, r_bytesInDoc,\n\t\tf_requests, r_requests, f_requestsDoc, r_requestsDoc,\n\t\tf_connections, r_connections, f_domElements, r_domElements,\n\t\tf_score_cache, r_score_cache, f_score_cdn, r_score_cdn,\n\t\tf_score_gzip, r_score_gzip, f_score_cookies, r_score_cookies,\n\t\tf_score_keep_alive, r_score_keep_alive, f_score_minify, r_score_minify,\n\t\tf_score_combine, r_score_combine, f_score_compress, r_score_compress,\n\t\tf_score_etags, r_score_etags, f_gzip_total, r_gzip_total,\n\t\tf_gzip_savings, r_gzip_savings, f_minify_total, r_minify_total,\n\t\tf_minify_savings, r_minify_savings, f_image_total, r_image_total,\n\t\tf_image_savings, r_image_savings,\n\t\tf_render, r_render, f_aft, r_aft,\n\t\tf_fullyLoaded, r_fullyLoaded, f_docTime, r_docTime,\n\t\tf_domTime, r_domTime\n\t)\n\tVALUES (\n\t\tFROM_UNIXTIME('%d'), '%d', '%s', '%s', '%s',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d',\n\t\t'%d', '%d'\n\t)", mysql_real_escape_string($post['completed']), mysql_real_escape_string($url_id), mysql_real_escape_string($post['id']), mysql_real_escape_string($post['location']), mysql_real_escape_string($post['version']), mysql_real_escape_string($post['first']['loadTime']), mysql_real_escape_string($post['repeat']['loadTime']), mysql_real_escape_string($post['first']['TTFB']), mysql_real_escape_string($post['repeat']['TTFB']), mysql_real_escape_string($post['first']['bytesIn']), mysql_real_escape_string($post['repeat']['bytesIn']), mysql_real_escape_string($post['first']['bytesInDoc']), mysql_real_escape_string($post['repeat']['bytesInDoc']), mysql_real_escape_string($post['first']['requests']), mysql_real_escape_string($post['repeat']['requests']), mysql_real_escape_string($post['first']['requestsDoc']), mysql_real_escape_string($post['repeat']['requestsDoc']), mysql_real_escape_string($post['first']['connections']), mysql_real_escape_string($post['repeat']['connections']), mysql_real_escape_string($post['first']['domElements']), mysql_real_escape_string($post['repeat']['domElements']), mysql_real_escape_string($post['first']['score_cache']), mysql_real_escape_string($post['repeat']['score_cache']), mysql_real_escape_string($post['first']['score_cdn']), mysql_real_escape_string($post['repeat']['score_cdn']), mysql_real_escape_string($post['first']['score_gzip']), mysql_real_escape_string($post['repeat']['score_gzip']), mysql_real_escape_string($post['first']['score_cookies']), mysql_real_escape_string($post['repeat']['score_cookies']), mysql_real_escape_string($post['first']['score_keep-alive']), mysql_real_escape_string($post['repeat']['score_keep-alive']), mysql_real_escape_string($post['first']['score_minify']), mysql_real_escape_string($post['repeat']['score_minify']), mysql_real_escape_string($post['first']['score_combine']), mysql_real_escape_string($post['repeat']['score_combine']), mysql_real_escape_string($post['first']['score_compress']), mysql_real_escape_string($post['repeat']['score_compress']), mysql_real_escape_string($post['first']['score_etags']), mysql_real_escape_string($post['repeat']['score_etags']), mysql_real_escape_string($post['first']['gzip_total']), mysql_real_escape_string($post['repeat']['gzip_total']), mysql_real_escape_string($post['first']['gzip_savings']), mysql_real_escape_string($post['repeat']['gzip_savings']), mysql_real_escape_string($post['first']['minify_total']), mysql_real_escape_string($post['repeat']['minify_total']), mysql_real_escape_string($post['first']['minify_savings']), mysql_real_escape_string($post['repeat']['minify_savings']), mysql_real_escape_string($post['first']['image_total']), mysql_real_escape_string($post['repeat']['image_total']), mysql_real_escape_string($post['first']['image_savings']), mysql_real_escape_string($post['repeat']['image_savings']), mysql_real_escape_string($post['first']['render']), mysql_real_escape_string($post['repeat']['render']), mysql_real_escape_string($post['first']['aft']), mysql_real_escape_string($post['repeat']['aft']), mysql_real_escape_string($post['first']['fullyLoaded']), mysql_real_escape_string($post['repeat']['fullyLoaded']), mysql_real_escape_string($post['first']['docTime']), mysql_real_escape_string($post['repeat']['docTime']), mysql_real_escape_string($post['first']['domTime']), mysql_real_escape_string($post['repeat']['domTime']));
    if (!mysql_query($query)) {
        beaconError(mysql_error());
Exemple #3
0
    header('HTTP/1.0 400 Bad Request');
    ?>
<html>
<head>
<title>Bad Request: malformed HAR data</title>
</head>
<body>
<h1>Bad Request: malformed HAR data</h1>
Can't parse JSON data from HAR
</body>
</html><?php 
    exit;
}
if (array_key_exists('url', $_REQUEST)) {
    checkBeaconKey('har');
    $url_id = getUrlId(urldecode($_REQUEST['url']));
    # adding new entry
    if (array_key_exists('timestamp', $_REQUEST)) {
        $query = sprintf("/* HAR POST */ INSERT INTO har (timestamp, url_id, har, compressed)\n\t\tVALUES ('%s', '%d', '%s', '%d')", mysql_real_escape_string($_REQUEST['timestamp']), mysql_real_escape_string($url_id), mysql_real_escape_string(defined('FORCE_GZIP') ? gzcompress($har_data) : $har_data), mysql_real_escape_string(defined('FORCE_GZIP') ? 1 : 0));
    } else {
        $query = sprintf("/* HAR POST */ INSERT INTO har (url_id, har, compressed)\n\t\tVALUES ('%d', '%s', '%d')", mysql_real_escape_string($url_id), mysql_real_escape_string(defined('FORCE_GZIP') ? gzcompress($har_data) : $har_data), mysql_real_escape_string(defined('FORCE_GZIP') ? 1 : 0));
    }
    if (!mysql_query($query)) {
        beaconError(mysql_error());
    }
    updateUrlAggregates($url_id, mysql_insert_id());
    if (count($HAR_processors)) {
        $har_data_parsed = json_decode($har_data, true);
        foreach ($HAR_processors as $processor) {
            if (is_callable($processor)) {
                call_user_func($processor, $url_id, $har_data_parsed);
Exemple #4
0
    $ymindom = $grades['ymindom']['score'];
    $yno404 = $grades['yno404']['score'];
    $ymincookie = $grades['ymincookie']['score'];
    $ycookiefree = $grades['ycookiefree']['score'];
    $ynofilter = $grades['ynofilter']['score'];
    $yimgnoscale = $grades['yimgnoscale']['score'];
    $yfavicon = $grades['yfavicon']['score'];
    # adding new entry
    $query = sprintf("/* grades POST */ INSERT INTO yslow2 (\n\t\t`ip` , `user_agent` , `url_id` ,\n\t\t`w` , `o` , `r` , `i` , lt,\n\t\t`ynumreq`,\t`ycdn`,\t\t`yexpires`,\t`yemptysrc`, `ycompress`,\t`ycsstop`,\n\t\t`yjsbottom`,\t`yexpressions`,\t`yexternal`,\t`ydns`,\t\t`yminify`,\n\t\t`yredirects`,\t`ydupes`,\t`yetags`,\t`yxhr`,\t\t`yxhrmethod`,\n\t\t`ymindom`,\t`yno404`,\t`ymincookie`,\t`ycookiefree`,\t`ynofilter`,\n\t\t`yimgnoscale`,\t`yfavicon`, details\n\t)\n\tVALUES (inet_aton('%s'), '%s', '%d',\n\t\t'%d', '%d', '%d', '%s', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d', %s, '%d', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%s'\n\t)", mysql_real_escape_string($_SERVER['REMOTE_ADDR']), mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']), mysql_real_escape_string($url_id), mysql_real_escape_string($post['w']), mysql_real_escape_string($post['o']), mysql_real_escape_string($post['r']), mysql_real_escape_string($post['i']), mysql_real_escape_string(isset($post['lt']) ? $post['lt'] : 0), mysql_real_escape_string($ynumreq), mysql_real_escape_string($ycdn), mysql_real_escape_string($yexpires), mysql_real_escape_string($yemptysrc), mysql_real_escape_string($ycompress), mysql_real_escape_string($ycsstop), mysql_real_escape_string($yjsbottom), mysql_real_escape_string($yexpressions), mysql_real_escape_string($yexternal), mysql_real_escape_string($ydns), mysql_real_escape_string($yminify), mysql_real_escape_string($yredirects), mysql_real_escape_string($ydupes), mysql_real_escape_string($yetags), mysql_real_escape_string($yxhr), mysql_real_escape_string($yxhrmethod), mysql_real_escape_string($ymindom), mysql_real_escape_string($yno404), mysql_real_escape_string($ymincookie), mysql_real_escape_string($ycookiefree), mysql_real_escape_string($ynofilter), mysql_real_escape_string($yimgnoscale), mysql_real_escape_string($yfavicon), mysql_real_escape_string($post_data));
    if (!mysql_query($query)) {
        beaconError(mysql_error());
    }
    updateUrlAggregates($url_id, mysql_insert_id());
} else {
    if (array_key_exists('u', $_GET) && array_key_exists('i', $_GET) && in_array($_GET['i'], $YSlow2AllowedProfiles) && array_key_exists('w', $_GET) && filter_var($_GET['w'], FILTER_VALIDATE_INT) !== false && array_key_exists('o', $_GET) && filter_var($_GET['o'], FILTER_VALIDATE_INT) !== false && array_key_exists('r', $_GET) && filter_var($_GET['r'], FILTER_VALIDATE_INT) !== false) {
        $url_id = getUrlId($_GET['u']);
        # adding new entry
        $query = sprintf("/* basic GET */ INSERT INTO yslow2 (\n\t\t`ip` , `user_agent` , `url_id` ,\n\t\t`w` , `o` , `r` , `i`, lt,\n\t\t`ynumreq`,\t`ycdn`,\t\t`yexpires`,\t`yemptysrc`,\t`ycompress`,\t`ycsstop`,\n\t\t`yjsbottom`,\t`yexpressions`,\t`yexternal`,\t`ydns`,\t\t`yminify`,\n\t\t`yredirects`,\t`ydupes`,\t`yetags`,\t`yxhr`,\t\t`yxhrmethod`,\n\t\t`ymindom`,\t`yno404`,\t`ymincookie`,\t`ycookiefree`,\t`ynofilter`,\n\t\t`yimgnoscale`,\t`yfavicon`\n\t)\n\tVALUES (inet_aton('%s'), '%s', '%d',\n\t\t'%d', '%d', '%d', '%s', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d', %s, '%d', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d', '%d', '%d', '%d',\n\t\t'%d', '%d'\n\t)", mysql_real_escape_string($_SERVER['REMOTE_ADDR']), mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']), mysql_real_escape_string($url_id), mysql_real_escape_string($_GET['w']), mysql_real_escape_string($_GET['o']), mysql_real_escape_string($_GET['r']), mysql_real_escape_string($_GET['i']), mysql_real_escape_string(isset($_GET['lt']) ? $_GET['lt'] : 0), mysql_real_escape_string($_GET['ynumreq']), mysql_real_escape_string($_GET['ycdn']), mysql_real_escape_string($_GET['yexpires']), mysql_real_escape_string($_GET['yemptysrc']), mysql_real_escape_string($_GET['ycompress']), mysql_real_escape_string($_GET['ycsstop']), mysql_real_escape_string($_GET['yjsbottom']), mysql_real_escape_string($_GET['yexpressions']), mysql_real_escape_string(isset($_GET['yexternal']) ? $_GET['yexternal'] : 'NULL'), mysql_real_escape_string($_GET['ydns']), mysql_real_escape_string($_GET['yminify']), mysql_real_escape_string($_GET['yredirects']), mysql_real_escape_string($_GET['ydupes']), mysql_real_escape_string($_GET['yetags']), mysql_real_escape_string($_GET['yxhr']), mysql_real_escape_string($_GET['yxhrmethod']), mysql_real_escape_string($_GET['ymindom']), mysql_real_escape_string($_GET['yno404']), mysql_real_escape_string($_GET['ymincookie']), mysql_real_escape_string($_GET['ycookiefree']), mysql_real_escape_string($_GET['ynofilter']), mysql_real_escape_string($_GET['yimgnoscale']), mysql_real_escape_string($_GET['yfavicon']));
        if (!mysql_query($query)) {
            beaconError(mysql_error());
        }
        updateUrlAggregates($url_id, mysql_insert_id());
    } else {
        header('HTTP/1.0 400 Bad Request');
        $TITLE = 'Bad Request: YSlow beacon';
        require_once dirname(dirname(dirname(__FILE__))) . '/header.php';
        ?>
<h2>YSlow beacon</h2>
<p>This is <a href="http://developer.yahoo.com/yslow/">YSlow</a> beacon entry point.</p>

<h2>Configure your YSlow</h2>
Exemple #5
0
<?php

require_once dirname(dirname(dirname(__FILE__))) . '/global.php';
function updateUrlAggregates($url_id, $measurement_id)
{
    # updating latest values for the URL
    $query = sprintf("UPDATE urls set metric_last_id = %d, last_update = now() WHERE id = %d", mysql_real_escape_string($measurement_id), mysql_real_escape_string($url_id));
    $result = mysql_query($query);
    if (!$result) {
        beaconError(mysql_error());
    }
}
if (array_key_exists('metric', $_REQUEST) && array_key_exists($_REQUEST['metric'], $metrics) && array_key_exists('value', $_REQUEST) && is_numeric($_REQUEST['value']) !== false && array_key_exists('u', $_REQUEST)) {
    checkBeaconKey('metric');
    $url_id = getUrlId($_REQUEST['u']);
    if (array_key_exists('timestamp', $_REQUEST) && $_REQUEST['timestamp']) {
        # adding new entry
        $query = sprintf("INSERT INTO metric (timestamp, url_id, metric_id, value) VALUES ('%s', '%d', '%d', '%f')", mysql_real_escape_string($_REQUEST['timestamp']), mysql_real_escape_string($url_id), mysql_real_escape_string($metrics[$_REQUEST['metric']]['id']), mysql_real_escape_string($_REQUEST['value']));
    } else {
        # adding new entry
        $query = sprintf("INSERT INTO metric (url_id, metric_id, value) VALUES ('%d', '%d', '%f')", mysql_real_escape_string($url_id), mysql_real_escape_string($metrics[$_REQUEST['metric']]['id']), mysql_real_escape_string($_REQUEST['value']));
    }
    if (!mysql_query($query)) {
        beaconError(mysql_error());
    }
    updateUrlAggregates($url_id, mysql_insert_id());
    header('HTTP/1.0 204 Data accepted');
    exit;
}
header('HTTP/1.0 400 Bad Request');
$TITLE = 'Bad Request: Custom Metric beacon';
Exemple #6
0
$noMoreURLs = false;
if ($maxURLsPerUser) {
    $query = sprintf('SELECT count(*) AS cnt FROM user_urls	WHERE user_urls.user_id = %d', $current_user->getID());
    $result = mysql_query($query);
    if (!$result) {
        error_log(mysql_error());
    }
    $cnt = mysql_fetch_row($result);
    if (is_array($cnt) && $cnt[0] >= $maxURLsPerUser) {
        $noMoreURLs = true;
        $MESSAGES[] = $maxURLsMessage;
    }
    mysql_free_result($result);
}
if (!$noMoreURLs && array_key_exists('url', $_REQUEST)) {
    $url_id = getUrlId(resolveRedirects($_REQUEST['url']), false);
    if (is_null($url_id)) {
        header('Location: ' . $showslow_base . 'my.php#invalid');
        exit;
    }
    $query = sprintf("INSERT IGNORE INTO user_urls (user_id, url_id) VALUES (%d, %d)", $current_user->getID(), $url_id);
    $result = mysql_query($query);
    if (!$result) {
        error_log(mysql_error());
    }
    $current_user->recordActivity(SHOWSLOW_ACTIVITY_ADD_URL);
    header('Location: ' . $showslow_base . 'my.php#added');
    exit;
}
$query = sprintf("SELECT urls.id as id, url, last_update,\n\t\tyslow2.o as o,\n\t\tpagespeed.o as ps_o,\n\t\tdynatrace.rank as dt_o\n\tFROM urls INNER JOIN user_urls ON urls.id = user_urls.url_id\n\t\tLEFT JOIN yslow2 ON urls.yslow2_last_id = yslow2.id\n\t\tLEFT JOIN pagespeed ON urls.pagespeed_last_id = pagespeed.id\n\t\tLEFT JOIN dynatrace ON urls.dynatrace_last_id = dynatrace.id\n\tWHERE user_urls.user_id = %d ORDER BY url", $current_user->getID());
$result = mysql_query($query);
Exemple #7
0
require_once dirname(dirname(dirname(__FILE__))) . '/global.php';
function updateUrlAggregates($url_id, $measurement_id)
{
    # updating latest values for the URL
    $query = sprintf("UPDATE urls SET dommonster_last_id = %d, last_update = now() WHERE id = %d", mysql_real_escape_string($measurement_id), mysql_real_escape_string($url_id));
    $result = mysql_query($query);
    if (!$result) {
        beaconError(mysql_error());
    }
}
/*
	Only URL and rank will be mandatory - the rest will be optional
*/
if (array_key_exists('url', $_POST) && array_key_exists('stats', $_POST)) {
    checkBeaconKey('dommonster');
    $url_id = getUrlId(urldecode($_POST['url']));
    $stats = json_decode($_POST['stats'], true);
    # adding new entry
    $query = sprintf("INSERT INTO dommonster (\n\t\tversion, url_id,\n\t\telements,\n\t\tnodecount,\n\t\ttextnodes,\n\t\ttextnodessize,\n\t\tcontentpercent,\n\t\taverage,\n\t\tdomsize,\n\t\tbodycount\n\t)\n\tVALUES (\n\t\t'%s', '%d',\n\t\t'%d',\n\t\t'%d',\n\t\t'%d',\n\t\t'%d',\n\t\t'%f',\n\t\t'%f',\n\t\t'%d',\n\t\t'%d'\n\t)", mysql_real_escape_string(array_key_exists('version', $_POST) ? $_POST['version'] : null), mysql_real_escape_string($url_id), mysql_real_escape_string(array_key_exists('elements', $stats) ? $stats['elements'] : null), mysql_real_escape_string(array_key_exists('nodecount', $stats) ? $stats['nodecount'] : null), mysql_real_escape_string(array_key_exists('textnodes', $stats) ? $stats['textnodes'] : null), mysql_real_escape_string(array_key_exists('textnodessize', $stats) ? $stats['textnodessize'] : null), mysql_real_escape_string(array_key_exists('contentpercent', $stats) ? $stats['contentpercent'] : null), mysql_real_escape_string(array_key_exists('average', $stats) ? $stats['average'] : null), mysql_real_escape_string(array_key_exists('domsize', $stats) ? $stats['domsize'] : null), mysql_real_escape_string(array_key_exists('bodycount', $stats) ? $stats['bodycount'] * 1000 : null));
    if (!mysql_query($query)) {
        beaconError(mysql_error());
    }
    updateUrlAggregates($url_id, mysql_insert_id());
    $url = validateURL($_POST['url']);
    ?>
<html><head><script>
	if (confirm('Sucess: data is saved to Show Slow (<?php 
    echo $showslow_base;
    ?>
)\nWould you like to open the resuls page?')) {
		top.location = '<?php 
Exemple #8
0
<?php

require_once dirname(__FILE__) . '/global.php';
require_once dirname(__FILE__) . '/users/users.php';
if (!is_null($webPageTestKey) && array_key_exists('url', $_POST)) {
    $url_id = getUrlId($_POST['url']);
    $runtest = $webPageTestBase . 'runtest.php?k=' . urlencode($webPageTestKey) . '&' . ($webPageTestExtraParams ? $webPageTestExtraParams . '&' : '') . 'f=xml&r=yes&url=' . urlencode($_POST['url']);
    $location = null;
    $private = false;
    if (array_key_exists('location', $_POST)) {
        $location = $_POST['location'];
        $runtest .= '&location=' . $location;
    } else {
        header('Location: ' . $showslow_base . '#no-pagetest-location');
        exit;
    }
    if (array_key_exists('private', $_POST)) {
        $private = $_POST['private'];
        $runtest .= '&private=' . $_POST['private'];
    }
    if (array_key_exists('fvonly', $_POST)) {
        $runtest .= '&fvonly=' . $_POST['fvonly'];
    }
    // fetching locations only when needed
    getPageTestLocations();
    if (!array_key_exists($location, $webPageTestLocationsById)) {
        // location doesn't exist
        error_log("PageTest Location doesn't exist: {$location}");
        header('Location: ' . $showslow_base . '#pagetest-location-doesn-exist');
        exit;
    } else {