瀏覽代碼

moved from https://github.com/epsylon/Border-Check

psy 6 年之前
父節點
當前提交
784cdf9400
共有 100 個文件被更改,包括 1899 次插入2 次删除
  1. 157 2
      README.md
  2. 20 0
      bc
  3. 二進制
      bin/lft.linux
  4. 2 0
      doc/AUTHORS
  5. 33 0
      doc/CHANGELOG
  6. 209 0
      doc/COPYING
  7. 94 0
      doc/INSTALL
  8. 96 0
      doc/README
  9. 1 0
      doc/THANKS
  10. 1136 0
      main.py
  11. 35 0
      options.py
  12. 0 0
      web/__init__.py
  13. 116 0
      web/ajax.py
  14. 二進制
      web/fonts/SourceSansPro-Bold.otf
  15. 二進制
      web/fonts/SourceSansPro-Regular.otf
  16. 二進制
      web/images/bclogo.png
  17. 二進制
      web/images/close.png
  18. 二進制
      web/images/hide.png
  19. 二進制
      web/images/markers/.DS_Store
  20. 二進制
      web/images/markers/cluster-marker.png
  21. 二進制
      web/images/markers/marker-icon-0.png
  22. 二進制
      web/images/markers/marker-icon-1.png
  23. 二進制
      web/images/markers/marker-icon-10.png
  24. 二進制
      web/images/markers/marker-icon-11.png
  25. 二進制
      web/images/markers/marker-icon-12.png
  26. 二進制
      web/images/markers/marker-icon-13.png
  27. 二進制
      web/images/markers/marker-icon-14.png
  28. 二進制
      web/images/markers/marker-icon-15.png
  29. 二進制
      web/images/markers/marker-icon-16.png
  30. 二進制
      web/images/markers/marker-icon-17.png
  31. 二進制
      web/images/markers/marker-icon-18.png
  32. 二進制
      web/images/markers/marker-icon-19.png
  33. 二進制
      web/images/markers/marker-icon-2.png
  34. 二進制
      web/images/markers/marker-icon-20.png
  35. 二進制
      web/images/markers/marker-icon-21.png
  36. 二進制
      web/images/markers/marker-icon-22.png
  37. 二進制
      web/images/markers/marker-icon-23.png
  38. 二進制
      web/images/markers/marker-icon-24.png
  39. 二進制
      web/images/markers/marker-icon-25.png
  40. 二進制
      web/images/markers/marker-icon-26.png
  41. 二進制
      web/images/markers/marker-icon-27.png
  42. 二進制
      web/images/markers/marker-icon-28.png
  43. 二進制
      web/images/markers/marker-icon-29.png
  44. 二進制
      web/images/markers/marker-icon-3.png
  45. 二進制
      web/images/markers/marker-icon-30.png
  46. 二進制
      web/images/markers/marker-icon-31.png
  47. 二進制
      web/images/markers/marker-icon-32.png
  48. 二進制
      web/images/markers/marker-icon-33.png
  49. 二進制
      web/images/markers/marker-icon-34.png
  50. 二進制
      web/images/markers/marker-icon-35.png
  51. 二進制
      web/images/markers/marker-icon-36.png
  52. 二進制
      web/images/markers/marker-icon-37.png
  53. 二進制
      web/images/markers/marker-icon-38.png
  54. 二進制
      web/images/markers/marker-icon-39.png
  55. 二進制
      web/images/markers/marker-icon-4.png
  56. 二進制
      web/images/markers/marker-icon-40.png
  57. 二進制
      web/images/markers/marker-icon-41.png
  58. 二進制
      web/images/markers/marker-icon-42.png
  59. 二進制
      web/images/markers/marker-icon-43.png
  60. 二進制
      web/images/markers/marker-icon-44.png
  61. 二進制
      web/images/markers/marker-icon-45.png
  62. 二進制
      web/images/markers/marker-icon-46.png
  63. 二進制
      web/images/markers/marker-icon-47.png
  64. 二進制
      web/images/markers/marker-icon-48.png
  65. 二進制
      web/images/markers/marker-icon-49.png
  66. 二進制
      web/images/markers/marker-icon-5.png
  67. 二進制
      web/images/markers/marker-icon-50.png
  68. 二進制
      web/images/markers/marker-icon-51.png
  69. 二進制
      web/images/markers/marker-icon-52.png
  70. 二進制
      web/images/markers/marker-icon-53.png
  71. 二進制
      web/images/markers/marker-icon-54.png
  72. 二進制
      web/images/markers/marker-icon-55.png
  73. 二進制
      web/images/markers/marker-icon-56.png
  74. 二進制
      web/images/markers/marker-icon-57.png
  75. 二進制
      web/images/markers/marker-icon-58.png
  76. 二進制
      web/images/markers/marker-icon-59.png
  77. 二進制
      web/images/markers/marker-icon-6.png
  78. 二進制
      web/images/markers/marker-icon-60.png
  79. 二進制
      web/images/markers/marker-icon-61.png
  80. 二進制
      web/images/markers/marker-icon-62.png
  81. 二進制
      web/images/markers/marker-icon-63.png
  82. 二進制
      web/images/markers/marker-icon-64.png
  83. 二進制
      web/images/markers/marker-icon-65.png
  84. 二進制
      web/images/markers/marker-icon-66.png
  85. 二進制
      web/images/markers/marker-icon-67.png
  86. 二進制
      web/images/markers/marker-icon-68.png
  87. 二進制
      web/images/markers/marker-icon-69.png
  88. 二進制
      web/images/markers/marker-icon-7.png
  89. 二進制
      web/images/markers/marker-icon-70.png
  90. 二進制
      web/images/markers/marker-icon-71.png
  91. 二進制
      web/images/markers/marker-icon-72.png
  92. 二進制
      web/images/markers/marker-icon-73.png
  93. 二進制
      web/images/markers/marker-icon-74.png
  94. 二進制
      web/images/markers/marker-icon-75.png
  95. 二進制
      web/images/markers/marker-icon-76.png
  96. 二進制
      web/images/markers/marker-icon-77.png
  97. 二進制
      web/images/markers/marker-icon-78.png
  98. 二進制
      web/images/markers/marker-icon-79.png
  99. 二進制
      web/images/markers/marker-icon-8.png
  100. 0 0
      web/images/markers/marker-icon-80.png

+ 157 - 2
README.md

@@ -1,3 +1,158 @@
-# Border-Check
+Border Check v0.2 - 2015
+========================
+
+Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
+
+As one surfs the net, data packets are sent from the user's computer to the target server. These data packets go on a journey hopping from server to server, potentially crossing multiple countries, until the packets reach the desired website. In each of the countries that are passed different laws and practices can apply to the data, influencing whether or not authorities can inspect, store or modify that data.
+
+In realtime BC lets you know which countries you surf through as you browse the web. Additionally BC will illustrate this process on a world map and (where available) provide you with contextualizing information on that country's laws and practices regarding your data.
+
+BC runs on OSx and Unix systems.
+
+Currently supporting the following browsers on OSX and Unix systems: Firefox, Chromium, Chrome, Safari
+
+NOTE: Browser history has to be enabled.
+
+
+### Installing BC:
+
+BC v0.2 (2015) provides a "Wizard" installer that makes installing the required libraries and packages for BC easier. 
+
+The wizard runs automatically the first time you run BC. It will check if your system has all the dependencies met for BC and if not the wizard will download and install them automagically. During the wizard BC will also install the required maps and databases.
+
+Border Check has the following dependencies:
+
+### Python:
+
+* [pygeoip](https://pypi.python.org/pypi/pygeoip/0.2.7) 
+* [lxml](https://pypi.python.org/pypi/lxml/3.2.3)
+* [biplist](https://pypi.python.org/pypi/biplist/0.5) (if you plan to use Safari)
+
+For **Debian**-based systems (ex: Ubuntu), first run:
+
+`sudo apt-get install python-pip` to install [pip](https://pypi.python.org/pypi/pip/), python's super usefull package manager.
+
+If you already have pip: `pip install lxml` and `pip install pygeoip`
+
+On **OSX** it's recommended you install [Homebrew](http://brew.sh/) first and use that to get [python + pip](https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python).
+
+
+### LFT
+
+BC uses [LFT v3.73 (08/2014)](http://pwhois.org/lft/) for tracerouting.
+
+On **Debian** and **Ubuntu** it needs to be built from source and requires libpcap [`sudo apt-get install python-libpcap`]
+
+To make this process more easy, BC (v0.2 2015) provides you a binary with the source. It is called `lft.linux` and is on folder `bin`.
+
+On **OSX** you can use Homebrew: `brew install lft` which will automatically download and build the package.
+
+#### Note on provided LFT binary
+
+We do provide a static compiled binary of lft in the bin directory.
+
+Please consider that this is for convenience only, you are invited to make your own.
+
+
+### GeoIP databases and js libraries
+
+BC will automatically unpack the newest geoip databases on the first run. 
+
+Javascript mapping libraries are included in the package.
+
+
+## Options and features:
+
+See the included examples for usage.
+
+```
+bc [OPTIONS] 
+
+  --version             show program's version number and exit
+  -h, --help            show this help message and exit
+  -d, --debug           debug mode
+  -l LFT_PATH           path to lft (fetch from source or use provided binary)
+  --xml=EXPORT_XML      export traces to xml (ex: --xml foo.xml)
+  --load=IMPORT_XML     import traces (non root required) (ex: --load bar.xml)
+  --bh=BROWSER_HISTORY  set browser's history path
+  -b BROWSER            set browser type to be used: F = Firefox / C = Chrome / S = Safari / Ch = Chromium / N = None
+
+```
+
+#### Examples of usage:
+
+Normal BC run:
+
+`$ python bc`
+
+Debug mode:
+
+`$ python bc --debug`
+
+Export 'tracing' results to xml:
+
+`$ python bc --xml "mytravel.xml"`
+
+
+#### More options (set browsers, paths, etc):
+
+Use Firefox browser: 
+
+`$ python bc -b F`
+
+Use Chromium browser: 
+
+`$ python bc -b Ch` 
+
+Set browser's history path manually, on Galeon/Unix:
+
+`$ python bc --bh ".galeon/mozilla/galeon/places.sqlite"`
+
+Set browser's history path manually, on Chrome/OSx:
+
+`$ python bc --bh "Library/Application Support/Google/Chrome/Default/History"`
+
+Set browser's history path manually, on Safari/OSx:
+
+`$ python bc --bh "Library/Safari/History.plist"` 
+
+Set browser's history path manually, on Firefox/Unix:
+
+`$ python bc --bh "Library/Safari/History.plist"` 
+
+Import 'traces' from xml:
+
+`$ python bc --load "mytravel.xml"`
+
+Set lft path to be used by BC traces:
+
+`$ python bc -l "/usr/bin/lft"`
+
+
+### License
+
+Border Check is free software, and may be redistributed under [GPL v3].
+
+
+### Contribute: 
+
+If you want to contribute to BC development, reporting a bug, providing a patch, commenting 
+on the code base or simply need to find help to run it, please go to:
+
+      irc.freenode.net / channel: #BorderCheck
+
+If nobody gets back to you, then drop an e-mail.
+
+To make donations use the following hashes:
+  
+      - Bitcoin: 1Q63KtiLGzXiYA8XkWFPnWo7nKPWFr3nrc
+      - Ecoin: ETtSteMWxjY7RKWZGMNSkX7eC3BJ21VYXE
+
+
+### Contact
+
+Please report any problems you encounter using/installing Border Check to:
+
+ - Roel Roscam Abbing (rscmbbng@riseup.net)
+ - psy (epsylon@riseup.net)
 
-Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.

+ 20 - 0
bc

@@ -0,0 +1,20 @@
+#!/usr/bin/env python2
+# -*- coding: iso-8859-15 -*-
+"""
+BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
+GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
+"""
+from main import bc
+
+class NullOutput(object):
+    def write(self, text):
+        pass
+    def flush(self):
+        pass
+
+if __name__ == "__main__":
+    app = bc()
+    options = app.create_options()
+    if options:
+        app.set_options(options)
+        app.run()

二進制
bin/lft.linux


+ 2 - 0
doc/AUTHORS

@@ -0,0 +1,2 @@
+psy (epsylon@riseup.net)
+Roel Roscam Abbing (rscmbbng@riseup.net)

+ 33 - 0
doc/CHANGELOG

@@ -0,0 +1,33 @@
+================================================================
+Changelog: Border-Check
+==============================
+
+=================
+May 13, 2015:
+=================
+
+- added "wizard" installer
+- added LFT binary to source
+- added more maps
+- added metadata
+- added travelling feature on map
+- added history of urls visited on map
+- added controllers to map (play|hide|stop)
+- fixed some minor bugs
+- public release: Border Check v0.2
+
+=================
+October 4, 2013:
+=================
+
+- added feature to import traces from XML template
+- fixed some LFT subprocess errors on Unix based systems
+- more clean non-debug mode
+- added 'localhost' filter to target parser
+
+=================
+September 27, 2013:
+=================
+
+- public release: Border Check v0.1
+

文件差異過大導致無法顯示
+ 209 - 0
doc/COPYING


+ 94 - 0
doc/INSTALL

@@ -0,0 +1,94 @@
+========================
+Border Check v0.2 - 2015
+========================
+
+Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
+
+As one surfs the net, data packets are sent from the user's computer to the target server. These data packets go on a journey hopping from server to server, potentially crossing multiple countries, until the packets reach the desired website. In each of the countries that are passed different laws and practices can apply to the data, influencing whether or not authorities can inspect, store or modify that data.
+
+In realtime BC lets you know which countries you surf through as you browse the web. Additionally BC will illustrate this process on a world map and (where available) provide you with contextualizing information on that country's laws and practices regarding your data.
+
+==========================
+INSTALL:
+===================
+
+BC runs on OSx and Unix systems. It requires the following libraries/dependencies:
+
+===================
+    + Python:
+===================
+
+        - python-geoip - Python bindings for the GeoIP IP-to-country resolver library
+
+               https://pypi.python.org/pypi/pygeoip/0.2.7
+
+        - python-lxml - pythonic binding for the libxml2 and libxslt libraries
+
+               https://pypi.python.org/pypi/lxml/3.2.3
+
+                       * On Debian-based systems (ex: Ubuntu), first run: 
+
+                              sudo apt-get install python-pip 
+
+                              and then run:
+      
+                                   pip install lxml
+           
+                                   pip install pygeoip
+        - biplist:
+
+               https://pypi.python.org/pypi/biplist/0.5
+
+===================
+    + Javascript:
+===================
+
+        - leaflet.js
+
+               http://leafletjs.com
+
+        - leaflet.markercluster.js
+
+               https://github.com/Leaflet/Leaflet.markercluster
+
+        - jquery.js
+
+               http://www.jquery.com
+
+        - rlayer.js
+
+               http://dynmeth.github.io/RaphaelLayer/
+
+        - raphael.js
+
+               http://raphaeljs.com/
+
+        - favicon.js
+
+               https://gist.github.com/mathiasbynens/428626
+
+===================
+    + LFT:
+===================
+
+        - LFT 3.35 (tracerouter)
+
+               http://pwhois.org/lft/
+
+===================
+    + Databases:
+===================
+
+        - Maxmind GeoIPLite and GeoIPASNum:
+          
+               http://dev.maxmind.com/geoip/legacy/geolite/
+
+===================
+
+Please report any problems you encounter using/installing Border Check to:
+
+ - Roel Roscam Abbing (rscmbbng@riseup.net)
+ - psy (epsylon@riseup.net)
+
+=========
+

+ 96 - 0
doc/README

@@ -0,0 +1,96 @@
+Border Check v0.2 - 2015
+========================
+
+Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
+
+As one surfs the net, data packets are sent from the user's computer to the target server. These data packets go on a journey hopping from server to server, potentially crossing multiple countries, until the packets reach the desired website. In each of the countries that are passed different laws and practices can apply to the data, influencing whether or not authorities can inspect, store or modify that data.
+
+In realtime BC lets you know which countries you surf through as you browse the web. Additionally BC will illustrate this process on a world map and (where available) provide you with contextualizing information on that country's laws and practices regarding your data.
+
+Currently supporting the following browsers on OSX and Unix systems: Firefox, Chromium, Chrome, Safari
+
+NOTE: Browser history has to be enabled.
+
+See the included examples for usage.
+
+```
+bc [OPTIONS] 
+
+  --version             show program's version number and exit
+  -h, --help            show this help message and exit
+  -d, --debug           debug mode
+  -l LFT_PATH           path to lft (fetch from source or use provided binary)
+  --xml=EXPORT_XML      export traces to xml (ex: --xml foo.xml)
+  --load=IMPORT_XML     import traces (non root required) (ex: --load bar.xml)
+  --bh=BROWSER_HISTORY  set browser's history path
+  -b BROWSER            set browser type to be used: F = Firefox / C = Chrome / S = Safari / Ch = Chromium / N = None
+
+```
+
+#### Examples of usage:
+
+Normal BC run:
+
+`$ python bc`
+
+Debug mode:
+
+`$ python bc --debug`
+
+Export 'tracing' results to xml:
+
+`$ python bc --xml "mytravel.xml"`
+
+
+#### More options (set browsers, paths, etc):
+
+Use Firefox browser: 
+
+`$ python bc -b F`
+
+Use Chromium browser: 
+
+`$ python bc -b Ch` 
+
+Set browser's history path manually, on Galeon/Unix:
+
+`$ python bc --bh ".galeon/mozilla/galeon/places.sqlite"`
+
+Set browser's history path manually, on Chrome/OSx:
+
+`$ python bc --bh "Library/Application Support/Google/Chrome/Default/History"`
+
+Set browser's history path manually, on Safari/OSx:
+
+`$ python bc --bh "Library/Safari/History.plist"` 
+
+Set browser's history path manually, on Firefox/Unix:
+
+`$ python bc --bh "Library/Safari/History.plist"` 
+
+Import 'traces' from xml:
+
+`$ python bc --load "mytravel.xml"`
+
+Set lft path to be used by BC traces:
+
+`$ python bc -l "/usr/bin/lft"`
+
+
+### Contribute: 
+
+If you want to contribute to BC development, reporting a bug, providing a patch, commenting 
+on the code base or simply need to find help to run it, please go to:
+
+      irc.freenode.net / channel: #BorderCheck
+
+If nobody gets back to you, then drop an e-mail:
+
+    - Roel Roscam Abbing (rscmbbng@riseup.net)
+    - psy (epsylon@riseup.net)
+
+To make donations use the following hashes:
+  
+      - Bitcoin: 1Q63KtiLGzXiYA8XkWFPnWo7nKPWFr3nrc
+      - Ecoin: ETtSteMWxjY7RKWZGMNSkX7eC3BJ21VYXE
+

+ 1 - 0
doc/THANKS

@@ -0,0 +1 @@
+UFO & Ikujam

文件差異過大導致無法顯示
+ 1136 - 0
main.py


+ 35 - 0
options.py

@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-15 -*-
+"""
+BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
+GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
+"""
+import optparse
+import json
+
+class BCOptions(optparse.OptionParser):
+    def __init__(self, *args):
+        optparse.OptionParser.__init__(self, 
+                           prog='bc.py',
+			   version='\nBC (Border-Check) v0.2 - 2015 - (GPLv3.0)\n',
+                           usage= '\n\nbc [OPTIONS]')
+ 
+        self.add_option("-w", "--wizard", action="store_true", dest="wizard", help="wizard installer")
+        self.add_option("-d", "--debug", action="store_true", dest="debug", help="debug mode")
+        self.add_option("-l", action="store", dest="lft_path", help="path to lft (fetch from source or use provided binary)")
+        self.add_option("--xml", action="store", dest="export_xml", help="export traces to xml (ex: --xml foo.xml)")
+        self.add_option("--load", action="store", dest="import_xml", help="import traces (non root required) (ex: --load bar.xml)")
+        self.add_option("--bh", action="store", dest="browser_history", help="set browser's history path")
+        self.add_option("-b", action="store", dest="browser", help="set browser type to be used: F = Firefox / C = Chrome / S = Safari / Ch = Chromium / N = None")
+        #self.add_option("--proxy", action="store", dest="proxy", help="set proxy server")
+        self._options={}
+        
+    def get_options(self, user_args=None):
+        (options, args) = self.parse_args(user_args)
+        self._options=options
+        return options
+
+
+    def save_options(self):
+        optionfile=open("options.json","w")
+        json.dump(self._options,optionfile)

+ 0 - 0
web/__init__.py


+ 116 - 0
web/ajax.py

@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-15 -*-
+"""
+BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
+GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
+"""
+from xml.dom.minidom import parseString
+import xml.etree.ElementTree as ET
+import re
+import traceback
+reload=False
+
+try:
+  bc_status_file = open('bc.status')
+  s = str(bc_status_file.read())
+  if s =='fresh':
+    with open('bc.status', 'w') as file:
+      file.write("old")
+    reload=True
+except:
+  pass
+
+# todo :
+# * call ajax.py from here
+# * save last url timestamp as get parameter
+# * do parsing only if timestamp changes
+# * ui integration
+
+#function to split ISP company names from ASN
+def ASN_Split(asn):
+  name_parts = []
+  for i in asn.split():
+    if re.match(r'AS\d{1,6}$', i):
+      asn = i
+    elif not re.match(r'AS\d{1,6}$', i):
+      name_parts.append(i)
+  company = ' '.join(name_parts)
+  return (asn, company)
+
+
+def extract_data():
+  url=""
+  hop_list = []
+  hop_ip_list =[]
+  geoarray = []
+  latlong= []
+  asn_list =[]
+  server_name_list = []
+  timestamp_list = []
+  telco_list = []
+  country_code_list = []
+  last_hop = 0
+  n_hops=0
+  unique_country_code_list = []
+  # extract data from a xml file
+  f = open('data.xml', 'r')
+  f2 = open('data.xml', 'r')
+  xml = ET.parse(f)
+  data = f2.read()
+  dom = parseString(data.encode('utf-8'))
+  f.close()
+  f2.close()
+  last_hop = int(xml.findall('hop')[-1].text)
+  n_hops = dom.getElementsByTagName('hop')[-1].toxml().replace('<hop>', '').replace('</hop','')
+
+
+  for counter in range(0, last_hop+1):
+    url = xml.getroot().text
+    hop_element = parseString(dom.getElementsByTagName('hop')[counter].toxml().encode('utf-8'))
+    hop = xml.findall('hop')[counter].text
+    server_name = hop_element.getElementsByTagName('server_name')[0].toxml().replace('<server_name>','').replace('</server_name>','')
+    asn = hop_element.getElementsByTagName('asn')[0].toxml().replace('<asn>','').replace('</asn>','')
+    hop_ip = hop_element.getElementsByTagName('hop_ip')[0].toxml().replace('<hop_ip>','').replace('</hop_ip>','')
+    longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('<longitude>','').replace('</longitude>','')
+    latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('<latitude>','').replace('</latitude>','')
+    timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('<timestamp>','').replace('</timestamp>','')
+    country_code = hop_element.getElementsByTagName('country_code')[0].toxml().replace('<country_code>','').replace('</country_code>','')
+
+    latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))]
+    geoarray.append(latlong)
+    asn_list.append(ASN_Split(asn.encode('utf-8'))[0])
+    telco_list.append(ASN_Split(asn.encode('utf-8'))[1])
+    hop = int(hop) +1
+    hop_list.append(str(hop))
+    hop_ip_list.append(hop_ip.encode('utf-8'))
+    server_name_list.append(server_name.encode('utf-8'))
+    timestamp_list.append(float(timestamp))
+    country_code_list.append(country_code.encode('utf-8'))
+
+    unique_country_code_list = set(country_code_list)
+  return """
+<script type="text/javascript">
+    counter_max = """+str(last_hop)+"""
+    latlong = """+str(geoarray)+"""
+    asn_list = """+str(asn_list)+"""
+    hop_ip_list = """+str(hop_ip_list)+"""
+    telco_list = """+str(telco_list)+"""
+    server_name_list = """+str(server_name_list)+"""
+    timestamp_list = """+str(timestamp_list)+"""
+    country_code_list = """+str(country_code_list)+"""
+    unique_country_code_list = """+str(list(unique_country_code_list))+"""
+    bcHistory.add('"""+url+"""',Array(counter_max,latlong,asn_list, hop_ip_list,telco_list,server_name_list,timestamp_list,country_code_list,unique_country_code_list))
+</script>
+"""
+
+try:
+  if reload:
+    output=extract_data()
+
+except:
+  args['error']="No data available"
+  traceback.print_exc()
+  reload=False
+
+if 'error' in args:
+  output=output+'<script>$("#error").html("'+args['error']+'")</script>'

二進制
web/fonts/SourceSansPro-Bold.otf


二進制
web/fonts/SourceSansPro-Regular.otf


二進制
web/images/bclogo.png


二進制
web/images/close.png


二進制
web/images/hide.png


二進制
web/images/markers/.DS_Store


二進制
web/images/markers/cluster-marker.png


二進制
web/images/markers/marker-icon-0.png


二進制
web/images/markers/marker-icon-1.png


二進制
web/images/markers/marker-icon-10.png


二進制
web/images/markers/marker-icon-11.png


二進制
web/images/markers/marker-icon-12.png


二進制
web/images/markers/marker-icon-13.png


二進制
web/images/markers/marker-icon-14.png


二進制
web/images/markers/marker-icon-15.png


二進制
web/images/markers/marker-icon-16.png


二進制
web/images/markers/marker-icon-17.png


二進制
web/images/markers/marker-icon-18.png


二進制
web/images/markers/marker-icon-19.png


二進制
web/images/markers/marker-icon-2.png


二進制
web/images/markers/marker-icon-20.png


二進制
web/images/markers/marker-icon-21.png


二進制
web/images/markers/marker-icon-22.png


二進制
web/images/markers/marker-icon-23.png


二進制
web/images/markers/marker-icon-24.png


二進制
web/images/markers/marker-icon-25.png


二進制
web/images/markers/marker-icon-26.png


二進制
web/images/markers/marker-icon-27.png


二進制
web/images/markers/marker-icon-28.png


二進制
web/images/markers/marker-icon-29.png


二進制
web/images/markers/marker-icon-3.png


二進制
web/images/markers/marker-icon-30.png


二進制
web/images/markers/marker-icon-31.png


二進制
web/images/markers/marker-icon-32.png


二進制
web/images/markers/marker-icon-33.png


二進制
web/images/markers/marker-icon-34.png


二進制
web/images/markers/marker-icon-35.png


二進制
web/images/markers/marker-icon-36.png


二進制
web/images/markers/marker-icon-37.png


二進制
web/images/markers/marker-icon-38.png


二進制
web/images/markers/marker-icon-39.png


二進制
web/images/markers/marker-icon-4.png


二進制
web/images/markers/marker-icon-40.png


二進制
web/images/markers/marker-icon-41.png


二進制
web/images/markers/marker-icon-42.png


二進制
web/images/markers/marker-icon-43.png


二進制
web/images/markers/marker-icon-44.png


二進制
web/images/markers/marker-icon-45.png


二進制
web/images/markers/marker-icon-46.png


二進制
web/images/markers/marker-icon-47.png


二進制
web/images/markers/marker-icon-48.png


二進制
web/images/markers/marker-icon-49.png


二進制
web/images/markers/marker-icon-5.png


二進制
web/images/markers/marker-icon-50.png


二進制
web/images/markers/marker-icon-51.png


二進制
web/images/markers/marker-icon-52.png


二進制
web/images/markers/marker-icon-53.png


二進制
web/images/markers/marker-icon-54.png


二進制
web/images/markers/marker-icon-55.png


二進制
web/images/markers/marker-icon-56.png


二進制
web/images/markers/marker-icon-57.png


二進制
web/images/markers/marker-icon-58.png


二進制
web/images/markers/marker-icon-59.png


二進制
web/images/markers/marker-icon-6.png


二進制
web/images/markers/marker-icon-60.png


二進制
web/images/markers/marker-icon-61.png


二進制
web/images/markers/marker-icon-62.png


二進制
web/images/markers/marker-icon-63.png


二進制
web/images/markers/marker-icon-64.png


二進制
web/images/markers/marker-icon-65.png


二進制
web/images/markers/marker-icon-66.png


二進制
web/images/markers/marker-icon-67.png


二進制
web/images/markers/marker-icon-68.png


二進制
web/images/markers/marker-icon-69.png


二進制
web/images/markers/marker-icon-7.png


二進制
web/images/markers/marker-icon-70.png


二進制
web/images/markers/marker-icon-71.png


二進制
web/images/markers/marker-icon-72.png


二進制
web/images/markers/marker-icon-73.png


二進制
web/images/markers/marker-icon-74.png


二進制
web/images/markers/marker-icon-75.png


二進制
web/images/markers/marker-icon-76.png


二進制
web/images/markers/marker-icon-77.png


二進制
web/images/markers/marker-icon-78.png


二進制
web/images/markers/marker-icon-79.png


二進制
web/images/markers/marker-icon-8.png


+ 0 - 0
web/images/markers/marker-icon-80.png


部分文件因文件數量過多而無法顯示