From e0b884c2c7c3cb8de02be3a9b35ecf6b34ba862c Mon Sep 17 00:00:00 2001 From: kingy444 Date: Mon, 20 Mar 2017 23:11:23 +1100 Subject: [PATCH 1/2] Update README.md Update instructions to include details of configuration items. Added requirements for raspberryPi Added Alias commands to apache site conf to allow local images to display correctly Acknowledgements for improvement plugins --- README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 55830f1..656280f 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,25 @@ gunicorn openvpn-monitor -b 0.0.0.0:80 ### Install dependencies and configure apache + +##### raspberryPi +raspberryPi follows instructions set out in Debian / Ubuntu below, with the exception of the python-semantic-version. With one exception. +You will need to install this manually from PIP using the below command. +When following the Debian / Ubuntu instructions remember to remove the python-semantic-version item from the apt-get command + +```shell +pip install semantic_version +``` + #### Debian / Ubuntu +The below will install and configure the web application, applying relative Alias commands to access local resources ```shell apt-get -y install python-geoip python-ipaddr python-humanize python-bottle python-semantic-version apache2 libapache2-mod-wsgi git wget -echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" > /etc/apache2/conf-available/openvpn-monitor.conf +echo "Alias /images/ /var/www/html/openvpn-monitor/images/" > /etc/apache2/conf-available/openvpn-monitor.conf +echo "Alias /images/ /var/www/html/openvpn-monitor/js/" >> /etc/apache2/conf-available/openvpn-monitor.conf +echo "Alias /images/ /var/www/html/openvpn-monitor/css/" >> /etc/apache2/conf-available/openvpn-monitor.conf +echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" >> /etc/apache2/conf-available/openvpn-monitor.conf a2enconf openvpn-monitor systemctl restart apache2 ``` @@ -53,7 +67,6 @@ echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-mon systemctl restart httpd ``` - ### Checkout OpenVPN-Monitor ```shell @@ -65,7 +78,7 @@ git clone https://github.com/furlongm/openvpn-monitor.git ### Configure OpenVPN Add the following line to your OpenVPN server configuration to run the -management console on 127.0.0.1 port 5555: +management console on 127.0.0.1 port 5555: (This port is arbitary, you may choose any) ``` management 127.0.0.1 5555 @@ -87,13 +100,51 @@ mv GeoLiteCity.dat GeoIPCity.dat ### Configure OpenVPN-Monitor -The example configuration file `/var/www/html/openvpn-monitor/openvpn-monitor.conf` +The example configuration file `/var/www/html/openvpn-monitor/openvpn-monitor.conf.example` should give some indication of how to set site name, add a logo, etc. You can also set a default location (latitude and longitude) for the embedded maps. If not set, the default location is Melbourne, Australia. -Edit `/var/www/html/openvpn-monitor/openvpn-monitor.conf` to match your site. - +Complete the following by editting `/var/www/html/openvpn-monitor/openvpn-monitor.conf` to match your site. + +#### OpenVPN-Monitor +The below should help you quickly configure your vpn monitor with relevant settings + +| Option | Default | Description | +| --- | --- | --- | +| site | Example | The name of the monitoring box - Free text, can be anything | +| logo | None | Optional logo. This will be displayed in the top right. No default provided | +| latitude | -37.8067 | Latitude location for the centre of map and marker icon to be set. Requires longitude or no action is taken. | +| longitude | 144.9635 | Longitude location for the centre of map and marker icon to be set. Requires latitude or no action is taken. | +| Maps | False | Will the site display the map| +| geoip_data | /usr/share/GeoIP/GeoIPCity.dat | GeoLocation data location. Unless you are making locational changes this should not need to be changed. | +| datetime_format | %a %b %d %H:%M:%S %Y | DateTime format for server display | +| marker | False | Display a marker on the map for the OpenVPN-Monitor Box | +| externalip | 0.0.0.0 | External IP of the OpenVPN-Monitor box. If latitude and longitude not specified then this is used to locate the Monitor box | +| pervpn_control | False | Display a layer control to turn of element markers per vpn | +| itemtype_control | False | Display a layer control to turn off element markers per connection type | +| allowFullscreen | False | Allow the map to be displayed in FullScreen mode | + +Note: If latitude, longitude and externalip all cannot be validated then Melbourne, Australia becomes the default centre and marker location. + +#### Per VPN Settings +The below should help you quickly configure connections to vpns + +| Option | Default | Description | +| --- | --- | --- | +| host | localhost | Specifies the IP or DNS name of the VPN management interface to connect. | +| port | 5555 | Specifies the Port of the management internace to connect. | +| name | default | Free Text. The name of the VPN Connection | +| show_disconnect | False | Show a button to disconnect clients | +| externalip | 0.0.0.0 | External IP of the VPN Server. If latitude and longitude not specified then this is used to locate the VPN | +| latitude | -35.308065 | Latitude location for the vpn marker icon. Requires longitude or no action is taken. | +| longitude | 149.124521 | Longitude location for the vpn marker icon. Requires Latitude or no action is taken. | +| marker | False | Display a marker on the map for the VPN Server | +| connection_lines | False | Display connection lines between the Server and the Clients. Requires marker to be on for VPN. | + +Note: If latitude, longitude and externalip all cannot be validated then Canberra, Australia becomes the default marker location. + +### Your Done You should now be able to navigate to `http://myipaddress/openvpn-monitor` @@ -119,3 +170,5 @@ the COPYING file. Flags are created by Matthias Slovig (flags@slovig.de) and are licensed under Creative Commons License Deed Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0). See http://flags.blogpotato.de/ for more details. +Fullscreen control provided by https://github.com/brunob/leaflet.fullscreen +Spiderfy (Closeby Marker control) provided by https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet From 289ff07d4b7623e14fa12d2b2ceb9a2767222cba Mon Sep 17 00:00:00 2001 From: kingy444 Date: Mon, 20 Mar 2017 23:14:34 +1100 Subject: [PATCH 2/2] Monitor Enhancements Upload required files to allow: Fullscreen maps Closeby icon management Markers for Server and Monitor. Route lines for connections between client/server Set FavIcon Layer management for markers Correct Variable Capitilization Update README.md Correct Alias for JS and CSS (copy paste issue) Update Control.FullScreen.js Update setup.py Fix Trailing whitespace Update openvpn-monitor.py Fix indent with tab not spaces Update Control.FullScreen.js fix Strings must use doublequote. (quotes) Update Control.FullScreen.js Strings must use doublequote Update Control.FullScreen.js Fix Expected method shorthand Update Control.FullScreen.js Expected method shorthand. (object-shorthand) Update openvpn-monitor.py Fix Found indentation with tabs instead of spaces Fix Unnecessary semicolon Update setup.py Fix Trailing whitespace Update Control.FullScreen.js Move the invocation into the parens that contain the function. (wrap-iife) Update openvpn-monitor.py Fix Found indentation with tabs instead of spaces Update openvpn-monitor.py convert to bool statements to fix: The if statement can be replaced with 'var = bool(test)' if 'marker' in vpn and vpn['marker'] == 'True': Update openvpn-monitor.py Trailing Whitespace Update Control.FullScreen.js Undo shorthand of functions. Testing proved that it broke ie11 (edge is fine) This will be a change in the future when ie11 is removed from support Update README.md removed references to example .conf file removed Alias references for js and css - move to cdnjs Update setup.py Remove os.walk for css and js Delete Control.FullScreen.js move to cdnjs Delete oms.min.js move to cdnjs Delete Control.FullScreen.css move to cdnjs Delete icon-fullscreen-2x.png move to cdnjs Delete icon-fullscreen.png move to cdnjs Delete openvpn-monitor.conf.example remove pending pip testing Update openvpn-monitor.py fix Avoid using "non-Pythonic" variable name cdnjs - spiderfy OverlappingSpidifier-Leaflet cdnjs commit add missing function brackets add git-lint-diff travis checks replace tabs with spaces travis-ci fixes trailing whitespaces travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes quantified code fix fix codacy travis-ci fixes travis-ci fixes travis-ci fixes travis ci fixes travis-ci syntax travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci fixes travis-ci noqa --- .travis.yml | 14 +- README.md | 4 +- images/favicon.ico | Bin 0 -> 150891 bytes images/marker-icon-blue.png | Bin 0 -> 1466 bytes images/marker-icon-green.png | Bin 0 -> 7008 bytes images/marker-icon-orange.png | Bin 0 -> 4415 bytes images/marker-icon-red.png | Bin 0 -> 1768 bytes images/route-icon.png | Bin 0 -> 522 bytes openvpn-monitor.conf | 21 +++ openvpn-monitor.py | 287 +++++++++++++++++++++++++++++++--- setup.py | 8 +- tox.ini | 41 +++++ 12 files changed, 346 insertions(+), 29 deletions(-) create mode 100644 images/favicon.ico create mode 100644 images/marker-icon-blue.png create mode 100644 images/marker-icon-green.png create mode 100644 images/marker-icon-orange.png create mode 100644 images/marker-icon-red.png create mode 100644 images/route-icon.png create mode 100644 tox.ini diff --git a/.travis.yml b/.travis.yml index e1f81a6..4e16344 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,19 @@ language: python python: - "2.7" - "3.4" - - "3.5" addons: apt: packages: - gcc - libgeoip-dev -install: "pip install -r requirements.txt" -script: nosetests + - libcrack2-dev +install: + - "pip install tox" + - "pip install -r requirements.txt" +script: + - nosetests + - tox +env: + - TOXENV=py27-flake8 + - TOXENV=py27 + - TOXENV=py34 diff --git a/README.md b/README.md index 656280f..2bc9a0e 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,6 @@ The below will install and configure the web application, applying relative Alia ```shell apt-get -y install python-geoip python-ipaddr python-humanize python-bottle python-semantic-version apache2 libapache2-mod-wsgi git wget echo "Alias /images/ /var/www/html/openvpn-monitor/images/" > /etc/apache2/conf-available/openvpn-monitor.conf -echo "Alias /images/ /var/www/html/openvpn-monitor/js/" >> /etc/apache2/conf-available/openvpn-monitor.conf -echo "Alias /images/ /var/www/html/openvpn-monitor/css/" >> /etc/apache2/conf-available/openvpn-monitor.conf echo "WSGIScriptAlias /openvpn-monitor /var/www/html/openvpn-monitor/openvpn-monitor.py" >> /etc/apache2/conf-available/openvpn-monitor.conf a2enconf openvpn-monitor systemctl restart apache2 @@ -100,7 +98,7 @@ mv GeoLiteCity.dat GeoIPCity.dat ### Configure OpenVPN-Monitor -The example configuration file `/var/www/html/openvpn-monitor/openvpn-monitor.conf.example` +The provided configuration file `/var/www/html/openvpn-monitor/openvpn-monitor.conf` should give some indication of how to set site name, add a logo, etc. You can also set a default location (latitude and longitude) for the embedded maps. If not set, the default location is Melbourne, Australia. diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..018dd27871f91da0c2bad9f8b504dd17ae889ea4 GIT binary patch literal 150891 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

MD8S}jG*R!P?~S~lM-!%oC9-xK zazCbHpKGS;!vWcZ0QQVKXGuFx&g`IA2oK{Rm;K#PT)Xk=2XI%v2H(@>z;eE)~ z)%kr%)cvsg%pQ8~rG{O>7<&3y?Pt?(7HZ>wJa|p~qrap9qXQUc$~BA^xyB>V_4B)a+mO9oi^je#HfZ7F;Bem438_-xiYp)ELtF)yC^R;?4M8O5AwpS%QP z5R;{hB)99$&betbZq6ZJF_-qSvGu>EPY^Upf3t}XDU|;W{%H${4FEY%DE?{x!M5i$ zW`DQ2w-Edj4*Gh7kpHv&p)rkDo{4R8{CsSKvk9^O7t`M9osO=%(EseL%|8Rm#sCPkK^z#@pRoNmHt39336>HR@?_UwB)L zTL|e1jbnC&{pZA==mGFG^}yBeUw@NQZ8NXr{X+0>=1QjSeV2pLVJlCKuYWjY)hIY& zJeSb#bk`>%kp~pHpCP+w53&v#$Ic6($onSNhcX%8JN$?yml$I*%pB<#dEd|j`a&5XIjA9jB-+Ju;fQ0D^#GGwn*F^d{tYd(+ItoJ!`|n7urS_t;=h0$Ksaix zc{ZXc>bG}G{`dTi=<89mv*~MME?t~bBRyrhKl6d+vi{-e3I3_Ex@ zzY`(@IEUq2kROo&@DDif&v_m9yU?~R#BWPprTr{xWwaBmxn^kewjp(wCdSrCLjFuQ z>m?*l3&@1McRBsz(aCsIBHFps@78?0cTBsx*7c4g?m53?U%j{|ehjV)9*r$nDE|Zh z9`|50Y|EBA(_|M2w$^lv@tKWtBWchJ$Z6NAnrP6O%0oyj}3b>8EPr1+W;JAoRp-zBqWG%31obTt%vE{27WAdPhpR;+NGLVsfce-Pyq?OXBNTCt2+d-m#T z;}f8~ql`gJLu6a_nPcX7FAdDYgSIm z#RW&EKQavUe%?D18}SqKfnS_aKlSAJpu?L7)o0z)7irIt=7AgfNDInDS$~0T(~a{z zjQ2{cgXZOqA^wfONA_jot-||U>#GWXAN=GJ=PR*;_3h_-V?Bu5>utE#$N;WqGcHhS z(|Kh8*94q>@cL|Re-3;cM`NlTwsjr-wv1=2UqIK92E-o3m@tp>KPhWyJH(G`uq$y| zql<@P8h!L7bi}*e!djeMK9<2qZLt<1d%(z#2ItPB!FR#qweU~h-!R=kW$AR4qR(8> zu(qNKZB`w+=4pp^blNkfQ~0VLjX7_+_t5Cbch634`qSaj4cAc~(~hDprOqn^_hRo0 zuTkHEXCTKHUJ>6Z_=ny%`q%dLGmj?s7l8K}hk<>A@{a48^IeS|fEP0tv}AzQui>D{ z_vp70y>Da?_lGX5X~_ZLopuOi0QG>C*U+v{Y54_>&(6p^kpmbL)=F&7IS0q@t3lz9 z?i$``B+o$`O;Ky9EMkx?`aORzU(Hn~?)i5?yqoi1!vAR9ohRoPe zer(;#93P|?;eE?DZtUXU#QS)%jDtf4n6*vrWtav%vrl4!DEC>1lAkXpc=I>XKP@@W zKm%6%aqx1Pk79ky)=TsYnK>bCH<1Gv8``}g96vVJfaG`hy$JVN{-^OjN=GQxdPeby zE1J&DQiV2-)g`M2@MnFR5f<8nSQBbm2mKGW?bI;9g}=qtGy0y_8l9h4?+5F+CZNP59OMP4dJ@b*j+>Ge8D+7eSn@-{ct%x&;#yy zb>QbJFY|cJ#U8{~P?XuYiGkV{lA(*qku(Z;=y}a~Kb<9b>MCn4$4C&yZ)xL!w7T_CxM7e!$dQ zwc~r3V;uUJdnFhf!T3vO&cNTr`@p8r0R|RpZUPz;za4UVFqTW!=&;`8*}Fm;otP#z*68y zI4K`E_d#3~=6V4$6(xsMns`h{(quOnn>D4xr;7V^@sn(to^ec+j- zTlQQ0!klN&relnd)T^IUR%b8m0)MTCK3liztp~08O{j;%HL;`_!IzU}grxsGrGCQR z;q?}CP6t{t^I+Nm`Sy1?$Bcjf|A2qug>a(TdLQ+!pKJ8!z7ZkI5~eh`fErintaBvm zhol4WP|m9UNFZcf#n-6a))F!n1PTGQf#(jP831Iz#b|-6E zrq8UF<9e+E>UO=5gJ)!WQWCP#=G~bIALwP)bY<->)No7ud0P1S)04sv?|!-AgnwH; zFcT|wP5iU=JA7VN-yHM5>(Tq>nmE|hd3FoIaI>Q=ytl@Y%w%HHy z6I*`u?a;_htf7eKiVbMSsjwsKJY%if!aw{!^#9S`Hn_c><9{3fgbT2W97X-oN~j&# z>DZ*Ut1uQ@PEKn6J!%^sJwGMvTtaL>QtHBc(y{J^jWMVnxn>yZh*j{go*3iH=vN2t zNgXWO5O}7sq5fmIchG>X2c-6uRl6JOxR3)Aj*qUrhqYVD@2>41&`I%g_KE$c&(CUi z{N#iN2MHr;q<$M8+j`@^e>IDN&I(8Ku1^()ck`X`^{_C~krdwBdE z3yzG5Tye_efMJ6 zAmE<PDZZ3QO<(z$vaN} z`Jaw^(wB{Y>Kun0Ks+qgow<%dI^7@BeDtAlQ40>fa_7Y4?Vk<6eS%qIZ=Fh@EVZi=QgTT^q>1 zSlH2Z&VI76&bmHLYU~=(s>|*Xw>-@GG5Gyft`DGbEsXl!;NB}YaqoW(|9rQD2B^>2 zKdyUJMf0wGfZxkSNxOb ze+^G^9=YIVh4=yI7?KW%Z}Jn598dA@IO(5%|EhQWntom9wWdGlANy|_X+h?s<~#A> zE^U+7-@oy1jfLRf(uHQM?6D)hO_Q-SW9>ZtRq*fZQ(=GqjsL6YX$StzxH;%R_{n@< z*zv!O|G(dV6}(=j{QNJDA6{MX<3VCo=Xc3Um2{rRA;FgOT;b!mA(!X=c^4Escky@M zyx;NoE6*J-l-~=UJMJ&|yn^qO^QgS{=@|4s+HoFN0G>k5i#jgX`2BaC#}~N2kaGvP zTI2V8=SzO!oY$u~I!yc}N9BFN^IZRY=f2vU`+uYHJBBwmnpfl&^|j7(FvBIZ0m zP!O;Dt=~P?n8bk+fDrs<(MSyRn|02=@U4pCIi4jn15)$1&hb|iUU%iWulIL6lwG&Z zaiuvoHy=0vO2z+opu+a08*6$^em{5K%8E;)?&Wl>-{#Tw`9kG80FjmKl#>xHYyp})g zbBvMs3@ThZvut@p7>EF7F)7 zX$^<{JNV4%Zc(e3-gBGYu6}Oa=KbB!vw5D4CH!vn$L0sT-|DY*F1jX$J+=5rWUu2K zw_A)1(Zj2FyOy3>=g~Zuo>=_NQwu;jw^bQ#wB!M#2tT+1=kY*|b&dz(#Rbptt^GT$ z$DR1U;JLqbKapt5H~9h(;~f7-$tfYmUpTiVD+rZim_)k*Me9KjxUK z*#1T3+pL``8ySRS(R|M?aPmjM@Oz$7pgY!S`Bvprg;t>|aLQ)YYCGzd97XPN)Gj~{ z@-oO@%^DS~SHZs(^4Y7-$VuKBHLb!{0{+RUOZ3D^z}*q>*ZH4>zrt-h5b;O>vO*U^%vN?Skhc zA3182R=DruD<4+)H-7{Szvmf+_saU#r$Xn4Rp^JvwI7E%Y^cR{H|lTLG*IGR!j8O* z?NP6-HF%`aD%9kfiFz!k$>iG>(Ez{jfjPw7t-q)5f5g2ZN6?QO(8{CTY&V{x`S`^& zSHW-OstDAYxD7QYI{swQ0BV@{pb0&+JA(1~3N`CdkERBAzkFZ7|4@HCA^*o8r~S~L zwepr7)H_wz-?*>okAT}egZpaK4D_oJ+O7FpF~4C|RPEWxDjc|Ng}O`aP&9J}hKSA1uF`!kQP zYb^K?{)hst%E02vf65_|>n%4x4t@_Bh=(qK9Jm+t%UFw~6=XyB8q}tJ-Ks@$;}aRm z_x?bkrP}bn>lIgraqDl}*Y-z`4QXJGj#iWO05w?;lJ<)3Be@xi_)pxZ8ZJZ5Wyrxc z&~dEYch5PC4(>dFntY)BhVMb|y^2~q!%&N<+gauNXlVs{Xa3)7_Vq6U|F!yfdxwwT zQ=xM}gY1`Y`amKWb4`>aT+sPT?HR*pI z{%|k7^anOCwLH<98 zC<80sxr430Or|jk5={h=Bn1D9My0UaQ!}D z1`V(VpVZ^T-;F{0A>a>x)Z)9j4{V!I` zN3MD2r_BR{P`m{F$6SjtylCYfl>u9d3I&cEQx1{_fcMtW2dqyW4!Q_|?DHQ5`tJq! zA8s$QANI{PDiB%yC$^`xZ3*&3e3bA^U0$ z2mH@us0v+z#Gc};54G46^||~s!2S9u=T&y{g)-HFeVW*plyZs)(+6aPwo>SMQJI2Kp!+o0dXKWUf^ zbl~GZBu<3@M%EyYz#OL;c%F^*tQ*dS?E~3Y6S}X`)2G!<50qBra333Jpsl`Ho!2MT z8NEXx7qG;~>m^pL+*2RU49ZDQ9vuJL<8!wS4OxWTdG`ZXVSmIJ;2Fgjm$Du)U);aQ z9Edr`wr6JU{`C0P!4X}-2jvj!UV?GE=YexJ)=gPQz9;+!28@A^U*CBucmm`+X#n_+ zcpGx>9nd~xLIZpkG#2##BJ98JI~4KG`-`CA!~6{$bP>th$Cx6%kB#wFE4xRQIk9Nq zNKe+~gQ-iprtBIP@Xdw+jh@CBgromlXa7xf!23w^zD^CGFjNhS&U_ zd9>{P1EqegJRt07h+&Ux$=LskQ_5#BAC&ut&phcft7ETU?To~!VHfv}Y%~%0XAFZk zUWNT5ZpP~7QoF;zQKZr%52!kr*9O0Wx~s4S!ZFWfYY5!e1MLSv_W2Lgs^UG9Bqztu2a&JRPjZ(r4=CeynI96@GIl2){EUT}rymfR zb-S)=4MF7xFd##6RWNj1y;#7Fd2ZM&&_3v)E@;2bOTd3`UAktsr(5WM$X*5Z`7PZ; zF~6bN1LJ@nGP!9D!Ah>^K&pqG~;&BKkgy9EU66LDQx(mnTIX3V_FEjjo;?vH)C zxE(n!ST}=vA$Se0Wt=l(IH-3i3uzw|+X?eWFKy$6pYJ_&{%EPF( z59&i627~W|Uk3co1OMGJKK^Qcu-#93eTyJxy5jRb?RQ)0Py4nikLQ!#$aC^u>SXM< z?8ZG>R!#=&DV>LWEzIGy^e(;c{Vy3;O~Y8FJrta#+31YgqM3og0R=C#kOJ19$wwEW$@R-JC;s8cCb=TcE$~OpO5$l zMt}{fJ+evF9t>UwymbM0$QZy5dI%f>-1pb2+QX-6)_J=0Px_DQ2L{JJ&JNJC$+VzbQ!Ju`&sbT0Ur?d zIxm3s@f~~ zKYeDUT;@b~pWUCE@yXcCGZO++u)pElwwI#jebBp8y)|$2`^TciOMFyMz;k)9*XRzPXY*d_1*Mwk;_Ac2gNwb_t5c;f2DI&dXxwf4&P-~Uk~FiK3ww{< zIqy6q`(@+D)*wvXfP3;I`G7EV+K-$$LIcdJ!W_EDrIj+hd^U2XM`Mgad970p;GA+V z2rv%3IHjD}I@(*q2|0LPuC=)U?t?ZA2`Sn@&A5F*Fsqzuj5O9`@*@lh8*skW00khj|r=3&6lR4{0DA`e`(CwMsrY z=8#7170-eY&3b;66Syv)9OQkZBiIXzMDDSMon31H@+61*lkhwFUgSN-A_}?MKal(d zi^8#g{jAPf5a~f)PknrJ&}rzw=hpPTz2VB<_m-JAZ=O$thB43jie)4Jq5K{?A@Gvk z3A_K(@OeL>Rn-TxRjI&w^r2H;(4NNqCD!!0qsC|bT6W$(tif97cu&@A$V;^6eaRtD z*@PT9=c%tKyU;(e2`Hl_r!8n#QEl~SCx3m2wYdG0RAEOBiikL$$uO4wnh8G zKd9R{-tV0KeCkh2&ftB_&BJGVHqX|cEps&c1=*B?y*zV1d#?4ZtNYwpp0z|c9|(yD z?B-Lc^EU!7aZX+!?A0El>^oniQ~&}%u+IDq@(-@DZ2b@WbSU*{-_~`Z^PV{|F5nb% z47*W719_>yn*l-t;6uu`rsyB#av9PC@#B8|CghU<53qI^?DvaP%Vm(pF;?7{@09_d znaUiqV`D0x6S>cNCcF=0Kwje5;Ck89MH$1rip*c2L4z9kirfn$kr#$_{c0aTKf8X? zH>w73SCly9+*s;3+wl8TZ2zwE>#D&AfE&&45gfZ}pGqBe6}ce@7vuAg#RH7{=NN*P z%6{JOmR86~F%SD?-K-s;iBr}t0}hUkuDQ?VPqD|y`vD8pEb5xJC^U!S=e z2?O8}8NhL%`~W}q_wqjTU*fsUb;CKeV{Az$ZTF9?y;10D`Gbcrz3Df)Cv_AB?$Y{!E)G6p?^8jU84bFjop5%AI(gVN~c$zYRH6H*& z3p^7D7XL;u>T%}#NS{$5S0CPB=}qXpwCR!I<;78G+%)%w??vVIbZ z>*rW{kYmWP1P|N@|4y4-!-79!-3ZTu23D<2@BnEMxs+pV{ltD^?``8QtdS+~Gp{Cd z>_DHB$B9E+BfcBLB{U6tpLGaC?~%W7kBlqm!X8)hel?CWa(JZ)U7^mm=bd{c_y56> z0lPu_oj&V#YkBsU^=nzbRCPvcfaW)(wF(%KCi7p;dpHMfh$iztj7K2s;eZhyT=%40 zA7Rxvy8Mv^Kl_Om1{#|}ohx->Xx|}Epl4ng&Dt3@omw)QbSiofb^vHua{0aYm_9hF z+F^U%TEWJD3EUUS8fETzpcCf(Tv!+P+^mtCIMI@QVlxo_TCgvMq)e-b9Fee(VIz1J zHU<96>Fq=6uKB!Qv(|?8SzD*{CL8uj18z`$Ll3Gzz#aCM<^QDrujN|!z}~}m^D!TQ z55OP%P<2p}y18$483W82j2r~)oL>flu7}VTmAYG$0nAeg`1XwmTyN+a*TI&HXtDdH zpf!@qknmHcK@LL3opI^_Tnn8U*%b4d6`low7W~Y=2KZSck2Vvo;hc-`2MM1{zZv=a za1CS%c`EC*@}6&p)O+)b=bF(Lll|_@HLk{^wL-gT$fL?{66hVi&gPr3*1sQX-bc_5 zVLcG*KU@RgxCD%a9>DydLhn}ue$Wo>VA2wvOZffJ_h*2YivmAuciJ-W;HX+#xu*=* z&=#aE8wr@+v1-Wye)1}664SQFGrEH2Ie+6bZTN#e$b%nr0QgUjuYTH$6|MuFGzkWu zjgxt?fqzku$klI$)?Wzt#YQ0gGuJl5A=LwDzR?R+W%&F;w_pwYC#?GTUd42Sr6XsYZdf|x)*jA*cWqr(QUvl`0pFQe=Dvt z@HeJyB=A$0ZJexGe~kW|g7A}XFy~wD7MMu?bqxN`I<6J`GcONqBJ6Lp@V~GzYO(t2 zZ9_tq0e9TI6}~R|h}#{&`ZhB!QoGyE)GV{Lo2X+4!doAafbgv={#} zR)YY4rE}EvxJLX|I12y6_FIxOx0=8t`RKsYtj}lpQmuI=I zD^s@`oT_2^X`iseu!TPJs2ku9yP@AC@gGBem^$QmCVY}jn_+&sz%{!9YN|l~&`w9a zF8bwcJH^=O<)Dl2vgX17llB61m43S;=7H6JFt(BnKlOhw;2fDcy7`b^Rv-0FDIfLzkL4{zH`7uPqlU@JVgR_yH#26NU<@ORH+yJ)x%gq+NPAzf1mYh zbrW#Px!t#(1qg-Y+}y5Nnl_ztl+aOxgYQPG1ROsoHK-uRq=p(~HRm+DUkum+_`P!= zTub|}2J1W}Oe&u$bv&7e4>E)HGxX|8$Op<*!&fbL!iJJQaP9;9*R#N%wjyLe-48HU zZDIfWQU;QCnUAK_deDISpzTd%{+$*Uyi4EL^_cEA{G6xTz_aeA9gevxhV6Cxl!g2& zvLH*99RC#QUcG7AfV6+`Zpxl|;Qi+lV*OG)b0N=J7m6|syf1p%ng`P#L_Vnnc={&B zR!NmPAZxmTR@|>w)u>4ZJD~~r#Jetlzd2s_ABm~@lju|0m85Ts9r6%}5Ss))hn_ zAp16f_vq)QUzBs%#<26JdFxx!MgUA1v&-djJp(Y*$92U>|27YlB~74S(U)TT(D%c6 zGvH@^EY9^grnrYTn2Z&2o`MGeKl63cw#HnOG(b6szTO8rxCZ)Of@8orAZeL(tSgrL zvPAWYU-j^>w0T*j3L8GYvDCWd%IBj2s@VG#WS#^+0rLwOnNM1RUTF^gjJ`0r`eowY z^YKuDM|gBb#T?osHji4q8Sws|;dM4hZb|As)}%%Ky|WW5B!fqvA-w|*@BEK&;r?)p z+4Rg=<=i4yZM%vx(ej-M%@`hN%6Sz1!6I9r2iPa}4L*=;$c#DA1?>QT6*Q^gNje}e zux4-Yel+~e+U~67OW#oO)xi5Q(90#4Ecn#|14|-s|F=~0JLe}jM6`htg+XYeIolE_!r+N$L7rV3YTQPN9wF& z>~O#R4y+}4-%*Y7MdlZft)9h^$mW!Yd2n-?3nawWOobmHn)VRqEu>-D!=7l>D6P8} z@PBWOh19hs{A;aoA>9*pz(P6ZN4iIigfG)yt&Tb)mf8GxO&;3{)|HlFm3 zYXvv(iMAlV1UIBltN{>y@(pyv652Yv*1&F#_^txR=C0i@*4ivQK>p%90Cs@=o^j6i z@NfFln6Hq1@vQEvbp8JgYAw;O0gZnN+F-t6gL~qotA!WfowQHA54$gMO8GR- z@j)M=%MIM-2>8VgpnaP*qjZjD&8_w0fq#fe(17jx=Q@h~$X^fii{C9jbWSQ|5AmR~M>Gr6vfvomsj zj!!rgd+%_p&(p^A^1p$PNAdt=0oOVx1Lz}T94&LWalMags94)C_SN9#wURczy)ft8 zv13WIqmtoc%sD;5{}klm5Wr47CVo$j1IObu>f;e#f_ut6w3KN#f=@z60Y0za$H478 z;#u&WHE9kSn4JFVjk!Vt)U!4X(C25-kUYnhg{*hRwbHupGN04l5kc$Dt{ndgVlw)f zym1BbPrXJSp#0+;nX+Jpeo;-+L#4r{M_v)DWt==*KXp%B?>!?T2cH<%;D=*l>TP2m z$mi%Ubu#8}z#C*BYp7cFWWe{dO^83>o^@ty9iGqc>4cqs<5{#F$V2z_BIg76dn27cN` z^b-~Ai#bPpPm!%dTNYWCy~^4b@}$ocpEq$2c_elT_&#a+ zjhUd8;TR*@uwI+TJip)(*KqBh>xsj$etcQxmnV0^zG1%m3OZv})m-rWa`F<#3fI#n z5dP!e-dvW5QMz9EDf78TYVs0l?ipvJeRAo9)I$L;Q6I>7+ef~a>y?es*B5C63f+@d z=@X#62N_A4KwsPATGEPF=NE+Aobwu9OI^VEBkD7H^r0`bd-EK`K9qxOukN`pB_IWB zkeC;UE}<;&#y|Wg;5Xw)xo8^RDY~AtczjH)J?t0f;hu%fL>E(jVXnt@Pue@ooh|-e z1Lw7lxK?av@IlvoBLlW&y&mX6{%f~u)eG6IdBI%A%z3$GQ267xR>sxzOWGSSzVSO_>`R!ikPEQCqdMfsoeS1bk41ta=V_@fzu|Ikt;^6inZgWu)IsYa8 z|0Vjr3jD?51~v&nF0ExJCPse$^R&pbIVZkP&)GQBojmO()JqDP2N}tA3-NOl2IIB9 z!+qof#5SNt7RKOEbnUGd7C&_y>)YFZUN+?OZ9^LlLp~>eTysT!OBn;eo;Dx;JJ|F8 z3HUkI7<=$QWYfbF?wsNJY47ID?eCxZIX2(|?7YPe`Q)AFTnpa9eluf0c}qKM&&v&F zoLc;(?{nhc{LL{)eAj~gkARKLodNeYRw-BGhw_|bJ{)y_1`bi zKl35$g~b(Y8N`LG%xgQ|Ryk=&CC+@Z05S-^>48m}f*yj|SJI{F-|s!zV?g~woBRqL z@}GvEb7A;ouVN#3yx+5bgd6QQ)BNuptH1BJc;fGI_g|D zcP!r@g%QT1y+^=|mm3ANjU;;CW1irkSLP001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?AmU(|P|M%_tTW9aH*Is+Az4n^U4O_9?h9)sy0sv@swu_ul zuYzEPmC!_1Fs_DNg_fv6sgINH}b4P$69d)EmNxTbB)X+0VyIii*Fq=$QveXzl{KSo%hdz5FQ{umem?W=_r*%>!(Ijieal zFN@2cH6a9->9oAG1`9la<0n87cwY&x9)>vTt#c9rvKmpIv4c^VLLKi%z zAN^Vbf${81hcH-uK|>KshyZo@O`(fm^8!ezTzP6SxX%IwANwL>c&`hy?A&~8;eICM zSI{NXKuii|Ife$$0Lmfod@*IpemHRn6s-H*O!{V~(%ZC=rY@zKWN8{N4q7dyyIa)F zO>d%Bg`M(Dg}GiNuUK=v!ULC7W(OI`d}fvbBt$5p(=z${E2L8^D(0TekY2Cb`BVg- z?CsqwXsx`n%N*d#zJMx$j(+<1zy%_KI|SFJGANtZNhbWsI_;AtWBv#dIzGBFcM-Z- zeDz$`hYzhSE$^2US+4ea<#t5iTev>ojlZ1}V8UY!e$H#s44S<*$cDoHTv#@+^yY-h z^WrDG>%WHE@G>QFo?6Z1B0KLacWs4cN4ec+7sZ}o&b~Q0%<}w<=TockjZKX@T(Vi? z9Js&L3_BE|o3wTVdB}b`-F;tv6APd}+ppk_mKZs3^YJg0{&>$qzD>eZ2=uW#zZ+oP zB27J)SLq8&!~hm01Zm&5P#q{3r;{%-p@3RnAj$Kbd%{w)sL+ybDX}qd!XD2VDaS0e zPL|(S)ArPVW3FbD@3{G7-QBlXBCD{0>N6V}%xUvJ!J5F4(P5chh|!||qP=3Z@keP^@G$8a;Nl3Drf<3tUM zw$IWlerEaL4;}Hy4W$nzr%2r?9)Evj3OPG$a6{z-e~Mht;(YPB6n{%~uZb46?n~X5 zzqd_NpP*?Z`%!$JIQfKQ;q=LoN%jw?J(1-Ujq{#u5aMpDGo@B8Twb4kDAcNGo~B%w z)$Hk6=SX%BZn#v-Ra;l@behtkb34w+cKnpcmmfE7OA|G|prbzXMQ}@e%d-~47S$Gw z{?!uk-sZb+u$`NvbaA$Y>-AWtPf1r@Waoshvb=jW!|9%5NRqtK zpRvZ}$Cd2tZ{EEYRWp9G@@CeSd+qz4$bO2NxIE^yTXkuNO?yl`dB9(ac2eTo&F4@Zg7u zcsyJB%)#o0W5R>=%{j&Dk{eXg_v>hEqun|AXV9FYX%EUj9R5o?`yyX0`?P8D?W@LC zhD!|H(w&$Wd=`o}U);^Uyl=U9n^s~BGvHK%LeGq*8LGF8mS!1jTC*)VIwsovj_n=C zJ2qXpb5pw$<8S3I&i3F2Nn4aGnZ9Pajc<4bHNMUHgY&0EiA1Gkrt=3=^^&*URK1$L z$p7iiM8?G{dFukNEcHulIFQ>mJmH8w--W+pIC0QM%3UN~N>ijxs$!hU^EtcyOw{yC z>iQh5);=@0y6F|=74zjpL{^o_^|#i4Tg#l;QoN>Fvw27Hj^gXnM5bv>vtQP^j1lX! zEbG>cTML#hSXxqER(`F#_R^dN7@UZsd_CNB-uUiqb+pNZ(Ogr53RF;U0zgE9W=FR$OK*Jo0=Xxz}-mp1CzH~;>mU!p58XI3_->kjInW3k{?2nb|#hB^EsTO~Fk=wFl-{9`GUk+9e z#>b_{6?P}p-DAvUY+;1d|5Il4&x|V`hI?N>dtvq2v9)TUvItsD;<67O)_8h$;rzNyLuntnEzTrlStweBAG>?3wcxJC<`>`2 z-PK^VU95qwKAFyu00Y`w7N++NpDQZqIAvbu&Yn z;+rI!4=G>Nf3bGgfvXjT1Hp+(xAo+7=0}?^4PE}ng8H5)SCnG^Qr|J# zbbhYE@$(Vqc3UQEEQ`$W?ezWX^H*ugrrGh%Zl;^3teuw z47d!t%w<%6dgS$vy|ap;dMIbe=-b=6)j2G_*~`2-SIl+UTc5X^xOUuh*22`Vf#h$JG0A1x@1zGAil?6mo}H?`uFAHrYXA? z9cbxbi8rz)(&m5s>&&5)FQPS*{!;T*)8A?t+aGHk=N!vj?Y;VmLz!7sZD+$lo=x2( znaf5d9tV~%U0!ba*m0~T(zn0zOng-QkpMkTy=UFEj6-c3DjK)S`1L%Y@B31{7(d;% zAZJ0vn*PW8`qS!K<=q~;#on90en;oNP7^_7jYCQH@ z@o6CUK%Wv``}T^l>8D)gK|j`W)?lO3r+_`v`4y$vAN;2??&dh;tRFD%w)kN6Ddg?K z)q?u>J@rSo=KCiwtLkl7BEiQi1rdYcGFH^^OW~y_X(zj`{9$Hn+_Z2Hzk`=(Rk^Wp z+7)HNH9={rvXXuP`)${|imHoMS7Z8PBA@O!e3Rdq-=%V|uDGyxV&2RBh6d{fR&u)w z{OkSIdagIhIJ6vAKdOaq<~$g5ex1mTREdnlDddYx-UdV6I#h3}Z?JV*25@jHK;Urz z4vzW`fInvebb12JzX+i0cYghIYXJIbyG0f*`!Vo=OE{KkbODhA*p_Y+_7tvw3z^r8 z@U+^e(D-F+KkK#%L-6cH-DW!}Abz?CN_ZRmJI}JlQ=QNHWjE z$ls#cOvEOM{yC3t0bvGlpv+f;0{k)jQxau{-O@b?NeP*FAGv#!5EQ7&kfNQ3kvM!d zIIgw8L?{x_g9Iab0zs@qNG=fI?7SG0qSD~W%u*pjxQ#saP4Gjz#LR^g2~rPjN(YFs zP~4nrFYzAk2vb?AJcMiCz%aK03!Ef_1Kv*pF4|i}mJHHlS)fQLNC6M$!Zp)Oq)Z$( zymNqFejiZ!`}<)?oC!yYc7mp~7PRB7K&L7KW|^o<=Fi~s2!^AL{Elo*@;c$lr;%k~ z7~=?mMwNkF_v&mC59dK|d7t?p&H(~?OZ$!zlo)XXM7xoajw}lxe`b~Nq!d0bAl`xV zoD+*WRhTJ!1&RRY3rFkzcJLJrd`1u;N9yKd8Ag%cUy)vpUEMDyEf=C9tNdfGd!QHE zyW1W=vMaS4oy5`&&p~wH_5GTYHA8y8>y1ECFse{9qYLRsm-P+xT^UQulrWnI22v9> z)tTMgE+HQ4!63!FaC9v=W|)Aank29ULm-c|)>QvFm?YrhGQ%(oTm(cDWr+)WLhoEI z7yghl2NDTg5W)}PgMij6Vo7=-5O*-KSXM{Dn8EudBp`MiZKD#90R5WDkhQc7!*1%F z5aKT%OzNcSh$s#Ug!VB?^P`t&m4qitDn{&%xF!NTgI$zZl^p&s#s?M>Wh{uaOZ*@p zb|LWud>94KP$!DSXE78eI6r{aL4!P-%KtWCf{2fZ#=`2q958x2U3hRhgAV!D)jtsk zIT1GTE3ENDguM!|W{boBARvfhds+jgVZSQhaDjsBBROP zNy=(cQs@(sXoUB)eESMR>>)j5M>WJ8Nq}xJGAKa~860nt+9atVG7CD9X%NsO=mi-$ z2~bsXp4{l2LaHf=-p%*1_Q|51iI#txj&65SU2K zgzNv8anpse| z?oGrP0;F$3=LGce-R04ae8hzSVk~Ioo*rF1A`&_S!GVBvr=4zd8@WHuz-{9~p?B>_ zqWw-qB5rgn@Y;F73KS(EfcKeqYwYeL8~}+j20YI=9p<+q-G4*j<&4wnUkT7X2ou0h z^Za^28k&&#Hynl7|JSzu>E3do(5s5ercLKx~{OOOsu!AT0+Ng@QIiAs$)pucA^( zA|Qrbn`nK^KImYyqyK1N9bzanCm{kogqfarL7NjH>WRFJyrrD1JTQ5^!iy(x|7nw^ z&{3}8LgUvaBD-2=EGf$)XtA`}L~6W7NdINhq)AeI5)WA4eU4Z_G%=C{l6WMM5lM_n zr3&W>>m!8uwGnBQ!C*j7Pfuv(vhoAyCWTl3Kt)wW$biY~|3M>-N(lb20NR?`!F8$^ ztemnQB&d=?d|_)gMAw7?MH-bdbZKA=k0eI|`E9rp1FZfbS;9?(IfC%ivGz|PQGmnZfTqlk8dA9bs7n#SlF#SE6jWvnvsl7_ zF_xa#kBEtAy$DIb$IID+oB=+Hwm63W2n)SD28f{m`keU`;%dTwFdzoR<^+?nuf_0p zZ2-uOr$ZlFKN?bqUIbYldx#Ba{}SxBUMR#KzGW#YA(AVtAq(HWmpQ^+(SwFAU6d>d zoL)At8AHHj^MFDn3nRD~%5`K4>3`5Dpdd}G?{DqP&T*}>#u8CwL$u2W6CEkiBB?Ty zWKf{)5YGL79!e-qv-&tN)YPAcg1Z&52iZx<65Rz32G4Zfml;)c^7uS^8eIkk1_(O%Fux8RFv0`OHq^GT1;TD*_vN_V0j#p-8}^0JDbK#pB~M zpRRc`QtOU6%D*xp7|JFx57C0z7LC`Xn@`3afrFCaz|15sQYhF%X0Ab*(pZ2jAR zEp16-)6cJC#LJZZmQyca3qT4*+p!6pg1lJ*lLU6z&@fszwaBw}r1%(fg3%#53DWFu z!1J^dpTx%v_?4V43ZDvMNHs)IB%vaPh6(|035&pMJ@>99^2%=;vMxTduHVDjzgG+( zYtiGr8XhJhF;SLCqwg?I6&Ka>xWThc?;3x*`*#Fs)T;is-t+7VLQ(^6B_D--Y2elH z0UN|k(Y&w>{y&-gPF26oqp!PKjES3L)hNmL;CAS}h*Px# literal 0 HcmV?d00001 diff --git a/images/marker-icon-orange.png b/images/marker-icon-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c02e945c8eff4b056c1783e1cd4e24ccbea4b3 GIT binary patch literal 4415 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 FV1faGWQza* literal 0 HcmV?d00001 diff --git a/images/marker-icon-red.png b/images/marker-icon-red.png new file mode 100644 index 0000000000000000000000000000000000000000..364ac35ad114656fabd4b253562dc652d5ecd776 GIT binary patch literal 1768 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 literal 0 HcmV?d00001 diff --git a/openvpn-monitor.conf b/openvpn-monitor.conf index d55b6f6..238bfca 100644 --- a/openvpn-monitor.conf +++ b/openvpn-monitor.conf @@ -6,9 +6,30 @@ site=Example maps=True geoip_data=/usr/share/GeoIP/GeoIPCity.dat datetime_format=%d/%m/%Y %H:%M:%S +marker=True +externalip=0.0.0.0 +pervpn_control=True +itemtype_control=True +allowFullscreen=True [VPN1] host=localhost port=5555 name=Staff VPN show_disconnect=False +externalip=0.0.0.0 +#latitude=-35 +#longitude=149 +marker=True +connection_lines=True + +#[VPN2] +#host=remotehost +#port=5555 +#name=Test VPN +#show_disconnect=False +#externalip=0.0.0.0 +#latitude=-35 +#longitude=149 +#marker=True +#connection_lines=True diff --git a/openvpn-monitor.py b/openvpn-monitor.py index 3ac36d4..5c1399a 100755 --- a/openvpn-monitor.py +++ b/openvpn-monitor.py @@ -106,14 +106,28 @@ def load_default_settings(self): info('Using default settings => localhost:5555') self.settings = {'site': 'Default Site', 'geoip_data': '/usr/share/GeoIP/GeoIPCity.dat', - 'datetime_format': '%d/%m/%Y %H:%M:%S'} + 'datetime_format': '%d/%m/%Y %H:%M:%S', + 'marker': False, + 'externalip': '0.0.0.0', + 'pervpn_control': False, + 'itemtype_control': False, + 'allowFullscreen': False} self.vpns['Default VPN'] = {'name': 'default', 'host': 'localhost', 'port': '5555', - 'show_disconnect': False} + 'show_disconnect': False, + 'externalip': '0.0.0.0', + 'latitude': '-35.308065', + 'longitude': '149.124521', + 'marker': False, + 'connection_lines': False} + def parse_global_section(self, config): - global_vars = ['site', 'logo', 'latitude', 'longitude', 'maps', 'geoip_data', 'datetime_format'] + global_vars = ['site', 'logo', 'latitude', 'longitude', 'maps', + 'geoip_data', 'datetime_format', 'marker', + 'externalip', 'pervpn_control', + 'itemtype_control', 'allowFullscreen'] for var in global_vars: try: self.settings[var] = config.get('OpenVPN-Monitor', var) @@ -134,10 +148,13 @@ def parse_vpn_section(self, config, section): except configparser.Error as e: warning('CONFIG: {0!s} on option {1!s}: '.format(e, option)) vpn[option] = None - if 'show_disconnect' in vpn and vpn['show_disconnect'] == 'True': - vpn['show_disconnect'] = True - else: - vpn['show_disconnect'] = False + vpn['show_disconnect'] = bool('show_disconnect' in vpn and + vpn['show_disconnect'] == 'True') + vpn['marker'] = bool('marker' in vpn and vpn['marker'] == 'True') + vpn['connection_lines'] = bool('connection_lines' in vpn and + vpn['connection_lines'] == 'True') + if 'externalip' not in vpn: + vpn['externalip'] = '0.0.0.0' if args.debug: debug("=== begin section\n{0!s}\n=== end section".format(vpn)) @@ -159,7 +176,7 @@ def __init__(self, cfg, **kwargs): command = 'kill {0!s}:{1!s}\n'.format(kwargs['ip'], kwargs['port']) info('Sending command: {0!s}'.format(command)) self.send_command(command) - self._socket_disconnect + self._socket_disconnect() geoip_data = cfg.settings['geoip_data'] self.gi = GeoIP.open(geoip_data, GeoIP.GEOIP_STANDARD) @@ -180,6 +197,18 @@ def collect_data(self, vpn): vpn['stats'] = self.parse_stats(stats) status = self.send_command('status 3\n') vpn['sessions'] = self.parse_status(status, self.gi, vpn['semver']) + if 'latitude' not in vpn or 'longitude' not in vpn: + # default Canberra + vpn['longitude'] = '149.124521' + vpn['latitude'] = '-35.308065' + if 'externalip' in vpn: + try: + gir = self.gi.record_by_addr(str(vpn['externalip'])) + except SystemError: + gir = None + if gir is not None: + vpn['longitude'] = gir['longitude'] + vpn['latitude'] = gir['latitude'] def _socket_send(self, command): if sys.version_info[0] == 2: @@ -431,6 +460,7 @@ def __init__(self, cfg, monitor): def init_vars(self, settings, monitor): self.vpns = list(monitor.vpns.items()) + self.gi = monitor.gi self.site = 'Example' if 'site' in settings: @@ -444,12 +474,46 @@ def init_vars(self, settings, monitor): if 'maps' in settings and settings['maps'] == 'True': self.maps = True + self.externalip = '0.0.0.0' + if 'externalip' in settings: + self.externalip = settings['externalip'] + + # default melbourne self.latitude = -37.8067 self.longitude = 144.9635 - if 'latitude' in settings: + if 'latitude' in settings and 'longitude' in settings: self.latitude = settings['latitude'] - if 'longitude' in settings: self.longitude = settings['longitude'] + else: + try: + gir = self.gi.record_by_addr(self.externalip) + except SystemError: + gir = None + if gir is not None: + self.location = gir['country_code'] + self.city = get_str(gir['city']) + self.country_name = gir['country_name'] + self.longitude = gir['longitude'] + self.latitude = gir['latitude'] + + self.marker = False + if 'marker' in settings and settings['marker'] == 'True': + self.marker = True + + self.pervpn_control = False + if ('pervpn_control' in settings and + settings['pervpn_control'] == 'True'): + self.pervpn_control = True + + self.itemtype_control = False + if ('itemtype_control' in settings and + settings['itemtype_control'] == 'True'): + self.itemtype_control = True + + self.allowFullscreen = False + if ('allowFullscreen' in settings and + settings['allowFullscreen'] == 'True'): + self.allowFullscreen = True self.datetime_format = settings['datetime_format'] @@ -472,6 +536,23 @@ def print_html_header(self): output('') if self.maps: output('') + if self.maps and self.allowFullscreen: + # Leaflet.Control.FullScreen css + output('') # noqa: E501 + output('') + + # favicon + output('') # js output('') @@ -484,6 +565,11 @@ def print_html_header(self): output('});') if self.maps: output('') + # spiderfy + output('') # noqa: E501 + if self.maps and self.allowFullscreen: + # Leaflet.Control.FullScreen js + output('') # noqa: E501 output('') @@ -541,6 +627,7 @@ def print_session_table_headers(vpn_mode, show_disconnect): elif vpn_mode == 'Server': headers = server_headers + output('

') output('') @@ -551,7 +638,7 @@ def print_session_table_headers(vpn_mode, show_disconnect): @staticmethod def print_session_table_footer(): - output('
') + output('
') @staticmethod def print_unavailable_vpn(vpn): @@ -588,6 +675,7 @@ def print_vpn(self, vpn_id, vpn): output('

{0!s}

'.format( vpn['name'])) output('
') + output('
') output('') output('') output('') @@ -605,15 +693,18 @@ def print_vpn(self, vpn_id, vpn): output(''.format(local_ip)) if vpn_mode == 'Client': output(''.format(remote_ip)) - output('
VPN ModeStatusPingableClientsTotal Bytes InTotal Bytes Out{0!s}{0!s}
') + output('
') if vpn_mode == 'Client' or nclients > 0: self.print_session_table_headers(vpn_mode, show_disconnect) self.print_session_table(vpn_id, vpn_mode, vpn_sessions, show_disconnect) self.print_session_table_footer() - output('{0!s}'.format(vpn['version'])) - output('
') + output('') + output('') + output('') @staticmethod def print_client_session(session): @@ -640,7 +731,8 @@ def print_server_session(self, vpn_id, session, show_disconnect): if session['location'] == 'RFC1918': output('RFC1918') else: - flag = '{0!s}flags/{1!s}.png'.format(image_path, session['location'].lower()) + loc = session['location'].lower() + flag = '{0!s}images/flags/{1!s}.png'.format(image_path, loc) if 'city' in session and 'country_name' in session: country = session['country_name'] city = session['city'] @@ -689,28 +781,181 @@ def print_maps_html(self): output('

Map View

') output('
') output('') + + output('
    ') + if self.marker: + output('
  • ') + output('') + output('') + output('') + output('Monitor') + output('
  • ') + if display_server_legend: + output('
  • ') + output('') + output('') + output('') + output('Server') + output('
  • ') + output('
  • ') + output('') + output('') + output('') + output('Client') + output('
  • ') + if display_connection_legend: + output('
  • ') + output('') + output('') + output('') + output('Route') + output('
  • ') + output('
') + output('
') def print_html_footer(self): diff --git a/setup.py b/setup.py index bbdc777..1532388 100755 --- a/setup.py +++ b/setup.py @@ -11,10 +11,14 @@ with open('README.md', 'r') as r: long_description = r.read() -for dirpath, dirnames, filenames in os.walk('images/flags'): - data_files = [('share/openvpn-monitor/images/flags', +for dirpath, dirnames, filenames in os.walk('images', topdown=False): + data_files = [('share/openvpn-monitor/images', [os.path.join(dirpath, f) for f in filenames])] +for dirpath, dirnames, filenames in os.walk('images/flags'): + data_files.append([('share/openvpn-monitor/images/flags', + [os.path.join(dirpath, f) for f in filenames])]) + with open('requirements.txt') as rt: install_requires = [] for line in rt.read().splitlines(): diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..59f4367 --- /dev/null +++ b/tox.ini @@ -0,0 +1,41 @@ +[tox] +skipsdist = True +envlist = + py27 + py34 + py27-flake8 + +[testenv] +commands = nosetests +deps = + nose + -rrequirements.txt + +[testenv:py27] +basepython = python2.7 +deps = + {[testenv]deps} + +[testenv:py34] +basepython = python3.4 +deps = + {[testenv]deps} + + +[testenv:py27-flake8] +basepython = python2.7 +deps = + flake8 + git+https://github.com/russell/git-lint-diff.git#egg=git-lint-diff +commands = git-lint-diff --linter flake8 -- flake8 + +[testenv:py34-flake8] +basepython = python3.4 +deps = + flake8 + git+https://github.com/russell/git-lint-diff.git#egg=git-lint-diff +commands = git-lint-diff --linter flake8 -- flake8 + +[flake8] +builtins = _ +exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,*migrations*