From c2aa4d210de4069fe6dc690fd18f15b50a2f9556 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 24 Oct 2017 23:35:47 +0100 Subject: [PATCH] Add an icon to VPN connect to another mesh --- img/avatars/connect.jpg | Bin 0 -> 6404 bytes src/freedombone-image-customise | 12 ++ src/freedombone-image-mesh | 9 +- src/freedombone-mesh-connect | 230 ++++++++++++++++++++++++++++++++ 4 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 img/avatars/connect.jpg create mode 100755 src/freedombone-mesh-connect diff --git a/img/avatars/connect.jpg b/img/avatars/connect.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c68690da067e59ed0fba2aab7f325d6b0eda4d9d GIT binary patch literal 6404 zcmb7IWmr^Q*FHl_4&B{dLr8ZELnEMcHw=x^-QCjN-3WppAkrWqF;Y^}iYUIL&-;GQ z?{A&?v9GnyKG)i_?zQfF@82JPZv$X8B~>K=1OfpnhzIz+4#)#wENonCOfW7EE&)E6 zkc^FjjD&=YpOKlGO-xWy;<2Eph>VJWPQHyS1OGjh)q> zkAUzA2*`-Zcqu4&t>i@Itp4Bj`wf7P0lWj=A%pM%BzzDuKIr!-KmmXN`nEQ7I06<8{D5$^J0BmFsfCNScBRoG4^B2T!nNE9Siw8mxYTWbOo7|3h z#*Jx+?E}c8+6$OsJH#?9+ApD(GMcRNl1&R{I*4_X4w0P^CenHN;O9%7cR{w2Pmeh2f8zsNiIlIWznFyQhiNf&rD`qg5^_|E3^9gqgQ zIG$Wj0PXA=a{`i4W6wl?T=~s##oDslf@N>U^A0Tz865pG& z2WF?Lq@SAu`00PTW+n@7L3e1uKlt{WL&qzBzjk z8cI>0Z;d&UQo+VscDQT4B)-}gwCN9xV5?;cX)6&>Uc`A*~bJNItH$*$ksoh3(LScREX7D>*HA@)OZTuG~itxw^1^Tw&DiEnAV zEwQbnN)!<{j%nBV`vp*4kpg~hBa(;sNAC&9-<$>H-@%M42Z=NrDx3k zlMeKNbrYUfbLIemhp()`b{wG(Ai@bDjGdivx?WifK@@|8qRF1|okz#xX$yjQSiEn% zab;Frc^Uu&BdU!V3?P9}kdTlOHHUZ?VTfV_Q1I!%1oZrbe1Z&&0uV&yVIT?;go?B! zT3M(_8CAxZH&ON!!t5cpSK|tveSH5ycSD!oB|y0LtpktK*5VmhBJw7VW|4?Hs76u# zk@<1GC&Zg7OtwD_1tm*NVPLZnmr=-BRV`OcDo!n@oB+rAWt^&2LldEx_Lv0>{&l%l zEoVce|3?jNpHq0e?r2d-^>09}PbfUmGB|PI%Kcs**U>=6cZJF)@*uOHS@>a5VC++nFU!91;yr)@>d= zFG5$heecV9_k|MXK-=f&6Q`BX=lgsHN+B~0kMu=q4ZOnVGm_p7S(!N;!;4KSLU ziJ`=4B8!?urTsX*`U1xnmocX0jv4bDI=vmLm>ql^eiEhG_Hez*RGrMFBNhEG88y3s z8J3!snz0(57NTj5gq*|sC`TE)*)ednZq14J@&X&l2XFiXY%!?n$O@t1DM3kim;#IM z!77udgtf%xBkJ0}vavFDG$|SfJlyX1-<``^5g(^i)gEJ{)#?olu;Hv(((7RE2)OsivnQJCa^&x>rw|I4V})?% zWqm>gC71ny9D)e`LJmOy|6mS;1R#U)=?M7gW%&fO3FQQJ{z4AH0@9$ZY9|nm)#H|L zf++8I&1=o8rF^G3%v$@;LNz$)caa<)Vsz-P(GE4So>@TM%Sr>>*-$gDn$VGOL* zk47^l$$|#3&KzO+0I5JeggX-KACu+-kE%$^*M4AfWO}7f5S5%ihLwR4 zHDsSwgoK0@KZaigOm(c{pBbe%Jlqj%SaFl!&I74i`r?h7F&>W}9zP$Hp!U$De#|L- z*F7M7!*LVvOfB(f+j_J0{P|kp<-bq6O&>S`M)}Lrj%$>3Bfyk~>9uiq=ML2Sx%+YNzM}<V(45Nx6nRPF7?8QeyH_1I28t{V`kX6d+1$Lj1Nv?jlCNw$4XZ+&;JsMea zs+^&@L@|(qvv}@L(hsXb)o>CnFl|q09D`Vrl*YCu+HP}eQ`t+ooE1voP4ljG?=E}# zwDJm{zFwOC4Xjv4GE}w_CAC_R5`-}0V~ByT($g$R)sVEo;U#!NuGODeLE=Uh6H^HV zDBe+d)GSV{Mo3U_!K0dDf{+M>)gKyCo*s95_wxP_TeIHRerTTOuO(hPgl}q^5(@mP z#Pfe_aU(YqhZzn4$NyEPnGT9?40CeKe8B1~SRbjJA>6 z_6+LcVWi*K9Nk}K*Q`y_v-MBX z3Pi9v>0MjY5gBuVt2Bw8+u&vFi47C@`8y81P@RKxlNi|{)LT1NRYmhFg6?n~OxXJT zFyGH7tu8gNyTa7CtWS#SsXjpm5xSVt$x95C-jn(}j}0Q~-sno!LinD2Gvs*dtV@x@ z{oy#Kk)V@35u~W>PXNv0DQ(Vt3Er_IA=67J9ZoJ2dS3u6NM8{gVlAsHu&S*yp=KZzs-Yo|)zC zrWMb^29{c-5!qk^BhU|^{X^RSFgAcsN6#;-Z2{&(WTK>H=Uis^;(w$qO+OZDkGp^3 z(TlMph0$4acaEhHG>x_IN~-eW$@MmtocB>Rw|#^)Zzr?!HrBlKR4HSw5ou?bC-FQ6 zm-BVgS|_7_>&G|w!JEViEG}yGa{SAi9+4WWZX{1k3IeFU94bF@ipsXF7hp@4?JYuQ z?BgY|GO)$xR25ZS93>U{n544;UOL^D_xhn}I9$*O4dz7_+yZBpXGZlEm_s>BC=*-a z{d}rPdzzBp`MpFQ-z9$*-(mTjWEcD>=dK#}uDez0-M;C*=Qv?!^CK?1T?uIrh#>5l z%Nh!uW3Sz<+FQR9yX^>L{JAYG;ZoN-hrm1AjvYaXy5^$ueXIJ9b^>nE)0b0)A4RL( zTg3SRh*#l+1$5aWX)wC_X=1PjCT=CoyS=J#9Bx-Boy275X=XzuRR1(8vss}~i*JcoX<=ZuOY;U|ov zf(&;oOA>Ofhd9yBIz%}|i`Jx!Ey86rgJ7)2c|nQyXj56xzG0~A^m*QnSFDy#zqQ-; zXjvdFc0i+u!*c;z-Z9K*&-CG4ZJ2Um>o`wm>nN#&JX1?_J115%#rfW40#%{StENS? zTYfI(Ad-eKU*>~S%DkD6S0!g38u>D*D8rEKw;PQ5gn7}e-7(s&%DM`^{{}3itv*Ee zC1dYzp9~u}Q$e)wm3B~eVRb0no@&+NKG!w%=MOPjW1 zq6w4I*gD@LRgkJRtI#uk4y$?ICn&Z}wT%gQ9|j{J|M!FlAS22GaY#hAes&Y|r$X=&+aYNThyl6F>&;e`W&pr(>7z-T zU<3eamrmsrf2L&MkxQ4oQT%Qi1G-D+!B?|^G?j3iu5T{ubS$c@E}il&znEejm~1+C zT)N8BRGBh_*IYWU(^Rd~4c4bSH`7$9(tOr!eAee>XVMf+Tt%k>R3lqeM}p#`++-Ao zRry^oEuVdXU*R*mtgc57khdB#Ig8|*ca;mVl^6J|d>6jXo7Rg#GI??EDtCe@CIk_c zLpV7iDnO`n-BOh)0U^tm*WFZ^5Jyx1`LoLx#5;dRu)iCmMRWxwd_-437&3tP{WV07 zrlSY*^JydcvrI{7YRlh_@JCaDr)8awx(JucK1NFRE5L?+mXI@iX%%+^BWtEcH|Ee&(V7#R2+Q(QR-zEnLh^~nmtQ;A>iWyAPIR$$kj$xL&vG(z z)bx9*fMCl|=XDw8oA-lSn5ZqQRvHvV$seNOZr;IO$D+aupYs`DTt);qSx(x+#3NeelpABAnWBaD1cQRaruzD#1axb|beOyygeWBr`c zJD&2FY4mGaQGxr3ce3p92C^>TsWS%14(c2VuW%_qWG=){-8$#OM%=wlH@QezQ!kXp zK@YXIJ7a9xW~+{p`iZhYzLi&5oZ*+EW+9$!?^g>|6QM(;(Id!Razt+!@4*xojXey% zR`^ye^$mdd{b3NgzgYQm|MEXZ|AQ5NFhYG>XnV-~#mOHv1%6MeZE}R#jh+@BiSNdc z7vsq6c0^k96<8p>w+tUdGMw0gc8sfR7%ZHJ<>h@~Y}el!rria!lP!j604i~8sG3!M z;Ub`&HaFHQqH8hUpQ2{PF~nP=+1h%9BjLEy7TWpLJ5w#z^uDzb&!Q9)W(pBdwxf8sZ$XK-5}lsB??}jJjD#H#MANcB!RKr|<=FafPLD zSQH2Jp13Tw12-Y?MT4bxCS`0O+QKFC386;mSNb+&;px$Ne4pe82Gm@@gn(2fUm*gE z&zm@*8Kl7QHE!+UCjf9zn(8g%X83CAvqtDC5e?g0GHOt`5zGZKl=4;bl`=r!wQ04U zT$;k}Z^H@9w2z#(Q9HtVWh?iv_OmA1qR%EwtXGF_Jgd9AwrI`}n@@>O31%I%h0D>% zO1#PqS@A5~tBw(=r-&6QR8RI3@1|>Gc51|biVgJzhq*B$eVn{hzC$4i9)fZw4dVWY zZ2Bm!`0Qs?hr~8TP>jfs$&WZkEO(b-$uJ47*g){2uC`k+-hcG~2niJ#<^L|t5I1e~ zbbs|gXsSoa@Ht=0+|Ivx06aF!sgG*%i(xz~)9M#<`9ZJj>GK2C2IAA7akekG@B*Aa z8DwuRnM;IeF{3*!sot5!@YI2H2&o(2s$ETGp+Jd0R)s0w&KIk6sthw9;J)m@7jJRh zBNs4LQoc}o`t)&!WXSHW1;kKA@Har*KNK!)tmZG0??2fQfszi-)qI*A+=d-xyD?G2 zi!35NG#`A;OSIRaN$$oQaZdywq|JOd7gB-Tc!zzZq>90)jS2%@l9l}VFzii_r>e0% z?U_fc%aY4j6?P+>Dt}cfK-C}{=%btsxkzP~F>$B(W`mX~HWI8u@;8G4u9qG_-qfBb2{kmC53X8{L zU$+k}>A1K0FVq2?aK^AkGENbp(qeXk!G(Z1GqWDq5S_+IhFb$lG(F=GMvsU24>lq~ zzX8$8w?A<-s!34wUuAKrtr&DPIMl$4gH4`m|b-hnzY}Pq+ zm~i5Ycy)`NbF5vLbwEbJMqcrGBJfOdu!NA+VIS#BzE{~+3wdpCr2D=ZlE`C}GN zljGsO_ASB1C$t_3>cO3!$y3d@zWl|vw~vud%s9lL8cvd+=CeM@Tc#HJ%A%qS^Zkjx zRC|J(gvnj?etyyRg59Ps_^5 z&lWR(PG=~0r{D&G&KcgAU+OY&fhE zrSU$!gMlQ4>qjPs&C6b~S6E$!^nJ46C9K=EQVUn8;jm)$xFFNXf;l8!TGu!_I#z_w z!#;4Hf8Z*(0HwwDxzFi>K+ZY5ye~(DCh}1q#nHpvaam0_IPr&=#=r$N{bYI?yJ_O9 zsNwP_-n5d<^d`^WKCm;m0S+HXh@|Oi8Q8q$KZo>Y9-he0b}YK|lpOxHOqr;KY1TW889l8bbi1 zz`%(|(*MZDVpv+;u=~6BJSPpYP@@P{yys)Q4 z2?ZTpWhEG0xz=1Ewt^(~X1u~m@ zBb^D7f8aJA6~3GN^bzIgLgZWtS;YyvaFES!T0e^ywpNEt}2r9;-~ZOvA literal 0 HcmV?d00001 diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 1fa38c24..ffa51d2e 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -982,6 +982,18 @@ if [ \$no_of_users -gt 0 ]; then # fi #fi + if [ ! -f /home/$MY_USERNAME/Desktop/vpn.desktop ]; then + echo '[Desktop Entry]' > /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'Type=Application' >> /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'Name=Connect Meshes' >> /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'Comment=Connect to another mesh network via the internet' >> /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'Exec=mate-terminal -e /usr/local/bin/${PROJECT_NAME}-mesh-connect' >> /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'Icon=/usr/share/${PROJECT_NAME}/avatars/connect.jpg' >> /home/$MY_USERNAME/Desktop/vpn.desktop + echo 'StartupNotify=false' >> /home/$MY_USERNAME/Desktop/vpn.desktop + chmod +x /home/$MY_USERNAME/Desktop/vpn.desktop + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/Desktop/vpn.desktop + fi + if [ -f /tmp/.ipfs-users ]; then echo '[Desktop Entry]' > /home/$MY_USERNAME/Desktop/sites.desktop echo 'Type=Application' >> /home/$MY_USERNAME/Desktop/sites.desktop diff --git a/src/freedombone-image-mesh b/src/freedombone-image-mesh index ad9e6604..7148304a 100755 --- a/src/freedombone-image-mesh +++ b/src/freedombone-image-mesh @@ -784,7 +784,7 @@ function generate_stunnel_keys { cp /etc/stunnel/stunnel.pem /home/$MY_USERNAME/stunnel.pem cp /etc/stunnel/stunnel.p12 /home/$MY_USERNAME/stunnel.p12 - chown $MY_USERNAME:$MY_USERNAME $prefix$userhome/stunnel* + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/stunnel* echo "stunnel keys created" >> /var/log/${PROJECT_NAME}.log } @@ -797,6 +797,13 @@ function mesh_setup_vpn { generate_stunnel_keys sed -i 's|tun-mtu .*|tun-mtu 1532|g' /home/$MY_USERNAME/client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/stunnel* + + # create an archive of the vpn client files + cd /home/$MY_USERNAME + tar -czvf vpn.tar.gz stunnel* client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/vpn.tar.gz systemctl restart openvpn } diff --git a/src/freedombone-mesh-connect b/src/freedombone-mesh-connect new file mode 100755 index 00000000..32aec07c --- /dev/null +++ b/src/freedombone-mesh-connect @@ -0,0 +1,230 @@ +#!/bin/bash +# +# .---. . . +# | | | +# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. +# | | (.-' (.-' ( | ( )| | | | )( )| | (.-' +# ' ' --' --' -' - -' ' ' -' -' -' ' - --' +# +# Freedom in the Cloud +# +# Blogging functions for mesh clients +# +# License +# ======= +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +PROJECT_NAME='freedombone' + +export TEXTDOMAIN=${PROJECT_NAME}-mesh-blog +export TEXTDOMAINDIR="/usr/share/locale" + +MY_USERNAME='fbone' + +OPENVPN_SERVER_NAME="server" +OPENVPN_KEY_FILENAME='client.ovpn' +VPN_COUNTRY_CODE="US" +VPN_AREA="Apparent Free Speech Zone" +VPN_LOCATION="Freedomville" +VPN_ORGANISATION="Freedombone" +VPN_UNIT="Freedombone Unit" +STUNNEL_PORT=3439 +VPN_TLS_PORT=553 +VPN_MESH_TLS_PORT=653 + +function vpn_generate_keys { + # generate host keys + if [ ! -f /etc/openvpn/dh2048.pem ]; then + ${PROJECT_NAME}-dhparam -o /etc/openvpn/dh2048.pem + fi + if [ ! -f /etc/openvpn/dh2048.pem ]; then + echo $'vpn dhparams were not generated' >> /var/log/${PROJECT_NAME}.log + exit 73724523 + fi + cp /etc/openvpn/dh2048.pem /etc/openvpn/easy-rsa/keys/dh2048.pem + + cd /etc/openvpn/easy-rsa + . ./vars + ./clean-all + vpn_openssl_version='1.0.0' + if [ ! -f openssl-${vpn_openssl_version}.cnf ]; then + echo $"openssl-${vpn_openssl_version}.cnf was not found" >> /var/log/${PROJECT_NAME}.log + exit 7392353 + fi + cp openssl-${vpn_openssl_version}.cnf openssl.cnf + + if [ -f /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.crt ]; then + rm /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.crt + fi + if [ -f /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.key ]; then + rm /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.key + fi + if [ -f /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.csr ]; then + rm /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.csr + fi + sed -i 's| --interact||g' build-key-server + sed -i 's| --interact||g' build-ca + ./build-ca + ./build-key-server ${OPENVPN_SERVER_NAME} + if [ ! -f /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.crt ]; then + echo $'OpenVPN crt not found' >> /var/log/${PROJECT_NAME}.log + exit 7823352 + fi + server_cert=$(cat /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.crt) + if [ ${#server_cert} -lt 10 ]; then + cat /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.crt + echo $'Server cert generation failed' >> /var/log/${PROJECT_NAME}.log + exit 3284682 + fi + + if [ ! -f /etc/openvpn/easy-rsa/keys/${OPENVPN_SERVER_NAME}.key ]; then + echo $'OpenVPN key not found' >> /var/log/${PROJECT_NAME}.log + exit 6839436 + fi + if [ ! -f /etc/openvpn/easy-rsa/keys/ca.key ]; then + echo $'OpenVPN ca not found' >> /var/log/${PROJECT_NAME}.log + exit 7935203 + fi + cp /etc/openvpn/easy-rsa/keys/{$OPENVPN_SERVER_NAME.crt,$OPENVPN_SERVER_NAME.key,ca.crt} /etc/openvpn + + create_user_vpn_key ${MY_USERNAME} +} + +function generate_stunnel_keys { + echo "Creating stunnel keys" >> /var/log/${PROJECT_NAME}.log + openssl req -x509 -nodes -days 3650 -sha256 \ + -subj "/O=$VPN_ORGANISATION/OU=$VPN_UNIT/C=$VPN_COUNTRY_CODE/ST=$VPN_AREA/L=$VPN_LOCATION/CN=$HOSTNAME" \ + -newkey rsa:2048 -keyout /etc/stunnel/key.pem \ + -out /etc/stunnel/cert.pem + if [ ! -f /etc/stunnel/key.pem ]; then + echo $'stunnel key not created' >> /var/log/${PROJECT_NAME}.log + exit 793530 + fi + if [ ! -f /etc/stunnel/cert.pem ]; then + echo $'stunnel cert not created' >> /var/log/${PROJECT_NAME}.log + exit 204587 + fi + chmod 400 /etc/stunnel/key.pem + chmod 640 /etc/stunnel/cert.pem + + cat /etc/stunnel/key.pem /etc/stunnel/cert.pem >> /etc/stunnel/stunnel.pem + chmod 640 /etc/stunnel/stunnel.pem + + openssl pkcs12 -export -out /etc/stunnel/stunnel.p12 -inkey /etc/stunnel/key.pem -in /etc/stunnel/cert.pem -passout pass: + if [ ! -f /etc/stunnel/stunnel.p12 ]; then + echo $'stunnel pkcs12 not created' >> /var/log/${PROJECT_NAME}.log + exit 639353 + fi + chmod 640 /etc/stunnel/stunnel.p12 + + cp /etc/stunnel/stunnel.pem /home/$MY_USERNAME/stunnel.pem + cp /etc/stunnel/stunnel.p12 /home/$MY_USERNAME/stunnel.p12 + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/stunnel* + echo "stunnel keys created" >> /var/log/${PROJECT_NAME}.log +} + +function mesh_setup_vpn { + vpn_generate_keys + + cp /etc/stunnel/stunnel-client.conf /home/$MY_USERNAME/stunnel-client.conf + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/stunnel* + + generate_stunnel_keys + + sed -i 's|tun-mtu .*|tun-mtu 1532|g' /home/$MY_USERNAME/client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/stunnel* + + # create an archive of the vpn client files + cd /home/$MY_USERNAME + tar -czvf vpn.tar.gz stunnel* client.ovpn + chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/vpn.tar.gz + + if [ -f vpn.tar.gz ]; then + dialog --title $"Generate VPN client keys" \ + --msgbox $"\nNew VPN client keys have been generated in the /home/fbone directory.\n\nYou can find it by selecting \"Places\" then \"Home Directory\" on the top menu bar. Transmit the vpn.tar.gz file to whoever is running the other mesh network so that they can connect to yours.\n\nThey should uncompress vpn.tar.gz to their /home/fbone directory, then connect using your IP address or domain name." 15 70 + fi +} + +function connect_to_vpn { + dialog --title $"VPN Connect to another mesh network" \ + --backtitle $"Freedombone Mesh" \ + --defaultno \ + --yesno $"\nHave you received the vpn.tar.gz file from the other mesh administrator and uncompressed it into the /home/fbone directory?" 10 70 + sel=$? + case $sel in + 1) return;; + 255) return;; + esac + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --title $"VPN Connect to another mesh network" \ + --backtitle $"Freedombone Mesh" \ + --inputbox $'Enter the IP address or domain name of the other mesh.' 10 60 2>$data + sel=$? + case $sel in + 0) + ip_or_domain=$(<$data) + if [ ${#ip_or_domain} -gt 1 ]; then + if [[ "$ip_or_domain" == *'.'* ]]; then + + if [ ! -f ~/client.ovpn ]; then + rm $data + exit 1 + fi + if [ ! -f ~/stunnel.pem ]; then + rm $data + exit 1 + fi + if [ ! -f ~/stunnel.p12 ]; then + rm $data + exit 1 + fi + + sed -i "s|route .*|route $ip_or_domain 255.255.255.255 net_gateway|g" ~/client.ovpn + + clear + cd ~/ + sudo stunnel stunnel-client.conf + sudo openvpn client.ovpn + fi + fi + ;; + esac + + rm $data +} + +data=$(tempfile 2>/dev/null) +trap "rm -f $data" 0 1 2 5 15 +dialog --backtitle $"Freedombone Mesh" \ + --title $"Connect to another mesh network" \ + --radiolist $"Choose an operation:" 10 75 2 \ + 1 $"Connect to another mesh network" on \ + 2 $"Generate VPN keys for another mesh network to connect to me" off 2> $data +sel=$? +case $sel in + 1) exit 1;; + 255) exit 1;; +esac +case $(cat $data) in + 1) rm $data + connect_to_vpn;; + 2) rm $data + mesh_setup_vpn;; +esac + +exit 0