Opennet Firmware
 Alle Dateien Funktionen Variablen Gruppen Seiten
on-migrations
gehe zur Dokumentation dieser Datei
1 #!/bin/sh
2 #
3 # Dieses Skript enthaelt Funktionen, die fuer Updates altes Firmware-Versionen notwendig sind.
4 # Alle Funktionen muessen idempotent sein.
5 #
6 # Dieses Skript wird nach jedem Booten ausgeführt.
7 # Damit ermöglichen wir das Laden eines alten Backups auf eine neue Firmware.
8 # Ausserdem wird dieses Skript als Teil des uci-defaults-Konzepts beim ersten Booten nach einer
9 # Aktualisierung ausgefuehrt. Dies ist erforderlich, um alle notwendigen Vorbereitungen fuer
10 # die erste Ausfuehrung des "on-core"-Init-Skripts zu treffen (z.B. crontab-Einrichtung).
11 #
12 
13 
14 . "${IPKG_INSTROOT:-}/usr/lib/opennet/on-helper.sh"
15 
16 
17 # bis Version v0.4-5: openvpn.opennet_user.comp_lzo=1
18 # seit Version v0.5 muss die Einstellung einen der folgenden Werte haben: yes/no/adaptive
19 # bzw. seit Version v0.5 gibt es Sektion nicht mehr (openvpn.opennet_user)
20 # Status in v0.4-5:
21 # ~# uci show | grep lzo
22 # on-usergw.opennet_ugw.comp_lzo=1
23 # openvpn.opennet_user.comp_lzo=1
24 # openvpn.opennet_ugw_erina_on_i_de.comp_lzo=1
25 # openvpn.opennet_ugw_subaru_on_i_de.comp_lzo=1
26 coerce_openvpn_comp_lzo() {
27  local new_value
28  local key
29  # wir wissen nicht genau, ob on-usergw und openvpn existiert - also lieber vorsichtig fragen
30  (uci -q show openvpn; uci -q show on-usergw) | grep "\.comp_lzo=[01]$" | while read line; do
31  new_value=no
32  echo "$line" | grep -q "1$" && new_value=yes
33  key=$(echo "$line" | cut -f 1 -d =)
34  uci set "$key=$new_value"
35  done
36  if [ -n "$(uci -q changes openvpn)" -o -n "$(uci changes | grep "^on-usergw\.")" ]; then
37  msg_info "MIGRATION: coerce_openvpn_comp_lzo"
38  uci changes | grep -q "^on-usergw\." && uci commit on-usergw
39  apply_changes openvpn
40  fi
41 }
42 
43 
44 # bis Version v0.4-5: die Opennet-Firmware hat die /etc/passwd durch einen Symlink auf /etc/etc_preset/passwd ersetzt
45 # Bei einem Update wird das symlink-Ziel ersetzt und somit gibt es keine Nutzerdatenbank mehr.
46 # Dies verhindert jeden telnet/ssh-Login-Versuch. Lediglich das Web-Interface ist nutzbar.
47 fix_passwd_broken_symlink() {
48  local target=/etc/passwd
49  if [ -h "$target" -a ! -e "$target" ]; then
50  msg_info "MIGRATION: fix_passwd_broken_symlink"
51  rm "$target"
52  # ein huebscheres here-Document mit Tabulator-Bereinigung ("<<-") funktioniert leider nicht mit busybox
53  cat >"$target" << EOF
54 root:x:0:0:root:/root:/bin/ash
55 daemon:*:1:1:daemon:/var:/bin/false
56 ftp:*:55:55:ftp:/home/ftp:/bin/false
57 network:*:101:101:network:/var:/bin/false
58 nobody:*:65534:65534:nobody:/var:/bin/false
59 EOF
60  # Ein paar Dienste schlugen aufgrund der fehlenden Nutzerdatenbank fehl.
61  # Ein reboot waere schoen - aber kann zukuenftig eventuell irgendwann zu einer Schleife fuehren.
62  # Also: manuell einzelne Dienste neu starten.
63  /etc/init.d/dnsmasq restart
64  fi
65 }
66 
67 
68 # bis Version v0.4-5 war /etc/rc.local ein Symlink nach /etc/etc_presets/rc.local
69 # In den folgenden Versionen gibt es kein /etc/etc_presets/ mehr.
70 # Der Symlink kann dann durch den ueblichen Kommentar-Text ersetzt werden.
71 fix_rclocal_broken_symlink() {
72  local target=/etc/rc.local
73  # die Datei existiert, bzw. der Symlink zeigt nicht ins Leere
74  [ -e "$target" ] && return 0
75  # falls die Datei kein Symlink ist, dann fassen wir sie lieber nicht an
76  [ -h "$target" ] || return 0
77  # die Datei ist ein kaputter Symlink - wir ersetzen sie
78  rm -f "$target"
79  # ein huebscheres here-Document mit Tabulator-Bereinigung ("<<-") funktioniert leider nicht mit busybox
80  cat >"$target" << EOF
81 # Put your custom commands here that should be executed once
82 # the system init finished. By default this file does nothing.
83 
84 exit 0
85 EOF
86  chmod 644 "$target"
87 }
88 
89 
90 
91 # wandele Leerzeichen-getrennte "option"-Eintraege in "list"-Eintraege um
92 _convert_uci_option_to_list() {
93  local config="$1"
94  local optname="$2"
95  local filename="/etc/config/$config"
96  # Zeilen der Form " option $optname 'foo bar'" werden in mehrere " option $optname '$ITEM'"-Zeilen verwandelt
97  awk <"$filename" '{
98  if (($1 == "option") && ($2 == "'$optname'")) {
99  i = 3
100  while (i <= NF) {
101  gsub(/'\''/, "", $i)
102  printf " list %s '"'%s'"'\n", $2, $i
103  i++
104  }
105  } else {
106  print $0
107  }}' | update_file_if_changed "$filename" && apply_changes "$config"
108  true
109 }
110 
111 
112 # Gelegentlich ändert openwrt die Definition einzelner Variablen. Dies müssen wir via Migration nachbereiten.
113 migrate_uci_definition_changes() {
114  # vor Barrier Breaker war "firewall.ZONE.network" eine "option" - anschliessed wurde es zur "list"
115  _convert_uci_option_to_list "firewall" "network"
116 }
117 
118 
119 # bis Version v0.4-5: "firewall reload" fuehrte auch die "include"-Dateien aus (z.B. /etc/firewall.opennet)
120 # Ab Version v0.5 verwenden wir diese Datei nicht mehr.
121 # Beispiel (v0.4-5):
122 # ~# uci show firewall | grep @include
123 # firewall.@include[0]=include
124 # firewall.@include[0].path=/etc/firewall.opennet
125 # firewall.@include[1]=include
126 # firewall.@include[1].path=/etc/firewall.user
127 fix_firewall_reload() {
128  local filename=/etc/firewall.opennet
129  local uci_prefix
130  find_all_uci_sections "firewall" "include" | while read uci_prefix; do
131  [ "$(uci_get "${uci_prefix}.path")" != "$filename" ] && continue
132  # gesamte "include"-Abzweigung loeschen
133  uci_delete "$uci_prefix"
134  apply_changes "firewall"
135  rm -f "$filename"
136  break
137  done
138  return 0
139 }
140 
141 
142 # bis Version 0.4-5 sind die folgenden beiden Firewall-Einstellungen gesetzt:
143 # firewall.zone_on_vpn.forward=ACCEPT
144 # firewall.zone_on_mesh.forward=ACCEPT
145 # Diese erlauben die Paketweiterleitung aus unerwuenschten Netzen heraus.
146 disable_unwanted_forward() {
147  local zone_name
148  local forward
149  find_all_uci_sections firewall zone "forward=ACCEPT" | while read uci_prefix; do
150  zone_name=$(uci_get "${uci_prefix}.name")
151  # eventuell ist ZONE_TUNNEL nicht definiert (falls on-openvpn nicht installiert ist)
152  if [ "$zone_name" = "$ZONE_MESH" -o "$zone_name" = "${ZONE_TUNNEL:-on_vpn}" ]; then
153  uci set "${uci_prefix}.forward=REJECT" && echo "$uci_prefix"
154  true
155  fi
156  done | grep -q . && {
157  # sicherstellen, dass die als Ersatz fuer "forward=ACCEPT" noetige Weiterleitung existiert
158  add_zone_forward "$ZONE_MESH" "$ZONE_MESH"
159  apply_changes "firewall"
160  }
161  true
162 }
163 
164 
165 # bis Version 0.4-5 wurden die folgenden Einstellungen fuer die Reihenfolge der VPN-Gateways verwendet:
166 # * on-openvpn.gateways.vpn_sort_criteria=metric|etx
167 # * on-openvpn.gateways.autosearch=on|off
168 # Die darauffolgenden Firrmware-Versionen verwenden stattdessen die Einstellung 'on-core.settings.service_sorting'.
169 transfer_vpn_sort_criteria_and_autosearch() {
170  local sort_criteria
171  local autosearch
172  local result
173  sort_criteria=$(uci_get on-openvpn.gateways.vpn_sort_criteria)
174  autosearch=$(uci_get on-openvpn.gateways.autosearch)
175  if [ -z "$autosearch" -a -z "$sort_criteria" ]; then
176  # die Einstellungen wurden bereits uebertragen
177  return 0
178  elif [ "$autosearch" = "off" ]; then
179  result=manual
180  elif [ "$sort_criteria" = "metric" ]; then
181  result=hop
182  else
183  result=etx
184  fi
185  uci set "on-core.settings.service_sorting=$result"
186 }
187 
188 
189 # bis Version 0.4-5 verwendeten wir vollstaendige uci-Sektionen fuer die VPN-Server
190 # z.B. openvpn.opennet_user
191 remove_tunnel_openvpn_settings() {
192  local uci_prefix=openvpn.opennet_user
193 
194  # Abbruch falls die Einstellungen bereits entfernt wurden
195  [ -z "$(uci_get "$uci_prefix")" ] && return
196  uci delete "$uci_prefix"
197  uci commit openvpn
198 }
199 
200 
201 # bis Version 0.4-5 wurde folgende Zeile ausgefuehrt:
202 # lua -e "require('luci.model.opennet.on_usergw') upgrade()" 2>/dev/null
203 # Dadurch wurden openvpn-uci-Konfigurationen (z.B. openvpn.opennet_ugw_erina_on_i_de) nach on-usergw.opennet_ugw* übertragen.
204 # Da die openvpn-Konfigurationen nun ein anderes Namensformat haben, loeschen wir sie.
205 remove_usergw_openvpn_configs() {
206  local uci_prefix
207  find_all_uci_sections "openvpn" "openvpn" | grep "^openvpn\.opennet_ugw_" | while read uci_prefix; do
208  uci delete "$uci_prefix"
209  done
210  return 0
211 }
212 
213 
214 # Die uci-Sektion on-core.defaults und on-core.openssl wurde nur bis v0.4-5 verwendet.
215 # Anschliessend wanderten diese Einstellungen nach /usr/share/opennet/core.defaults.
216 # Ausserdem sind die folgenden Schluessel nach v0.4-5 nicht mehr in Verwendung:
217 # on-openvpn.gateways.searchmask
218 # on-openvpn.gateways.gw_dns
219 # on-openvpn.gateways.gw_ntp
220 # on-openvpn.gateways.better_gw
221 # on-openvpn.gateways.autosearch
222 # on-openvpn.gateways.vpn_nonworking_timeout
223 # on-openvpn.gateways.vpn_bettergateway_timeout
224 # on-openvpn.gateways.vpn_sort_criteria
225 # on-openvpn.gateways.vpn_recheck_age
226 remove_obsolete_on_core_settings() {
227  local key
228  for key in \
229  on-core.defaults \
230  on-core.openssl \
231  on-openvpn.gateways.gateways.searchmask \
232  on-openvpn.gateways.gateways.gw_dns \
233  on-openvpn.gateways.gateways.gw_ntp \
234  on-openvpn.gateways.gateways.better_gw \
235  on-openvpn.gateways.gateways.autosearch \
236  on-openvpn.gateways.gateways.vpn_nonworking_timeout \
237  on-openvpn.gateways.gateways.vpn_bettergateway_timeout \
238  on-openvpn.gateways.gateways.vpn_sort_criteria \
239  on-openvpn.gateways.gateways.vpn_recheck_age; do
240  [ -n "$(uci_get "$key")" ] && uci_delete "$key" || true
241  done
242  return 0
243 }
244 
245 
246 # bis Version 0.4-5 wurde die Variable "on-usergw.ugwng_hna_mask" verwendet.
247 remove_obsolete_usergw_settings() {
248  [ -n "$(uci_get "on-usergw.ugwng_hna_mask")" ] && uci delete "on-usergw.ugwng_hna_mask"
249  return 0
250 }
251 
252 
253 # Die uci-Einstellungen "on-openvpn.gate_XY.*" waren bis Version 0.4-5 in Verwendung.
254 # In den darauffolgenden Firmware-Versionen werden diese Informationen im Dateisystem gespeichert.
255 # Im Zweifelsfall (z.B. falls gerade keine Verbindung zum mesh existiert), werden die
256 # zu uebertragenden Informationen (die Offsets der Gateways oder ihre manuelle Reihenfolge) verworfen.
257 transfer_gateway_uci_settings() {
258  local uci_prefix
259  local host
260  local offset
261  local rank
262  local service_name
263  find_all_uci_sections on-openvpn gateway | while read uci_prefix; do
264  host=$(uci_get "${uci_prefix}.ipaddr")
265  offset=$(uci_get "${uci_prefix}.etx_offset")
266  rank="${uci_prefix#on-openvpn.gate_}"
267  # ermittle alle passenden Dienste dieses Hosts (es koennen mehrere Dienste pro Host vorhanden sein)
268  get_services "gw" | filter_services_by_value "host" "$host" | while read service_name; do
269  # Offset fuer automatische Sortierung uebertragen
270  [ -n "$offset" ] && set_service_value "$service_name" "offset" "$offset"
271  # Rang fuer manuelle Sortierung uebertragen
272  [ -n "$rank" -a "$rank" != "$uci_prefix" ] && set_service_value "$service_name" "rank" "$rank" || true
273  done
274  uci_delete "$uci_prefix"
275  done
276  uci_delete on-openvpn.gateways
277 }
278 
279 
280 # Bis Version 0.4-5 wurde die Datei /etc/crontabs/root einfach ueberschrieben (bzw. erzeugt).
281 # In Version 0.5 wurde die busybox-Funktion "run-parts" verwendet. Zugunsten der separaten
282 # Paketierung wollen wir dies nicht mehr verwenden.
283 # Fortan werden die Eintraege manuell hinzugefuegt (siehe /etc/uci-defaults/on-core-init).
284 remove_crontab_entries() {
285  local crontab_file=/etc/crontabs/root
286  [ -e "$crontab_file" ] || return 0
287  # Verwendung des alten shell-Skripts
288  sed -i '/\/usr\/bin\/run-parts\.sh/d' "$crontab_file"
289  # Verwendung der busybox-Funktion
290  sed -i '/\trun-parts /d' "$crontab_file"
291 }
292 
293 
294 # Bis Version 0.4-5 wurde der Port des httpinfo-Plugins mit der Variable "olsrd.@LoadPlugin[1].Port" festgelegt.
295 # uci-typisch sind jedoch Attribute mit Kleinbuchstaben.
296 rename_olsrd_port_to_port() {
297  local uci_prefix
298  local library
299  find_all_uci_sections olsrd LoadPlugin | while read uci_prefix; do
300  library="$(uci_get "${uci_prefix}.library")"
301  # falsche Bibliothek?
302  [ "$library" != "${library#olsrd_httpinfo}" ] || continue
303  if [ -n "$(uci_get "${uci_prefix}.Port")" ]; then
304  # Wert von "Port" nach "port" uebertragen; "Port" loeschen
305  uci set "${uci_prefix}.port=$(uci_get "${uci_prefix}.Port")"
306  uci_delete "${uci_prefix}.Port"
307  fi
308  done
309  apply_changes olsrd
310 }
311 
312 
313 # Bis Version 0.4-5 gab es anscheinend die veraltete "mtu_fix"-Option in firewall-Weiterleitungen.
314 # Seit OpenWRT 8.09.2 befindet sich diese Option jedoch nicht mehr in den Weiterleitungen, sondern in der Zielzone.
315 move_mtu_fix_to_target_zone() {
316  local uci_prefix
317  local mtu_value
318  local target_zone
319  local zone_uci_prefix
320  find_all_uci_sections firewall forwarding | while read uci_prefix; do
321  mtu_value=$(uci_get "${uci_prefix}.mtu_fix")
322  # leer? Es gibt nichts zu uebertragen ...
323  [ -z "$mtu_value" ] && continue
324  target_zone=$(uci_get "${uci_prefix}.dest")
325  zone_uci_prefix=$(find_first_uci_section firewall zone "name=$target_zone")
326  # mtu-Wert uebertragen
327  [ -n "$zone_uci_prefix" ] && uci set "${zone_uci_prefix}.mtu_fix=$mtu_value"
328  # alten Wert loeschen
329  uci_delete "${uci_prefix}.mtu_fix"
330  done
331  apply_changes firewall
332 }
333 
334 
335 # Bis Version 0.4-5 verwendeten wir ntpclient anstelle des integrierten ntpd
336 # Die alten Einstellungen koennen also entfernt werden, da die Hosts automatisch gewaehlt werden.
337 remove_ntpclient_config() {
338  # keine config-Datei? Fertig ...
339  [ -e /etc/config/ntpclient ] || return 0
340  # ntpclient ist installiert? Konfiguration belassen ...
341  is_package_installed "ntpclient" && return 0
342  rm -f /etc/config/ntpclient
343 }
344 
345 
346 ## @fn rename_firewall_zone()
347 ## @brief Ändere den Namen einer Firewall-Zone (definiert im alten Barrier-Breaker-Stil).
348 ## @param old_zone Bisheriger Name der Firewall-Zone
349 ## @param new_zone Zukünftiger Name der Firewall-Zone
350 ## @details Alle abhängigen Firewall-Regeln (offene Ports, Weiterleitungen, Umleitungen) werden auf die neue Zone umgelenkt.
351 ## Die Umbenennung ist auf alte "benannte" Firewll-Zonen ausgelegt. Die Zone wird in eine neue "unbenannte" verwandelt.
352 rename_firewall_zone() {
353  trap "error_trap rename_firewall_zone '$*'" $GUARD_TRAPS
354  local old_zone="$1"
355  local new_zone="$2"
356  local uci_prefix
357  local key
358  uci_prefix=$(find_first_uci_section firewall zone "name=$old_zone")
359  # die Zone existiert nicht (mehr)
360  [ -z "$uci_prefix" ] && return 0
361  # "name"-Attribut der alten Zone neu setzen
362  uci set "${uci_prefix}.name=$new_zone"
363  # benannte Zone in eine unbenannte umwandeln
364  sed -i "s/^config zone 'zone_$old_zone'$/config zone/g" /etc/config/firewall
365  # aktualisiere alle Forwardings, Redirects und Regeln
366  for section in "forwarding" "redirect" "rule"; do
367  for key in "src" "dest"; do
368  find_all_uci_sections firewall "$section" "${key}=$old_zone" | while read uci_prefix; do
369  uci set "${uci_prefix}.${key}=$new_zone"
370  done
371  done
372  done
373  apply_changes firewall
374 }
375 
376 
377 ## @fn move_wifidog_networks_to_captive_portal()
378 ## @brief Änderung des Netzwerk-Namens für offene Zugangspunkte von "free" zu "on_free".
379 ## @details Bis v0.4-5 hieß das wifidog-Netzwerk "free". Ab v0.5.2 heißt es "on_free".
380 move_wifidog_networks_to_captive_portal() {
381  local old_name="free"
382  local new_name="${NETWORK_FREE:-}"
383  # das on-captive-portal-Paket ist nicht installiert - keine Aenderungen
384  [ -z "$new_name" ] && return 0
385  local old_interfaces
386  local uci_prefix
387  # das alte Interface existiert nicht? Weitermachen ...
388  [ -z "$(uci_get "network.$old_name")" ] && return 0
389  # neues Interface anlegen, falls es noch nicht existieren sollte
390  # (das migrations-Skript wird vor dem on-captive-portal-Skript via uci-defaults ausgefuehrt)
391  configure_free_network
392  # die nicht-wifi-Netzwerke übertragen
393  old_interfaces=$(uci_get "network.${old_name}.ifname")
394  # das Interface muss immer angegeben sein (oder "none")
395  uci set "network.${new_name}.ifname=${old_interfaces:-none}"
396  # alle wifi-Interfaces verschieben
397  find_all_uci_sections "wireless" "wifi-iface" "network=$old_name" | while read uci_prefix; do
398  uci set "${uci_prefix}.network=$new_name"
399  done
400  # fertig: wir ignorieren das Bridge-Attribute - es ist nicht mehr erforderlich (und selten noetig)
401  uci_delete "network.$old_name"
402  apply_changes network wireless
403 }
404 
405 
406 ## @fn remove_wifidog_alias_interface()
407 ## @brief Entferne ein Alias-Interface, das für das wifidog-Setup verwendet wurde.
408 ## @details Bis Version 0.4-5 wurde wifidog mit einem lokalen Alias-Interface konfiguriert, um
409 ## die Umlenkung von Paketen via REDIRECT zu ermöglichen.
410 remove_wifidog_alias_interface() {
411  local uci_prefix
412  find_all_uci_sections "network" "alias" "interface=free" | while read uci_prefix; do
413  uci_delete "$uci_prefix"
414  done
415  apply_changes network
416 }
417 
418 
419 ## @fn remove_opennet_ca_certificates_from_previous_location()
420 ## @brief Löschung alter CA-Dateien an nicht mehr verwendeten Orten.
421 ## @details Bis Version v0.5.1 wurden die CA-Zertifikate für die OpenVPN-Verbindungen
422 ## im openvpn-Verzeichnis neben den persönlichen Schlüsseln und Zertifikaten gespeichert.
423 ## Da diese Verzeichnisse jedoch von luci als zu erhaltender Bereich bei einem Upgrade
424 ## konfiguriert ist (luci.flash_keep.openvpn=/etc/openvpn), blieben diese Dateien bei einem
425 ## Upgrade der Firmware unverändert. Der Austausch eines CA-Zertifikats war somit nicht
426 ## möglich.
427 ## Mit der Verschiebung aller Opennet-Zertifikate an einen nicht-zu-sichernden Ort
428 ## (/etc/ssl/certs/opennet-initiative.de) können nun die alten CA-Zertifikate an ihrem ursprünglichen
429 ## Ort gelöscht werden.
430 ## Folgende Orte sind betroffen:
431 ## /etc/openvpn/opennet_user/opennet-ca.crt
432 ## /etc/openvpn/opennet_ugw/opennet-ca_ugws.crt
433 ## /etc/openvpn/opennet_vpntest/opennet-ca.crt
434 remove_opennet_ca_certificates_from_previous_location() {
435  rm -f /etc/openvpn/opennet_user/opennet-ca.crt
436  rm -f /etc/openvpn/opennet_ugw/opennet-ca_ugws.crt
437  rm -f /etc/openvpn/opennet_vpntest/opennet-ca.crt
438 }
439 
440 
441 ## @fn remove_openvpn_vpntest_keydir()
442 ## @brief Dieses Verzeichnis ist mindestens seit v0.5.2 nicht mehr in Nutzung.
443 remove_openvpn_vpntest_keydir() {
444  rm -rf /etc/openvpn/vpntest/
445 }
446 
447 
448 ## @fn remove_wifidog_config()
449 ## @brief Lösche die nicht mehr verwendete Konfiguration von "wifidog" und "on-wifidog".
450 ## @details Die Konfiguration enthält keine relevanten Inhalte mehr, die zu übertragen wären.
451 remove_wifidog_config() {
452  rm -f /etc/config/on-wifidog
453  uci_delete luci.flash_keep.wifidog
454  rm -f /etc/wifidog.conf
455 }
456 
457 
458 ## @fn enable_uhttpd_redirect()
459 ## @brief Aktiviere die automatische https-Weiterleitung
460 ## @details Bei einer Aktualisierung von v0.5.1 auf v0.5.2 fehlt diese Einstellung andernfalls, da
461 ## zuvor keine https-Unterstützung in der Firmware aktiviert war.
462 enable_uhttpd_redirect() {
463  local uci_key="uhttpd.main.redirect_https"
464  [ -n "$(uci_get "$uci_key")" ] && return 0
465  uci set "$uci_key=1"
466  uci commit uhttpd
467  reload_config
468 }
469 
470 
471 ## @fn guess_previously_used_modules()
472 ## @brief Versuche nach der Aktualisierung von einer Version vor v0.5.2 die zuvor verwendeten Module zu erraten.
473 ## @details Die Firmware-Versionen vor v0.5.2 enthielten alle Module vorinstalliert. Ab v0.5.2 werden Module bei
474 ## Bedarf nachinstalliert. Beim Übergang von Komplett- zu Bedarfsinstallation versuchen wir die vorherige
475 ## Nutzungsform zu erraten und die dazu passende Modulliste zu speichern.
476 guess_previously_used_modules() {
477  # falls bereits etwas in der uci-Sektion gespeichert wurde, ist keine Nachbereitung noetig
478  [ -n "$(uci -q show "on-core.modules")" ] && return 0
479  # Zweig anlegen
480  uci set "on-core.modules=modules"
481  # prüfe ob relevante Dateien vorhanden sind, die die jeweiligen Module benutzen würden
482  [ -e "/etc/openvpn/opennet_user/on_aps.crt" ] \
483  && uci_add_list "on-core.modules.installed" "on-openvpn"
484  [ -e "/etc/openvpn/opennet_ugw/on_aps.crt" ] \
485  && uci_add_list "on-core.modules.installed" "on-usergw"
486  [ -e "/etc/wifidog.conf" ] \
487  && uci_add_list "on-core.modules.installed" "on-captive-portal"
488  [ -e "/etc/xinetd.d/munin" ] \
489  && uci_add_list "on-core.modules.installed" "on-monitoring"
490  true
491 }
492 
493 
494 coerce_openvpn_comp_lzo
495 fix_passwd_broken_symlink
496 fix_rclocal_broken_symlink
497 migrate_uci_definition_changes
498 fix_firewall_reload
499 transfer_vpn_sort_criteria_and_autosearch
500 remove_tunnel_openvpn_settings
501 remove_obsolete_on_core_settings
502 remove_obsolete_usergw_settings
503 remove_usergw_openvpn_configs
504 remove_crontab_entries
505 rename_olsrd_port_to_port
506 remove_ntpclient_config
507 
508 # Bis Version 0.4-5 hiess die Opennet-Mesh-Firewall-Zone "opennet".
509 # Mit Version 0.5 wurde die Zone in "on_mesh" umbenannt.
510 rename_firewall_zone "opennet" "$ZONE_MESH"
511 
512 # mit Version 0.5.2 wird wifidog durch on-captive-portal ersetzt
513 move_wifidog_networks_to_captive_portal
514 remove_wifidog_alias_interface
515 # Bis Version 0.4-5 hieß die wifidog-Zone "free".
516 # Mit Version 0.5.2 wurde die Zone in "on_free" umbenannt.
517 # Da die alte Zone falsch konfiguriert war ("FORWARD=yes"), werfen wir sie lieber einfach weg.
518 delete_firewall_zone "free"
519 apply_changes firewall
520 
521 disable_unwanted_forward
522 move_mtu_fix_to_target_zone
523 
524 # Bis Version 0.4-5 wurden ins lokale Netz eingehende Pakete (z.B. Portweiterleitungen) via SNAT maskiert.
525 # siehe https://dev.on-i.de/ticket/73
526 uci_delete firewall.zone_local.masq
527 apply_changes firewall
528 
529 # Bis Version 0.4-5 hiess die lokale Zone "local" - bei barrier breaker heisst sie nun "lan"
530 rename_firewall_zone "local" "$ZONE_LOCAL"
531 
532 # Diese Aktion startet mit 10 Minuten Verzoegerung im Hintergrund, um vorher ein Empfangen der
533 # olsrd-Announcements zu ermoeglichen. Falls keine alten Gateway-Definitionen vorhanden sind,
534 # ist dies nicht noetig.
535 [ -n "$(uci_get on-openvpn.gateway)" ] && run_delayed_in_background 600 transfer_gateway_uci_settings
536 
537 remove_opennet_ca_certificates_from_previous_location
538 remove_openvpn_vpntest_keydir
539 # die Pruefung muss vor der Loeschung der wifidog-Konfiguration stattfinden
540 guess_previously_used_modules
541 remove_wifidog_config
542 enable_uhttpd_redirect
local key
Definition: core.sh:81
msg_info(message)
Informationen und Fehlermeldungen ins syslog schreiben.
Definition: core.sh:15
set eu on function print_services services log for dir in etc on services d var on services volatile d
Definition: services:13
done
Definition: core.sh:81