vnstat: import from packages, add myself as maintainer

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
Jo-Philipp Wich 2014-06-11 16:47:27 +02:00
parent 56fd1eaa78
commit 177bfef1c7
8 changed files with 299 additions and 0 deletions

109
net/vnstat/Makefile Normal file
View File

@ -0,0 +1,109 @@
#
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=vnstat
PKG_VERSION:=1.11
PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://humdi.net/vnstat
PKG_MD5SUM:=a5a113f9176cd61fb954f2ba297f5fdb
PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
PKG_INSTALL:=1
PKG_BUILD_DEPENDS:=libgd
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/vnstat/Default
SECTION:=net
CATEGORY:=Network
URL:=http://humdi.net/vnstat/
endef
define Package/vnstat
$(call Package/vnstat/Default)
TITLE:=Console-based network traffic monitor
endef
define Package/vnstat/description
vnStat is a network traffic monitor for Linux that keeps a log of daily
network traffic for the selected interface(s). vnStat isn't a packet
sniffer. The traffic information is analyzed from the /proc -filesystem,
so vnStat can be used without root permissions.
endef
define Package/vnstati
$(call Package/vnstat/Default)
DEPENDS+=vnstat +libgd
TITLE:=PNG image output support for vnStat
endef
define Package/vnstati/description
The purpose of vnstati is to provide image output support for statistics
collected using vnstat(1). However, the image file format is limited to
png. All basic outputs of vnStat are supported excluding live traffic
features. The image can be outputted either to a file or to standard
output.
endef
define Package/vnstat/conffiles
/etc/vnstat.conf
/etc/config/vnstat
endef
define Build/Compile/vnstat
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)"
endef
define Build/Compile/vnstati
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath-link,$(STAGING_DIR)/usr/lib" \
all
endef
define Build/Compile
$(call Build/Compile/vnstat)
$(call Build/Compile/vnstati)
endef
define Package/vnstat/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/vnstat $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/vnstatd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/vnstat.conf $(1)/etc/
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/vnstat.config $(1)/etc/config/vnstat
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/vnstat.init $(1)/etc/init.d/vnstat
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/vnstat.defaults $(1)/etc/uci-defaults/vnstat
endef
define Package/vnstati/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/vnstati $(1)/usr/bin/
endef
define Package/vnstat/postinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] || (. /etc/uci-defaults/vnstat) && rm -f /etc/uci-defaults/vnstat
exit 0
endef
$(eval $(call BuildPackage,vnstat))
$(eval $(call BuildPackage,vnstati))

View File

@ -0,0 +1,5 @@
config vnstat
list interface br-lan
# list interface eth0.1
# option remote http://example.org/vnstat/
# option symlink /www/vnstat

View File

@ -0,0 +1,13 @@
#!/bin/sh
wan="$(uci -P/var/state get network.wan.ifname)"
if [ -n "$wan" ]; then
uci -q batch <<-EOF >/dev/null
del_list vnstat.@vnstat[-1].interface=$wan
add_list vnstat.@vnstat[-1].interface=$wan
commit vnstat
EOF
fi
exit 0

View File

@ -0,0 +1,82 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2011 OpenWrt.org
START=99
vnstat_option() {
sed -ne "s/^[[:space:]]*$1[[:space:]]*['\"]\([^'\"]*\)['\"].*/\1/p" \
/etc/vnstat.conf
}
start() {
local lib="$(vnstat_option DatabaseDir)"
local pid="$(vnstat_option PidFile)"
[ -n "$lib" ] || {
echo "Error: No DatabaseDir set in vnstat.conf" >&2
exit 1
}
[ -n "$pid" ] || {
echo "Error: No PidFile set in vnstat.conf" >&2
exit 1
}
mkdir -p "$lib"
init_ifaces() {
local cfg="$1"
local url lnk
init_iface() {
local ifn="$1"
[ -n "$url" ] && {
local try=0
local max=3
local hostname="$(cat /proc/sys/kernel/hostname)"
while [ $((++try)) -le $max ]; do
if wget -q -O "$lib/$ifn" "$url/${hostname}_$ifn" 2>/dev/null && [ -e "$lib/$ifn" ]; then
logger -t "vnstat" "Downloaded backup for database $ifn"
break
else
logger -t "vnstat" "Download try $try/$max for database $ifn failed"
sleep 30
fi
done
}
/usr/bin/vnstat -u -i "$ifn" >/dev/null
[ -n "$lnk" ] && {
mkdir -p "$lnk"
[ -L "$lnk/$ifn" ] || ln -s "$lib/$ifn" "$lnk/$ifn"
}
}
config_get url "$cfg" remote
config_get lnk "$cfg" symlink
config_list_foreach "$cfg" interface init_iface
return 1
}
config_load vnstat
config_foreach init_ifaces vnstat
SERVICE_PID_FILE="${pid}"
service_start /usr/sbin/vnstatd -d
}
stop() {
local pid="$(vnstat_option PidFile)"
[ -n "$pid" ] || {
echo "Error: No PidFile set in vnstat.conf" >&2
exit 1
}
SERVICE_PID_FILE="${pid}"
service_stop /usr/sbin/vnstatd
}

View File

@ -0,0 +1,19 @@
--- a/cfg/vnstat.conf
+++ b/cfg/vnstat.conf
@@ -72,13 +72,13 @@ TrafficlessDays 1
##
# how often (in seconds) interface data is updated
-UpdateInterval 30
+UpdateInterval 60
# how often (in seconds) interface status changes are checked
-PollInterval 5
+PollInterval 30
# how often (in minutes) data is saved to file
-SaveInterval 5
+SaveInterval 30
# how often (in minutes) data is saved when all interface are offline
OfflineSaveInterval 30

View File

@ -0,0 +1,35 @@
--- a/Makefile
+++ b/Makefile
@@ -54,11 +54,11 @@ install:
# install everything else
install -d -m 755 $(BIN) $(SBIN) $(MAN)/man1 $(MAN)/man5 $(DESTDIR)/var/lib/vnstat
- install -s -m 755 src/vnstat $(BIN)
- install -s -m 755 src/vnstatd $(SBIN)
+ install -m 755 src/vnstat $(BIN)
+ install -m 755 src/vnstatd $(SBIN)
@if [ -f "src/vnstati" ]; \
- then echo install -s -m 755 src/vnstati $(BIN); \
- install -s -m 755 src/vnstati $(BIN); \
+ then echo install -m 755 src/vnstati $(BIN); \
+ install -m 755 src/vnstati $(BIN); \
fi
# update man pages, gzip it if previous version was done so
@@ -127,12 +127,12 @@ bsdinstall:
# install binaries
install -d -m 755 $(DESTDIR)/var/db/vnstat
- install -s -m 755 src/vnstat $(BIN_BSD)
- install -s -m 755 src/vnstatd $(SBIN_BSD)
+ install -m 755 src/vnstat $(BIN_BSD)
+ install -m 755 src/vnstatd $(SBIN_BSD)
@if [ -f "src/vnstati" ]; \
- then echo install -s -m 755 src/vnstati $(BIN_BSD); \
- install -s -m 755 src/vnstati $(BIN_BSD); \
+ then echo install -m 755 src/vnstati $(BIN_BSD); \
+ install -m 755 src/vnstati $(BIN_BSD); \
fi
# install default config if such doesn't exist

View File

@ -0,0 +1,15 @@
--- a/Makefile
+++ b/Makefile
@@ -22,12 +22,6 @@ clean:
install:
@echo "Installing vnStat..."
-# check that system is really Linux
- @if [ `uname` != "Linux" ]; \
- then echo "This isn't a Linux system. Maybe 'make bsdinstall' is what you need?"; \
- false; \
- fi
-
# check that there's something to install
@if [ ! -f "src/vnstat" ] || [ ! -f "src/vnstatd" ]; \
then echo "Nothing to install, run make first."; \

View File

@ -0,0 +1,21 @@
--- a/Makefile
+++ b/Makefile
@@ -43,7 +43,8 @@ install:
# install default config if such doesn't exist
@if [ ! -f "$(DESTDIR)/etc/vnstat.conf" ]; \
then echo "Installing config to $(DESTDIR)/etc/vnstat.conf"; \
- install -D -m 644 cfg/vnstat.conf $(DESTDIR)/etc/vnstat.conf; \
+ install -d -m 755 $(DESTDIR)/etc; \
+ install -m 644 cfg/vnstat.conf $(DESTDIR)/etc/vnstat.conf; \
fi
# install everything else
@@ -63,7 +64,7 @@ install:
then echo install -m 644 man/vnstati.1 $(MAN)/man1; \
install -m 644 man/vnstati.1 $(MAN)/man1; \
fi
-
+
@if [ -f $(MAN)/man1/vnstat.1.gz ]; \
then gzip -f9 $(MAN)/man1/vnstat.1; \
gzip -f9 $(MAN)/man1/vnstatd.1; \