VPN "on demand" via Email mit GoogleAuth und openVPN

Begonnen von KernSani, 15 März 2017, 21:30:00

Vorheriges Thema - Nächstes Thema

KernSani

Hi zusammen,

da ein/zwei Nachfragen kamen... Ich starte mein VPN nur, wenn ich es wirklich benötige... Wenn die Grundvoraussetzungen da sind, ist das ziemlich simpel.

Mein Szenario sieht so aus:
1.) VPN Server (openVPN) läuft auf dem FHEM-Raspi (ausreichend Anleitungen via Google)
2.) Google Authenticator Modul einrichten
3.) Mailcheck Modul einrichten.

Zum steuern des VPN's aus FHEM nutze ich zwei Dummies:

1.) Dummy zur Steuerung:
defmod SYS_vpn dummy
attr SYS_vpn alias VPN
attr SYS_vpn devStateIcon {if (Value("SYS_vpn_status") =~ /is running/) {".*:10px-kreis-gruen"} elsif (Value("SYS_vpn_status") =~ /not running/) {".*:10px-kreis-rot"} else {".*:10px-kreis-gelb"}}
attr SYS_vpn group VPN
attr SYS_vpn room System
attr SYS_vpn setList start:noArg stop:noArg status:noArg restart:noArg
attr SYS_vpn webCmd start:stop:restart:status


2. Dummy zur Statusanzeige:
defmod SYS_vpn_status dummy
attr SYS_vpn_status alias VPN Status
attr SYS_vpn_status group VPN
attr SYS_vpn_status room System


Ein DOIF dient zum schalten:
defmod ev_SYS_vpn DOIF ([SYS_vpn]) (\
{fhem("set SYS_vpn_status ".`sudo /etc/init.d/openvpn $EVENT`)},\
set SYS_vpn working\
)\
(\
{fhem("set SYS_vpn_status ".`sudo /etc/init.d/openvpn status`)},\
set SYS_vpn idle\
)\
attr ev_SYS_vpn do always
attr ev_SYS_vpn room System
attr ev_SYS_vpn wait 0,2


und zuguterletzt, das DOIF, das die eingehenden Mails bearbeitet:


defmod ev_inconingMail DOIF \
([SYS_MailCheck:From] =~ /<mySenderEmail>/i and [SYS_MailCheck:Subject] =~ /VPN start/ and gAuth("GoogleAuth",substr([SYS_MailCheck:Subject],11)) )\
  (set SYS_vpn start)\

attr ev_inconingMail do always
attr ev_inconingMail room System


Nun kann ich von <mySenderEmail> eine Email an FHEM senden mit dem subject "VPN start <token>" um das VPN zu starten. Da das token nur eine relative kurze Lebenszeit hat, muss das natürlich einigermaßen flott gehen. Zu Beginn habe ich mir noch eine Pushmsg geschickt, wenn das VPN gestartet war, ist aber eigentlich nicht notwendig. Stoppen kann man das VPN dann - wenn man fertig ist - direkt aus FHEM heraus über den Dummy.

Weitere Anregungen nehme ich natürlich gerne entgegen...

Grüße,

Oli 
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...