Opennet Firmware
on-core-init
gehe zur Dokumentation dieser Datei
1 #!/bin/sh
2 #
3 # Dieses Skript wird nur ein einziges Mal nach einem Upgrade oder der Erstinstallation ausgefuehrt:
4 # http://wiki.openwrt.org/doc/uci#defaults
5 #
6 
7 
8 # shellcheck source=opennet/packages/on-core/files/usr/lib/opennet/on-helper.sh
9 . "${IPKG_INSTROOT:-}/usr/lib/opennet/on-helper.sh"
10 
11 
12 # packages that should be enabled by default (applied only during the first initialization)
13 DEFAULT_ENABLED_PACKAGES="on-olsr2"
14 
15 
16 # Die Einstellungen "use_olsrd_dns" und "use_olsrd_ntp" sind mit v0.5 hinzugekommen.
17 add_default_settings() {
18  prepare_on_uci_settings
19  # erzeuge die services-Node, falls noetig
20  for setting in use_olsrd_dns use_olsrd_ntp; do
21  [ -n "$(uci_get "on-core.settings.$setting")" ] && continue
22  uci set "on-core.settings.$setting=1"
23  done
24  apply_changes on-core
25 }
26 
27 
28 # cron-Logging abschalten (bis auf Fehlermeldungen)
29 # siehe http://wiki.openwrt.org/doc/uci/system#system
30 disable_cron_logging() {
31  uci set "system.@system[0].cronloglevel=9"
32  apply_changes system
33 }
34 
35 
36 # verschiedene dnsmasq-Einstellungen
37 configure_dnsmasq() {
38  # die Namensaufloesung im Opennet generiert auch 192.168er-Adressen - diese werden durch "rebind_protection" blockiert
39  uci set "dhcp.@dnsmasq[0].rebind_protection=0"
40  # keine Speicherung von DHCP leases
41  uci set "dhcp.@dnsmasq[0].quietdhcp=1"
42  # erlaube reverse lookup von 192er und 10er privaten IP Adressen
43  uci set "dhcp.@dnsmasq[0].boguspriv=0"
44  apply_changes dhcp
45 }
46 
47 
48 add_crontab_entries() {
49  local crontab_file=/etc/crontabs/root
50  local cron_prefix="[ -x /usr/bin/on-function ] && /usr/bin/on-function schedule_parts"
51  local cron_suffix="2>&1 | logger -t cron-error"
52  local random_hourly_minute=
53  local random_daily_minute=
54  # Erzeuge unterschiedliche Minuten-Werte (die nicht auf 0 oder 5 enden) für stündliche und
55  # tägliche Cron-Jobs.
56  while [ -z "$random_hourly_minute" ] \
57  || echo "$random_hourly_minute" | grep -q "[05]$"; do
58  random_hourly_minute=$(get_random 60)
59  done
60  while [ -z "$random_daily_minute" ] \
61  || [ "$random_hourly_minute" = "$random_daily_minute" ] \
62  || echo "$random_daily_minute" | grep -q "[05]$"; do
63  random_daily_minute=$(get_random 60)
64  done
65  line_in_file "$crontab_file" '^[^#].*\(schedule\|run\)_parts.*/etc/cron\.minutely' \
66  "* * * * * $cron_prefix /etc/cron.minutely '$cron_suffix' && /usr/bin/on-function run_with_cron_lock run_scheduled_tasks"
67  line_in_file "$crontab_file" '^[^#].*\(schedule\|run\)_parts.*/etc/cron\.5mins' \
68  "*/5 * * * * $cron_prefix /etc/cron.5mins '$cron_suffix'"
69  line_in_file "$crontab_file" '^[^#].*\(schedule\|run\)_parts.*/etc/cron\.hourly' \
70  "$random_hourly_minute * * * * $cron_prefix /etc/cron.hourly '$cron_suffix'"
71  line_in_file "$crontab_file" '^[^#].*\(schedule\|run\)_parts.*/etc/cron\.daily' \
72  "$random_daily_minute $(( $(get_random 3) + 3)) * * * $cron_prefix /etc/cron.daily '$cron_suffix'"
73  # es ist schwer zu pruefen, ob die Datei sich geaendert hat - also einfach neustarten
74  /etc/init.d/cron restart
75 }
76 
77 
78 set_timezone_berlin() {
79  # "zonename" ist bereits gesetzt? Wert beibehalten ...
80  [ -n "$(uci_get "system.@system[0].zonename")" ] && return 0
81  # Zone und Verschiebung setzen
82  uci set "system.@system[0].zonename=Europe/Berlin"
83  uci set "system.@system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3"
84  uci commit system
85 }
86 
87 
88 enable_firewall_reload_trigger() {
89  local script_path="/usr/lib/opennet/events/on-firewall-reload"
90  create_uci_section_if_missing "firewall" "include" "path=$script_path" "reload=1" || return 0
91  apply_changes firewall
92 }
93 
94 
95 enable_default_modules() {
96  local module
97  [ -n "$(uci_get "on-core.modules")" ] && return 0
98  # prepare the uci settings for modules
99  save_on_modules_list
100  for module in $DEFAULT_ENABLED_PACKAGES; do
101  enable_on_module "$module"
102  done
103 }
104 
105 
106 add_default_settings
107 disable_cron_logging
108 configure_dnsmasq
109 add_crontab_entries
110 set_timezone_berlin
111 enable_firewall_reload_trigger
112 enable_default_modules
enable_on_module(module)
Aktiviere ein Opennet-Modul.
Definition: modules.sh:13
create_uci_section_if_missing()
Prüfe, ob eine definierte UCI-Sektion existiert und lege sie andernfalls an.
Definition: uci.sh:58
done
Definition: core.sh:85