You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.8 KiB
Bash

#!/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
}