├── .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 |
Travelling to:
117 |
"""+url+"""
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 |
134 |
                  
135 |
136 |

------------------------------

137 |
New Travel (enter URL)
138 |
139 |
140 |
141 |
142 |
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;icablemap.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 | --------------------------------------------------------------------------------