procd: Add wrapper for uci_validate_section()
[openwrt/openwrt.git] / package / utils / busybox / files / cron
index fa368098c29e4195502f6b7e934040623f2b8dec..ca04a0c1707e5880e213d71d60402bbb9ef2720e 100755 (executable)
@@ -5,16 +5,36 @@ START=50
 
 USE_PROCD=1
 PROG=/usr/sbin/crond
-NAME=crond
 
-start_service () {
+validate_cron_section() {
+       uci_validate_section system system "${1}" \
+               'cronloglevel:uinteger'
+}
+
+start_service() {
        [ -z "$(ls /etc/crontabs/)" ] && return 1
 
-       loglevel=$(uci_get "system.@system[0].cronloglevel")
+       loglevel="$(uci_get "system.@system[0].cronloglevel")"
+
+       [ -z "${loglevel}" ] || {
+               /sbin/validate_data uinteger "${loglevel}" 2>/dev/null
+               [ "$?" -eq 0 ] || {
+                       echo "validation failed"
+                       return 1
+               }
+       }
+
        mkdir -p /var/spool/cron
        ln -s /etc/crontabs /var/spool/cron/ 2>/dev/null
 
        procd_open_instance
-       procd_set_param command "$PROG" -f -c /etc/crontabs -l ${loglevel:-5}
+       procd_set_param command "$PROG" -f -c /etc/crontabs -l "${loglevel:-5}"
+       for crontab in /etc/crontabs/*; do
+                procd_set_param file "$crontab"
+       done
        procd_close_instance
 }
+
+service_triggers() {
+       procd_add_validation validate_cron_section
+}