Advertisement
Guest User

Untitled

a guest
May 29th, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. (function() { // Start closure.
  2.  
  3. // With all due respect, we're owed our privacy back.
  4. var ranges = [
  5. // US House of Representatives
  6. '143.228.0.0/16',
  7. '143.231.0.0/16',
  8. '137.18.0.0/16',
  9. '12.185.56.0/29',
  10. '12.147.170.144/28',
  11. '74.119.128.0/22',
  12.  
  13. // US Senate
  14. '156.33.0.0/16',
  15.  
  16. // United States Department of Justice
  17. '149.101.0.0/16',
  18.  
  19. // United States Department of Homeland Security
  20. '65.165.132.0/24',
  21. '204.248.24.0/24',
  22. '216.81.80.0/20',
  23.  
  24. // Area 51
  25. /*
  26. '6.0.0.0/8',
  27. '7.0.0.0/8',
  28. '11.0.0.0/8',
  29. '21.0.0.0/8',
  30. '22.0.0.0/8',
  31. '25.0.0.0/8',
  32. '26.0.0.0/8',
  33. '29.0.0.0/8',
  34. '30.0.0.0/8',
  35. '49.0.0.0/8',
  36. '50.0.0.0/8',
  37. '55.0.0.0/8'
  38. */
  39. ];
  40.  
  41. function main() {
  42. if (window.fftf_redirectjs && window.fftf_redirectjs.alwaysRedirect) {
  43. redirect();
  44. return;
  45. }
  46.  
  47. // Get geolocation.
  48. var script = document.createElement('script');
  49. script.setAttribute('async', 'async');
  50. script.setAttribute('src', 'https://fftf-geocoder.herokuapp.com/?callback=redirect_js_callback');
  51. document.getElementsByTagName('head')[0].appendChild(script);
  52.  
  53. // send leaderboard stat
  54. sendLeaderboardStat();
  55. }
  56.  
  57. function redirect() {
  58. if (window.fftf_redirectjs && window.fftf_redirectjs.url)
  59. var url = window.fftf_redirectjs.url
  60.  
  61. else {
  62. var url = 'https://www.blackoutcongress.org/'
  63.  
  64. if (window.fftf_redirectjs && window.fftf_redirectjs.noNudes)
  65. url += '?pg=1';
  66. }
  67. location.replace(url);
  68. }
  69.  
  70. window.redirect_js_callback = function(geolocation) {
  71. var ip = geolocation.ip;
  72.  
  73. var match = false;
  74. for (var i = 0; i < ranges.length; i++) {
  75. var range = ranges[i].split('/');
  76. var maskedIP = getMaskedNetworkAddress(ip, range[1]);
  77.  
  78. if (maskedIP === range[0]) {
  79. match = true;
  80. break;
  81. }
  82. }
  83.  
  84. if (match) {
  85. redirect();
  86. }
  87. }
  88.  
  89. function getMaskedNetworkAddress(ip, mask) {
  90. var bits;
  91. var mbits = new Array(4);
  92. var SIZE_BYTE = 8; // Prevent the annoying WP smiley faces from showing up
  93.  
  94. for (i = 0; i < mbits.length; i++) {
  95. if (mask >= SIZE_BYTE) {
  96. bits = Array(SIZE_BYTE + 1).join(1 + '');
  97. mask -= SIZE_BYTE;
  98. } else {
  99. bits = Array(mask + 1).join(1 + '');
  100. bits += Array(SIZE_BYTE + 1 - mask).join(0 + '');
  101. mask -= mask;
  102. }
  103. mbits[i] = parseInt(bits, 2);
  104. }
  105. var ibits = ip.split(".");
  106. var maskedip = '';
  107. for (i = 0; i < mbits.length; i++) {
  108. if (maskedip != '') {
  109. maskedip += '.';
  110. }
  111. ibits[i] = parseInt(ibits[i]);
  112. ibits[i] &= mbits[i];
  113. maskedip += ibits[i] + '';
  114. }
  115.  
  116. return maskedip;
  117. }
  118.  
  119. function sendLeaderboardStat() {
  120. var data = {
  121. campaign: 'blackoutcongress',
  122. stat: 'display_widget',
  123. data: null,
  124. host: window.location.host.replace('www.', ''),
  125. session: null
  126. };
  127.  
  128. // Serialize data
  129. var params = '';
  130. for (var key in data) {
  131. if (params.length !== 0) {
  132. params += '&';
  133. }
  134. params += key + '=' + data[key];
  135. }
  136.  
  137. var http = new XMLHttpRequest();
  138. var url = 'https://fftf-host-counter.herokuapp.com/log';
  139. http.open('POST', url, true);
  140. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  141. http.send(params);
  142. }
  143.  
  144. // Let's begin.
  145. main();
  146.  
  147. })(); // End closure.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement