├── .gitignore
├── Border-Check
├── bc
├── bin
│ └── lft.linux
├── doc
│ ├── AUTHORS
│ ├── CHANGELOG
│ ├── COPYING
│ ├── INSTALL
│ ├── README
│ └── THANKS
├── main.py
├── options.py
├── web
│ ├── __init__.py
│ ├── ajax.py
│ ├── fonts
│ │ ├── SourceSansPro-Bold.otf
│ │ └── SourceSansPro-Regular.otf
│ ├── images
│ │ ├── bclogo.png
│ │ ├── close.png
│ │ ├── hide.png
│ │ ├── markers
│ │ │ ├── .DS_Store
│ │ │ ├── cluster-marker.png
│ │ │ ├── marker-icon-0.png
│ │ │ ├── marker-icon-1.png
│ │ │ ├── marker-icon-10.png
│ │ │ ├── marker-icon-11.png
│ │ │ ├── marker-icon-12.png
│ │ │ ├── marker-icon-13.png
│ │ │ ├── marker-icon-14.png
│ │ │ ├── marker-icon-15.png
│ │ │ ├── marker-icon-16.png
│ │ │ ├── marker-icon-17.png
│ │ │ ├── marker-icon-18.png
│ │ │ ├── marker-icon-19.png
│ │ │ ├── marker-icon-2.png
│ │ │ ├── marker-icon-20.png
│ │ │ ├── marker-icon-21.png
│ │ │ ├── marker-icon-22.png
│ │ │ ├── marker-icon-23.png
│ │ │ ├── marker-icon-24.png
│ │ │ ├── marker-icon-25.png
│ │ │ ├── marker-icon-26.png
│ │ │ ├── marker-icon-27.png
│ │ │ ├── marker-icon-28.png
│ │ │ ├── marker-icon-29.png
│ │ │ ├── marker-icon-3.png
│ │ │ ├── marker-icon-30.png
│ │ │ ├── marker-icon-31.png
│ │ │ ├── marker-icon-32.png
│ │ │ ├── marker-icon-33.png
│ │ │ ├── marker-icon-34.png
│ │ │ ├── marker-icon-35.png
│ │ │ ├── marker-icon-36.png
│ │ │ ├── marker-icon-37.png
│ │ │ ├── marker-icon-38.png
│ │ │ ├── marker-icon-39.png
│ │ │ ├── marker-icon-4.png
│ │ │ ├── marker-icon-40.png
│ │ │ ├── marker-icon-41.png
│ │ │ ├── marker-icon-42.png
│ │ │ ├── marker-icon-43.png
│ │ │ ├── marker-icon-44.png
│ │ │ ├── marker-icon-45.png
│ │ │ ├── marker-icon-46.png
│ │ │ ├── marker-icon-47.png
│ │ │ ├── marker-icon-48.png
│ │ │ ├── marker-icon-49.png
│ │ │ ├── marker-icon-5.png
│ │ │ ├── marker-icon-50.png
│ │ │ ├── marker-icon-51.png
│ │ │ ├── marker-icon-52.png
│ │ │ ├── marker-icon-53.png
│ │ │ ├── marker-icon-54.png
│ │ │ ├── marker-icon-55.png
│ │ │ ├── marker-icon-56.png
│ │ │ ├── marker-icon-57.png
│ │ │ ├── marker-icon-58.png
│ │ │ ├── marker-icon-59.png
│ │ │ ├── marker-icon-6.png
│ │ │ ├── marker-icon-60.png
│ │ │ ├── marker-icon-61.png
│ │ │ ├── marker-icon-62.png
│ │ │ ├── marker-icon-63.png
│ │ │ ├── marker-icon-64.png
│ │ │ ├── marker-icon-65.png
│ │ │ ├── marker-icon-66.png
│ │ │ ├── marker-icon-67.png
│ │ │ ├── marker-icon-68.png
│ │ │ ├── marker-icon-69.png
│ │ │ ├── marker-icon-7.png
│ │ │ ├── marker-icon-70.png
│ │ │ ├── marker-icon-71.png
│ │ │ ├── marker-icon-72.png
│ │ │ ├── marker-icon-73.png
│ │ │ ├── marker-icon-74.png
│ │ │ ├── marker-icon-75.png
│ │ │ ├── marker-icon-76.png
│ │ │ ├── marker-icon-77.png
│ │ │ ├── marker-icon-78.png
│ │ │ ├── marker-icon-79.png
│ │ │ ├── marker-icon-8.png
│ │ │ ├── marker-icon-80.png
│ │ │ ├── marker-icon-81.png
│ │ │ ├── marker-icon-82.png
│ │ │ ├── marker-icon-83.png
│ │ │ ├── marker-icon-84.png
│ │ │ ├── marker-icon-85.png
│ │ │ ├── marker-icon-86.png
│ │ │ ├── marker-icon-87.png
│ │ │ ├── marker-icon-88.png
│ │ │ ├── marker-icon-89.png
│ │ │ ├── marker-icon-9.png
│ │ │ ├── marker-icon-90.png
│ │ │ ├── marker-icon-91.png
│ │ │ ├── marker-icon-92.png
│ │ │ ├── marker-icon-93.png
│ │ │ ├── marker-icon-94.png
│ │ │ ├── marker-icon-95.png
│ │ │ ├── marker-icon-96.png
│ │ │ ├── marker-icon-97.png
│ │ │ └── marker-icon-last.png
│ │ ├── play.png
│ │ ├── stop.png
│ │ └── world
│ │ │ ├── a1.png
│ │ │ ├── a2.png
│ │ │ ├── ad.png
│ │ │ ├── ae.png
│ │ │ ├── af.png
│ │ │ ├── ag.png
│ │ │ ├── ai.png
│ │ │ ├── al.png
│ │ │ ├── am.png
│ │ │ ├── an.png
│ │ │ ├── ao.png
│ │ │ ├── ap.png
│ │ │ ├── aq.png
│ │ │ ├── ar.png
│ │ │ ├── as.png
│ │ │ ├── at.png
│ │ │ ├── au.png
│ │ │ ├── aw.png
│ │ │ ├── ax.png
│ │ │ ├── az.png
│ │ │ ├── ba.png
│ │ │ ├── bb.png
│ │ │ ├── bd.png
│ │ │ ├── be.png
│ │ │ ├── bf.png
│ │ │ ├── bg.png
│ │ │ ├── bh.png
│ │ │ ├── bi.png
│ │ │ ├── bj.png
│ │ │ ├── bl.png
│ │ │ ├── bm.png
│ │ │ ├── bn.png
│ │ │ ├── bo.png
│ │ │ ├── bq.png
│ │ │ ├── br.png
│ │ │ ├── bs.png
│ │ │ ├── bt.png
│ │ │ ├── bv.png
│ │ │ ├── bw.png
│ │ │ ├── by.png
│ │ │ ├── bz.png
│ │ │ ├── ca.png
│ │ │ ├── cc.png
│ │ │ ├── cd.png
│ │ │ ├── cf.png
│ │ │ ├── cg.png
│ │ │ ├── ch.png
│ │ │ ├── ci.png
│ │ │ ├── ck.png
│ │ │ ├── cl.png
│ │ │ ├── cm.png
│ │ │ ├── cn.png
│ │ │ ├── co.png
│ │ │ ├── cr.png
│ │ │ ├── cu.png
│ │ │ ├── cv.png
│ │ │ ├── cx.png
│ │ │ ├── cy.png
│ │ │ ├── cz.png
│ │ │ ├── de.png
│ │ │ ├── dj.png
│ │ │ ├── dk.png
│ │ │ ├── dm.png
│ │ │ ├── do.png
│ │ │ ├── dz.png
│ │ │ ├── ec.png
│ │ │ ├── ee.png
│ │ │ ├── eg.png
│ │ │ ├── eh.png
│ │ │ ├── er.png
│ │ │ ├── es.png
│ │ │ ├── et.png
│ │ │ ├── eu.png
│ │ │ ├── fi.png
│ │ │ ├── fj.png
│ │ │ ├── fk.png
│ │ │ ├── fm.png
│ │ │ ├── fo.png
│ │ │ ├── fr.png
│ │ │ ├── fx.png
│ │ │ ├── ga.png
│ │ │ ├── gb.png
│ │ │ ├── gd.png
│ │ │ ├── ge.png
│ │ │ ├── gf.png
│ │ │ ├── gg.png
│ │ │ ├── gh.png
│ │ │ ├── gi.png
│ │ │ ├── gl.png
│ │ │ ├── gm.png
│ │ │ ├── gn.png
│ │ │ ├── gp.png
│ │ │ ├── gq.png
│ │ │ ├── gr.png
│ │ │ ├── gs.png
│ │ │ ├── gt.png
│ │ │ ├── gu.png
│ │ │ ├── gw.png
│ │ │ ├── gy.png
│ │ │ ├── hk.png
│ │ │ ├── hm.png
│ │ │ ├── hn.png
│ │ │ ├── hr.png
│ │ │ ├── ht.png
│ │ │ ├── hu.png
│ │ │ ├── id.png
│ │ │ ├── ie.png
│ │ │ ├── il.png
│ │ │ ├── im.png
│ │ │ ├── in.png
│ │ │ ├── io.png
│ │ │ ├── iq.png
│ │ │ ├── ir.png
│ │ │ ├── is.png
│ │ │ ├── it.png
│ │ │ ├── je.png
│ │ │ ├── jm.png
│ │ │ ├── jo.png
│ │ │ ├── jp.png
│ │ │ ├── ke.png
│ │ │ ├── kg.png
│ │ │ ├── kh.png
│ │ │ ├── ki.png
│ │ │ ├── km.png
│ │ │ ├── kn.png
│ │ │ ├── kp.png
│ │ │ ├── kr.png
│ │ │ ├── kw.png
│ │ │ ├── ky.png
│ │ │ ├── kz.png
│ │ │ ├── la.png
│ │ │ ├── lb.png
│ │ │ ├── lc.png
│ │ │ ├── li.png
│ │ │ ├── lk.png
│ │ │ ├── lr.png
│ │ │ ├── ls.png
│ │ │ ├── lt.png
│ │ │ ├── lu.png
│ │ │ ├── lv.png
│ │ │ ├── ly.png
│ │ │ ├── ma.png
│ │ │ ├── mc.png
│ │ │ ├── md.png
│ │ │ ├── me.png
│ │ │ ├── mf.png
│ │ │ ├── mg.png
│ │ │ ├── mh.png
│ │ │ ├── mk.png
│ │ │ ├── ml.png
│ │ │ ├── mm.png
│ │ │ ├── mn.png
│ │ │ ├── mo.png
│ │ │ ├── mp.png
│ │ │ ├── mq.png
│ │ │ ├── mr.png
│ │ │ ├── ms.png
│ │ │ ├── mt.png
│ │ │ ├── mu.png
│ │ │ ├── mv.png
│ │ │ ├── mw.png
│ │ │ ├── mx.png
│ │ │ ├── my.png
│ │ │ ├── mz.png
│ │ │ ├── na.png
│ │ │ ├── nc.png
│ │ │ ├── ne.png
│ │ │ ├── nf.png
│ │ │ ├── ng.png
│ │ │ ├── ni.png
│ │ │ ├── nl.png
│ │ │ ├── no.png
│ │ │ ├── np.png
│ │ │ ├── nr.png
│ │ │ ├── nu.png
│ │ │ ├── nz.png
│ │ │ ├── o1.png
│ │ │ ├── om.png
│ │ │ ├── pa.png
│ │ │ ├── pe.png
│ │ │ ├── pf.png
│ │ │ ├── pg.png
│ │ │ ├── ph.png
│ │ │ ├── pk.png
│ │ │ ├── pl.png
│ │ │ ├── pm.png
│ │ │ ├── pn.png
│ │ │ ├── pr.png
│ │ │ ├── ps.png
│ │ │ ├── pt.png
│ │ │ ├── pw.png
│ │ │ ├── py.png
│ │ │ ├── qa.png
│ │ │ ├── re.png
│ │ │ ├── ro.png
│ │ │ ├── rs.png
│ │ │ ├── ru.png
│ │ │ ├── rw.png
│ │ │ ├── sa.png
│ │ │ ├── sb.png
│ │ │ ├── sc.png
│ │ │ ├── sd.png
│ │ │ ├── se.png
│ │ │ ├── sg.png
│ │ │ ├── sh.png
│ │ │ ├── si.png
│ │ │ ├── sj.png
│ │ │ ├── sk.png
│ │ │ ├── sl.png
│ │ │ ├── sm.png
│ │ │ ├── sn.png
│ │ │ ├── so.png
│ │ │ ├── sr.png
│ │ │ ├── ss.png
│ │ │ ├── st.png
│ │ │ ├── sv.png
│ │ │ ├── sy.png
│ │ │ ├── sz.png
│ │ │ ├── tc.png
│ │ │ ├── td.png
│ │ │ ├── tf.png
│ │ │ ├── tg.png
│ │ │ ├── th.png
│ │ │ ├── tj.png
│ │ │ ├── tk.png
│ │ │ ├── tl.png
│ │ │ ├── tm.png
│ │ │ ├── tn.png
│ │ │ ├── to.png
│ │ │ ├── tr.png
│ │ │ ├── tt.png
│ │ │ ├── tv.png
│ │ │ ├── tw.png
│ │ │ ├── tz.png
│ │ │ ├── ua.png
│ │ │ ├── ug.png
│ │ │ ├── um.png
│ │ │ ├── us.png
│ │ │ ├── uy.png
│ │ │ ├── uz.png
│ │ │ ├── va.png
│ │ │ ├── vc.png
│ │ │ ├── ve.png
│ │ │ ├── vg.png
│ │ │ ├── vi.png
│ │ │ ├── vn.png
│ │ │ ├── vu.png
│ │ │ ├── wf.png
│ │ │ ├── ws.png
│ │ │ ├── ye.png
│ │ │ ├── yt.png
│ │ │ ├── za.png
│ │ │ ├── zm.png
│ │ │ └── zw.png
│ ├── index.py
│ ├── js
│ │ ├── bc-control.js
│ │ ├── bc-history.js
│ │ ├── bc.js
│ │ ├── cluster
│ │ │ ├── MarkerCluster.Default.css
│ │ │ ├── MarkerCluster.Default.ie.css
│ │ │ ├── MarkerCluster.css
│ │ │ ├── leaflet.markercluster-src.js
│ │ │ └── leaflet.markercluster.js
│ │ ├── favicon.js
│ │ ├── jquery-1.10.2.min.js
│ │ ├── leaflet
│ │ │ ├── images
│ │ │ │ ├── layers-2x.png
│ │ │ │ ├── layers.png
│ │ │ │ ├── marker-icon-2x.png
│ │ │ │ ├── marker-icon.png
│ │ │ │ └── marker-shadow.png
│ │ │ ├── leaflet-src.js
│ │ │ ├── leaflet.css
│ │ │ ├── leaflet.ie.css
│ │ │ └── leaflet.js
│ │ ├── raphael.js
│ │ └── rlayer-src.js
│ └── style.css
├── webserver.py
└── xml_exporter.py
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # Python Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | #MacOS Crap
7 | .DS_Store
8 |
9 | #border check work files
10 | bc.status
11 | data.xml
12 | hostname.submit
13 | *.dat
14 | *.gz
15 |
--------------------------------------------------------------------------------
/Border-Check/bc:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python2
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | from main import bc
8 |
9 | class NullOutput(object):
10 | def write(self, text):
11 | pass
12 | def flush(self):
13 | pass
14 |
15 | if __name__ == "__main__":
16 | app = bc()
17 | options = app.create_options()
18 | if options:
19 | app.set_options(options)
20 | app.run()
21 |
--------------------------------------------------------------------------------
/Border-Check/bin/lft.linux:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/bin/lft.linux
--------------------------------------------------------------------------------
/Border-Check/doc/AUTHORS:
--------------------------------------------------------------------------------
1 | psy (epsylon@riseup.net)
2 | Roel Roscam Abbing (rscmbbng@riseup.net)
3 |
--------------------------------------------------------------------------------
/Border-Check/doc/CHANGELOG:
--------------------------------------------------------------------------------
1 | ================================================================
2 | Changelog: Border-Check
3 | ==============================
4 |
5 | =================
6 | May 13, 2015:
7 | =================
8 |
9 | - added "wizard" installer
10 | - added LFT binary to source
11 | - added more maps
12 | - added metadata
13 | - added travelling feature on map
14 | - added history of urls visited on map
15 | - added controllers to map (play|hide|stop)
16 | - fixed some minor bugs
17 | - public release: Border Check v0.2
18 |
19 | =================
20 | October 4, 2013:
21 | =================
22 |
23 | - added feature to import traces from XML template
24 | - fixed some LFT subprocess errors on Unix based systems
25 | - more clean non-debug mode
26 | - added 'localhost' filter to target parser
27 |
28 | =================
29 | September 27, 2013:
30 | =================
31 |
32 | - public release: Border Check v0.1
33 |
34 |
--------------------------------------------------------------------------------
/Border-Check/doc/INSTALL:
--------------------------------------------------------------------------------
1 | ========================
2 | Border Check v0.2 - 2015
3 | ========================
4 |
5 | Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
6 |
7 | 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.
8 |
9 | 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.
10 |
11 | ==========================
12 | INSTALL:
13 | ===================
14 |
15 | BC runs on OSx and Unix systems. It requires the following libraries/dependencies:
16 |
17 | ===================
18 | + Python:
19 | ===================
20 |
21 | - python-geoip - Python bindings for the GeoIP IP-to-country resolver library
22 |
23 | https://pypi.python.org/pypi/pygeoip/0.2.7
24 |
25 | - python-lxml - pythonic binding for the libxml2 and libxslt libraries
26 |
27 | https://pypi.python.org/pypi/lxml/3.2.3
28 |
29 | * On Debian-based systems (ex: Ubuntu), first run:
30 |
31 | sudo apt-get install python-pip
32 |
33 | and then run:
34 |
35 | pip install lxml
36 |
37 | pip install pygeoip
38 | - biplist:
39 |
40 | https://pypi.python.org/pypi/biplist/0.5
41 |
42 | ===================
43 | + Javascript:
44 | ===================
45 |
46 | - leaflet.js
47 |
48 | http://leafletjs.com
49 |
50 | - leaflet.markercluster.js
51 |
52 | https://github.com/Leaflet/Leaflet.markercluster
53 |
54 | - jquery.js
55 |
56 | http://www.jquery.com
57 |
58 | - rlayer.js
59 |
60 | http://dynmeth.github.io/RaphaelLayer/
61 |
62 | - raphael.js
63 |
64 | http://raphaeljs.com/
65 |
66 | - favicon.js
67 |
68 | https://gist.github.com/mathiasbynens/428626
69 |
70 | ===================
71 | + LFT:
72 | ===================
73 |
74 | - LFT 3.35 (tracerouter)
75 |
76 | http://pwhois.org/lft/
77 |
78 | ===================
79 | + Databases:
80 | ===================
81 |
82 | - Maxmind GeoIPLite and GeoIPASNum:
83 |
84 | http://dev.maxmind.com/geoip/legacy/geolite/
85 |
86 | ===================
87 |
88 | Please report any problems you encounter using/installing Border Check to:
89 |
90 | - Roel Roscam Abbing (rscmbbng@riseup.net)
91 | - psy (epsylon@riseup.net)
92 |
93 | =========
94 |
95 |
--------------------------------------------------------------------------------
/Border-Check/doc/README:
--------------------------------------------------------------------------------
1 | Border Check v0.2 - 2015
2 | ========================
3 |
4 | Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
5 |
6 | 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.
7 |
8 | 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.
9 |
10 | Currently supporting the following browsers on OSX and Unix systems: Firefox, Chromium, Chrome, Safari
11 |
12 | NOTE: Browser history has to be enabled.
13 |
14 | See the included examples for usage.
15 |
16 | ```
17 | bc [OPTIONS]
18 |
19 | --version show program's version number and exit
20 | -h, --help show this help message and exit
21 | -d, --debug debug mode
22 | -l LFT_PATH path to lft (fetch from source or use provided binary)
23 | --xml=EXPORT_XML export traces to xml (ex: --xml foo.xml)
24 | --load=IMPORT_XML import traces (non root required) (ex: --load bar.xml)
25 | --bh=BROWSER_HISTORY set browser's history path
26 | -b BROWSER set browser type to be used: F = Firefox / C = Chrome / S = Safari / Ch = Chromium / N = None
27 |
28 | ```
29 |
30 | #### Examples of usage:
31 |
32 | Normal BC run:
33 |
34 | `$ python bc`
35 |
36 | Debug mode:
37 |
38 | `$ python bc --debug`
39 |
40 | Export 'tracing' results to xml:
41 |
42 | `$ python bc --xml "mytravel.xml"`
43 |
44 |
45 | #### More options (set browsers, paths, etc):
46 |
47 | Use Firefox browser:
48 |
49 | `$ python bc -b F`
50 |
51 | Use Chromium browser:
52 |
53 | `$ python bc -b Ch`
54 |
55 | Set browser's history path manually, on Galeon/Unix:
56 |
57 | `$ python bc --bh ".galeon/mozilla/galeon/places.sqlite"`
58 |
59 | Set browser's history path manually, on Chrome/OSx:
60 |
61 | `$ python bc --bh "Library/Application Support/Google/Chrome/Default/History"`
62 |
63 | Set browser's history path manually, on Safari/OSx:
64 |
65 | `$ python bc --bh "Library/Safari/History.plist"`
66 |
67 | Set browser's history path manually, on Firefox/Unix:
68 |
69 | `$ python bc --bh "Library/Safari/History.plist"`
70 |
71 | Import 'traces' from xml:
72 |
73 | `$ python bc --load "mytravel.xml"`
74 |
75 | Set lft path to be used by BC traces:
76 |
77 | `$ python bc -l "/usr/bin/lft"`
78 |
79 |
80 | ### Contribute:
81 |
82 | If you want to contribute to BC development, reporting a bug, providing a patch, commenting
83 | on the code base or simply need to find help to run it, please go to:
84 |
85 | irc.freenode.net / channel: #BorderCheck
86 |
87 | If nobody gets back to you, then drop an e-mail:
88 |
89 | - Roel Roscam Abbing (rscmbbng@riseup.net)
90 | - psy (epsylon@riseup.net)
91 |
92 | To make donations use the following hashes:
93 |
94 | - Bitcoin: 1Q63KtiLGzXiYA8XkWFPnWo7nKPWFr3nrc
95 | - Ecoin: ETtSteMWxjY7RKWZGMNSkX7eC3BJ21VYXE
96 |
97 |
--------------------------------------------------------------------------------
/Border-Check/doc/THANKS:
--------------------------------------------------------------------------------
1 | UFO & Ikujam
2 |
--------------------------------------------------------------------------------
/Border-Check/options.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | import optparse
8 | import json
9 |
10 | class BCOptions(optparse.OptionParser):
11 | def __init__(self, *args):
12 | optparse.OptionParser.__init__(self,
13 | prog='bc.py',
14 | version='\nBC (Border-Check) v0.2 - 2015 - (GPLv3.0)\n',
15 | usage= '\n\nbc [OPTIONS]')
16 |
17 | self.add_option("-w", "--wizard", action="store_true", dest="wizard", help="wizard installer")
18 | self.add_option("-d", "--debug", action="store_true", dest="debug", help="debug mode")
19 | self.add_option("-l", action="store", dest="lft_path", help="path to lft (fetch from source or use provided binary)")
20 | self.add_option("--xml", action="store", dest="export_xml", help="export traces to xml (ex: --xml foo.xml)")
21 | self.add_option("--load", action="store", dest="import_xml", help="import traces (non root required) (ex: --load bar.xml)")
22 | self.add_option("--bh", action="store", dest="browser_history", help="set browser's history path")
23 | 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")
24 | #self.add_option("--proxy", action="store", dest="proxy", help="set proxy server")
25 | self._options={}
26 |
27 | def get_options(self, user_args=None):
28 | (options, args) = self.parse_args(user_args)
29 | self._options=options
30 | return options
31 |
32 |
33 | def save_options(self):
34 | optionfile=open("options.json","w")
35 | json.dump(self._options,optionfile)
36 |
--------------------------------------------------------------------------------
/Border-Check/web/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/__init__.py
--------------------------------------------------------------------------------
/Border-Check/web/ajax.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | from xml.dom.minidom import parseString
8 | import xml.etree.ElementTree as ET
9 | import re
10 | import traceback
11 | reload=False
12 |
13 | try:
14 | bc_status_file = open('bc.status')
15 | s = str(bc_status_file.read())
16 | if s =='fresh':
17 | with open('bc.status', 'w') as file:
18 | file.write("old")
19 | reload=True
20 | except:
21 | pass
22 |
23 | # todo :
24 | # * call ajax.py from here
25 | # * save last url timestamp as get parameter
26 | # * do parsing only if timestamp changes
27 | # * ui integration
28 |
29 | #function to split ISP company names from ASN
30 | def ASN_Split(asn):
31 | name_parts = []
32 | for i in asn.split():
33 | if re.match(r'AS\d{1,6}$', i):
34 | asn = i
35 | elif not re.match(r'AS\d{1,6}$', i):
36 | name_parts.append(i)
37 | company = ' '.join(name_parts)
38 | return (asn, company)
39 |
40 |
41 | def extract_data():
42 | url=""
43 | hop_list = []
44 | hop_ip_list =[]
45 | geoarray = []
46 | latlong= []
47 | asn_list =[]
48 | server_name_list = []
49 | timestamp_list = []
50 | telco_list = []
51 | country_code_list = []
52 | last_hop = 0
53 | n_hops=0
54 | unique_country_code_list = []
55 | # extract data from a xml file
56 | f = open('data.xml', 'r')
57 | f2 = open('data.xml', 'r')
58 | xml = ET.parse(f)
59 | data = f2.read()
60 | dom = parseString(data.encode('utf-8'))
61 | f.close()
62 | f2.close()
63 | last_hop = int(xml.findall('hop')[-1].text)
64 | n_hops = dom.getElementsByTagName('hop')[-1].toxml().replace('', '').replace(' ','').replace('','')
72 | asn = hop_element.getElementsByTagName('asn')[0].toxml().replace('','').replace(' ','')
73 | hop_ip = hop_element.getElementsByTagName('hop_ip')[0].toxml().replace('','').replace(' ','')
74 | longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('','').replace(' ','')
75 | latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('','').replace(' ','')
76 | timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('','').replace(' ','')
77 | country_code = hop_element.getElementsByTagName('country_code')[0].toxml().replace('','').replace(' ','')
78 |
79 | latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))]
80 | geoarray.append(latlong)
81 | asn_list.append(ASN_Split(asn.encode('utf-8'))[0])
82 | telco_list.append(ASN_Split(asn.encode('utf-8'))[1])
83 | hop = int(hop) +1
84 | hop_list.append(str(hop))
85 | hop_ip_list.append(hop_ip.encode('utf-8'))
86 | server_name_list.append(server_name.encode('utf-8'))
87 | timestamp_list.append(float(timestamp))
88 | country_code_list.append(country_code.encode('utf-8'))
89 |
90 | unique_country_code_list = set(country_code_list)
91 | return """
92 |
104 | """
105 |
106 | try:
107 | if reload:
108 | output=extract_data()
109 |
110 | except:
111 | args['error']="No data available"
112 | traceback.print_exc()
113 | reload=False
114 |
115 | if 'error' in args:
116 | output=output+''
117 |
--------------------------------------------------------------------------------
/Border-Check/web/fonts/SourceSansPro-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/fonts/SourceSansPro-Bold.otf
--------------------------------------------------------------------------------
/Border-Check/web/fonts/SourceSansPro-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/fonts/SourceSansPro-Regular.otf
--------------------------------------------------------------------------------
/Border-Check/web/images/bclogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/bclogo.png
--------------------------------------------------------------------------------
/Border-Check/web/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/close.png
--------------------------------------------------------------------------------
/Border-Check/web/images/hide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/hide.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/.DS_Store
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/cluster-marker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/cluster-marker.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-0.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-1.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-10.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-11.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-12.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-13.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-14.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-15.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-16.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-17.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-18.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-19.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-2.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-20.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-21.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-22.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-23.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-24.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-25.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-26.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-27.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-28.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-29.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-3.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-30.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-31.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-32.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-33.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-34.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-35.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-36.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-37.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-38.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-39.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-4.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-40.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-41.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-42.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-43.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-44.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-45.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-46.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-47.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-48.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-49.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-5.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-50.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-51.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-52.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-53.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-54.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-55.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-56.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-57.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-58.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-59.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-6.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-60.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-61.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-61.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-62.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-62.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-63.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-64.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-65.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-65.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-66.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-67.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-68.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-68.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-69.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-69.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-7.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-70.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-71.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-72.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-73.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-73.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-74.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-74.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-75.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-76.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-77.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-77.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-78.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-79.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-79.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-8.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-80.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-81.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-81.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-82.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-82.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-83.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-83.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-84.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-84.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-85.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-85.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-86.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-86.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-87.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-88.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-89.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-89.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-9.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-90.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-91.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-92.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-92.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-93.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-93.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-94.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-94.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-95.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-95.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-96.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-97.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-97.png
--------------------------------------------------------------------------------
/Border-Check/web/images/markers/marker-icon-last.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/markers/marker-icon-last.png
--------------------------------------------------------------------------------
/Border-Check/web/images/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/play.png
--------------------------------------------------------------------------------
/Border-Check/web/images/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/stop.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/a1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/a1.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/a2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/a2.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ad.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ae.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/af.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ag.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ai.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/al.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/al.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/am.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/an.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/an.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ao.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ap.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/aq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/aq.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ar.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/as.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/as.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/at.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/au.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/au.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/aw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/aw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ax.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/az.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/az.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ba.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bb.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bd.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/be.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/be.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bi.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bj.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bo.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bq.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/br.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bs.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/by.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/bz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/bz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ca.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cd.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ch.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ci.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ci.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ck.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/co.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/co.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cx.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cy.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/cz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/cz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/de.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/de.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/dj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/dj.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/dk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/dk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/dm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/dm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/do.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/do.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/dz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/dz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ec.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ee.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/eg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/eg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/eh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/er.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/er.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/es.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/et.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/et.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/eu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/eu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fi.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fj.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fo.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/fx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/fx.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ga.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gb.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gd.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ge.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gi.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gp.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gq.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gs.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/gy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/gy.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/hk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/hk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/hm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/hm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/hn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/hr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ht.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/hu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/hu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/id.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ie.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/il.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/il.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/im.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/im.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/in.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/io.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/io.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/iq.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ir.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/is.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/it.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/it.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/je.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/je.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/jm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/jm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/jo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/jo.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/jp.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ke.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ki.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/km.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/km.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kp.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ky.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/kz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/kz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/la.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/la.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lb.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/li.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ls.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/lv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/lv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ly.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ma.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/md.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/me.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ml.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mo.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mp.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mq.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ms.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mx.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/my.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/my.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/mz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/mz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/na.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/na.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ne.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ng.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ni.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/no.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/np.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/nz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/o1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/o1.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/om.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pa.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pe.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ph.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ps.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/pw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/py.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/qa.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/re.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/re.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ro.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/rs.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ru.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/rw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sa.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sb.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sd.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/se.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sh.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/si.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sj.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/so.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ss.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/st.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sy.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/sz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/td.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/th.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tj.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tk.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tl.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/to.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tr.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tv.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tw.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/tz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ua.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ug.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/um.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/um.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/us.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/uy.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/uz.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/va.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/vc.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ve.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/vg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/vg.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/vi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/vi.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/vn.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/vu.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/wf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/wf.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ws.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/ye.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/yt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/yt.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/za.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/zm.png
--------------------------------------------------------------------------------
/Border-Check/web/images/world/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/images/world/zw.png
--------------------------------------------------------------------------------
/Border-Check/web/index.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | from xml.dom.minidom import parseString
8 | import xml.etree.ElementTree as ET
9 | import re
10 |
11 | #function to split ISP company names from ASN
12 | def ASN_Split(asn):
13 | name_parts = []
14 | for i in asn.split():
15 | if re.match(r'AS\d{1,6}$', i):
16 | asn = i
17 | elif not re.match(r'AS\d{1,6}$', i):
18 | name_parts.append(i)
19 | company = ' '.join(name_parts)
20 | return (asn, company)
21 |
22 | got_data = False
23 | msg=""
24 | url=""
25 |
26 | try:
27 | # extract data from a xml file
28 | f = open('data.xml', 'r')
29 | f2 = open('data.xml', 'r')
30 | xml = ET.parse(f)
31 | data = f2.read()
32 | dom = parseString(data.encode('utf-8'))
33 | f.close()
34 | f2.close()
35 | n_hops = dom.getElementsByTagName('hop')[-1].toxml().replace('', '').replace(' ','').replace('','')
52 | asn = hop_element.getElementsByTagName('asn')[0].toxml().replace('','').replace(' ','')
53 | hop_ip = hop_element.getElementsByTagName('hop_ip')[0].toxml().replace('','').replace(' ','')
54 | longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('','').replace(' ','')
55 | latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('','').replace(' ','')
56 | timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('','').replace(' ','')
57 | country_code = hop_element.getElementsByTagName('country_code')[0].toxml().replace('','').replace(' ','')
58 |
59 | if str(asn) == " ": #parse when no asn present/network owner present
60 | asn_list.append(str("Not Available"))
61 | telco_list.append(str("Unknown"))
62 | else:
63 | asn_list.append(ASN_Split(asn.encode('utf-8'))[0])
64 | telco_list.append(ASN_Split(asn.encode('utf-8'))[1])
65 |
66 | latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))]
67 | geoarray.append(latlong)
68 | # asn_list.append(ASN_Split(asn.encode('utf-8'))[0])
69 | # telco_list.append(ASN_Split(asn.encode('utf-8'))[1])
70 | hop = int(hop) +1
71 | hop_list.append(str(hop))
72 | hop_ip_list.append(hop_ip.encode('utf-8'))
73 | server_name_list.append(server_name.encode('utf-8'))
74 | timestamp_list.append(float(timestamp))
75 | country_code_list.append(country_code.encode('utf-8'))
76 | unique_country_code_list = set(country_code_list)
77 |
78 | except:
79 | args['error']="Data error."
80 |
81 |
82 | if 'error' in args:
83 | msg=args['error'];
84 | # HTML + JS container
85 | output = """
86 |
87 |
88 | Border Check - Web Viewer
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
>
121 |
122 |
123 |
124 |
About
125 |
126 |
As you surf the net, data packets are sent from your computer to the target server. These data packets go on a journey hopping from server to server, potentially crossing multiple countries and networks, until the packets reach the desired website.
127 |
Border Check allows you to retrace the path your data takes across the internet's infrastructure. It will map out all the servers your data passes and shows you in which countries or cities these servers are located. Additionally Border Check will try to provide you with additional data on these servers, such as the companies they belong to.
128 |
Visit the project homepage for more information.
129 |
130 |
------------------------------
131 |
132 |
Map legend
133 |
136 |
------------------------------
137 |
New Travel (enter URL)
138 |
139 |
140 |
141 |
143 |
144 |
145 |
146 |
History
147 |
148 |
149 |
------------------------------
150 |
Get in touch
151 |
152 |
153 |
154 | Roel Roscam Abbing (rscmbbng@riseup.net)
155 | psy (epsylon@riseup.net)
156 |
157 |
158 |
159 |
160 |
"""+msg+"""
161 |
162 |
"""
163 | if got_data:
164 | output +="""
165 |
181 |
182 | """
183 |
--------------------------------------------------------------------------------
/Border-Check/web/js/bc-control.js:
--------------------------------------------------------------------------------
1 | var BcControlClass = L.Control.extend({
2 | options: {
3 | position: 'bottomright'
4 | },
5 |
6 | onAdd: function (map) {
7 | // create the control container with a particular class name
8 | var container = L.DomUtil.create('div', 'bc-custom-control');
9 | // ... initialize other DOM elements, add listeners, etc.
10 |
11 | return container;
12 | }
13 | });
14 |
15 | var bcControl = new BcControlClass();
16 |
--------------------------------------------------------------------------------
/Border-Check/web/js/bc-history.js:
--------------------------------------------------------------------------------
1 | function bcHistoryEntry(hn,data){
2 | this.hn=hn
3 | this.data=data
4 | this.follow=false
5 | data=this.data
6 | this.counter_max =data[0]
7 | this.latlong =data[1]
8 | this.asn_list =data[2]
9 | this.hop_ip_list=data[3]
10 | this.telco_list =data[4]
11 | this.server_name_list =data[5]
12 | this.timestamp_list =data[6]
13 | this.country_code_list =data[7]
14 | this.unique_country_code_list =data[8]
15 | this.drawnLayers = new Array()
16 | this.index=0
17 | console.log("history entry for "+hn)
18 |
19 | this.state='hidden'
20 | this.speed= 1000 // animation speed in ms
21 | // console.log(data)
22 |
23 | this.show=function(){
24 | if(this.state==='hidden'){
25 | this.state='playing'
26 | this.stop_anim=false
27 | this.follow=true
28 | // console.log("showing "+this.hn + " state " + this.state )
29 | this.drawMarker()
30 | $("#status").html("Travelling to :")
31 | $("#url").html(this.hn)
32 | $(".header").show()
33 | }
34 | }
35 |
36 | this.makeLink = function(){
37 | link= '
'
38 | +''+this.hn+' '
39 | if(this.state=='hidden')
40 | link =link +' '
41 | if(this.state=='playing')
42 | link =link +' '
43 | if(this.state=='show')
44 | link =link +' '
45 | link =link+' '
46 | +' '
47 | return link
48 | }
49 |
50 | this.drawMarker=function(){
51 | $("#url").html(this.hn)
52 | this.index=0
53 | this.delay = (100+this.timestamp_list[this.index]) //sets the animationspeed
54 | this.clusterGroups = {} //contains all country specific clusters
55 | this.makeClusterGroups(this.country_code_list) //initialize first cluster
56 | this.addStep() // initialize the animation
57 | }
58 |
59 | this.makeCustomMarker= function(){
60 | if (this.index < this.counter_max){
61 | var customIcon = new L.icon({
62 | iconUrl: 'images/markers/marker-icon-'+this.index+'.png',
63 |
64 | iconSize: [30, 30], // size of the icon
65 | iconAnchor: [15, 15], // point of the icon which will correspond to marker's location
66 | popupAnchor: [-150, 50] // point from which the popup should open relative to the iconAnchor
67 | });
68 | }
69 | if (this.index == this.counter_max){
70 | var customIcon = new L.icon({
71 | iconUrl: 'images/markers/marker-icon-last.png',
72 | iconSize: [30, 30], // size of the icon
73 | iconAnchor: [15, 15], // point of the icon which will correspond to marker's location
74 | popupAnchor: [-150, 0] // point from which the popup should open relative to the iconAnchor
75 | });
76 | }
77 | return customIcon
78 | }
79 |
80 | this.makeClusterGroups=function(country_code_list){
81 | for (var i = 0; i < this.unique_country_code_list.length; i++){
82 | if (this.unique_country_code_list[i] == this.country_code_list[this.index]){
83 | if (this.clusterGroups[this.unique_country_code_list[i]]){
84 | //checks if a cluster for the country already exists
85 | return
86 | }
87 | else
88 | //if not make it.
89 | this.clusterGroups[this.unique_country_code_list[i]] = new L.MarkerClusterGroup();
90 | }
91 | }
92 | }
93 |
94 |
95 | this.AddMarkerCluster= function(marker){
96 | this.clusterGroups[this.country_code_list[this.index]].addLayer(marker)
97 | map.addLayer(this.clusterGroups[this.country_code_list[this.index]])
98 | this.drawnLayers.push(this.clusterGroups[this.country_code_list[this.index]])
99 | }
100 |
101 | this.AddMarker =function(src){
102 | this.makeClusterGroups(this.country_code_list, this.index)
103 | // console.log(this.index)
104 | var marker = L.marker([src[0], src[1]],{icon: this.makeCustomMarker()})
105 | var popup = L.Popup({
106 | maxHeight: 50})
107 | var popupcontent = "
"
108 | +"
-------------
"
109 | +"IP:
"
110 | +this.hop_ip_list[this.index]+" "
111 | +"Server name:
"
112 | +this.server_name_list[this.index]+" "
113 | //+"Network owner:
"+this.telco_list[this.index]+" "
114 | +"Network owner:
"
115 | +this.telco_list[this.index]+" "
116 | //+" IP:
"+this.hop_ip_list[index]+" "
117 |
118 | marker.bindPopup(popupcontent)
119 | this.AddMarkerCluster(marker, this.index)
120 | this.drawnLayers.push(marker)
121 | }
122 |
123 | this.displayMetadata=function(index){
124 | duck_link= "";// parse when no network owner available for DuckGo
125 | wikileaks_link= "";// parse when no network owner available for wikileaks
126 | if (this.telco_list[index] == "Unknown"){
127 | duck_link =duck_link;
128 | }else{
129 | duck_link =duck_link+"
DuckGo "
130 | }
131 | if (this.telco_list[index] == "Unknown"){
132 | wikileaks_link =wikileaks_link;
133 | }else{
134 | wikileaks_link =wikileaks_link+"
Wikileaks "
135 | }
136 | $(".bc-custom-control").html("
"
137 | +"Network owner:
"+this.telco_list[index]+" "
138 | +"
-------------
"
139 | // aded DuckGoDuck
140 | +duck_link
141 | // added Wikileaks
142 | +wikileaks_link)
143 | $(".bc-custom-control").show()
144 | }
145 |
146 | this.display_by_net=function(index){
147 | asn_link= '' // parse when no asn available
148 | if (this.asn_list[index] == "Not Available"){
149 | asn_link =asn_link+"?";
150 | }else{
151 | asn_link =asn_link+"
"+this.asn_list[index]+" "
152 | }
153 | $(".bc-custom-control").html("
"
154 | +"Server name:
"+this.server_name_list[index]+" "
155 | +"
-------------
"
156 | +"ASN:
"+asn_link+" "
157 | +"Lat,Long:
"
158 | +this.latlong[index]+ " ")
159 | $(".bc-custom-control").show()
160 | }
161 |
162 | this.display_by_ip=function(index){
163 | $(".bc-custom-control").html("
"
164 | +"IP:
"+this.hop_ip_list[index]+" "
165 | +"
-------------
"
166 | // added Who.is
167 | +"
Whois "
168 | // added Shodan.io
169 | +"
ShodanHQ "
170 | // added Wolfram
171 | +"
Wolfram ")
172 | $(".bc-custom-control").show()
173 | }
174 |
175 | this.addStep=function (){
176 | if(this.stop_anim){
177 | // console.log(this.hn+" : addstep/stopping anim")
178 | this.stop_anim=false
179 | this.run_anim=false;
180 | return
181 | }
182 | // console.log(this.hn+" : add step "+this.index)
183 | var src = this.latlong[this.index]
184 | var dest = this.latlong[this.index]
185 | if (this.index < this.counter_max){
186 | var dest = this.latlong[this.index+1]
187 | }
188 | var b = new R.BezierAnim([src, dest])
189 | map.addLayer(b)
190 | this.drawnLayers.push(b)
191 | this.AddMarker(src, this.index)
192 | if (this.index < this.counter_max){
193 | map.panTo(this.latlong[this.index+1],{
194 | animate: true,
195 | duration: this.speed/1000
196 | })
197 | }
198 | else
199 | if (this.index == this.counter_max){
200 | map.panTo(this.latlong[this.index],{
201 | animate: true,
202 | duration: this.speed/1000
203 | })
204 | }
205 | window.setTimeout("bcHistory.process('"+this.hn+"')", this.speed)
206 | }
207 |
208 | this.processStep=function () {
209 | if(this.stop_anim){
210 | // console.log(this.hn+" : processstep/stopping anim")
211 | this.stop_anim=false
212 | this.run_anim=false;
213 | return
214 | }
215 | console.log(this.hn+" : process step "+this.index)
216 | this.delay = (100 + this.timestamp_list[this.index])
217 | if (this.index < this.counter_max){
218 | changeFavicon('images/world/'+this.country_code_list[this.index]+'.png')
219 | window.setTimeout("bcHistory.addStep('"+this.hn+"')",this.delay)
220 | }
221 | if (this.index == this.counter_max){
222 | // map.panTo(latlong[this.index]);
223 | changeFavicon('images/world/'+this.country_code_list[this.index]+'.png')
224 | this.run_anim=false
225 | this.state='show'
226 | $("#status").html("Showing...")
227 | // console.log('fin')
228 | // map.fitBounds([bounds])
229 | }
230 | this.index = this.index + 1
231 | }
232 |
233 | this.stop=function(){
234 | if(this.index >0){
235 | this.state='show'
236 | $("#status").html("Showing...")
237 | }
238 | this.stop_anim=true
239 | }
240 |
241 | this.hide=function() {
242 | // console.log ("hiding "+ this.hn)
243 | // if(this.state=='show'){
244 | $('.header').hide()
245 | this.index =0
246 | this.state='hidden'
247 | this.stop_anim=true
248 | for (i in this.drawnLayers){
249 | // console.log("removing layer "+i)
250 | // console.log(this.drawnLayers[i])
251 | if(map.hasLayer(this.drawnLayers[i]))
252 | map.removeLayer(this.drawnLayers[i])
253 | }
254 | this.drawnLayers=new Array()
255 | }
256 | // }
257 | }
258 |
259 | function bcHistoryClass(){
260 | this.cur_url="";
261 | this.last_url="";
262 | this.bcHistoryEntries = new Array
263 |
264 | this.find=function (hn){
265 | for (bcEntry in this.bcHistoryEntries){
266 | if (this.bcHistoryEntries[bcEntry].hn === hn){
267 | return this.bcHistoryEntries[bcEntry]
268 | }
269 | }
270 | return false;
271 | }
272 |
273 | this.process=function (hn){
274 | bce=this.find(hn)
275 | if(bce) bce.processStep()
276 | }
277 |
278 | this.addStep=function(hn){
279 | bce=this.find(hn)
280 | if(bce) bce.addStep()
281 | }
282 |
283 | this.render=function(){
284 | $("#history-content").html("");
285 | for (bcEntry in this.bcHistoryEntries){
286 | // console.log(bcHistoryEntries[bcEntry]);
287 | $("#history-content").append(this.bcHistoryEntries[bcEntry].makeLink())
288 | }
289 | }
290 |
291 | this.load=function(hn){
292 | // console.log("loadin "+hn);
293 | e=this.find(hn)
294 | if(e){
295 | e.show()
296 | return
297 | }
298 | // console.log("loadin "+hn+" failed !" );
299 | return false
300 | }
301 |
302 | this.play = function(hn){
303 | var bce=this.find(hn)
304 | if(!bce) return
305 | this.hideAll()
306 | bce.show()
307 | this.render()
308 | }
309 |
310 | this.hideAll = function(hn){
311 | for (bce in this.bcHistoryEntries)
312 | this.bcHistoryEntries[bce].hide()
313 | this.render()
314 | }
315 |
316 | this.hide = function(hn){
317 | var bce=this.find(hn)
318 | if(!bce) return
319 | bce.hide()
320 | this.render()
321 | }
322 |
323 | this.displayMetadata = function(hn,index){
324 | var bce=this.find(hn)
325 | if(!bce) return
326 | return bce.displayMetadata(index);
327 | }
328 |
329 | this.display_by_net = function(hn,index){
330 | var bce=this.find(hn)
331 | if(!bce) return
332 | return bce.display_by_net(index);
333 | }
334 |
335 | this.display_by_ip = function(hn,index){
336 | var bce=this.find(hn)
337 | if(!bce) return
338 | return bce.display_by_ip(index);
339 | }
340 |
341 | this.remove = function(hn){
342 | // console.log("removing " + hn)
343 | // console.log(this.bcHistoryEntries)
344 | for (bcEntry in this.bcHistoryEntries){
345 | if(this.bcHistoryEntries[bcEntry].hn === hn){
346 | // console.log("removing "+ this.bcHistoryEntries[bcEntry].hn +" | "+ hn)
347 | this.bcHistoryEntries[bcEntry].hide()
348 | this.bcHistoryEntries.splice(bcEntry,1)
349 | this.render()
350 | return
351 | }
352 | }
353 | }
354 |
355 | this.add = function(hn,data){
356 | // console.log("adding " + hn)
357 | var bce=this.find(hn)
358 | if(!bce){
359 | console.log("adding " + hn)
360 | bce=new bcHistoryEntry(hn,data)
361 | this.cur_url=hn
362 | this.bcHistoryEntries.push(bce)
363 | this.play(hn)
364 | }
365 | return bce
366 | }
367 |
368 |
369 | this.stop=function() {
370 | for(i=0;i
cablemap.info'
8 | })
9 | blank_map = L.tileLayer('http://{s}.tiles.mapbox.com/v3/rllfff.blank-populations/{z}/{x}/{y}.png')
10 | // osm = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
11 | // attribution: '© OpenStreetMap contributors'
12 | // })
13 | // osm_quest = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.png')
14 | osm_sat = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.png')
15 | // streets = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.streets/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
16 | // light = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.light/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
17 | dark = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.dark/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
18 | // comic = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.comic/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
19 | // pirates = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.pirates/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
20 | // high_contrast = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.high-contrast/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
21 | // emerald = L.tileLayer('http://api.tiles.mapbox.com/v4/mapbox.emerald/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmxsZmZmIiwiYSI6IkZyVmt4bUUifQ.R--ZDzdb-672Dx1E3suO9A')
22 |
23 | map = L.map('map',{
24 | minZoom: 2,
25 | maxZoom:6,
26 | zoomControl:false,
27 | layers: [blank_map]
28 | });
29 | if (typeof latlong !== 'undefined') {
30 | map.setView(latlong[index], 3)
31 | }
32 | blank_map.addTo(map)
33 | // osm_sat.addTo(map)
34 |
35 | var baseMaps = {
36 | "Submarine cables": cables,
37 | // "Streets": streets,
38 | // "Emerald": emerald,
39 | // "Light": light,
40 | // "High-Contrast": high_contrast,
41 | // "Comic": comic,
42 | // "Pirates": pirates,
43 | // "OSM Blank": osm,
44 | // "OSM Geopolitical": osm_quest,
45 | "OSM Satellite": osm_sat,
46 | "Dark": dark,
47 | "Blank map": blank_map
48 | }
49 |
50 | //setting the controls:
51 | new L.control.layers(baseMaps, null, {collapsed:false}).addTo(map)
52 |
53 | new L.Control.Zoom({position: 'topright'}).addTo(map)
54 |
55 | new L.Control.Attribution
56 |
57 | //custom markers:
58 |
59 | //the slider bar
60 | $('.info').hide()
61 | slide = 0
62 | $('#button').bind('click', function(){
63 | if (slide == 0){
64 | $('.bar').animate({"width": '300'})
65 | $('.info').show()
66 | $('#button').html('<')
67 | }
68 |
69 | slide += 1
70 |
71 | if (slide == 2){
72 | $('.bar').animate({"width": '20'})
73 | $('.info').hide()
74 | $('#button').html('>')
75 | slide = 0}
76 | })
77 |
78 | $('#attrib-content').hide()
79 | $('#about-content').hide()
80 | $('#contact-content').hide()
81 |
82 | $('#attrib').bind('click', function(){
83 | $('#attrib-content').toggle(400)
84 | })
85 |
86 | $('#legend').bind('click', function(){
87 | $('#legend-content').toggle(400)
88 | })
89 |
90 | $('#about').bind('click', function(){
91 | $('#about-content').toggle(400)
92 | })
93 |
94 | $('#contact').bind('click', function(){
95 | $('#contact-content').toggle(400)
96 | })
97 |
98 | $('#form-submit').bind('click',function(){
99 | // console.log("loading "+$('#form-host').val())
100 | $('#form-target').load('http://127.0.0.1:8080/ajax?hostname='+$('#form-host').val())
101 | })
102 |
103 | $('#form-stop-anim').bind('click',function(){
104 | // console.log("stopping animation ")
105 | bcHistory.stop()
106 | })
107 |
108 | // legend controls
109 | $('#home').bind('click', function(){
110 | $('#legend-text').html("This is the first hop on your journey, most probably the router of your provider for your neighbourhood or city.")
111 | })
112 |
113 | $('#hop').bind('click', function(){
114 | $('#legend-text').html("This represents a hop to either a server or router that you pass. Click on it to view it's metadata." )
115 | })
116 |
117 | $('#cluster').bind('click', function(){
118 | $('#legend-text').html('Server hops in the same country or location get automatically grouped into clusters. Click the clusters to see individual hops.')
119 | })
120 |
121 | $('#destination').bind('click', function(){
122 | $('#legend-text').html("The last hop on your journey. Ideally it is the machine that serves the destination website. More likeley however it is it's firewall")
123 | })
124 |
125 | $('#error').bind('click',function(){
126 | $('#error').html('')
127 | })
128 |
129 | if(cur_url !== ""){
130 | bcHistory.play(cur_url)
131 | map.addControl(bcControl)
132 | // add content :
133 | // $('.bc-custom-control').html("Hallo Welt")
134 | $('.bc-custom-control').hide();
135 | }
136 | }
137 |
138 | window.setInterval("watchUrl()",2000)
139 |
140 | function watchUrl(){
141 | $('#form-target').load('http://127.0.0.1:8080/ajax')
142 | }
143 |
--------------------------------------------------------------------------------
/Border-Check/web/js/cluster/MarkerCluster.Default.css:
--------------------------------------------------------------------------------
1 | .marker-cluster-small {
2 | background-color: rgba(255, 0, 0, 0.6);
3 | }
4 | .marker-cluster-small div {
5 | background-color: rgba(256, 0, 0, 0.6);
6 | }
7 |
8 | .marker-cluster-medium {
9 | background-color: rgba(255, 0, 0, 0.6);
10 | }
11 | .marker-cluster-medium div {
12 | background-color: rgba(256, 0, 0, 0.6);
13 | }
14 |
15 | .marker-cluster-large {
16 | background-color: rgba(255, 0, 0, 0.6);
17 | }
18 | .marker-cluster-large div {
19 | background-color: rgba(256, 0, 0, 0.6);
20 | }
21 |
22 | .marker-cluster {
23 | background-clip: padding-box;
24 | border-radius: 20px;
25 | }
26 | .marker-cluster div {
27 | width: 30px;
28 | height: 30px;
29 | margin-left: 5px;
30 | margin-top: 5px;
31 |
32 | text-align: center;
33 | border-radius: 15px;
34 | font-family: 'Source Code Pro', Arial, serif; font-weight: 400;
35 | font-size:12px;
36 | }
37 | .marker-cluster span {
38 | line-height: 30px;
39 | }
--------------------------------------------------------------------------------
/Border-Check/web/js/cluster/MarkerCluster.Default.ie.css:
--------------------------------------------------------------------------------
1 | /* IE 6-8 fallback colors */
2 | .marker-cluster-small {
3 | background-color: rgb(181, 226, 140);
4 | }
5 | .marker-cluster-small div {
6 | background-color: rgb(110, 204, 57);
7 | }
8 |
9 | .marker-cluster-medium {
10 | background-color: rgb(241, 211, 87);
11 | }
12 | .marker-cluster-medium div {
13 | background-color: rgb(240, 194, 12);
14 | }
15 |
16 | .marker-cluster-large {
17 | background-color: rgb(253, 156, 115);
18 | }
19 | .marker-cluster-large div {
20 | background-color: rgb(241, 128, 23);
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/Border-Check/web/js/cluster/MarkerCluster.css:
--------------------------------------------------------------------------------
1 | .leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
2 | -webkit-transition: -webkit-transform 0.2s ease-out, opacity 0.2s ease-in;
3 | -moz-transition: -moz-transform 0.2s ease-out, opacity 0.2s ease-in;
4 | -o-transition: -o-transform 0.2s ease-out, opacity 0.2s ease-in;
5 | transition: transform 0.2s ease-out, opacity 0.2s ease-in;
6 | }
7 |
--------------------------------------------------------------------------------
/Border-Check/web/js/favicon.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Dynamically changing favicons with JavaScript
3 | * Works in all A-grade browsers except Safari and Internet Explorer
4 | * Demo: http://mathiasbynens.be/demo/dynamic-favicons
5 | */
6 |
7 | // HTML5™, baby! http://mathiasbynens.be/notes/document-head
8 | document.head = document.head || document.getElementsByTagName('head')[0];
9 |
10 | function changeFavicon(src) {
11 | var link = document.createElement('link'),
12 | oldLink = document.getElementById('dynamic-favicon');
13 | link.id = 'dynamic-favicon';
14 | link.rel = 'shortcut icon';
15 | link.href = src;
16 | if (oldLink) {
17 | document.head.removeChild(oldLink);
18 | }
19 | document.head.appendChild(link);
20 | }
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/images/layers-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/js/leaflet/images/layers-2x.png
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/images/layers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/js/leaflet/images/layers.png
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/images/marker-icon-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/js/leaflet/images/marker-icon-2x.png
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/images/marker-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/js/leaflet/images/marker-icon.png
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/images/marker-shadow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rscmbbng/Border-Check/90a73705133a3c405dd325244b3714f17b418c74/Border-Check/web/js/leaflet/images/marker-shadow.png
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/leaflet.css:
--------------------------------------------------------------------------------
1 | /* required styles */
2 |
3 | @font-face {
4 | font-family: "SourceSansPro-Regular";
5 | src: url('fonts/SourceSansPro-Regular.otf') format("truetype");
6 | }
7 |
8 |
9 | .leaflet-map-pane,
10 | .leaflet-tile,
11 | .leaflet-marker-icon,
12 | .leaflet-marker-shadow,
13 | .leaflet-tile-pane,
14 | .leaflet-tile-container,
15 | .leaflet-overlay-pane,
16 | .leaflet-shadow-pane,
17 | .leaflet-marker-pane,
18 | .leaflet-popup-pane,
19 | .leaflet-overlay-pane svg,
20 | .leaflet-zoom-box,
21 | .leaflet-image-layer,
22 | .leaflet-layer {
23 | position: absolute;
24 | left: 0;
25 | top: 0;
26 | }
27 | .leaflet-container {
28 | overflow: hidden;
29 | -ms-touch-action: none;
30 | }
31 | .leaflet-tile,
32 | .leaflet-marker-icon,
33 | .leaflet-marker-shadow {
34 | -webkit-user-select: none;
35 | -moz-user-select: none;
36 | user-select: none;
37 | -webkit-user-drag: none;
38 | }
39 | .leaflet-marker-icon,
40 | .leaflet-marker-shadow {
41 | display: block;
42 | }
43 | /* map is broken in FF if you have max-width: 100% on tiles */
44 | .leaflet-container img {
45 | max-width: none !important;
46 | }
47 | /* stupid Android 2 doesn't understand "max-width: none" properly */
48 | .leaflet-container img.leaflet-image-layer {
49 | max-width: 15000px !important;
50 | }
51 | .leaflet-tile {
52 | filter: inherit;
53 | visibility: hidden;
54 | }
55 | .leaflet-tile-loaded {
56 | visibility: inherit;
57 | }
58 | .leaflet-zoom-box {
59 | width: 0;
60 | height: 0;
61 | }
62 | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
63 | .leaflet-overlay-pane svg {
64 | -moz-user-select: none;
65 | }
66 |
67 | .leaflet-tile-pane { z-index: 2; }
68 | .leaflet-objects-pane { z-index: 3; }
69 | .leaflet-overlay-pane { z-index: 4; }
70 | .leaflet-shadow-pane { z-index: 5; }
71 | .leaflet-marker-pane { z-index: 6; }
72 | .leaflet-popup-pane { z-index: 7; }
73 |
74 |
75 | /* control positioning */
76 |
77 | .leaflet-control {
78 | position: relative;
79 | z-index: 7;
80 | pointer-events: auto;
81 | }
82 | .leaflet-top,
83 | .leaflet-bottom {
84 | position: absolute;
85 | z-index: 1000;
86 | pointer-events: none;
87 | }
88 | .leaflet-top {
89 | top: 0;
90 | }
91 | .leaflet-right {
92 | right: 0;
93 | }
94 | .leaflet-bottom {
95 | bottom: 0;
96 | }
97 | .leaflet-left {
98 | left: 0;
99 | }
100 | .leaflet-control {
101 | float: left;
102 | clear: both;
103 | }
104 | .leaflet-right .leaflet-control {
105 | float: right;
106 | }
107 | .leaflet-top .leaflet-control {
108 | margin-top: 10px;
109 | }
110 | .leaflet-bottom .leaflet-control {
111 | margin-bottom: 10px;
112 | }
113 | .leaflet-left .leaflet-control {
114 | margin-left: 10px;
115 | }
116 | .leaflet-right .leaflet-control {
117 | margin-right: 10px;
118 | }
119 |
120 |
121 | /* zoom and fade animations */
122 |
123 | .leaflet-fade-anim .leaflet-tile,
124 | .leaflet-fade-anim .leaflet-popup {
125 | opacity: 0;
126 | -webkit-transition: opacity 0.2s linear;
127 | -moz-transition: opacity 0.2s linear;
128 | -o-transition: opacity 0.2s linear;
129 | transition: opacity 0.2s linear;
130 | }
131 | .leaflet-fade-anim .leaflet-tile-loaded,
132 | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
133 | opacity: 1;
134 | }
135 |
136 | .leaflet-zoom-anim .leaflet-zoom-animated {
137 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
138 | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
139 | -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
140 | transition: transform 0.25s cubic-bezier(0,0,0.25,1);
141 | }
142 | .leaflet-zoom-anim .leaflet-tile,
143 | .leaflet-pan-anim .leaflet-tile,
144 | .leaflet-touching .leaflet-zoom-animated {
145 | -webkit-transition: none;
146 | -moz-transition: none;
147 | -o-transition: none;
148 | transition: none;
149 | }
150 |
151 | .leaflet-zoom-anim .leaflet-zoom-hide {
152 | visibility: hidden;
153 | }
154 |
155 |
156 | /* cursors */
157 |
158 | .leaflet-clickable {
159 | cursor: pointer;
160 | }
161 | .leaflet-container {
162 | cursor: -webkit-grab;
163 | cursor: -moz-grab;
164 | }
165 | .leaflet-popup-pane,
166 | .leaflet-control {
167 | cursor: auto;
168 | }
169 | .leaflet-dragging,
170 | .leaflet-dragging .leaflet-clickable,
171 | .leaflet-dragging .leaflet-container {
172 | cursor: move;
173 | cursor: -webkit-grabbing;
174 | cursor: -moz-grabbing;
175 | }
176 |
177 |
178 | /* visual tweaks */
179 |
180 | .leaflet-container {
181 | background: #ddd;
182 | outline: 0;
183 | }
184 | .leaflet-container a {
185 | }
186 | .leaflet-container a.leaflet-active {
187 | outline: 2px solid orange;
188 | }
189 | .leaflet-zoom-box {
190 | border: 2px dotted #05f;
191 | background: white;
192 | opacity: 0.5;
193 | }
194 |
195 |
196 | /* general typography */
197 | .leaflet-container {
198 | font-family: "SourceSansPro-Regular", Arial, serif; font-weight: 400;
199 | font-size: 12px;
200 | background-color:rgba(255, 255, 255, 0.7);
201 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
202 | -webkit-border-radius: 4px;
203 | border-radius: 4px;
204 |
205 | }
206 |
207 |
208 | /* general toolbar styles */
209 |
210 | .leaflet-bar {
211 | background-color:rgba(255, 255, 255, 0.7);
212 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
213 | -webkit-border-radius: 4px;
214 | border-radius: 4px;
215 | }
216 | .leaflet-bar a, .leaflet-bar a:hover {
217 | width: 26px;
218 | height: 26px;
219 | line-height: 26px;
220 | display: block;
221 | text-align: center;
222 | text-decoration: none;
223 | }
224 | .leaflet-bar a,
225 | .leaflet-control-layers-toggle {
226 | background-position: 50% 50%;
227 | background-repeat: no-repeat;
228 | display: block;
229 | }
230 | .leaflet-bar a:hover {
231 | background-color: #f4f4f4;
232 | }
233 | .leaflet-bar a:first-child {
234 | -webkit-border-top-left-radius: 4px;
235 | border-top-left-radius: 4px;
236 | -webkit-border-top-right-radius: 4px;
237 | border-top-right-radius: 4px;
238 | }
239 | .leaflet-bar a:last-child {
240 | -webkit-border-bottom-left-radius: 4px;
241 | border-bottom-left-radius: 4px;
242 | -webkit-border-bottom-right-radius: 4px;
243 | border-bottom-right-radius: 4px;
244 | border-bottom: none;
245 | }
246 | .leaflet-bar a.leaflet-disabled {
247 | cursor: default;
248 | background-color: #f4f4f4;
249 | color: #bbb;
250 | }
251 |
252 | .leaflet-touch .leaflet-bar {
253 | -webkit-border-radius: 10px;
254 | border-radius: 10px;
255 | }
256 | .leaflet-touch .leaflet-bar a {
257 | width: 30px;
258 | height: 30px;
259 | }
260 | .leaflet-touch .leaflet-bar a:first-child {
261 | -webkit-border-top-left-radius: 7px;
262 | border-top-left-radius: 7px;
263 | -webkit-border-top-right-radius: 7px;
264 | border-top-right-radius: 7px;
265 | }
266 | .leaflet-touch .leaflet-bar a:last-child {
267 | -webkit-border-bottom-left-radius: 7px;
268 | border-bottom-left-radius: 7px;
269 | -webkit-border-bottom-right-radius: 7px;
270 | border-bottom-right-radius: 7px;
271 | border-bottom: none;
272 | }
273 |
274 |
275 | /* zoom control */
276 |
277 | .leaflet-control-zoom-in {
278 | font-family: "SourceSansPro-Regular", Arial, serif; font-weight: 300;
279 | font-size: 20px;
280 | }
281 | .leaflet-control-zoom-out {
282 | font-family: "SourceSansPro-Regular", Arial, serif; font-weight: 300;
283 | font-size: 20px;
284 | }
285 |
286 | .leaflet-touch .leaflet-control-zoom-in {
287 | font-size: 22px;
288 | line-height: 30px;
289 | }
290 | .leaflet-touch .leaflet-control-zoom-out {
291 | font-size: 22px;
292 | line-height: 30px;
293 | }
294 |
295 |
296 | /* layers control */
297 |
298 | .leaflet-control-layers {
299 | background-color:rgba(255, 255, 255, 0.7);
300 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
301 | -webkit-border-radius: 4px;
302 | border-radius: 4px;
303 | margin: 0;
304 | }
305 | .leaflet-control-layers-toggle {
306 | background-image: url(images/layers.png);
307 | width: 36px;
308 | height: 36px;
309 | }
310 | .leaflet-retina .leaflet-control-layers-toggle {
311 | background-image: url(images/layers-2x.png);
312 | background-size: 26px 26px;
313 | }
314 | .leaflet-touch .leaflet-control-layers-toggle {
315 | width: 44px;
316 | height: 44px;
317 | }
318 | .leaflet-control-layers .leaflet-control-layers-list,
319 | .leaflet-control-layers-expanded .leaflet-control-layers-toggle {
320 | display: none;
321 | }
322 | .leaflet-control-layers-expanded .leaflet-control-layers-list {
323 | display: block;
324 | position: relative;
325 | }
326 | .leaflet-control-layers-expanded {
327 | padding: 6px 10px 6px 6px;
328 | color: #333;
329 | }
330 | .leaflet-control-layers-selector {
331 | margin-top: 2px;
332 | position: relative;
333 | top: 1px;
334 | }
335 | .leaflet-control-layers label {
336 | display: block;
337 | }
338 | .leaflet-control-layers-separator {
339 | height: 0;
340 | border-top: 1px solid #ddd;
341 | margin: 5px -10px 5px -6px;
342 | }
343 |
344 |
345 | /* attribution and scale controls */
346 |
347 | .leaflet-container .leaflet-control-attribution {
348 | background-color:rgba(255, 255, 255, 0.7);
349 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
350 | -webkit-border-radius: 4px;
351 | border-radius: 4px;
352 | margin: 0;
353 | }
354 | .leaflet-control-attribution,
355 | .leaflet-control-scale-line {
356 | padding: 0 5px;
357 | color: #333;
358 | }
359 | .leaflet-container .leaflet-control-attribution,
360 | .leaflet-container .leaflet-control-scale {
361 | font-size: 11px;
362 | }
363 | .leaflet-left .leaflet-control-scale {
364 | margin-left: 5px;
365 | }
366 | .leaflet-bottom .leaflet-control-scale {
367 | margin-bottom: 5px;
368 | }
369 | .leaflet-control-scale-line {
370 | border: 2px solid #777;
371 | border-top: none;
372 | color: black;
373 | line-height: 1.1;
374 | padding: 2px 5px 1px;
375 | font-size: 11px;
376 | text-shadow: 1px 1px 1px #fff;
377 | background-color:rgba(255, 255, 255, 0.7);
378 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
379 | -webkit-border-radius: 4px;
380 | border-radius: 4px;
381 | white-space: nowrap;
382 | overflow: hidden;
383 | }
384 | .leaflet-control-scale-line:not(:first-child) {
385 | border-top: 2px solid #777;
386 | border-bottom: none;
387 | margin-top: -2px;
388 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
389 | -webkit-border-radius: 4px;
390 | border-radius: 4px;
391 | }
392 | .leaflet-control-scale-line:not(:first-child):not(:last-child) {
393 | border-bottom: 2px solid #777;
394 | }
395 |
396 | .leaflet-touch .leaflet-control-attribution,
397 | .leaflet-touch .leaflet-control-layers,
398 | .leaflet-touch .leaflet-bar {
399 | box-shadow: none;
400 | }
401 | .leaflet-touch .leaflet-control-layers,
402 | .leaflet-touch .leaflet-bar {
403 | }
404 |
405 |
406 | /* popup */
407 |
408 | .leaflet-popup {
409 | position: absolute;
410 | text-align: center;
411 | }
412 | .leaflet-popup-content-wrapper {
413 | padding: 1px;
414 | text-align: left;
415 | }
416 | .leaflet-popup-content {
417 | margin: 13px 19px;
418 | line-height: 1.4;
419 | }
420 | .leaflet-popup-content p {
421 | margin: 18px 0;
422 | }
423 | .leaflet-popup-content-wrapper, .leaflet-popup-tip {
424 | /* background-image:url(../../images/pop-up_back.jpg)*/
425 | background-color:rgba(255, 255, 255, 0.7);
426 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
427 | -webkit-border-radius: 4px;
428 | border-radius: 4px;
429 |
430 | }
431 | .leaflet-container a.leaflet-popup-close-button {
432 | position: absolute;
433 | top: 0;
434 | right: 0;
435 | padding: 10px 10px 0 0;
436 | text-align: center;
437 | width: 18px;
438 | height: 14px;
439 | font-family: "SourceSansPro-Regular", serif; font-weight: 400;
440 | color: white;
441 | font-size:15px;
442 | text-decoration: none;
443 | font-weight: bold;
444 | background: transparent;
445 | }
446 | .leaflet-container a.leaflet-popup-close-button:hover {
447 | color: #eeeeee;
448 | }
449 | .leaflet-popup-scrolled {
450 | overflow: auto;
451 | border-bottom: 1px solid #ddd;
452 | border-top: 1px solid #ddd;
453 | }
454 |
455 |
456 | /* div icon */
457 |
458 | .leaflet-div-icon {
459 | background: #fff;
460 | border: 1px solid #666;
461 | }
462 | .leaflet-editing-icon {
463 | -webkit-border-radius: 2px;
464 | border-radius: 2px;
465 | }
466 |
--------------------------------------------------------------------------------
/Border-Check/web/js/leaflet/leaflet.ie.css:
--------------------------------------------------------------------------------
1 | .leaflet-vml-shape {
2 | width: 1px;
3 | height: 1px;
4 | }
5 | .lvml {
6 | behavior: url(#default#VML);
7 | display: inline-block;
8 | position: absolute;
9 | }
10 |
11 | .leaflet-control {
12 | display: inline;
13 | }
14 |
15 | .leaflet-popup-tip {
16 | width: 21px;
17 | _width: 27px;
18 | margin: 0 auto;
19 | _margin-top: -3px;
20 |
21 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
22 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
23 | }
24 | .leaflet-popup-tip-container {
25 | margin-top: -1px;
26 | }
27 | .leaflet-popup-content-wrapper, .leaflet-popup-tip {
28 | border: 1px solid #999;
29 | }
30 | .leaflet-popup-content-wrapper {
31 | zoom: 1;
32 | }
33 |
34 | .leaflet-control-zoom,
35 | .leaflet-control-layers {
36 | border: 3px solid #999;
37 | }
38 | .leaflet-control-layers-toggle {
39 | }
40 | .leaflet-control-attribution,
41 | .leaflet-control-layers,
42 | .leaflet-control-scale-line {
43 | background: white;
44 | }
45 | .leaflet-zoom-box {
46 | filter: alpha(opacity=50);
47 | }
48 | .leaflet-control-attribution {
49 | border-top: 1px solid #bbb;
50 | border-left: 1px solid #bbb;
51 | }
52 |
--------------------------------------------------------------------------------
/Border-Check/web/js/rlayer-src.js:
--------------------------------------------------------------------------------
1 | /*
2 | RaphaelLayer, a JavaScript library for overlaying Raphael objects onto Leaflet interactive maps. http://dynmeth.github.com/RaphaelLayer
3 | (c) 2012-2013, David Howell, Dynamic Methods Pty Ltd
4 |
5 | Version 0.1.3
6 | */
7 |
8 | (function() {
9 |
10 | var R, originalR;
11 |
12 | if (typeof exports != 'undefined') {
13 | R = exports;
14 | } else {
15 | R = {};
16 |
17 | originalR = window.R;
18 |
19 | R.noConflict = function() {
20 | window.R = originalR;
21 | return R;
22 | };
23 |
24 | window.R = R;
25 | }
26 |
27 | R.version = '0.1.3';
28 |
29 | R.Layer = L.Class.extend({
30 | includes: L.Mixin.Events,
31 |
32 | initialize: function(options) {
33 |
34 | },
35 |
36 | onAdd: function (map) {
37 | this._map = map;
38 | this._map._initRaphaelRoot();
39 | this._paper = this._map._paper;
40 | this._set = this._paper.set();
41 |
42 | map.on('viewreset', this.projectLatLngs, this);
43 | this.projectLatLngs();
44 | },
45 |
46 | onRemove: function(map) {
47 | map.off('viewreset', this.projectLatLngs, this);
48 | this._map = null;
49 | this._set.forEach(function(item) {
50 | item.remove();
51 | }, this);
52 | this._set.clear();
53 | },
54 |
55 | projectLatLngs: function() {
56 |
57 | },
58 |
59 | animate: function(attr, ms, easing, callback) {
60 | this._set.animate(attr, ms, easing, callback);
61 |
62 | return this;
63 | },
64 |
65 | hover: function(f_in, f_out, icontext, ocontext) {
66 | this._set.hover(f_in, f_out, icontext, ocontext);
67 |
68 | return this;
69 | },
70 |
71 | attr: function(name, value) {
72 | this._set.attr(name, value);
73 |
74 | return this;
75 | }
76 | });
77 |
78 | L.Map.include({
79 | _initRaphaelRoot: function () {
80 | if (!this._raphaelRoot) {
81 | this._raphaelRoot = this._panes.overlayPane;
82 | this._paper = Raphael(this._raphaelRoot);
83 |
84 | this.on('moveend', this._updateRaphaelViewport);
85 | this._updateRaphaelViewport();
86 | }
87 | },
88 |
89 | _updateRaphaelViewport: function () {
90 | var p = 0.02,
91 | size = this.getSize(),
92 | panePos = L.DomUtil.getPosition(this._mapPane),
93 | min = panePos.multiplyBy(-1)._subtract(size.multiplyBy(p)),
94 | max = min.add(size.multiplyBy(1 + p*2)),
95 | width = max.x - min.x,
96 | height = max.y - min.y,
97 | root = this._raphaelRoot,
98 | pane = this._panes.overlayPane;
99 |
100 | this._paper.setSize(width, height);
101 |
102 | L.DomUtil.setPosition(root, min);
103 |
104 | root.setAttribute('width', width);
105 | root.setAttribute('height', height);
106 |
107 | this._paper.setViewBox(min.x, min.y, width, height, false);
108 |
109 | }
110 | });
111 |
112 | R.Marker = R.Layer.extend({
113 | initialize: function(latlng, pathString, attr, options) {
114 | R.Layer.prototype.initialize.call(this, options);
115 |
116 | this._latlng = latlng;
117 | this._pathString = (typeof pathString == 'string' ? pathString : 'M16,3.5c-4.142,0-7.5,3.358-7.5,7.5c0,4.143,7.5,18.121,7.5,18.121S23.5,15.143,23.5,11C23.5,6.858,20.143,3.5,16,3.5z M16,14.584c-1.979,0-3.584-1.604-3.584-3.584S14.021,7.416,16,7.416S19.584,9.021,19.584,11S17.979,14.584,16,14.584z');
118 | this._attr = (typeof pathString == 'object' ? pathString : (attr ? attr : {'fill': '#000'}));
119 | },
120 |
121 | projectLatLngs: function() {
122 | if (this._path) this._path.remove();
123 |
124 | var p = this._map.latLngToLayerPoint(this._latlng);
125 | var r = Raphael.pathBBox(this._pathString);
126 |
127 | this._path = this._paper.path(this._pathString)
128 | .attr(this._attr)
129 | .translate(p.x - 1.05*r.width, p.y - 1.15*r.height)
130 | .toFront();
131 |
132 | this._set.push(this._path);
133 | }
134 | });
135 |
136 | R.Pulse = R.Layer.extend({
137 | initialize: function(latlng, radius, attr, pulseAttr, options) {
138 | R.Layer.prototype.initialize.call(this, options);
139 |
140 | this._latlng = latlng;
141 | this._radius = (typeof radius == 'number' ? radius : 6);
142 | this._attr = (typeof radius == 'object' ? radius : (typeof attr == 'object' ? attr : {'fill': '#30a3ec', 'stroke': '#30a3ec'}));
143 | this._pulseAttr = (typeof radius == 'object' ? attr : typeof pulseAttr == 'object' ? pulseAttr : {
144 | 'stroke-width': 3,
145 | 'stroke': this._attr.stroke
146 | });
147 | this._repeat = 3;
148 | },
149 |
150 | onRemove: function (map) {
151 | R.Layer.prototype.onRemove.call(this, map);
152 |
153 | if(this._marker) this._marker.remove();
154 | if(this._pulse) this._pulse.remove();
155 | },
156 |
157 | projectLatLngs: function() {
158 | if(this._marker) this._marker.remove();
159 | if(this._pulse) this._pulse.remove();
160 |
161 | var p = this._map.latLngToLayerPoint(this._latlng);
162 |
163 | this._marker = this._paper.circle(p.x, p.y, this._radius).attr(this._attr);
164 | this._pulse = this._paper.circle(p.x, p.y, this._radius).attr(this._pulseAttr);
165 |
166 | var anim = Raphael.animation({
167 | '0%': {transform: 's0.3', opacity: 1.0},
168 | '100%': {transform: 's3.0', opacity: 0.0, easing: '<'}
169 | }, 1000);
170 |
171 | this._pulse.animate(anim.repeat(this._repeat));
172 | }
173 | });
174 |
175 | R.Polyline = R.Layer.extend({
176 |
177 | initialize: function(latlngs, attr, options) {
178 | R.Layer.prototype.initialize.call(this, options);
179 |
180 | this._latlngs = latlngs;
181 | this._attr = attr || {'fill': '#000', 'stroke': '#000'};
182 | },
183 |
184 | projectLatLngs: function() {
185 | this._set.clear();
186 | if (this._path) this._path.remove();
187 |
188 | this._path = this._paper.path(this.getPathString())
189 | .attr(this._attr)
190 | .toBack();
191 |
192 | this._set.push(this._path);
193 | },
194 |
195 | getPathString: function() {
196 | for(var i=0, len=this._latlngs.length, str=''; i= end.x ? 1 : -1);
319 | cp.x = Math.max(start.x, end.x) + amp;
320 | } else {
321 | amp = (end.y - start.y) * 1.5 + 15 * (start.y < end.y ? 1 : -1);
322 | cp.y = Math.min(start.y, end.y) + amp;
323 | }
324 | return cp;
325 | },
326 |
327 | closeTo: function(a, b) {
328 | var t = 15;
329 | return (a - b > -t && a - b < t);
330 | }
331 | });
332 |
333 | R.BezierAnim = R.Layer.extend({
334 | initialize: function(latlngs, attr, cb, options) {
335 | R.Layer.prototype.initialize.call(this, options);
336 |
337 | this._latlngs = latlngs;
338 | this._attr = attr;
339 | this._cb = cb;
340 | },
341 |
342 | onRemove: function (map) {
343 | R.Layer.prototype.onRemove.call(this, map);
344 |
345 | if(this._path) this._path.remove();
346 | if(this._sub) this._sub.remove();
347 | },
348 |
349 | projectLatLngs: function() {
350 | if(this._path) this._path.remove();
351 | if(this._sub) this._sub.remove();
352 |
353 | var self = this,
354 | start = this._map.latLngToLayerPoint(this._latlngs[0]),
355 | end = this._map.latLngToLayerPoint(this._latlngs[1]),
356 | cp = this.getControlPoint(start, end),
357 | pathString="M"+start.x+" "+start.y+" L"+end.x+" "+end.y,
358 | line = this._paper.path(pathString).hide();
359 |
360 | this._paper.customAttributes.alongBezier = function(a) {
361 | var r = this.data('reverse');
362 | var len = this.data('pathLength');
363 |
364 | return {
365 | path: this.data('bezierPath').getSubpath(r ? (1-a)*len : 0, r ? len : a*len)
366 | };
367 | };
368 |
369 | var sub = this._sub = this._paper.path()
370 | .data('bezierPath', line)
371 | .data('pathLength', line.getTotalLength())
372 | .data('reverse', false)
373 | .attr({
374 | 'stroke': '#BE1E2D',
375 | 'alongBezier': 0,
376 | 'stroke-width': 2
377 | });
378 |
379 | sub.stop().animate({
380 | alongBezier: 1
381 | }, 2000, function() {
382 | //self._cb();
383 | sub.data('reverse', true);
384 | // sub.stop().animate({
385 | // 'alongBezier': 0
386 | // }, 500, function() { sub.remove(); });
387 | });
388 | },
389 |
390 | getControlPoint: function(start, end) {
391 | var cp = { x: 0, y: 0 };
392 | cp.x = start.x + (end.x - [start.x]) / 2;
393 | cp.y = start.y + (end.y - [start.y]) / 2;
394 | var amp = 0;
395 |
396 | if (this.closeTo(start.x, end.x) && !this.closeTo(start.y, end.y)) {
397 | amp = (start.x - end.x) * 1 + 15 * (start.x >= end.x ? 1 : -1);
398 | cp.x = Math.max(start.x, end.x) + amp;
399 | } else {
400 | amp = (end.y - start.y) * 1.5 + 15 * (start.y < end.y ? 1 : -1);
401 | cp.y = Math.min(start.y, end.y) + amp;
402 | }
403 | return cp;
404 | },
405 |
406 | closeTo: function(a, b) {
407 | var t = 15;
408 | return (a - b > -t && a - b < t);
409 | }
410 | });
411 |
412 | R.FeatureGroup = L.FeatureGroup.extend({
413 | initialize: function(layers, options) {
414 | L.FeatureGroup.prototype.initialize.call(this, layers, options);
415 | },
416 |
417 | animate: function(attr, ms, easing, callback) {
418 | this.eachLayer(function(layer) {
419 | layer.animate(attr, ms, easing, callback);
420 | });
421 | },
422 |
423 | onAdd: function(map) {
424 | L.FeatureGroup.prototype.onAdd.call(this,map);
425 |
426 | this._set = this._map._paper.set();
427 |
428 | for(i in this._layers) {
429 | this._set.push(this._layers[i]._set);
430 | }
431 | },
432 |
433 | hover: function(h_in, h_out, c_in, c_out) {
434 | this.eachLayer(function(layer) {
435 | layer.hover(h_in, h_out, c_in, c_out);
436 | });
437 |
438 | return this;
439 | },
440 |
441 | attr: function(name, value) {
442 | this.eachLayer(function(layer) {
443 | layer.attr(name, value);
444 | });
445 |
446 | return this;
447 | }
448 | });
449 |
450 | /*
451 | * Contains L.MultiPolyline and L.MultiPolygon layers.
452 | */
453 |
454 | (function () {
455 | function createMulti(Klass) {
456 | return R.FeatureGroup.extend({
457 | initialize: function (latlngs, options) {
458 | this._layers = {};
459 | this._options = options;
460 | this.setLatLngs(latlngs);
461 | },
462 |
463 | setLatLngs: function (latlngs) {
464 | var i = 0, len = latlngs.length;
465 |
466 | this.eachLayer(function (layer) {
467 | if (i < len) {
468 | layer.setLatLngs(latlngs[i++]);
469 | } else {
470 | this.removeLayer(layer);
471 | }
472 | }, this);
473 |
474 | while (i < len) {
475 | this.addLayer(new Klass(latlngs[i++], this._options));
476 | }
477 |
478 | return this;
479 | }
480 | });
481 | }
482 |
483 | R.MultiPolyline = createMulti(R.Polyline);
484 | R.MultiPolygon = createMulti(R.Polygon);
485 | }());
486 |
487 | R.GeoJSON = R.FeatureGroup.extend({
488 | initialize: function (geojson, options) {
489 | L.Util.setOptions(this, options);
490 |
491 | this._geojson = geojson;
492 | this._layers = {};
493 |
494 | if (geojson) {
495 | this.addGeoJSON(geojson);
496 | }
497 | },
498 |
499 | addGeoJSON: function (geojson) {
500 | var features = geojson.features,
501 | i, len;
502 |
503 | if (features) {
504 | for (i = 0, len = features.length; i < len; i++) {
505 | this.addGeoJSON(features[i]);
506 | }
507 | return;
508 | }
509 |
510 | var isFeature = (geojson.type === 'Feature'),
511 | geometry = isFeature ? geojson.geometry : geojson,
512 | layer = R.GeoJSON.geometryToLayer(geometry, this.options.pointToLayer);
513 |
514 | this.fire('featureparse', {
515 | layer: layer,
516 | properties: geojson.properties,
517 | geometryType: geometry.type,
518 | bbox: geojson.bbox,
519 | id: geojson.id,
520 | geometry: geojson.geometry
521 | });
522 |
523 | this.addLayer(layer);
524 | }
525 | });
526 |
527 | L.Util.extend(R.GeoJSON, {
528 | geometryToLayer: function (geometry, pointToLayer) {
529 | var coords = geometry.coordinates,
530 | layers = [],
531 | latlng, latlngs, i, len, layer;
532 |
533 | switch (geometry.type) {
534 | case 'Point':
535 | latlng = this.coordsToLatLng(coords);
536 | return pointToLayer ? pointToLayer(latlng) : new R.Marker(latlng);
537 |
538 | case 'MultiPoint':
539 | for (i = 0, len = coords.length; i < len; i++) {
540 | latlng = this.coordsToLatLng(coords[i]);
541 | layer = pointToLayer ? pointToLayer(latlng) : new R.Marker(latlng);
542 | layers.push(layer);
543 | }
544 | return new R.FeatureGroup(layers);
545 |
546 | case 'LineString':
547 | latlngs = this.coordsToLatLngs(coords);
548 | return new R.Polyline(latlngs);
549 |
550 | case 'Polygon':
551 | latlngs = this.coordsToLatLngs(coords, 1);
552 | return new R.Polygon(latlngs);
553 |
554 | case 'MultiLineString':
555 | latlngs = this.coordsToLatLngs(coords, 1);
556 | return new R.MultiPolyline(latlngs);
557 |
558 | case "MultiPolygon":
559 | latlngs = this.coordsToLatLngs(coords, 2);
560 | return new R.MultiPolygon(latlngs);
561 |
562 | case "GeometryCollection":
563 | for (i = 0, len = geometry.geometries.length; i < len; i++) {
564 | layer = this.geometryToLayer(geometry.geometries[i], pointToLayer);
565 | layers.push(layer);
566 | }
567 | return new R.FeatureGroup(layers);
568 |
569 | default:
570 | throw new Error('Invalid GeoJSON object.');
571 | }
572 | },
573 |
574 | coordsToLatLng: function (coords, reverse) { // (Array, Boolean) -> LatLng
575 | var lat = parseFloat(coords[reverse ? 0 : 1]),
576 | lng = parseFloat(coords[reverse ? 1 : 0]);
577 |
578 | return new L.LatLng(lat, lng, true);
579 | },
580 |
581 | coordsToLatLngs: function (coords, levelsDeep, reverse) { // (Array, Number, Boolean) -> Array
582 | var latlng,
583 | latlngs = [],
584 | i, len;
585 |
586 | for (i = 0, len = coords.length; i < len; i++) {
587 | latlng = levelsDeep ?
588 | this.coordsToLatLngs(coords[i], levelsDeep - 1, reverse) :
589 | this.coordsToLatLng(coords[i], reverse);
590 | latlngs.push(latlng);
591 | }
592 |
593 | return latlngs;
594 | }
595 | });
596 |
597 |
598 |
599 | }());
--------------------------------------------------------------------------------
/Border-Check/web/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "SourceSansPro-Regular";
3 | src: url('fonts/SourceSansPro-Regular.otf') format("truetype");
4 | }
5 |
6 | @font-face {
7 | font-family: "SourceSansPro-Bold";
8 | src: url('fonts/SourceSansPro-Bold.otf') format("truetype");
9 | }
10 | body{
11 | font-family: 'SourceSansPro-Regular', Arial, serif;
12 | font-size: 10px;
13 | }
14 | .header{
15 | top:35px;
16 | width: inherit;
17 | height: 10px;
18 | position: absolute;
19 | z-index: 3;
20 | text-align: center;
21 | color:#7777;
22 | font-size: 12;
23 | text-shadow: 0px 2px 3px rgba(150, 150, 150, 1)
24 | }
25 |
26 | #url{
27 | top:50px;
28 | font-size: 30px;
29 | color:#7777;
30 | font-family: 'SourceSansPro-Bold';
31 | text-shadow: 0px 2px 3px rgba(150, 150, 150, 1)
32 | }
33 |
34 | #map {
35 | z-index:1;
36 | top: 0px;
37 | left: 0px;
38 | position:absolute;
39 | }
40 |
41 |
42 | .bar{
43 | z-index:2;
44 | top:0px;
45 | left:0px;
46 | width:20px;
47 | height:100%;
48 | position:absolute;
49 | background-color:rgba(255, 255, 255, 0.8);
50 | -webkit-box-shadow: 12px 0px 8px -4px rgba(0, 0, 0, 0.5);
51 | box-shadow: 12px 0px 8px -4px rgba(0, 0, 0, 0.5);
52 | overflow: auto;
53 | }
54 | #button{
55 | z-index:4;
56 | float:right;
57 | width: 10px;
58 | height: 90%;
59 | padding: 5px;
60 | font-size: 20px;
61 |
62 | }
63 |
64 | .info{
65 | z-index: 3;
66 | width:250;
67 | position: absolute;
68 | top: 0px;
69 | z-index: 4;
70 | color:black;
71 | padding: 15px;
72 | float: left;
73 | overflow: auto;
74 |
75 | }
76 | .test{
77 | background: repeat;
78 | }
79 |
80 | .divider{
81 | font-size: 14;
82 | text-align: center;
83 | }
84 | #footer{
85 | bottom:0;
86 | overflow: auto;
87 | }
88 | .info a {
89 | color:#6cb9f7;
90 | }
91 | .info img{
92 | top :0px;
93 | }
94 | .info p {
95 | overflow: auto;
96 | padding-left: 10px;
97 | }
98 | .info #info-text{
99 | text-align: justify;
100 | height:inherit;
101 | overflow: auto;
102 |
103 | }
104 | .toggle{
105 | text-align: center;
106 | font-weight: 700;
107 | cursor: pointer;
108 | font-size: 14;
109 | }
110 |
111 | #metadata{
112 | visibility: hidden;
113 | }
114 |
115 | .bc-custom-control {
116 | background-color:rgba(255, 255, 255, 0.7);
117 | box-shadow: 0 1px 7px rgba(0,0,0,0.65);
118 | -webkit-border-radius: 4px;
119 | border-radius: 4px;
120 | font-color: black;
121 | color: black;
122 | border-radius: 4px;
123 | margin: 10px;
124 | padding: 10px;
125 | }
126 |
127 | .leaflet-container a{
128 | font-weight:700;
129 | }
130 |
131 | #error{
132 | text-align: center;
133 | font-weight: 700;
134 | cursor: pointer;
135 | font-size: 14;
136 | color:red;
137 | margin:42px;
138 | }
--------------------------------------------------------------------------------
/Border-Check/webserver.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | import os
8 | import sys
9 | import urllib2
10 | from SocketServer import ForkingMixIn, ThreadingMixIn
11 | from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
12 | from runpy import run_module
13 | from urlparse import urlparse
14 | from cgi import parse_qs #, parse_header, parse_multipart
15 | import cgi
16 | from options import BCOptions
17 |
18 | port = 8080
19 | wwwroot = "web/"
20 | http = {} # global storage
21 |
22 | class ForkingTCPServer(ForkingMixIn, HTTPServer): pass
23 | class ThreadingTCPServer(ThreadingMixIn, HTTPServer): pass
24 |
25 | def print_exception(type=None, value=None, tb=None, limit=None):
26 | if type is None:
27 | type, value, tb = sys.exc_info()
28 | import traceback
29 | ret = "Traceback (most recent call last): "
30 | ret += ""
31 | list = traceback.format_tb(tb, limit) + \
32 | traceback.format_exception_only(type, value)
33 | ret += "exception error"
34 | ret += "%s: %s \n" % ( ("\n".join(list[:-1])), (list[-1]))
35 | ret +=""
36 | del tb
37 | return ret
38 |
39 | def set_options(self, options):
40 | self.options = options
41 |
42 | def create_options(self, args=None):
43 | self.optionParser = BCOptions()
44 | self.options = self.optionParser.get_options(args)
45 | if not self.options:
46 | return False
47 | return self.options
48 |
49 | class HttpHandler(BaseHTTPRequestHandler):
50 | def client_not_allowed(self, addr):
51 | return False
52 | if addr == "127.0.0.1":
53 | return False
54 | print ("Client not allowed ",addr)
55 | return True
56 |
57 | def is_valid_url(self,url):
58 | import re
59 | regex = re.compile(
60 | r'^https?://' # http:// or https://
61 | r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+[A-Z]{2,6}\.?|' # domain...
62 | r'localhost|' # localhost...
63 | r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # ...or ip
64 | r'(?::\d+)?' # optional port
65 | r'(?:/?|[/?]\S+)$', re.IGNORECASE)
66 | return url is not None and regex.search(url)
67 |
68 | def is_online_url(self,url):
69 | status_reply = urllib2.urlopen("http://downforeveryoneorjustme.com/"+str(url)).read()
70 | if not 'is up' in status_reply:
71 | self.online_url = False
72 | else:
73 | self.online_url = True
74 |
75 | def serve(self):
76 | output = ""
77 | uri = self.path
78 | tmp = uri.find ('?')
79 | args = parse_qs(urlparse(uri)[4])
80 | if 'hostname' in args:
81 | if (self.is_valid_url(args['hostname'][0])):
82 | online = self.is_online_url(args['hostname'][0])
83 | if self.online_url == True:
84 | options = create_options(BCOptions)
85 | if options.debug == True:
86 | print "saving hostname : "+str(args['hostname'])
87 | with open('hostname.submit', 'w') as file:
88 | file.write(str(args['hostname'][0]))
89 | else:
90 | args['error']='invalid url !'
91 | else:
92 | args['error']='invalid url !'
93 | if tmp != -1 :
94 | uri = uri[0:tmp]
95 | file = wwwroot + "/" + uri
96 | if self.client_not_allowed (self.client_address[0]):
97 | self.wfile.write ("HTTP/1.0 503 Not allowed\r\n\r\nYou are not whitelisted")
98 | return
99 | content = ""
100 | try:
101 | ctype,pdict = cgi.parse_header(self.headers.getheader('content-type'))
102 | print "CTYPE IS ",ctype
103 | if ctype == 'multipart/form-data':
104 | query = cgi.parse_multipart(self.rfile, pdict)
105 | content = query.get('upfile')
106 | except:
107 | pass
108 | #print "Request from %s:%d"%self.client_address + " " + uri
109 | # print interactions w server
110 | options = create_options(BCOptions)
111 | if options.debug == True:
112 | print "Request from %s:%d"%self.client_address + " " + uri
113 | if uri[-1] == '/' or os.path.isdir(file):
114 | file = file + "/index.py"
115 | if os.path.isfile(file + ".py"):
116 | file = file + ".py"
117 | if file.find("py") != -1:
118 | modname = file.replace(".py", "")
119 | cwd = modname[0:modname.rfind('/')] + "/"
120 | modname = modname.replace("/", ".")
121 | while modname.find("..") != -1:
122 | modname = modname.replace("..",".")
123 | globals = {
124 | "output": output,
125 | "http": http,
126 | "uri": uri,
127 | "args": args,
128 | "cwd": cwd,
129 | "content": content
130 | }
131 | try:
132 | a = run_module(modname, init_globals=globals)
133 | output = a["output"]
134 | except:
135 | output = print_exception()
136 | else:
137 | try:
138 | f = open (file, "r")
139 | output = f.read ()
140 | f.close ()
141 | except:
142 | output = "404"
143 | if output == "404":
144 | self.wfile.write ("HTTP/1.0 404 Not found\r\n\r\n")
145 | else:
146 | self.wfile.write ("HTTP/1.0 200 OK\r\n\r\n")
147 | self.wfile.write (output)
148 |
149 | def do_POST (self):
150 | self.serve ()
151 |
152 | def do_GET (self):
153 | self.serve ()
154 |
155 | class BorderCheckWebserver():
156 | def __init__(self, ref, *args):
157 | HttpHandler.ref = ref
158 | httpd = HTTPServer(('', port), HttpHandler)
159 | print '='*45 + "\n", "Data Visualization:\n" + '='*45 + "\n"
160 | print "Mode: Webserver\n"
161 | print "Host: http://127.0.0.1:%d/\n\nPath: '%s/web'" % (port, os.getcwd()), "\n"
162 | try:
163 | httpd.serve_forever()
164 | except KeyboardInterrupt:
165 | print 'Server killed on user request (keyboard interrupt).'
166 |
167 | if __name__=="__main__":
168 | wwwroot = "web"
169 | httpd = HTTPServer(('', port), HttpHandler)
170 | print "http://127.0.0.1:%d/ : Serving directory '%s/web'" % (port, os.getcwd())
171 | try:
172 | httpd.serve_forever()
173 | except KeyboardInterrupt:
174 | print 'Server killed on user request (keyboard interrupt).'
175 |
--------------------------------------------------------------------------------
/Border-Check/xml_exporter.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: iso-8859-15 -*-
3 | """
4 | BC (Border-Check) is a tool to retrieve info of traceroute tests over website navigation routes.
5 | GPLv3 - 2013-2014-2015 by psy (epsylon@riseup.net)
6 | """
7 | class xml_reporting(object):
8 | """
9 | Print results from a traceroute in an XML fashion
10 | """
11 | def __init__(self, bc):
12 | # initialize main BC
13 | self.instance = bc
14 |
15 | def print_xml_results(self, filename):
16 | import xml.etree.ElementTree as ET
17 | root = ET.Element("travel")
18 | i = 1
19 | for i in self.instance.result_list:
20 | hop = ET.SubElement(root, "hop")
21 | host = ET.SubElement(hop, "host")
22 | hop_ip = ET.SubElement(hop, "hop_ip")
23 | longitude = ET.SubElement(hop, "longitude")
24 | latitude = ET.SubElement(hop, "latitude")
25 | city = ET.SubElement(hop, "city")
26 | country = ET.SubElement(hop, "country")
27 | server_name = ET.SubElement(hop, "server_name")
28 | asn = ET.SubElement(hop, "asn")
29 | timestamp = ET.SubElement(hop, "timestamp")
30 | country_code = ET.SubElement(hop,"country_code")
31 | meta = ET.SubElement(hop, "meta")
32 |
33 | root.text = i['url']
34 | hop.text = str(i['hop_count'])
35 | host.text = i['destination_ip']
36 | hop_ip.text = i['hop_ip']
37 | longitude.text = i['longitude']
38 | latitude.text = i['latitude']
39 | city.text = i['city']
40 | country.text = i['country']
41 | server_name.text = i['server_name']
42 | asn.text = i['asn']
43 | timestamp.text = i['timestamp']
44 | country_code.text = i['country_code']
45 | meta.text = "Connect here XML metadata"
46 |
47 | tree = ET.ElementTree(root)
48 | tree.write(filename)
49 |
50 | def read_xml_results(self):
51 | from xml.dom.minidom import parseString
52 | file = open(self.instance.options.import_xml,'r')
53 | data = file.read()
54 | file.close()
55 | dom = parseString(data)
56 | travel_tag = dom.getElementsByTagName('travel')[0].toxml()
57 | travel_data = travel_tag.replace('','').replace(' ','').split('<')[0]
58 | hop_tag = dom.getElementsByTagName('hop')[0].toxml()
59 | hop_data = hop_tag.replace('','').replace(' ','')
60 | host_tag = dom.getElementsByTagName('host')[0].toxml()
61 | host_data = host_tag.replace('','').replace(' ','')
62 | hop_ip_tag = dom.getElementsByTagName('hop_ip')[0].toxml()
63 | hop_ip_data = hop_ip_tag.replace('','').replace(' ','')
64 | longitude_tag = dom.getElementsByTagName('longitude')[0].toxml()
65 | longitude_data = longitude_tag.replace('','').replace(' ','')
66 | latitude_tag = dom.getElementsByTagName('latitude')[0].toxml()
67 | latitude_data = hop_tag.replace('','').replace(' ','')
68 | city_tag = dom.getElementsByTagName('city')[0].toxml()
69 | city_data = city_tag.replace('','').replace(' ','')
70 | country_tag = dom.getElementsByTagName('country')[0].toxml()
71 | country_data = country_tag.replace('','').replace(' ','')
72 | server_name_tag = dom.getElementsByTagName('server_name')[0].toxml()
73 | server_name_data = server_name_tag.replace('','').replace(' ','')
74 | asn_tag = dom.getElementsByTagName('asn')[0].toxml()
75 | asn_data = asn_tag.replace('','').replace(' ','')
76 | timestamp_tag = dom.getElementsByTagName('timestamp')[0].toxml()
77 | timestamp_data = timestamp_tag.replace('','').replace(' ','')
78 | country_code_tag = dom.getElementsByTagName('country_code')[0].toxml()
79 | country_code_data = country_code_tag.replace('','').replace(' ','')
80 | meta_tag = dom.getElementsByTagName('meta')[0].toxml()
81 | meta_data = meta_tag.replace(' ','').replace('','')
82 |
83 | return travel_data, hop_data, hop_ip_data, longitude_data, latitude_data, city_data, country_data, server_name_data, asn_data, timestamp_data, country_code_data, meta_data
84 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Border Check v0.2 - 2015
2 | ========================
3 |
4 | Border Check (BC) is a browser extension that illustrates the physical and political realities of the internet's infrastructure using free software tools.
5 |
6 | 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.
7 |
8 | 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.
9 |
10 | BC runs on OSx and Unix systems.
11 |
12 | Currently supporting the following browsers on OSX and Unix systems: Firefox, Chromium, Chrome, Safari
13 |
14 | NOTE: Browser history has to be enabled.
15 |
16 |
17 | ### Installing BC:
18 |
19 | BC v0.2 (2015) provides a "Wizard" installer that makes installing the required libraries and packages for BC easier.
20 |
21 | 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.
22 |
23 | Border Check has the following dependencies:
24 |
25 | ### Python:
26 |
27 | * [pygeoip](https://pypi.python.org/pypi/pygeoip/0.2.7)
28 | * [lxml](https://pypi.python.org/pypi/lxml/3.2.3)
29 | * [biplist](https://pypi.python.org/pypi/biplist/0.5) (if you plan to use Safari)
30 |
31 | For **Debian**-based systems (ex: Ubuntu), first run:
32 |
33 | `sudo apt-get install python-pip` to install [pip](https://pypi.python.org/pypi/pip/), python's super usefull package manager.
34 |
35 | If you already have pip: `pip install lxml` and `pip install pygeoip`
36 |
37 | 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).
38 |
39 |
40 | ### LFT
41 |
42 | BC uses [LFT v3.73 (08/2014)](http://pwhois.org/lft/) for tracerouting.
43 |
44 | On **Debian** and **Ubuntu** it needs to be built from source and requires libpcap [`sudo apt-get install python-libpcap`]
45 |
46 | 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`.
47 |
48 | On **OSX** you can use Homebrew: `brew install lft` which will automatically download and build the package.
49 |
50 | #### Note on provided LFT binary
51 |
52 | We do provide a static compiled binary of lft in the bin directory.
53 |
54 | Please consider that this is for convenience only, you are invited to make your own.
55 |
56 |
57 | ### GeoIP databases and js libraries
58 |
59 | BC will automatically unpack the newest geoip databases on the first run.
60 |
61 | Javascript mapping libraries are included in the package.
62 |
63 |
64 | ## Options and features:
65 |
66 | See the included examples for usage.
67 |
68 | ```
69 | bc [OPTIONS]
70 |
71 | --version show program's version number and exit
72 | -h, --help show this help message and exit
73 | -d, --debug debug mode
74 | -l LFT_PATH path to lft (fetch from source or use provided binary)
75 | --xml=EXPORT_XML export traces to xml (ex: --xml foo.xml)
76 | --load=IMPORT_XML import traces (non root required) (ex: --load bar.xml)
77 | --bh=BROWSER_HISTORY set browser's history path
78 | -b BROWSER set browser type to be used: F = Firefox / C = Chrome / S = Safari / Ch = Chromium / N = None
79 |
80 | ```
81 |
82 | #### Examples of usage:
83 |
84 | Normal BC run:
85 |
86 | `$ python bc`
87 |
88 | Debug mode:
89 |
90 | `$ python bc --debug`
91 |
92 | Export 'tracing' results to xml:
93 |
94 | `$ python bc --xml "mytravel.xml"`
95 |
96 |
97 | #### More options (set browsers, paths, etc):
98 |
99 | Use Firefox browser:
100 |
101 | `$ python bc -b F`
102 |
103 | Use Chromium browser:
104 |
105 | `$ python bc -b Ch`
106 |
107 | Set browser's history path manually, on Galeon/Unix:
108 |
109 | `$ python bc --bh ".galeon/mozilla/galeon/places.sqlite"`
110 |
111 | Set browser's history path manually, on Chrome/OSx:
112 |
113 | `$ python bc --bh "Library/Application Support/Google/Chrome/Default/History"`
114 |
115 | Set browser's history path manually, on Safari/OSx:
116 |
117 | `$ python bc --bh "Library/Safari/History.plist"`
118 |
119 | Set browser's history path manually, on Firefox/Unix:
120 |
121 | `$ python bc --bh "Library/Safari/History.plist"`
122 |
123 | Import 'traces' from xml:
124 |
125 | `$ python bc --load "mytravel.xml"`
126 |
127 | Set lft path to be used by BC traces:
128 |
129 | `$ python bc -l "/usr/bin/lft"`
130 |
131 |
132 | ### License
133 |
134 | Border Check is free software, and may be redistributed under [GPL v3].
135 |
136 |
137 | ### Contribute:
138 |
139 | If you want to contribute to BC development, reporting a bug, providing a patch, commenting
140 | on the code base or simply need to find help to run it, please go to:
141 |
142 | irc.freenode.net / channel: #BorderCheck
143 |
144 | If nobody gets back to you, then drop an e-mail.
145 |
146 | To make donations use the following hashes:
147 |
148 | - Bitcoin: 1Q63KtiLGzXiYA8XkWFPnWo7nKPWFr3nrc
149 | - Ecoin: ETtSteMWxjY7RKWZGMNSkX7eC3BJ21VYXE
150 |
151 |
152 | ### Contact
153 |
154 | Please report any problems you encounter using/installing Border Check to:
155 |
156 | - Roel Roscam Abbing (rscmbbng@riseup.net)
157 | - psy (epsylon@riseup.net)
158 |
159 |
--------------------------------------------------------------------------------