Opennet Firmware
 Alle Dateien Funktionen Variablen Gruppen Seiten
on-usergw.sh
gehe zur Dokumentation dieser Datei
1 ## @defgroup on-usergw UserGateway-Funktionen
2 # Beginn der Doku-Gruppe
3 ## @{
4 
5 UGW_STATUS_FILE=/tmp/on-ugw_gateways.status
6 ON_USERGW_DEFAULTS_FILE=/usr/share/opennet/usergw.defaults
7 MESH_OPENVPN_CONFIG_TEMPLATE_FILE=/usr/share/opennet/openvpn-ugw.template
8 TRUSTED_SERVICES_URL=https://service-discovery.opennet-initiative.de/ugw-services.csv
9 ## eine beliebige Portnummer, auf der wir keinen udp-Dienst vermuten
10 SPEEDTEST_UPLOAD_PORT=29418
11 SPEEDTEST_SECONDS=20
12 ## dieser Wert muss mit der VPN-Konfigurationsvorlage synchron gehalten werden
13 MESH_OPENVPN_DEVICE_PREFIX=tap
14 # Namenspräfix für weiterzuleitende Dienste
15 RELAYABLE_SERVICE_PREFIX="proxy-"
16 UPDATE_TRUSTED_SERVICES_PERIOD_MINUTES=360
17 
18 
19 ## @fn get_on_usergw_default()
20 ## @param key Schlüssel des gewünschten default-Werts.
21 ## @brief Hole default-Werte der UGW-Funktionalität der aktuellen Firmware.
22 ## @details Die default-Werte werden nicht von der Konfigurationsverwaltung uci verwaltet.
23 ## Somit sind nach jedem Upgrade imer die neuesten Standard-Werte verfuegbar.
25  _get_file_dict_value "$1" "$ON_USERGW_DEFAULTS_FILE"
26 }
27 
28 
29 ## @fn has_mesh_openvpn_credentials()
30 ## @brief Prüft, ob der Nutzer bereits einen Schlüssel und ein Zertifikat angelegt hat.
31 ## @returns Liefert "wahr", falls Schlüssel und Zertifikat vorhanden sind oder
32 ## falls in irgendeiner Form Unklarheit besteht.
34  has_openvpn_credentials_by_template "$MESH_OPENVPN_CONFIG_TEMPLATE_FILE" && return 0
35  trap "" $GUARD_TRAPS && return 1
36 }
37 
38 
39 ## @fn verify_mesh_gateways()
40 ## @brief Durchlaufe die Liste aller Mesh-Gateway-Dienste und aktualisiere deren Status.
41 ## @see run_cyclic_service_tests
43  local max_fail_attempts
44  local test_period_minutes
45  max_fail_attempts=$(get_on_usergw_default "test_max_fail_attempts")
46  test_period_minutes=$(get_on_usergw_default "test_period_minutes")
47  get_services "mesh" | run_cyclic_service_tests "is_mesh_gateway_usable" "$test_period_minutes" "$max_fail_attempts"
48 }
49 
50 
51 ## @fn is_mesh_gateway_usable()
52 ## @param service_name zu prüfender Dienst
53 ## @brief Prüfe ob der Dienst alle notwendigen Tests besteht.
54 ## @details Ein Test dauert bis zu 5 Minuten. Falls bereits eine VPN-Verbindung besteht, wird der MTU-Test übersprungen.
56  trap "error_trap is_mesh_gateway_usable '$*'" $GUARD_TRAPS
57  local service_name="$1"
58  local failed=
59  # WAN-Routing
60  if is_service_routed_via_wan "$service_name"; then
61  set_service_value "$service_name" "wan_status" "true"
62  else
63  failed=1
64  set_service_value "$service_name" "wan_status" "false"
65  fi
66  # Ping-Zeit aktualisieren
67  local ping_time=
68  [ -z "$failed" ] && ping_time=$(get_ping_time "$(get_service_value "$service_name" "host")")
69  set_service_value "$service_name" "wan_ping" "$ping_time"
70  # VPN-Verbindung
71  if [ -n "$failed" ]; then
72  set_service_value "$service_name" "vpn_status" ""
73  else
74  prepare_openvpn_service "$service_name" "$MESH_OPENVPN_CONFIG_TEMPLATE_FILE"
75  if verify_vpn_connection "$service_name"; then
76  set_service_value "$service_name" "vpn_status" "true"
77  else
78  failed=1
79  set_service_value "$service_name" "vpn_status" "false"
80  fi
81  fi
82  # MTU-Pruefung
83  if [ -n "$failed" ]; then
84  for key in "mtu_msg" "mtu_out_wanted" "mtu_out_real" "mtu_in_wanted" "mtu_in_real" "mtu_timestamp" "mtu_status"; do
85  set_service_value "$service_name" "$key" ""
86  done
87  else
88  if [ -z "$(get_openvpn_service_state "$service_name")" ]; then
89  # es läuft aktuell keine Verbindung - wir können testen
90  local mtu_result
91  mtu_result=$(openvpn_get_mtu "$service_name")
92  msg_debug "MTU test result ($service_name): $mtu_result"
93  echo "$mtu_result" | update_mesh_gateway_mtu_state "$service_name"
94  uci_is_true "$(get_service_value "$service_name" "mtu_status" "false")" || failed=1
95  else
96  # Aktuell läuft eine Verbindung: ein MTU-Test würde diese unterbrechen (was zu
97  # wechselseitiger Trennung führen würde). Wir behalten daher das alte mtu-Ergebnis bei.
98  # Ein Abbruch einer Verbindung erfolgt also lediglich, wenn die VPN-Verbindung komplett
99  # nicht mehr nutzbar ist.
100  true
101  fi
102  fi
103  [ -z "$failed" ] && return 0
104  trap "" $GUARD_TRAPS && return 1
105 }
106 
107 
108 ## @fn update_trusted_service_list()
109 ## @brief Hole die vertrauenswürdigen Dienste von signierten Opennet-Quellen.
110 ## @details Diese Dienste führen beispielsweise auf UGW-APs zur Konfiguration von Portweiterleitungen
111 ## ins Internet. Daher sind sie nur aus vertrauenswürdiger Quelle zu akzeptieren (oder manuell).
113  local line
114  local service_type
115  local scheme
116  local host
117  local port
118  local protocol
119  local priority
120  local details
121  local service_name
122  local is_proxy
123  local url_list
124  url_list=$(https_request_opennet "$TRUSTED_SERVICES_URL")
125  # leeres Ergebnis? Noch keine Internet-Verbindung? Keine Aktualisierung, keine Beraeumung ...
126  [ -z "$url_list" ] && return
127  echo "$url_list" | grep -v "^#" | sed 's/\t\+/\t/g' | while read line; do
128  service_type=$(echo "$line" | cut -f 1)
129  # falls der Dienst-Typ mit "proxy-" beginnt, soll er weitergeleitet werden
130  if [ "${service_type#$RELAYABLE_SERVICE_PREFIX}" = "$service_type" ]; then
131  # kein Proxy-Dienst
132  is_proxy=
133  else
134  # ein Proxy-Dienst
135  is_proxy=1
136  # entferne das Praefix
137  fi
138  scheme=$(echo "$line" | cut -f 2)
139  host=$(echo "$line" | cut -f 3)
140  port=$(echo "$line" | cut -f 4)
141  protocol=$(echo "$line" | cut -f 5)
142  priority=$(echo "$line" | cut -f 6)
143  details=$(echo "$line" | cut -f 7-)
144  service_name=$(notify_service "$service_type" "$scheme" "$host" "$port" "$protocol" "/" "trusted" "$details")
145  set_service_value "$service_name" "priority" "$priority"
146  [ -n "$is_proxy" ] && pick_local_service_relay_port "$service_name" >/dev/null
147  true
148  done
149  # veraltete Dienste entfernen
150  local min_timestamp
151  min_timestamp=$(($(get_uptime_minutes) - $(get_on_core_default "trusted_service_expire_minutes")))
152  # falls die uptime kleiner ist als die Verfallszeit, dann ist ein Test sinnfrei
153  if [ "$min_timestamp" -gt 0 ]; then
154  get_services "mesh" \
155  | filter_services_by_value "source" "trusted" \
156  | while read service_name; do
157  timestamp=$(get_service_value "$service_name" "timestamp" 0)
158  # der Service ist zu lange nicht aktualisiert worden
159  [ "$timestamp" -lt "$min_timestamp" ] && delete_service "$service_name"
160  true
161  done
162  fi
163  # aktualisiere DNS- und NTP-Dienste
164  apply_changes on-core
165 }
166 
167 
169 ## @brief Schätze die Upload- und Download-Geschwindigkeit zu dem Dienstanbieter ab. Aktualisiere anschließend die Attribute des Diensts.
170 ## @param service_name der Name des Diensts
171 ## @details Auf der Gegenseite wird die Datei '.10megabyte' fuer den Download via http erwartet.
173  trap "error_trap update_public_gateway_speed_estimation '$*'" $GUARD_TRAPS
174  local service_name="$1"
175  local host
176  local download_speed
177  local upload_speed
178  host=$(get_service_value "$service_name" "host")
179  download_speed=$(measure_download_speed "$host")
180  upload_speed=$(measure_upload_speed "$host")
181  # keine Zahlen? Keine Aktualisierung ...
182  [ -z "$download_speed" ] && [ -z "$upload_speed" ] && return
183  # gleitende Mittelwerte: vorherigen Wert einfliessen lassen
184  # Falls keine vorherigen Werte vorliegen, dann werden die aktuellen verwendet.
185  local prev_download
186  local prev_upload
187  prev_download=$(get_service_detail "$service_name" "wan_speed_download" "${download_speed:-0}")
188  prev_upload=$(get_service_detail "$service_name" "wan_speed_upload" "${upload_speed:-0}")
189  set_service_detail "$service_name" "wan_speed_download" "$(( (3 * download_speed + prev_download) / 4 ))"
190  set_service_detail "$service_name" "wan_speed_upload" "$(( (3 * download_speed + prev_upload) / 4 ))"
191  set_service_value "$service_name" "wan_speed_timestamp" "$(get_uptime_minutes)"
192 }
193 
194 
196 ## @brief Falls auf dem Weg zwischen Router und öffentlichem Gateway ein MTU-Problem existiert, dann werden die Daten nur bruchstückhaft fließen, auch wenn alle anderen Symptome (z.B. Ping) dies nicht festellten. Daher müssen wir auch den MTU-Pfad auswerten lassen.
197 ## @param service_name der Name des Diensts
198 ## @returns Es erfolgt keine Ausgabe - als Seiteneffekt wird der MTU-Status des Diensts verändert.
199 ## @details Als Eingabestrom wird die Ausgabe von 'openvpn_get_mtu' erwartet.
201  trap "error_trap update_mesh_gateway_mtu_state '$*'" $GUARD_TRAPS
202  local service_name="$1"
203  local host
204  local state
205  local mtu_result
206  local out_wanted
207  local out_real
208  local in_wanted
209  local in_real
210  local status_output
211 
212  host=$(get_service_value "$service_name" "host")
213 
214  msg_debug "starting update_mesh_gateway_mtu_state for '$host'"
215  msg_debug "update_mesh_gateway_mtu_state will take around 5 minutes per gateway"
216 
217  mtu_result=$(cat -)
218  out_wanted=$(echo "$mtu_result" | cut -f 1)
219  out_real=$(echo "$mtu_result" | cut -f 2)
220  in_wanted=$(echo "$mtu_result" | cut -f 3)
221  in_real=$(echo "$mtu_result" | cut -f 4)
222  status_output=$(echo "$mtu_result" | cut -f 5)
223 
224  if [ -z "$mtu_result" ]; then
225  state=""
226  state_label="unknown"
227  elif [ "$out_wanted" -le "$out_real" ] && [ "$in_wanted" -le "$in_real" ]; then
228  state="true"
229  state_label="OK"
230  else
231  state="false"
232  state_label="failure"
233  fi
234 
235  set_service_value "$service_name" "mtu_msg" "$status_output"
236  set_service_value "$service_name" "mtu_out_wanted" "$out_wanted"
237  set_service_value "$service_name" "mtu_out_real" "$out_real"
238  set_service_value "$service_name" "mtu_in_wanted" "$in_wanted"
239  set_service_value "$service_name" "mtu_in_real" "$in_real"
240  set_service_value "$service_name" "mtu_status" "$state"
241 
242  msg_debug "mtu [$state_label]: update_mesh_gateway_mtu_state for '$host' done"
243  [ -n "$status_output" ] && msg_debug "mtu [$state_label]: $status_output"
244  true
245 }
246 
247 
248 ## @fn sync_mesh_openvpn_connection_processes()
249 ## @brief Erzeuge openvpn-Konfigurationen für die als nutzbar markierten Dienste und entferne
250 ## die Konfigurationen von unbrauchbaren Dienste. Dabei wird auch die maximale Anzahl von
251 ## mesh-OpenVPN-Verbindungen beachtet.
253  local service_name
254  local conn_count=0
255  local max_connections
256  local service_state
257  # diese Festlegung ist recht willkürlich: auf Geräten mit nur 32 MB scheinen wir jedenfalls nahe der Speichergrenze zu arbeiten
258  [ "$(get_memory_size)" -gt 32 ] && max_connections=3 || max_connections=1
259  get_services "mesh" \
260  | filter_services_by_value "scheme" "openvpn" \
262  | while read service_name; do
263  service_state=$(get_openvpn_service_state "$service_name")
264  if [ "$conn_count" -lt "$max_connections" ] \
265  && uci_is_true "$(get_service_value "$service_name" "status" "false")" \
266  && uci_is_false "$(get_service_value "$service_name" "disabled" "false")"; then
267  [ -z "$service_state" ] && enable_openvpn_service "$service_name"
268  : $((conn_count++))
269  else
270  [ -n "$service_state" ] && disable_openvpn_service "$service_name"
271  true
272  fi
273  done
274  apply_changes openvpn
275 }
276 
277 
278 # Messung des durchschnittlichen Verkehrs ueber ein Netzwerkinterface innerhalb einer gewaehlten Zeitspanne.
279 # Parameter: physisches Netzwerkinterface (z.B. eth0)
280 # Parameter: Anzahl von Sekunden der Messung
281 # Ergebnis (tab-separiert):
282 # RX TX
283 # (empfangene|gesendete KBits/s)
284 _get_device_traffic() {
285  local device="$1"
286  local seconds="$2"
287  local sys_path="/sys/class/net/$device"
288  [ ! -d "$sys_path" ] && msg_error "Failed to find '$sys_path' for '_get_device_traffic'" && return 0
289  {
290  cat "$sys_path/statistics/rx_bytes"
291  cat "$sys_path/statistics/tx_bytes"
292  sleep "$seconds"
293  cat "$sys_path/statistics/rx_bytes"
294  cat "$sys_path/statistics/tx_bytes"
295  } | tr '\n' ' ' | awk '{ print int((8 * ($3-$1)) / 1024 / '$seconds' + 0.5) "\t" int((8 * ($4-$2)) / 1024 / '$seconds' + 0.5) }'
296 }
297 
298 
299 ## @fn measure_download_speed()
300 ## @param host Gegenstelle für den Geschwindigkeitstest.
301 ## @brief Pruefe Bandbreite durch kurzen Download-Datenverkehr
303  local host="$1"
304  local target_dev
305  target_dev=$(get_target_route_interface "$host")
306  wget -q -O /dev/null "http://$host/.big" &
307  local pid="$!"
308  sleep 3
309  [ ! -d "/proc/$pid" ] && return
310  _get_device_traffic "$target_dev" "$SPEEDTEST_SECONDS" | cut -f 1
311  kill "$pid" 2>/dev/null || true
312 }
313 
314 
315 ## @fn measure_upload_speed()
316 ## @param host Gegenstelle für den Geschwindigkeitstest.
317 ## @brief Pruefe Bandbreite durch kurzen Upload-Datenverkehr
319  local host="$1"
320  local target_dev
321  target_dev=$(get_target_route_interface "$host")
322  # UDP-Verkehr laesst sich auch ohne einen laufenden Dienst auf der Gegenseite erzeugen
323  nc -u "$host" "$SPEEDTEST_UPLOAD_PORT" </dev/zero >/dev/null 2>&1 &
324  local pid="$!"
325  sleep 3
326  [ ! -d "/proc/$pid" ] && return
327  _get_device_traffic "$target_dev" "$SPEEDTEST_SECONDS" | cut -f 2
328  kill "$pid" 2>/dev/null || true
329 }
330 
331 
332 # Liefere die aktiven VPN-Verbindungen (mit Mesh-Hubs) zurueck.
333 # Diese Funktion bracht recht viel Zeit.
334 get_active_ugw_connections() {
335  get_services "mesh" | while read one_service; do
336  [ "$(get_openvpn_service_state "$one_service")" = "active" ] && echo "$one_service" || true
337  done
338 }
339 
340 
341 ## update_mesh_gateway_firewall_rules()
342 ## @brief markiere alle lokal erzeugten Pakete, die an einen mesh-Gateway-Dienst adressiert sind
343 ## @details Diese Markierung ermöglicht die Filterung (throw) der Pakete für mesh-Gateways in der
344 ## Nutzer-Tunnel-Routingtabelle.
345 update_mesh_gateway_firewall_rules() {
346  local host
347  local port
348  local protocol
349  local target_ip
350  local chain="on_tos_mesh_vpn"
351  # Chain erzeugen oder leeren (falls sie bereits existiert)
352  iptables -t mangle --new-chain "$chain" 2>/dev/null || iptables -t mangle --flush "$chain"
353  # falls es keinen Tunnel-Anbieter gibt, ist nichts zu tun
354  [ -z "${TOS_NON_TUNNEL:-}" ] && return 0
355  # Regeln fuer jeden mesh-Gateway aufstellen
356  get_services "mesh" | while read service; do
357  host=$(get_service_value "$service" "host")
358  port=$(get_service_value "$service" "port")
359  protocol=$(get_service_value "$service" "protocol")
360  target_ip=$(query_dns "$host" | filter_routable_addresses | tail -n 1)
361  # unaufloesbare Hostnamen ignorieren
362  [ -z "$target_ip" ] && continue
363  iptables -t mangle --insert "$chain" --destination "$host" --protocol "$protocol" --dport "$port" \
364  -j TOS --set-tos "$TOS_NON_TUNNEL"
365  done
366 }
367 
368 
369 ## @fn disable_on_usergw()
370 ## @brief Alle mesh-Verbindungen trennen.
372  local service_name
373  local service_state
374  get_services "mesh" \
375  | filter_services_by_value "scheme" "openvpn" \
376  | while read service_name; do
377  service_state=$(get_openvpn_service_state "$service_name")
378  [ -n "$service_state" ] && disable_openvpn_service "$service_name" && echo "$service_name"
379  true
380  done | grep -q . && apply_changes openvpn
381  true
382 }
383 
384 
386 ## @brief Ermittle ob mindestens ein Zeitstempel für einen "trusted" Dienst vorhanden ist, der nicht älter
387 ## als die vorgegebene Aktualisierungsperiode ist.
388 ## @returns Wahr, falls kein Diest mit aktuellem Zeitstempel gefunden wurde.
390  trap "error_trap is_trusted_service_list_outdated '$*'" $GUARD_TRAPS
391  local most_recent_timestamp
392  most_recent_timestamp=$(get_services \
393  | filter_services_by_value "source" "trusted" \
394  | pipe_service_attribute "timestamp" \
395  | sort -n | tail -1)
396  # kein Zeitstempel -> dies gilt als "veraltet"
397  [ -z "$most_recent_timestamp" ] && return 0
398  # der aktuellste Zeitstempel ist zu alt
399  is_timestamp_older_minutes "$most_recent_timestamp" "$UPDATE_TRUSTED_SERVICES_PERIOD_MINUTES" && return 0
400  trap "" $GUARD_TRAPS && return 1
401 }
402 
403 
405 ## @brief Baue Verbindungen auf oder trenne sie - je nach Modul-Status.
407  if is_on_module_installed_and_enabled "on-usergw"; then
409  update_mesh_gateway_firewall_rules
410  # ohne Zertifikat ist nicht mehr zu tun
414  fi
415  else
417  fi
418 }
419 
420 # Ende der Doku-Gruppe
421 ## @}
measure_upload_speed(host)
Pruefe Bandbreite durch kurzen Upload-Datenverkehr.
Definition: on-usergw.sh:53
get_services(service_type)
Liefere alle Dienste zurueck, die dem angegebenen Typ zugeordnet sind. Falls kein Typ angegben wird...
Definition: services.sh:61
measure_download_speed(host)
Pruefe Bandbreite durch kurzen Download-Datenverkehr.
Definition: on-usergw.sh:49
notify_service()
Aktualisiere den Zeitstempel und die Entfernung (etx) eines Dienstes.
Definition: services.sh:11
openvpn_get_mtu()
Ermittle die MTU auf dem Weg zum Anbieter des Diensts.
Definition: openvpn.sh:68
is_mesh_gateway_usable(service_name)
Prüfe ob der Dienst alle notwendigen Tests besteht.
Definition: on-usergw.sh:24
sync_mesh_openvpn_connection_processes()
Erzeuge openvpn-Konfigurationen für die als nutzbar markierten Dienste und entferne die Konfiguration...
Definition: on-usergw.sh:45
update_public_gateway_speed_estimation(service_name)
Schätze die Upload- und Download-Geschwindigkeit zu dem Dienstanbieter ab. Aktualisiere anschließend ...
Definition: on-usergw.sh:34
pipe_service_attribute(key, default)
Liefere zu einer Reihe von Diensten ein gewähltes Attribut dieser Dienste zurück. ...
Definition: services.sh:56
update_on_usergw_status()
Baue Verbindungen auf oder trenne sie - je nach Modul-Status.
Definition: on-usergw.sh:68
local key
Definition: core.sh:81
_get_file_dict_value(key)
Auslesen eines Werts aus einem Schlüssel/Wert-Eingabestrom.
Definition: core.sh:81
run_cyclic_service_tests(test_function)
Durchlaufe alle via STDIN angegebenen Dienste bis mindestens ein Test erfolgreich ist...
Definition: services.sh:149
prepare_openvpn_service(Name)
Erzeuge oder aktualisiere einen OpenVPN-Dienst.
Definition: openvpn.sh:63
update_mesh_gateway_mtu_state()
Falls auf dem Weg zwischen Router und öffentlichem Gateway ein MTU-Problem existiert, dann werden die Daten nur bruchstückhaft fließen, auch wenn alle anderen Symptome (z.B. Ping, service_name) dies nicht festellten. Daher müssen wir auch den MTU-Pfad auswerten lassen.
Definition: on-usergw.sh:40
sort_services_by_priority()
Sortiere den eingegebenen Strom von Dienstnamen und gib eine nach der Priorität sortierte Liste...
Definition: services.sh:31
filter_services_by_value(key, value)
Definition: services.sh:67
disable_on_usergw()
markiere alle lokal erzeugten Pakete, die an einen mesh-Gateway-Dienst adressiert sind ...
Definition: on-usergw.sh:60
set_service_detail(service_name, key, value)
Setze den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts.
Definition: services.sh:118
has_mesh_openvpn_credentials()
Prüft, ob der Nutzer bereits einen Schlüssel und ein Zertifikat angelegt hat.
Definition: on-usergw.sh:15
get_openvpn_service_state(service_name)
Prüfe ob eine openvpn-Verbindung besteht bzw. im Aufbau ist.
Definition: openvpn.sh:25
update_trusted_service_list()
Hole die vertrauenswürdigen Dienste von signierten Opennet-Quellen.
Definition: on-usergw.sh:29
enable_openvpn_service()
Erzeuge eine funktionierende openvpn-Konfiguration (Datei + UCI, service_name).
Definition: openvpn.sh:9
filter_routable_addresses()
Filtere aus einer Menge von Ziel-IPs diejenigen heraus, für die eine passende Routing-Regel existiert...
Definition: routing.sh:19
get_on_usergw_default(key)
Hole default-Werte der UGW-Funktionalität der aktuellen Firmware.
Definition: on-usergw.sh:10
msg_debug(message)
Debug-Meldungen ins syslog schreiben.
Definition: core.sh:9
set eu on function print_services services log for dir in etc on services d var on services volatile d
Definition: services:13
get_service_value(key, default)
Auslesen eines Werts aus der Service-Datenbank.
Definition: services.sh:74
verify_vpn_connection(service_name, key, cert)
Prüfe einen VPN-Verbindungsaufbau.
Definition: openvpn.sh:43
msg_error(message)
Die Fehlermeldungen werden in die Standard-Fehlerausgabe und ins syslog geschrieben.
Definition: core.sh:22
get_service_detail(service_name, key, default)
Ermittle den Wert eines Schlüssel-Wert-Paars im "details"-Attribut eines Diensts. ...
Definition: services.sh:111
set eu grep root::etc shadow exit if which chpasswd dev null
Definition: on-password:12
is_service_routed_via_wan(service_name)
Pruefe ob der Verkehr zum Anbieter des Diensts über ein WAN-Interface verlaufen würde.
Definition: services.sh:136
get_ping_time(target, duration)
Ermittle die Latenz eines Ping-Pakets auf dem Weg zu einem Ziel.
Definition: network.sh:14
done
Definition: core.sh:81
get_target_route_interface(target)
Ermittle das Netzwerkinterface, über den der Verkehr zu einem Ziel laufen würde.
Definition: routing.sh:26
verify_mesh_gateways()
Durchlaufe die Liste aller Mesh-Gateway-Dienste und aktualisiere deren Status.
Definition: on-usergw.sh:19
set eu for table in filter nat mangle
Definition: firewall:10
has_openvpn_credentials_by_template(template_file)
Prüft, ob der Nutzer bereits einen Schlüssel und ein Zertifikat angelegt hat.
Definition: openvpn.sh:54
disable_openvpn_service(service_name)
Löschung einer openvpn-Verbindung.
Definition: openvpn.sh:19
is_trusted_service_list_outdated()
Ermittle ob mindestens ein Zeitstempel für einen "trusted" Dienst vorhanden ist, der nicht älter als ...
Definition: on-usergw.sh:65
is_on_module_installed_and_enabled(module)
Pruefe ob ein Modul sowohl installiert, als auch aktiv ist.
Definition: modules.sh:9