new package: vnstat (#19323)

vnstatd needs to be run as root since it reads /sys/class/net.
vnstat also needs root since it reads databse from vnstatd.
vnstati pulls in libgd as dependency which depends on x11 libs

- service script + service finish
- vnstati subpackage

closes #10143
This commit is contained in:
Dennis 2024-02-22 17:36:24 +03:00 committed by GitHub
parent 4b2fe181a9
commit 3d8f09c2f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 97 additions and 0 deletions

View File

@ -0,0 +1,19 @@
TERMUX_PKG_HOMEPAGE=https://github.com/vergoh/vnstat
TERMUX_PKG_DESCRIPTION="A console-based network traffic monitor"
TERMUX_PKG_LICENSE="GPL-2.0"
TERMUX_PKG_MAINTAINER="@Denzy7"
TERMUX_PKG_VERSION=2.12
TERMUX_PKG_SRCURL=https://github.com/vergoh/vnstat/releases/download/v${TERMUX_PKG_VERSION}/vnstat-${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=b7386b12fc1fc6f47fab31f208b12eda61862e63e229e84e95a6fa80406d2852
TERMUX_PKG_DEPENDS="libsqlite"
TERMUX_PKG_SERVICE_SCRIPT=("vnstat" "exec su -c \"PATH=\$PATH $TERMUX_PREFIX/bin/vnstatd -n 2>&1\"")
# from docker root package: https://github.com/termux/termux-packages/blob/master/root-packages/docker/build.sh
termux_step_post_make_install() {
mkdir -p $TERMUX_PREFIX/var/service/vnstat/
{
echo "#!$TERMUX_PREFIX/bin/sh"
echo "su -c pkill vnstatd"
} > $TERMUX_PREFIX/var/service/vnstat/finish
chmod u+x $TERMUX_PREFIX/var/service/vnstat/finish
}

View File

@ -0,0 +1,26 @@
diff --git a/cfg/vnstat.conf b/cfg/vnstat.conf
index f68cad4..306aefc 100644
--- a/cfg/vnstat.conf
+++ b/cfg/vnstat.conf
@@ -8,7 +8,7 @@
;Interface ""
# location of the database directory
-;DatabaseDir "/var/lib/vnstat"
+;DatabaseDir "@TERMUX_PREFIX@/var/lib/vnstat"
# locale (LC_ALL) ("-" = use system locale)
;Locale "-"
@@ -168,10 +168,10 @@
;UpdateFileOwner 1
# file used for logging if UseLogging is set to 1
-;LogFile "/var/log/vnstat/vnstat.log"
+;LogFile "@TERMUX_PREFIX@/var/log/vnstat/vnstat.log"
# file used as daemon pid / lock file
-;PidFile "/var/run/vnstat/vnstat.pid"
+;PidFile "@TERMUX_PREFIX@/var/run/vnstat/vnstat.pid"
# 1 = 64-bit, 0 = 32-bit, -1 = old style logic, -2 = automatic detection
;64bitInterfaceCounters -2

View File

@ -0,0 +1,24 @@
diff --git a/src/common.h b/src/common.h
index c528a5d..8e782c0 100644
--- a/src/common.h
+++ b/src/common.h
@@ -64,7 +64,7 @@ and most can be changed later from the config file.
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
#define DATABASEDIR "/var/db/vnstat"
#else
-#define DATABASEDIR "/var/lib/vnstat"
+#define DATABASEDIR "@TERMUX_PREFIX@/var/lib/vnstat"
#endif
#endif
@@ -259,8 +259,8 @@ and most can be changed later from the config file.
#define USELOGGING 2
#define CREATEDIRS 1
#define UPDATEFILEOWNER 1
-#define LOGFILE "/var/log/vnstat/vnstat.log"
-#define PIDFILE "/var/run/vnstat/vnstat.pid"
+#define LOGFILE "@TERMUX_PREFIX@/var/log/vnstat/vnstat.log"
+#define PIDFILE "@TERMUX_PREFIX@/var/run/vnstat/vnstat.pid"
#define IS64BIT -2
#define WALDB 0
#define WALDBCHECKPOINTINTERVALMINS 240

View File

@ -0,0 +1,25 @@
diff --git a/src/daemon.c b/src/daemon.c
index 98c9f5b..46dd2ea 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -11,6 +11,20 @@
#include "id.h"
#include "daemon.h"
+/*
+ * Bionic implemention from initial aosp commit :)))
+ * https://android.googlesource.com/platform/bionic/+/a799b53f10e5a6fd51fef4436cfb7ec99836a516/libc/unistd/getdtablesize.c
+ */
+#include <sys/resource.h>
+int getdtablesize()
+{
+ struct rlimit r;
+ if (getrlimit(RLIMIT_NOFILE, &r) < 0) {
+ return sysconf(_SC_OPEN_MAX);
+ }
+ return r.rlim_cur;
+}
+
void daemonize(void)
{
int i;

View File

@ -0,0 +1,3 @@
TERMUX_SUBPKG_DESCRIPTION="Image output for vnstat"
TERMUX_SUBPKG_DEPENDS="libgd"
TERMUX_SUBPKG_INCLUDE="bin/vnstati"