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)
13DEFAULT_ENABLED_PACKAGES="on-olsr2"
14
15
16# Die Einstellungen "use_olsrd_dns" und "use_olsrd_ntp" sind mit v0.5 hinzugekommen.
17add_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
30disable_cron_logging() {
31 uci set "system.@system[0].cronloglevel=9"
32 apply_changes system
33}
34
35
36# verschiedene dnsmasq-Einstellungen
37configure_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
48add_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
78set_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
88enable_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" || return 0
91 apply_changes firewall
92}
93
94
95enable_default_modules() {
96 local module
97 # prepare the uci settings for modules
99 for module in $DEFAULT_ENABLED_PACKAGES; do
100 enable_on_module "$module"
101 done
102}
103
104
105reduce_uhttpd_requests() {
106 if uci show uhttpd >/dev/null 2>&1 && [ "$(get_memory_size)" -le 32 ]; then
107 uci set "uhttpd.main.max_requests=1"
108 uci commit uhttpd
109 reload_config
110 fi
111}
112
113
114add_default_settings
115disable_cron_logging
116configure_dnsmasq
117add_crontab_entries
118set_timezone_berlin
119enable_firewall_reload_trigger
120enable_default_modules
121reduce_uhttpd_requests
done
Definition: core.sh:85
save_on_modules_list()
Speichere die aktuelle Liste der installierten opennet-Module in der uci-Konfiguration.
Definition: modules.sh:67
enable_on_module(module)
Aktiviere ein Opennet-Modul.
Definition: modules.sh:17
create_uci_section_if_missing()
Prüfe, ob eine definierte UCI-Sektion existiert und lege sie andernfalls an.
Definition: uci.sh:58
set eu grep root::etc shadow exit if command v chpasswd dev null
Definition: on-password:12