diff --git a/net/darkstat/Makefile b/net/darkstat/Makefile index f8ef04a25009fc..b8394246af7a68 100644 --- a/net/darkstat/Makefile +++ b/net/darkstat/Makefile @@ -6,17 +6,18 @@ include $(TOPDIR)/rules.mk PKG_NAME:=darkstat -PKG_VERSION:=3.0.719 -PKG_RELEASE:=6 +PKG_VERSION:=3.0.722 +PKG_RELEASE:=1 -PKG_MAINTAINER:=Jean-Michel Lacroix +PKG_MAINTAINER:=Paul Doran PKG_LICENSE:=GPL-2.0 BSD-ISC + PKG_LICENSE_FILES:=COPYING.GPL LICENSE -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=https://unix4lyfe.org/darkstat -PKG_HASH:=aeaf909585f7f43dc032a75328fdb62114e58405b06a92a13c0d3653236dedd7 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/emikulic/darkstat/archive/refs/tags/$(PKG_VERSION).tar.gz? +PKG_HASH:=5c8e66d4c478b6d7e58f4c842823a09125509bf6851017ff70e32b32ce95b01b PKG_INSTALL:=1 @@ -31,9 +32,9 @@ define Package/darkstat endef define Package/darkstat/description -darkstat is a packet sniffer that runs as a background process on a cable/DSL -router, gathers all sorts of statistics about network usage, and serves them -over HTTP. + darkstat is a packet sniffer that runs as a background process on an OpenWrt + router. It captures multiple statistics about network usage, and serves them + over HTTP. endef define Package/darkstat/conffiles @@ -49,9 +50,20 @@ CONFIGURE_VARS += \ ac_cv_search_strlcpy=no \ ac_cv_search_strlcat=no +define Build/Configure + ( cd $(PKG_BUILD_DIR) && autoreconf -fi ) + $(call Build/Configure/Default) +endef + define Build/Compile - $(HOSTCC) $(PKG_BUILD_DIR)/static/c-ify.c \ - -o $(PKG_BUILD_DIR)/c-ify + $(HOSTCC) $(HOST_CFLAGS) $(PKG_BUILD_DIR)/static/c-ify.c \ + -o $(PKG_BUILD_DIR)/c-ify $(HOST_LDFLAGS) + $(HOSTCC) $(HOST_CFLAGS) $(PKG_BUILD_DIR)/static/hex-ify.c \ + -o $(PKG_BUILD_DIR)/hex-ify $(HOST_LDFLAGS) + ( cd $(PKG_BUILD_DIR) && \ + ./c-ify style_css stylecss.h && \ + ./c-ify graph_js graphjs.h && \ + ./hex-ify favicon_png favicon.h ) $(call Build/Compile/Default) endef diff --git a/net/darkstat/files/darkstat.config b/net/darkstat/files/darkstat.config index ebe5718df735a3..3522fd2f997756 100644 --- a/net/darkstat/files/darkstat.config +++ b/net/darkstat/files/darkstat.config @@ -16,6 +16,6 @@ config darkstat # option ports_max '60' # option ports_keep '30' # option highest_port '65534' -# option export_file 'darkstat_export.log' -# option import_file 'darkstat_export.log' -# option daylog_file 'darkstat_daylog.log' + option export_file 'darkstat_export.log' + option import_file 'darkstat_export.log' + option daylog_file 'darkstat_daylog.log' diff --git a/net/darkstat/files/darkstat.init b/net/darkstat/files/darkstat.init index 52332201273642..1cb34c6ff274f8 100755 --- a/net/darkstat/files/darkstat.init +++ b/net/darkstat/files/darkstat.init @@ -29,21 +29,21 @@ export_bool () { } set_config_string(){ - mkdir -p $RUN_D + mkdir -p "$RUN_D" + chown "$USER:$GROUP" "$RUN_D" . /lib/functions/network.sh config_load $CONFIGNAME config_foreach build_config_string darkstat } build_config_string() { - local cfg="$1" + local cfg="$1" config_get interface $cfg interface - network_get_device ifname "$interface" + network_get_device ifname "$interface" CONFIGSTR=" -i $ifname " export_bool syslog $cfg "--syslog" export_bool verbose $cfg "--verbose" - # We need the --no-daemon parameter as with PROCD the process has to run in the background - CONFIGSTR="$CONFIGSTR--no-daemon " + CONFIGSTR="$CONFIGSTR--no-daemon " # required for procd; keep process in foreground export_bool no_promisc $cfg "--no-promisc" export_bool no_dns $cfg "--no-dns" export_bool no_macs $cfg "--no-macs" @@ -58,6 +58,10 @@ build_config_string() { config_get hosts_max $cfg hosts_max CONFIGSTR="$CONFIGSTR${hosts_max:+--hosts-max "$hosts_max"} " config_get hosts_keep $cfg hosts_keep + CONFIGSTR="$CONFIGSTR${hosts_keep:+--hosts-keep "$hosts_keep"} " + config_get ports_max $cfg ports_max + CONFIGSTR="$CONFIGSTR${ports_max:+--ports-max "$ports_max"} " + config_get ports_keep $cfg ports_keep CONFIGSTR="$CONFIGSTR${ports_keep:+--ports-keep "$ports_keep"} " config_get highest_port $cfg highest_port CONFIGSTR="$CONFIGSTR${highest_port:+--highest-port "$highest_port"} " diff --git a/net/darkstat/patches/100-do-not-use-NI_IDN.patch b/net/darkstat/patches/100-do-not-use-NI_IDN.patch index 7f7eecdb57019d..6daf8e2099fce9 100644 --- a/net/darkstat/patches/100-do-not-use-NI_IDN.patch +++ b/net/darkstat/patches/100-do-not-use-NI_IDN.patch @@ -1,6 +1,12 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jean-Michel Lacroix +Date: Mon, 1 Jan 2018 00:00:00 +0000 +Subject: [PATCH] darkstat: do not use NI_IDN + +--- --- a/dns.c +++ b/dns.c -@@ -347,9 +347,6 @@ dns_main(void) +@@ -346,9 +346,6 @@ dns_main(void) reply.addr = ip; flags = NI_NAMEREQD; diff --git a/net/darkstat/patches/101-allow-multiple-local-interfaces.patch b/net/darkstat/patches/101-allow-multiple-local-interfaces.patch deleted file mode 100644 index 7f2e00f875edd0..00000000000000 --- a/net/darkstat/patches/101-allow-multiple-local-interfaces.patch +++ /dev/null @@ -1,70 +0,0 @@ ---- a/acct.c -+++ b/acct.c -@@ -37,8 +37,9 @@ - - uint64_t acct_total_packets = 0, acct_total_bytes = 0; - -+#define LOCAL_NET_MAX 10 - static int using_localnet4 = 0, using_localnet6 = 0; --static struct addr localnet4, localmask4, localnet6, localmask6; -+static struct addr localnet4[LOCAL_NET_MAX], localmask4[LOCAL_NET_MAX], localnet6[LOCAL_NET_MAX], localmask6[LOCAL_NET_MAX]; - - /* Parse the net/mask specification into two IPs or die trying. */ - void -@@ -120,13 +121,19 @@ acct_init_localnet(const char *spec) - /* Register the correct netmask and calculate the correct net. */ - addr_mask(&localnet, &localmask); - if (localnet.family == IPv6) { -- using_localnet6 = 1; -- localnet6 = localnet; -- localmask6 = localmask; -+ if(using_localnet6 >= LOCAL_NET_MAX){ -+ errx(1, "Exceeded maximum IPv6 local networks"); -+ } -+ localnet6[using_localnet6] = localnet; -+ localmask6[using_localnet6] = localmask; -+ using_localnet6++; - } else { -- using_localnet4 = 1; -- localnet4 = localnet; -- localmask4 = localmask; -+ if(using_localnet4 >= LOCAL_NET_MAX){ -+ errx(1, "Exceeded maximum IPv4 local networks"); -+ } -+ localnet4[using_localnet4] = localnet; -+ localmask4[using_localnet4] = localmask; -+ using_localnet4++; - } - - verbosef("local network address: %s", addr_to_str(&localnet)); -@@ -138,11 +145,15 @@ static int addr_is_local(const struct ad - if (is_localip(a, local_ips)) - return 1; - if (a->family == IPv4 && using_localnet4) { -- if (addr_inside(a, &localnet4, &localmask4)) -- return 1; -+ for (int i=0; i < using_localnet4; i++){ -+ if (addr_inside(a, &localnet4[i], &localmask4[i])) -+ return 1; -+ } - } else if (a->family == IPv6 && using_localnet6) { -- if (addr_inside(a, &localnet6, &localmask6)) -- return 1; -+ for (int i=0; i < using_localnet6; i++){ -+ if (addr_inside(a, &localnet6[i], &localmask6[i])) -+ return 1; -+ } - } - return 0; - } ---- a/darkstat.c -+++ b/darkstat.c -@@ -193,7 +193,7 @@ static struct cmdline_arg cmdline_args[] - {"-r", "capfile", cb_capfile, 0}, - {"-p", "port", cb_port, 0}, - {"-b", "bindaddr", cb_bindaddr, -1}, -- {"-l", "network/netmask", cb_local, 0}, -+ {"-l", "network/netmask", cb_local, -1}, - {"--base", "path", cb_base, 0}, - {"--local-only", NULL, cb_local_only, 0}, - {"--snaplen", "bytes", cb_snaplen, 0}, diff --git a/net/darkstat/test-version.sh b/net/darkstat/test-version.sh new file mode 100755 index 00000000000000..2b273e2ddf5969 --- /dev/null +++ b/net/darkstat/test-version.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# darkstat does not implement a --version flag +exit 0