Faidon has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/65614


Change subject: Varnish: separate Zero-related carrier stuff
......................................................................

Varnish: separate Zero-related carrier stuff

The carrier VCL were a bit overwhelming, so split them off to a separate
zero.inc.vcl.

Change-Id: I00857d2c9a0348cae51345c2552529cd6f50e703
---
M manifests/varnish.pp
M templates/varnish/mobile-frontend.inc.vcl.erb
A templates/varnish/zero.inc.vcl.erb
3 files changed, 466 insertions(+), 458 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/14/65614/1

diff --git a/manifests/varnish.pp b/manifests/varnish.pp
index 987e687..48b2c53 100644
--- a/manifests/varnish.pp
+++ b/manifests/varnish.pp
@@ -48,6 +48,8 @@
                                content => 
template("varnish/geoip.inc.vcl.erb");
                        "/etc/varnish/device-detection.inc.vcl":
                                content => 
template("varnish/device-detection.inc.vcl.erb");
+                       "/etc/varnish/zero.inc.vcl":
+                               content => template("varnish/zero.inc.vcl.erb");
                        "/etc/varnish/errorpage.inc.vcl":
                                content => 
template("varnish/errorpage.inc.vcl.erb");
                }
diff --git a/templates/varnish/mobile-frontend.inc.vcl.erb 
b/templates/varnish/mobile-frontend.inc.vcl.erb
index fbbf6be..703c58f 100644
--- a/templates/varnish/mobile-frontend.inc.vcl.erb
+++ b/templates/varnish/mobile-frontend.inc.vcl.erb
@@ -1,466 +1,10 @@
 # Varnish VCL include file for mobile frontends
 
-C{
-#include <netinet/in.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-}C
-
 include "device-detection.inc.vcl";
-
-acl carrier_testing {
-       "216.38.130.160"/28;                // WMF office
-       "208.80.152.165";                   // fenari
-       "2620:0:860:2:21e:c9ff:feea:ab95";  // fenari
-       "208.80.154.149";                   // bast1001
-       "2620:0:861:2:7a2b:cbff:fe09:11ba"; // bast1001
-}
-
-acl carrier_dtac {
-       "1.46.0.0"/15;
-       "103.1.164.0"/22;
-       "111.84.0.0"/16;
-       "115.67.0.0"/16;
-       "202.91.16.0"/21;
-}
-
-acl carrier_orange_congo {
-       "41.77.220.64"/27;
-       "41.77.221.64"/27;
-       "41.77.222.64"/27;
-       "41.77.223.64"/27;
-       "81.199.62.88"/29;
-       "81.199.62.128"/26;
-       "91.151.146.64"/27;
-       "203.222.195.80"/28;
-       "203.222.206.112"/28;
-}
-
-acl carrier_orange_botswana {
-       "41.223.141.0"/24;
-}
-
-acl carrier_hello_cambodia {
-       "117.20.116.83";
-       "117.20.116.84"/30;
-       "117.20.116.88"/30;
-       "117.20.116.92"/31;
-}
-
-acl carrier_celcom_malaysia {
-       "183.171.0.0"/17;
-       "183.171.128.0"/19;
-       "183.171.160.0"/20;
-       "183.171.176.0"/22;
-       "203.82.66.192"/28;
-       "203.82.80.0"/23;
-       "203.82.82.0"/24;
-       "203.82.85.32"/28;
-       "203.82.87.0"/24;
-       "203.82.90.0"/23;
-       "203.82.92.0"/22;
-}
-
-acl carrier_dialog_sri_lanka {
-       "103.2.148.0"/22;
-       "111.223.128.0"/18;
-       "122.255.52.0"/23;
-       "122.255.54.0"/24;
-       "123.231.8.0"/21;
-       "123.231.40.0"/21;
-       "123.231.48.0"/20;
-       "123.231.120.0"/21;
-       "175.157.0.0"/16;
-       "182.161.0.0"/19;
-}
-
-acl carrier_tata {
-       "10.234.0.0"/16;
-       "14.96.246.36";
-       "14.96.246.40"/30;
-       "14.194.0.0"/15;
-       "27.107.0.0"/16;
-       "49.200.0.0"/14;
-       "49.248.224.0"/20;
-       "49.248.240.0"/22;
-       "49.248.244.0"/23;
-       "49.249.0.0"/16;
-       "59.161.95.65";
-       "59.161.95.66"/31;
-       "59.161.95.68";
-       "59.161.95.86";
-       "59.161.254.21";
-       "115.117.128.0"/17;
-       "115.118.16.0"/22;
-       "115.118.44.0"/22;
-       "115.118.48.0"/20;
-       "115.118.80.0"/20;
-       "115.118.108.0"/22;
-       "115.118.144.0"/20;
-       "115.118.176.0"/20;
-       "115.118.204.0"/22;
-       "115.118.208.0"/20;
-       "115.118.224.0"/19;
-       "182.156.0.0"/16;
-       "219.64.175.132";
-       "219.64.175.134"/31;
-       "219.64.175.136"/31;
-       "219.64.175.139";
-       "219.64.175.142";
-       "219.64.175.215";
-       "219.64.175.216"/31;
-       "219.64.175.219";
-}
-
-acl carrier_digi {
-       "115.164.0.0"/16;
-       "116.197.0.0"/17;
-       "203.92.128.185";
-}
-
-acl carrier_orange_ivory_coast {
-       "41.66.28.72"/31;
-       "41.66.28.94"/31;
-       "41.66.28.96";
-}
-
-acl carrier_orange_uganda {
-       "41.202.224.0"/19;
-       "197.157.0.0"/18;
-}
-
-acl carrier_saudi_telecom {
-       "84.235.72.0"/22;
-       "84.235.94.240"/28;
-       "212.118.140.0"/22;
-       "212.215.128.0"/17;
-}
-
-acl carrier_orange_kenya {
-       "212.49.88.0"/25;
-}
-
-acl carrier_orange_tunisia {
-       "197.29.192.0"/18;
-       "197.30.0.0"/17;
-       "197.30.128.0"/19;
-       "197.30.224.0"/19;
-}
-
-acl carrier_orange_niger {
-       "41.203.157.1";
-       "41.203.157.2";
-       "41.203.159.243";
-}
-
-acl carrier_orange_cameroon {
-       "41.202.192.0"/19;
-       "193.251.155.0"/25;
-}
-
-acl carrier_grameenphone_bangladesh {
-       "119.30.38.0"/23;
-       "119.30.45.0"/24;
-       "119.30.47.0"/24;
-}
-
-acl carrier_telenor_montenegro {
-       "79.143.96.0"/20;
-}
-
-acl carrier_xl_indonesia {
-       "112.215.63.0"/24;
-       "112.215.64.0"/23;
-       "112.215.66.0"/24;
-       "202.152.240.0"/24;
-       "202.152.243.0"/24;
-}
-
-acl carrier_vimpelcom_beeline {
-       "31.13.144.2"/31;
-       "31.13.144.4"/30;
-       "31.13.144.8"/29;
-       "31.13.144.16"/28;
-       "31.13.144.32"/28;
-       "31.13.144.48"/29;
-       "31.13.144.56"/30;
-       "31.13.144.60"/31;
-       "31.13.144.62";
-       "46.16.96.0"/21;
-       "62.33.151.0"/24;
-       "83.220.227.0"/24;
-       "83.220.236.0"/22;
-       "85.115.224.9";
-       "85.115.224.10"/31;
-       "85.115.224.12"/31;
-       "85.115.224.14";
-       "85.115.224.128"/27;
-       "85.115.224.193";
-       "85.115.224.194"/31;
-       "85.115.224.196"/30;
-       "85.115.224.200"/29;
-       "85.115.224.208"/29;
-       "85.115.224.216"/30;
-       "85.115.224.220"/31;
-       "85.115.224.222";
-       "85.115.224.225";
-       "85.115.224.226"/31;
-       "85.115.224.228"/30;
-       "85.115.224.232"/29;
-       "85.115.224.240"/29;
-       "85.115.224.248"/30;
-       "85.115.224.252"/31;
-       "85.115.224.254";
-       "85.115.243.32"/27;
-       "85.115.248.0"/24;
-       "87.228.75.156";
-       "89.179.104.235";
-       "89.188.224.136"/29;
-       "213.252.195.0"/24;
-       "217.118.64.32"/27;
-       "217.118.66.0"/24;
-       "217.118.78.0"/24;
-       "217.118.79.32"/28;
-       "217.118.81.0"/24;
-       "217.118.82.16"/28;
-       "217.118.82.32"/28;
-       "217.118.82.64"/26;
-       "217.118.82.128"/25;
-       "217.118.83.0"/24;
-       "217.118.85.0"/24;
-       "217.118.89.0"/24;
-       "217.118.90.0"/24;
-       "217.118.91.64"/26;
-       "217.118.92.0"/23;
-       "217.118.95.0"/24;
-       "217.118.96.0"/19;
-       "217.118.128.0"/17;
-       "217.119.0.0"/18;
-       "217.119.64.0"/20;
-       "217.119.80.0"/21;
-       "217.119.88.0"/22;
-       "217.119.92.0"/23;
-       "217.119.94.0"/24;
-       "217.119.95.0"/25;
-       "217.119.95.128"/26;
-       "217.119.95.192";
-       "217.148.194.129";
-       "217.148.194.130"/31;
-       "217.148.194.132"/30;
-       "217.148.194.136"/30;
-       "217.148.194.140"/31;
-       "217.148.194.142";
-}
-
-acl carrier_vimpelcom_mobilink_pakistan {
-       "119.160.116.0"/22;
-       "119.160.125.0"/27;
-       "119.160.126.96"/28;
-       "119.160.126.128"/25;
-}
-
-acl carrier_orange_meditel_morocco {
-       "41.92.0.0"/18;
-       "41.92.64.0"/19;
-       "41.214.192.0"/18;
-       "197.153.0.0"/16;
-       "197.247.0.0"/16;
-}
-
-acl carrier_central_african_republic {
-       "41.223.184.1";
-       "41.223.184.2"/31;
-       "41.223.184.148"/30;
-       "41.223.184.152"/30;
-}
-
-sub tag_carrier {
-       /* For wiki zero project - tags partnered carriers
-          The values for the X-CS headers are obtained from
-          http://en.wikipedia.org/wiki/Mobile_country_code
-          and http://www.mcc-mnc.com/
-       */
-       if ( req.http.host ~ 
"(^([a-zA-Z0-9-]+)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org" ) {
-               set req.http.X-Subdomain = "ZERO";
-       } else {
-               set req.http.X-Subdomain = "M";
-       }
-
-       // go to english by default
-       set req.http.X-DfltLang = "en";
-       set req.http.X-DfltPage = "/wiki/Special:ZeroRatedMobileAccess";
-
-       /* Please keep this list alphabetized by the ACL variable */
-       if (client.ip ~ carrier_celcom_malaysia) {
-               if (req.http.X-Subdomain == "ZERO") {
-                       set req.http.X-Carrier = "Celcom Malaysia";
-                       set req.http.X-CS = "502-13";
-               }
-       } else if (client.ip ~ carrier_central_african_republic) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       if (req.http.host ~ 
"(^(fr|ar|sg|en|es|zh|ar|ha|ln|eo)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Orange Central 
African Republic";
-                               set req.http.X-CS = "623-01";
-                       }
-               }
-       } else if (client.ip ~ carrier_dialog_sri_lanka) {
-               if (req.http.X-Subdomain == "ZERO") {
-                       if (req.http.host ~ 
"(^(en|ta|si)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Dialog Sri Lanka";
-                               set req.http.X-CS = "413-02";
-                       }
-               }
-       } else if (client.ip ~ carrier_digi) {
-               if (req.http.X-Subdomain == "ZERO") {
-                       if (req.http.User-Agent ~ "Opera") {
-                               set req.http.X-Carrier = "DIGI";
-                               set req.http.X-CS = "502-16";
-                       }
-               }
-       } else if (client.ip ~ carrier_dtac) {
-               set req.http.X-DfltLang = "th";
-               if (req.http.X-Subdomain == "ZERO") {
-                       set req.http.X-Carrier = "DTAC";
-                       set req.http.X-CS = "520-18";
-               }
-       } else if (client.ip ~ carrier_grameenphone_bangladesh) {
-               set req.http.X-DfltLang = "bn";
-               if (req.http.X-Subdomain == "ZERO") {
-                       if (req.http.host ~ 
"(^(bn)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Grameenphone 
Bangladesh";
-                               set req.http.X-CS = "470-01";
-                       }
-               }
-       } else if (client.ip ~ carrier_hello_cambodia) {
-               if (req.http.X-Subdomain == "ZERO") {
-                       set req.http.X-Carrier = "Hello Cambodia";
-                       set req.http.X-CS = "456-02";
-               }
-       } else if (client.ip ~ carrier_orange_botswana) {
-               if (req.http.X-Subdomain == "M") {
-                       set req.http.X-Carrier = "Orange Botswana";
-                       set req.http.X-CS = "652-02";
-               }
-       } else if (client.ip ~ carrier_orange_cameroon) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       if (req.http.host ~ 
"(^(fr|en|es|de|zh|ar|ha|ln|yo|eo)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Orange Cameroon";
-                               set req.http.X-CS = "624-02";
-                       }
-               }
-       } else if (client.ip ~ carrier_orange_congo) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       set req.http.X-Carrier = "Orange Congo";
-                       set req.http.X-CS = "630-86";
-               }
-       } else if (client.ip ~ carrier_orange_ivory_coast) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       set req.http.X-Carrier = "Orange Ivory Coast";
-                       set req.http.X-CS = "612-03";
-               }
-       } else if (client.ip ~ carrier_orange_kenya) {
-               if (req.http.X-Subdomain == "M") {
-                       set req.http.X-Carrier = "Orange Kenya";
-                       set req.http.X-CS = "639-07";
-               }
-       } else if (client.ip ~ carrier_orange_meditel_morocco) {
-               set req.http.X-DfltLang =  "fr";
-               if (req.http.X-Subdomain == "M") {
-                       if (req.http.host ~ 
"(^(fr|ar|en|es|de|it|nl|pt|ru|zh)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Orange Meditel 
Morocco";
-                               set req.http.X-CS = "604-00";
-                       }
-               }
-       } else if (client.ip ~ carrier_orange_niger) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       set req.http.X-Carrier = "Orange Niger";
-                       set req.http.X-CS = "614-04";
-               }
-       } else if (client.ip ~ carrier_orange_tunisia) {
-               set req.http.X-DfltLang = "fr";
-               if (req.http.X-Subdomain == "M") {
-                       if (req.http.host ~ 
"(^(ar|en|fr|es|de|it|ru|ja|zh)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Orange Tunisia";
-                               set req.http.X-CS = "605-01";
-                       }
-               }
-       } else if (client.ip ~ carrier_orange_uganda) {
-               if (req.http.X-Subdomain == "M") {
-                       if (req.http.host ~ 
"(^(ko|fr|de|en|zh|sw|rw|ar|hi|es)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "Orange Uganda";
-                               set req.http.X-CS = "641-14";
-                       }
-               }
-       } else if (client.ip ~ carrier_saudi_telecom) {
-               set req.http.X-DfltLang = "ar";
-               if (req.http.host ~ 
"(^(ar|bn|en|tl|ur)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
-                       set req.http.X-Carrier = "Saudi Telecom";
-                       set req.http.X-CS = "420-01";
-               }
-       } else if (client.ip ~ carrier_tata) {
-               if (req.http.X-Subdomain == "ZERO") {
-                       set req.http.X-Carrier = "TATA";
-                       /* MCC-MNC not clear from 
http://en.wikipedia.org/wiki/Mobile_country_code */
-                       set req.http.X-CS = "405-0*";
-               }
-       } else if (client.ip ~ carrier_telenor_montenegro) {
-               set req.http.X-Carrier = "Telenor Montenegro";
-               set req.http.X-CS = "297-01";
-       } else if (client.ip ~ carrier_vimpelcom_beeline) {
-               set req.http.X-DfltLang = "ru";
-               if (req.http.host ~ 
"(^(en|ru)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
-                       set req.http.X-Carrier = "Vimpelcom Beeline";
-                       set req.http.X-CS = "250-99";
-               }
-       } else if (client.ip ~ carrier_vimpelcom_mobilink_pakistan) {
-               if (req.http.host ~ 
"(^(en)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
-                       set req.http.X-Carrier = "Vimpelcom Mobilink Pakistan";
-                       set req.http.X-CS = "410-01";
-               }
-       } else if (client.ip ~ carrier_xl_indonesia) {
-               set req.http.X-DfltLang = "id";
-               if (req.http.X-Subdomain == "ZERO") {
-                       if (req.http.host ~ 
"(^(id|en|zh|ar|hi|ms|jv|su)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
-                               set req.http.X-Carrier = "XL Axiata";
-                               set req.http.X-CS = "510-11";
-                       }
-               }
-       }
-       /* Please keep the above list alphabetized by the ACL variable */
-}
+include "zero.inc.vcl";
 
 sub vcl_recv {
-       /* In case the XFF header is present, trust it in case it comes from
-        * Opera Mini's accelerating proxies, or from a carrier_testing ip 
range,
-        * and replace client ip value with the first value from the XFF Header
-        */
-       if (req.http.X-Forwarded-For && (client.ip ~ opera_mini || client.ip ~ 
carrier_testing)) {
-               set req.http.X-Orig-Client-IP = client.ip;
-               C{
-               struct sockaddr_storage *client_ip_ss = VRT_r_client_ip(sp);
-               struct sockaddr_in *client_ip_si = (struct sockaddr_in *) 
client_ip_ss;
-               struct in_addr *client_ip_ia = &(client_ip_si->sin_addr);
-               char *last;
-
-               char *xff_ip = strtok(VRT_GetHdr(sp, HDR_REQ, 
"\020X-Forwarded-For:"), ",");
-
-               if (xff_ip == NULL) {
-                       xff_ip = VRT_GetHdr(sp, HDR_REQ, 
"\020X-Forwarded-For:");
-               }
-
-               if (xff_ip != NULL) {
-                       inet_pton(AF_INET, xff_ip, client_ip_ia);
-               }
-               }C
-
-               unset req.http.X-Forwarded-For;
-       }
+       call spoof_clientip;
 
        /* This call will always set the following req.http values:
                X-Subdomain = M or ZERO
diff --git a/templates/varnish/zero.inc.vcl.erb 
b/templates/varnish/zero.inc.vcl.erb
new file mode 100644
index 0000000..8d367f9
--- /dev/null
+++ b/templates/varnish/zero.inc.vcl.erb
@@ -0,0 +1,462 @@
+# Varnish VCL include file for Wikipedia Zero
+
+C{
+#include <netinet/in.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+}C
+
+acl carrier_testing {
+       "216.38.130.160"/28;                // WMF office
+       "208.80.152.165";                   // fenari
+       "2620:0:860:2:21e:c9ff:feea:ab95";  // fenari
+       "208.80.154.149";                   // bast1001
+       "2620:0:861:2:7a2b:cbff:fe09:11ba"; // bast1001
+}
+
+acl carrier_dtac {
+       "1.46.0.0"/15;
+       "103.1.164.0"/22;
+       "111.84.0.0"/16;
+       "115.67.0.0"/16;
+       "202.91.16.0"/21;
+}
+
+acl carrier_orange_congo {
+       "41.77.220.64"/27;
+       "41.77.221.64"/27;
+       "41.77.222.64"/27;
+       "41.77.223.64"/27;
+       "81.199.62.88"/29;
+       "81.199.62.128"/26;
+       "91.151.146.64"/27;
+       "203.222.195.80"/28;
+       "203.222.206.112"/28;
+}
+
+acl carrier_orange_botswana {
+       "41.223.141.0"/24;
+}
+
+acl carrier_hello_cambodia {
+       "117.20.116.83";
+       "117.20.116.84"/30;
+       "117.20.116.88"/30;
+       "117.20.116.92"/31;
+}
+
+acl carrier_celcom_malaysia {
+       "183.171.0.0"/17;
+       "183.171.128.0"/19;
+       "183.171.160.0"/20;
+       "183.171.176.0"/22;
+       "203.82.66.192"/28;
+       "203.82.80.0"/23;
+       "203.82.82.0"/24;
+       "203.82.85.32"/28;
+       "203.82.87.0"/24;
+       "203.82.90.0"/23;
+       "203.82.92.0"/22;
+}
+
+acl carrier_dialog_sri_lanka {
+       "103.2.148.0"/22;
+       "111.223.128.0"/18;
+       "122.255.52.0"/23;
+       "122.255.54.0"/24;
+       "123.231.8.0"/21;
+       "123.231.40.0"/21;
+       "123.231.48.0"/20;
+       "123.231.120.0"/21;
+       "175.157.0.0"/16;
+       "182.161.0.0"/19;
+}
+
+acl carrier_tata {
+       "10.234.0.0"/16;
+       "14.96.246.36";
+       "14.96.246.40"/30;
+       "14.194.0.0"/15;
+       "27.107.0.0"/16;
+       "49.200.0.0"/14;
+       "49.248.224.0"/20;
+       "49.248.240.0"/22;
+       "49.248.244.0"/23;
+       "49.249.0.0"/16;
+       "59.161.95.65";
+       "59.161.95.66"/31;
+       "59.161.95.68";
+       "59.161.95.86";
+       "59.161.254.21";
+       "115.117.128.0"/17;
+       "115.118.16.0"/22;
+       "115.118.44.0"/22;
+       "115.118.48.0"/20;
+       "115.118.80.0"/20;
+       "115.118.108.0"/22;
+       "115.118.144.0"/20;
+       "115.118.176.0"/20;
+       "115.118.204.0"/22;
+       "115.118.208.0"/20;
+       "115.118.224.0"/19;
+       "182.156.0.0"/16;
+       "219.64.175.132";
+       "219.64.175.134"/31;
+       "219.64.175.136"/31;
+       "219.64.175.139";
+       "219.64.175.142";
+       "219.64.175.215";
+       "219.64.175.216"/31;
+       "219.64.175.219";
+}
+
+acl carrier_digi {
+       "115.164.0.0"/16;
+       "116.197.0.0"/17;
+       "203.92.128.185";
+}
+
+acl carrier_orange_ivory_coast {
+       "41.66.28.72"/31;
+       "41.66.28.94"/31;
+       "41.66.28.96";
+}
+
+acl carrier_orange_uganda {
+       "41.202.224.0"/19;
+       "197.157.0.0"/18;
+}
+
+acl carrier_saudi_telecom {
+       "84.235.72.0"/22;
+       "84.235.94.240"/28;
+       "212.118.140.0"/22;
+       "212.215.128.0"/17;
+}
+
+acl carrier_orange_kenya {
+       "212.49.88.0"/25;
+}
+
+acl carrier_orange_tunisia {
+       "197.29.192.0"/18;
+       "197.30.0.0"/17;
+       "197.30.128.0"/19;
+       "197.30.224.0"/19;
+}
+
+acl carrier_orange_niger {
+       "41.203.157.1";
+       "41.203.157.2";
+       "41.203.159.243";
+}
+
+acl carrier_orange_cameroon {
+       "41.202.192.0"/19;
+       "193.251.155.0"/25;
+}
+
+acl carrier_grameenphone_bangladesh {
+       "119.30.38.0"/23;
+       "119.30.45.0"/24;
+       "119.30.47.0"/24;
+}
+
+acl carrier_telenor_montenegro {
+       "79.143.96.0"/20;
+}
+
+acl carrier_xl_indonesia {
+       "112.215.63.0"/24;
+       "112.215.64.0"/23;
+       "112.215.66.0"/24;
+       "202.152.240.0"/24;
+       "202.152.243.0"/24;
+}
+
+acl carrier_vimpelcom_beeline {
+       "31.13.144.2"/31;
+       "31.13.144.4"/30;
+       "31.13.144.8"/29;
+       "31.13.144.16"/28;
+       "31.13.144.32"/28;
+       "31.13.144.48"/29;
+       "31.13.144.56"/30;
+       "31.13.144.60"/31;
+       "31.13.144.62";
+       "46.16.96.0"/21;
+       "62.33.151.0"/24;
+       "83.220.227.0"/24;
+       "83.220.236.0"/22;
+       "85.115.224.9";
+       "85.115.224.10"/31;
+       "85.115.224.12"/31;
+       "85.115.224.14";
+       "85.115.224.128"/27;
+       "85.115.224.193";
+       "85.115.224.194"/31;
+       "85.115.224.196"/30;
+       "85.115.224.200"/29;
+       "85.115.224.208"/29;
+       "85.115.224.216"/30;
+       "85.115.224.220"/31;
+       "85.115.224.222";
+       "85.115.224.225";
+       "85.115.224.226"/31;
+       "85.115.224.228"/30;
+       "85.115.224.232"/29;
+       "85.115.224.240"/29;
+       "85.115.224.248"/30;
+       "85.115.224.252"/31;
+       "85.115.224.254";
+       "85.115.243.32"/27;
+       "85.115.248.0"/24;
+       "87.228.75.156";
+       "89.179.104.235";
+       "89.188.224.136"/29;
+       "213.252.195.0"/24;
+       "217.118.64.32"/27;
+       "217.118.66.0"/24;
+       "217.118.78.0"/24;
+       "217.118.79.32"/28;
+       "217.118.81.0"/24;
+       "217.118.82.16"/28;
+       "217.118.82.32"/28;
+       "217.118.82.64"/26;
+       "217.118.82.128"/25;
+       "217.118.83.0"/24;
+       "217.118.85.0"/24;
+       "217.118.89.0"/24;
+       "217.118.90.0"/24;
+       "217.118.91.64"/26;
+       "217.118.92.0"/23;
+       "217.118.95.0"/24;
+       "217.118.96.0"/19;
+       "217.118.128.0"/17;
+       "217.119.0.0"/18;
+       "217.119.64.0"/20;
+       "217.119.80.0"/21;
+       "217.119.88.0"/22;
+       "217.119.92.0"/23;
+       "217.119.94.0"/24;
+       "217.119.95.0"/25;
+       "217.119.95.128"/26;
+       "217.119.95.192";
+       "217.148.194.129";
+       "217.148.194.130"/31;
+       "217.148.194.132"/30;
+       "217.148.194.136"/30;
+       "217.148.194.140"/31;
+       "217.148.194.142";
+}
+
+acl carrier_vimpelcom_mobilink_pakistan {
+       "119.160.116.0"/22;
+       "119.160.125.0"/27;
+       "119.160.126.96"/28;
+       "119.160.126.128"/25;
+}
+
+acl carrier_orange_meditel_morocco {
+       "41.92.0.0"/18;
+       "41.92.64.0"/19;
+       "41.214.192.0"/18;
+       "197.153.0.0"/16;
+       "197.247.0.0"/16;
+}
+
+acl carrier_central_african_republic {
+       "41.223.184.1";
+       "41.223.184.2"/31;
+       "41.223.184.148"/30;
+       "41.223.184.152"/30;
+}
+
+sub tag_carrier {
+       /* For wiki zero project - tags partnered carriers
+          The values for the X-CS headers are obtained from
+          http://en.wikipedia.org/wiki/Mobile_country_code
+          and http://www.mcc-mnc.com/
+       */
+       if ( req.http.host ~ 
"(^([a-zA-Z0-9-]+)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org" ) {
+               set req.http.X-Subdomain = "ZERO";
+       } else {
+               set req.http.X-Subdomain = "M";
+       }
+
+       // go to english by default
+       set req.http.X-DfltLang = "en";
+       set req.http.X-DfltPage = "/wiki/Special:ZeroRatedMobileAccess";
+
+       /* Please keep this list alphabetized by the ACL variable */
+       if (client.ip ~ carrier_celcom_malaysia) {
+               if (req.http.X-Subdomain == "ZERO") {
+                       set req.http.X-Carrier = "Celcom Malaysia";
+                       set req.http.X-CS = "502-13";
+               }
+       } else if (client.ip ~ carrier_central_african_republic) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       if (req.http.host ~ 
"(^(fr|ar|sg|en|es|zh|ar|ha|ln|eo)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Orange Central 
African Republic";
+                               set req.http.X-CS = "623-01";
+                       }
+               }
+       } else if (client.ip ~ carrier_dialog_sri_lanka) {
+               if (req.http.X-Subdomain == "ZERO") {
+                       if (req.http.host ~ 
"(^(en|ta|si)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Dialog Sri Lanka";
+                               set req.http.X-CS = "413-02";
+                       }
+               }
+       } else if (client.ip ~ carrier_digi) {
+               if (req.http.X-Subdomain == "ZERO") {
+                       if (req.http.User-Agent ~ "Opera") {
+                               set req.http.X-Carrier = "DIGI";
+                               set req.http.X-CS = "502-16";
+                       }
+               }
+       } else if (client.ip ~ carrier_dtac) {
+               set req.http.X-DfltLang = "th";
+               if (req.http.X-Subdomain == "ZERO") {
+                       set req.http.X-Carrier = "DTAC";
+                       set req.http.X-CS = "520-18";
+               }
+       } else if (client.ip ~ carrier_grameenphone_bangladesh) {
+               set req.http.X-DfltLang = "bn";
+               if (req.http.X-Subdomain == "ZERO") {
+                       if (req.http.host ~ 
"(^(bn)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Grameenphone 
Bangladesh";
+                               set req.http.X-CS = "470-01";
+                       }
+               }
+       } else if (client.ip ~ carrier_hello_cambodia) {
+               if (req.http.X-Subdomain == "ZERO") {
+                       set req.http.X-Carrier = "Hello Cambodia";
+                       set req.http.X-CS = "456-02";
+               }
+       } else if (client.ip ~ carrier_orange_botswana) {
+               if (req.http.X-Subdomain == "M") {
+                       set req.http.X-Carrier = "Orange Botswana";
+                       set req.http.X-CS = "652-02";
+               }
+       } else if (client.ip ~ carrier_orange_cameroon) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       if (req.http.host ~ 
"(^(fr|en|es|de|zh|ar|ha|ln|yo|eo)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Orange Cameroon";
+                               set req.http.X-CS = "624-02";
+                       }
+               }
+       } else if (client.ip ~ carrier_orange_congo) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       set req.http.X-Carrier = "Orange Congo";
+                       set req.http.X-CS = "630-86";
+               }
+       } else if (client.ip ~ carrier_orange_ivory_coast) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       set req.http.X-Carrier = "Orange Ivory Coast";
+                       set req.http.X-CS = "612-03";
+               }
+       } else if (client.ip ~ carrier_orange_kenya) {
+               if (req.http.X-Subdomain == "M") {
+                       set req.http.X-Carrier = "Orange Kenya";
+                       set req.http.X-CS = "639-07";
+               }
+       } else if (client.ip ~ carrier_orange_meditel_morocco) {
+               set req.http.X-DfltLang =  "fr";
+               if (req.http.X-Subdomain == "M") {
+                       if (req.http.host ~ 
"(^(fr|ar|en|es|de|it|nl|pt|ru|zh)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Orange Meditel 
Morocco";
+                               set req.http.X-CS = "604-00";
+                       }
+               }
+       } else if (client.ip ~ carrier_orange_niger) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       set req.http.X-Carrier = "Orange Niger";
+                       set req.http.X-CS = "614-04";
+               }
+       } else if (client.ip ~ carrier_orange_tunisia) {
+               set req.http.X-DfltLang = "fr";
+               if (req.http.X-Subdomain == "M") {
+                       if (req.http.host ~ 
"(^(ar|en|fr|es|de|it|ru|ja|zh)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Orange Tunisia";
+                               set req.http.X-CS = "605-01";
+                       }
+               }
+       } else if (client.ip ~ carrier_orange_uganda) {
+               if (req.http.X-Subdomain == "M") {
+                       if (req.http.host ~ 
"(^(ko|fr|de|en|zh|sw|rw|ar|hi|es)\.m|^m)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "Orange Uganda";
+                               set req.http.X-CS = "641-14";
+                       }
+               }
+       } else if (client.ip ~ carrier_saudi_telecom) {
+               set req.http.X-DfltLang = "ar";
+               if (req.http.host ~ 
"(^(ar|bn|en|tl|ur)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
+                       set req.http.X-Carrier = "Saudi Telecom";
+                       set req.http.X-CS = "420-01";
+               }
+       } else if (client.ip ~ carrier_tata) {
+               if (req.http.X-Subdomain == "ZERO") {
+                       set req.http.X-Carrier = "TATA";
+                       /* MCC-MNC not clear from 
http://en.wikipedia.org/wiki/Mobile_country_code */
+                       set req.http.X-CS = "405-0*";
+               }
+       } else if (client.ip ~ carrier_telenor_montenegro) {
+               set req.http.X-Carrier = "Telenor Montenegro";
+               set req.http.X-CS = "297-01";
+       } else if (client.ip ~ carrier_vimpelcom_beeline) {
+               set req.http.X-DfltLang = "ru";
+               if (req.http.host ~ 
"(^(en|ru)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
+                       set req.http.X-Carrier = "Vimpelcom Beeline";
+                       set req.http.X-CS = "250-99";
+               }
+       } else if (client.ip ~ carrier_vimpelcom_mobilink_pakistan) {
+               if (req.http.host ~ 
"(^(en)\.(zero|m)|^(zero|m))\.([a-zA-Z0-9-]+)\.org") {
+                       set req.http.X-Carrier = "Vimpelcom Mobilink Pakistan";
+                       set req.http.X-CS = "410-01";
+               }
+       } else if (client.ip ~ carrier_xl_indonesia) {
+               set req.http.X-DfltLang = "id";
+               if (req.http.X-Subdomain == "ZERO") {
+                       if (req.http.host ~ 
"(^(id|en|zh|ar|hi|ms|jv|su)\.zero|^zero)\.([a-zA-Z0-9-]+)\.org") {
+                               set req.http.X-Carrier = "XL Axiata";
+                               set req.http.X-CS = "510-11";
+                       }
+               }
+       }
+       /* Please keep the above list alphabetized by the ACL variable */
+}
+
+sub spoof_clientip {
+       /* In case the XFF header is present, trust it in case it comes from
+        * Opera Mini's accelerating proxies, or from a carrier_testing ip 
range,
+        * and replace client ip value with the first value from the XFF Header
+        */
+       if (req.http.X-Forwarded-For && (client.ip ~ opera_mini || client.ip ~ 
carrier_testing)) {
+               set req.http.X-Orig-Client-IP = client.ip;
+               C{
+               struct sockaddr_storage *client_ip_ss = VRT_r_client_ip(sp);
+               struct sockaddr_in *client_ip_si = (struct sockaddr_in *) 
client_ip_ss;
+               struct in_addr *client_ip_ia = &(client_ip_si->sin_addr);
+               char *last;
+
+               char *xff_ip = strtok(VRT_GetHdr(sp, HDR_REQ, 
"\020X-Forwarded-For:"), ",");
+
+               if (xff_ip == NULL) {
+                       xff_ip = VRT_GetHdr(sp, HDR_REQ, 
"\020X-Forwarded-For:");
+               }
+
+               if (xff_ip != NULL) {
+                       inet_pton(AF_INET, xff_ip, client_ip_ia);
+               }
+               }C
+
+               unset req.http.X-Forwarded-For;
+       }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/65614
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I00857d2c9a0348cae51345c2552529cd6f50e703
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Faidon <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to