vnstat.init (1871B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2008-2011 OpenWrt.org 3 4 START=99 5 6 vnstat_option() { 7 sed -ne "s/^[[:space:]]*$1[[:space:]]*['\"]\([^'\"]*\)['\"].*/\1/p" \ 8 /etc/vnstat.conf 9 } 10 11 start() { 12 local lib="$(vnstat_option DatabaseDir)" 13 local pid="$(vnstat_option PidFile)" 14 15 [ -n "$lib" ] || { 16 echo "Error: No DatabaseDir set in vnstat.conf" >&2 17 exit 1 18 } 19 20 [ -n "$pid" ] || { 21 echo "Error: No PidFile set in vnstat.conf" >&2 22 exit 1 23 } 24 25 mkdir -p "$lib" 26 27 init_ifaces() { 28 local cfg="$1" 29 local url lnk 30 31 init_iface() { 32 local ifn="$1" 33 34 if [ -n "$url" ]; then 35 local try=0 36 local max=3 37 local hostname="$(cat /proc/sys/kernel/hostname)" 38 39 while [ $((++try)) -le $max ]; do 40 if wget -q -O "$lib/$ifn" "$url/${hostname}_$ifn" 2>/dev/null && [ -e "$lib/$ifn" ]; then 41 logger -t "vnstat" "Downloaded backup for database $ifn" 42 break 43 else 44 logger -t "vnstat" "Download try $try/$max for database $ifn failed" 45 sleep 30 46 fi 47 done 48 elif [ -n "$backup_dir" ]; then 49 if cp -f "$backup_dir/$ifn" "$lib/" &>/dev/null; then 50 logger -t "vnstat" "Restored backup for database $ifn" 51 else 52 logger -t "vnstat" "Restore of backup for database $ifn failed" 53 fi 54 fi 55 56 /usr/bin/vnstat -u -i "$ifn" >/dev/null 57 58 [ -n "$lnk" ] && { 59 mkdir -p "$lnk" 60 [ -L "$lnk/$ifn" ] || ln -s "$lib/$ifn" "$lnk/$ifn" 61 } 62 } 63 64 config_get url "$cfg" remote 65 config_get lnk "$cfg" symlink 66 config_get backup_dir "$cfg" backup_dir 67 config_list_foreach "$cfg" interface init_iface 68 69 return 1 70 } 71 72 config_load vnstat 73 config_foreach init_ifaces vnstat 74 75 SERVICE_PID_FILE="${pid}" 76 service_start /usr/sbin/vnstatd -d 77 } 78 79 stop() { 80 local pid="$(vnstat_option PidFile)" 81 82 [ -n "$pid" ] || { 83 echo "Error: No PidFile set in vnstat.conf" >&2 84 exit 1 85 } 86 87 SERVICE_PID_FILE="${pid}" 88 service_stop /usr/sbin/vnstatd 89 }