#!/bin/sh /etc/rc.common # Copyright (C) 2014 OpenWrt.org START=10 USE_PROCD=1 logger() { command logger -t system -p $1 "$2" } validate_system_section() { uci_validate_section system system "${1}" \ 'hostname:string:OpenWrt' \ 'conloglevel:uinteger' \ 'buffersize:uinteger' \ 'timezone:string:UTC' \ 'zonename:string' } system_config() { local cfg="$1" local hostname conloglevel buffersize timezone zonename validate_system_section "${1}" || { echo "validation failed" return 1 } if [ "$hostname" != "$(cat /proc/sys/kernel/hostname)" ]; then logger info "set new hostname $hostname" echo "$hostname" > /proc/sys/kernel/hostname pidof uhttpd > /dev/null && /etc/init.d/uhttpd restart pidof miniupnpd > /dev/null && /etc/init.d/miniupnpd reload # procd restart udhcpc udhcpc_pid=$(pidof udhcpc) [ -n "$udhcpc_pid" ] && kill $udhcpc_pid fi [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize} echo "$timezone" > /tmp/TZ [ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && ln -s "/usr/share/zoneinfo/$zonename" /tmp/localtime # apply timezone to kernel date -k } led_config() { config_get disabled "$1" disabled 0 config_get sysfs "$1" sysfs [ -e /sys/class/leds/"$sysfs"/suspended ] && [ "$(cat /sys/class/leds/"$sysfs"/suspended)" != "$disabled" ] && { echo "$disabled" >/sys/class/leds/"$sysfs"/suspended } config_get trigger "$1" trigger [ "$trigger" = "wifi" ] && { config_get disableLeds "$1" disableLeds 0 echo -n "$disableLeds" >/sys/class/leds/"$sysfs"/disableLeds } } reload_service() { config_load system config_foreach system_config system config_foreach led_config led } service_triggers() { procd_add_reload_trigger "system" procd_add_validation validate_system_section } start_service() { reload_service }