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()); } } }
<?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());
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);
$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>
<?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';
$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);
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
<?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 {