OpenVPN - notifikace o připojení

Dalo by se nějak nastavit aby Omnia posílala notifikace mailem při připojení klienta na OpenVPN ?

Lze pouzit up.sh/down.sh scripty. --> inspirace treba zde : https://askubuntu.com/questions/28733/how-do-i-run-a-script-after-openvpn-has-connected-successfully

Pripadne lze toto resit i pres nejaky checker v crontabu, co bude sledovat zda-li konkretni interface je up/down

diky, to vypada jednoduse. akorat kdyz upravim openvpn config manualne a pak udelam zmenu ve forise nebo bude update tak predpokladam ze se to prepise.

jeste by me teda zajimalo jestli je script pro posilani notifikaci ktery bych zavolal a predal mu vlastni zpravu. abych mohl vlastni notifikaci poslat stejne jako mam ve forise nastavene upozorneni v sekci udrzba

Turris má v sobě create_notification který umí posílat na mail notifikace, co si vyberete
Stačí použít crontab:

MAILTO=“”
m h dom mon dow user command
10 * * * * root create_notification -s news $(ifconfig pppoe-wan|grep > “inet addr:”|awk ‘{print $2}’|awk -F : ‘{print $2}’)

Tohle umí poslat veřejnou IP adresu kterou má zrovna router na mail.
Používal jsem to chvilku když mi O2 furt laborovalo s adresou, i když mám zaplacenou pevnou.

super, takze up/down.sh + create_notification :slight_smile:

Pridavam detailnejsi info jak sem to resil, treba se nekomu bude hodit :slight_smile:

  1. v souboru /etc/config/openvpn pridat:
option script_security '2'
option client_connect '/etc/openvpn/up.sh'
option client_disconnect '/etc/openvpn/down.sh'
  1. vytvorit soubor /etc/openvpn/up.sh + chmod 0777
#!/bin/bash
time=$(echo $(date +"%c"))
message=$(echo "Client has connected to OpenVPN: \n\nConnected since: $time \nRemote IP: $untrusted_ip\nVirtual IP: $ifconfig_pool_remote_ip\nClient name: $common_name")
/usr/bin/create_notification -s news "$message"
/usr/bin/notifier
  1. vytvorit soubor /etc/openvpn/down.sh + chmod 0777
#!/bin/bash
time=$(echo $(date +"%c"))
message=$(echo "Client has disconnected from OpenVPN: \n\nDisconnected time: $time \nRemote IP: $untrusted_ip\nVirtual IP: $ifconfig_pool_remote_ip\nClient name: $common_name")
/usr/bin/create_notification -s news "$message"
/usr/bin/notifier
  1. reset OpenVPN

/etc/init.d/openvpn restart


Potom uz chodi notifikace pri kazdym pripojeni a odpojeni klienta

5 Likes

Dobrý den,
děkujeme Vám za návod. Bylo by jej možné přidat do komunitní části dokumentace, aby to na fóru nezapadlo?

1 Like

vyzkousel jsem Vas postup a nepripojim se na openvpn :-/

Sun Apr 29 13:12:57 2018 MANAGEMENT: >STATE:1525003977,GET_CONFIG,
Sun Apr 29 13:12:57 2018 SENT CONTROL [turris]: ‘PUSH_REQUEST’ (status=1)
Sun Apr 29 13:12:57 2018 AUTH: Received control message: AUTH_FAILED
Sun Apr 29 13:12:57 2018 SIGUSR1[soft,auth-failure] received, process restarting
Sun Apr 29 13:12:57 2018 MANAGEMENT: >STATE:1525003977,RECONNECTING,auth-failure,
Sun Apr 29 13:12:57 2018 Restart pause, 5 second(s)

p.s. pozor na pouzite uvozovky … nekde mate ’ a nekde ’

@Pepe jj, podivam se na pravidla a pridam to tam :slight_smile:
@jork a predtim pripojeni fungovalo? mate tam chybu auth_failed a muj script do prihlasovani nijak nezasahuje, openvpn ho zavola az kdyz se klient prihlasi / odhlasi

Bez těch tří řádku v openvpn config vše funguje… Generoval jsem to z foris a nijak do toho nezasahoval.

ja mam openvpn + config taky pres foris. ve vygenerovanym souboru jsou i priklady a az jako posledni je config openvpn 'server_turris' kde je jako u jedinyho option enabled 1 => toto se pouziva. v tom mam pridany ty dalsi 3 option co sem popisoval.

script_security povoli spoustet uzivatelsky scripty, client_connect definuje co se spusti pri prihlaseni klienta a client_disconnect zase co spustit pri odhlaseni

je to tam v cs i en :wink:

3 Likes

Mě to funguje, mám Turris 1.0, RC 3.10, zpráva se vytvoří, ale pro odeslání je potřeba zavolat notifier.

Já sem to dělal na Omnia, Turris OS 3.9.6. Ten notifier bude možná rozdíl mezi Turris 1.0 a Omnia

Vyřešeno… Kopíroval jsem text z fóra ve Windows a některé uvozovky byly nahrazeny za jiný typ (vypadající stejně).

Auth_failed to vyhazovalo právě kvůli chybě v up.sh souboru.

P. S. Doplnil jsem si up.sh o příkaz Telegram-send a funguje skvěle i posílání zpráv o připojení

ahoj, mozem sa spytat ako vytvarat notifikacie pre ine systemove hlasky - napr WAN DOWN, pokus o prihlasenie na wifi neautorizovanej mac adrese, atd ? len sa pytam :slight_smile: ak nie, tak si to budem musiet vyrobit na kolene :slight_smile: vdaka …

tak sem to jeste upravil tady i v komunitni dokumentaci. notifier je potreba aby se zprava odeslala hned, jinak je tam mam pocit 5min interval kdy se spousti sam. mam omnii teprve par dni, tak sem nevedel ze je zvlast script na vytvoreni zpravy a odeslani :slight_smile:

1 Like

Na kontrolu stavu interfejsu lze pouzit “ifstatus”

Kontrola stavu “up” pro Wan
if [[ $( ifstatus wan | grep -i '"up":' | sed -e 's/^.*: //' -e 's/,$//' ) == "true" ]] ; then echo "Wan is UP" ; else echo "Wan is DOWN" ; fi

Kontrola stavu “down” pro Wan
if [[ $( ifstatus wan | grep -i '"up":' | sed -e 's/^.*: //' -e 's/,$//' ) == "false" ]] ; then echo "Wan is DOWN" ; else echo "Wan is UP" ; fi

Pak misto “echo” dat prikaz co vytvori a posle notifikaci. Jen me napada, ze “wan” je kontrolovan obecne a o vypadcich chodi notifikace automaticky (jsou-li pres foris zapnute). V tomto smeru kontrola “wan” neni spatna, jen holt pri padu, zadna notifikace asi neodejde, nebude kudy, bude lepsi nasledne pustit script co zkusi interface nahodit (za pomoci “ifup”/“ifdown” a poslat info, ze tak bylo ucineho a s jakym vysledkem.)

Pro wan/lan lze pouzit ifstatus, pro wlan0/wlan1 je treba pouzit “wifi status”.
EDIT: mezitim jsem si s tim zkusil hrat , takovej draft … https://pastebin.com/KshdB102

1 Like

Super diky za navod. Funguje perfektne. Jen mala kosmeticka uprava. V “message” by chtelo misto “echo” dat “echo -e” a umaznout “\n” tam kde je to dvakrat (viz: “\n\nConnected since:” ).

EDIT: malinko upravene up-down scripty (po projeti shellcheckem) https://pastebin.com/4fmjimXw

Uz jsem tohle resil pres vice nez rokem a porad neuspesne:

Nefunguje mi ani tento navod od stix. Mam Turris 1.1