From 177bfef1c7690486c9dd82dabbff95614b7bc436 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 11 Jun 2014 16:47:27 +0200 Subject: [PATCH] vnstat: import from packages, add myself as maintainer Signed-off-by: Jo-Philipp Wich --- net/vnstat/Makefile | 109 ++++++++++++++++++ net/vnstat/files/vnstat.config | 5 + net/vnstat/files/vnstat.defaults | 13 +++ net/vnstat/files/vnstat.init | 82 +++++++++++++ net/vnstat/patches/001-conf.patch | 19 +++ net/vnstat/patches/002-no_install_strip.patch | 35 ++++++ net/vnstat/patches/003-no_install_uname.patch | 15 +++ net/vnstat/patches/004-install_bsd_fix.patch | 21 ++++ 8 files changed, 299 insertions(+) create mode 100644 net/vnstat/Makefile create mode 100644 net/vnstat/files/vnstat.config create mode 100644 net/vnstat/files/vnstat.defaults create mode 100644 net/vnstat/files/vnstat.init create mode 100644 net/vnstat/patches/001-conf.patch create mode 100644 net/vnstat/patches/002-no_install_strip.patch create mode 100644 net/vnstat/patches/003-no_install_uname.patch create mode 100644 net/vnstat/patches/004-install_bsd_fix.patch diff --git a/net/vnstat/Makefile b/net/vnstat/Makefile new file mode 100644 index 000000000..e90d857e5 --- /dev/null +++ b/net/vnstat/Makefile @@ -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 + +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)) diff --git a/net/vnstat/files/vnstat.config b/net/vnstat/files/vnstat.config new file mode 100644 index 000000000..9da71ed7f --- /dev/null +++ b/net/vnstat/files/vnstat.config @@ -0,0 +1,5 @@ +config vnstat + list interface br-lan +# list interface eth0.1 +# option remote http://example.org/vnstat/ +# option symlink /www/vnstat diff --git a/net/vnstat/files/vnstat.defaults b/net/vnstat/files/vnstat.defaults new file mode 100644 index 000000000..e013b8e41 --- /dev/null +++ b/net/vnstat/files/vnstat.defaults @@ -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 diff --git a/net/vnstat/files/vnstat.init b/net/vnstat/files/vnstat.init new file mode 100644 index 000000000..802e60b06 --- /dev/null +++ b/net/vnstat/files/vnstat.init @@ -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 +} diff --git a/net/vnstat/patches/001-conf.patch b/net/vnstat/patches/001-conf.patch new file mode 100644 index 000000000..d41ef00a3 --- /dev/null +++ b/net/vnstat/patches/001-conf.patch @@ -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 diff --git a/net/vnstat/patches/002-no_install_strip.patch b/net/vnstat/patches/002-no_install_strip.patch new file mode 100644 index 000000000..2a0ca8592 --- /dev/null +++ b/net/vnstat/patches/002-no_install_strip.patch @@ -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 diff --git a/net/vnstat/patches/003-no_install_uname.patch b/net/vnstat/patches/003-no_install_uname.patch new file mode 100644 index 000000000..2c7859b16 --- /dev/null +++ b/net/vnstat/patches/003-no_install_uname.patch @@ -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."; \ diff --git a/net/vnstat/patches/004-install_bsd_fix.patch b/net/vnstat/patches/004-install_bsd_fix.patch new file mode 100644 index 000000000..6b2a79273 --- /dev/null +++ b/net/vnstat/patches/004-install_bsd_fix.patch @@ -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; \