From 64b97aa4520922248cdea23e675228c22f433f9b Mon Sep 17 00:00:00 2001
From: csteipp <csteipp@wikimedia.org>
Date: Thu, 10 Sep 2015 15:00:20 -0700
Subject: [PATCH] Don't track page views that easily identify users

Add dnt=1 to the X-Analytics response header when page being viewed can
easily identify the user in the pageview logs.

Bug: T109724
Change-Id: I523b906e7f7233525d9c1bb8adf97226b167d773
---
 wmf-config/CommonSettings.php | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/wmf-config/CommonSettings.php b/wmf-config/CommonSettings.php
index 7a21407..1992eb1 100755
--- a/wmf-config/CommonSettings.php
+++ b/wmf-config/CommonSettings.php
@@ -1371,6 +1371,22 @@ $wgHooks['PrefsPasswordAudit'][] = function( $user, $pass, $status ) {
 	return true;
 };
 
+// T109724 - Add dnt=1 to X-Analytics response header for pages
+// that can be easily used to identify users.
+$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {
+	if ( !$out->getTitle()->exists()
+		&& ( ( $ns = $out->getTitle()->getNamespace() ) === NS_USER
+			|| $ns === NS_USER_TALK )
+	) {
+		$response = $out->getRequest()->response();
+		$analyticsHeader = method_exists( $response, 'getHeader' ) ?
+			$response->getHeader( 'X-Analytics' ) : '';
+		$analyticsHeader .= ( $analyticsHeader ? ';' : '' ) . 'dnt=1';
+		$response->header( 'X-Analytics: ' . $analyticsHeader );
+	}
+	return true;
+};
+
 if ( file_exists( '/etc/wikimedia-image-scaler' ) ) {
 	$wgMaxShellMemory = 512 * 1024;
 	$wgMaxShellFileSize = 512 * 1024;
-- 
1.8.4.5

