aboutsummaryrefslogtreecommitdiff
path: root/net-mgmt/p0f
diff options
context:
space:
mode:
authorKurt Jaeger <pi@FreeBSD.org>2019-09-20 18:44:38 +0000
committerKurt Jaeger <pi@FreeBSD.org>2019-09-20 18:44:38 +0000
commitbe97957b6c7b63cdecf9af0c371703610363cb3d (patch)
tree59a40d2eb4f14e553be376bf466d30316a5b8fbc /net-mgmt/p0f
parent1bd27d12def9b354319e53ee39969e205aaf4a02 (diff)
downloadports-be97957b6c7b63cdecf9af0c371703610363cb3d.tar.gz
ports-be97957b6c7b63cdecf9af0c371703610363cb3d.zip
net-mgmt/p0f: add rc script
Added rc script to run p0f in daemon mode as as unprivileged user. That is useful to provide access to p0f API via unix socket for various clients (e.g. anti-spam filters like rspamd, haraka-plugin-p0f, etc.). PR: 240712 Submitted by: Alexander Moisseev <moiseev@mezonplus.ru>
Notes
Notes: svn path=/head/; revision=512424
Diffstat (limited to 'net-mgmt/p0f')
-rw-r--r--net-mgmt/p0f/Makefile8
-rw-r--r--net-mgmt/p0f/files/p0f.in76
2 files changed, 83 insertions, 1 deletions
diff --git a/net-mgmt/p0f/Makefile b/net-mgmt/p0f/Makefile
index d1e10bb5041f..f7866e71b383 100644
--- a/net-mgmt/p0f/Makefile
+++ b/net-mgmt/p0f/Makefile
@@ -3,16 +3,22 @@
PORTNAME= p0f
PORTVERSION= 3.09b
+PORTREVISION= 1
CATEGORIES= net-mgmt security
MASTER_SITES= http://lcamtuf.coredump.cx/p0f3/releases/ \
http://fossies.org/unix/privat/
-EXTRACT_SUFX= .tgz
MAINTAINER= pi@FreeBSD.org
COMMENT= Passive OS fingerprinting tool
LICENSE= LGPL21
+USES= tar:tgz
+USE_RC_SUBR= p0f
+
+USERS= p0f
+GROUPS= p0f
+
PLIST_FILES= bin/p0f bin/p0f-client bin/p0f-sendsyn \
bin/p0f-sendsyn6 etc/p0f.fp
PORTDOCS= ChangeLog README TODO existential-notes.txt \
diff --git a/net-mgmt/p0f/files/p0f.in b/net-mgmt/p0f/files/p0f.in
new file mode 100644
index 000000000000..8f209a68e902
--- /dev/null
+++ b/net-mgmt/p0f/files/p0f.in
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: p0f
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+
+# p0f_enable (bool): Set it to YES to enable p0f.
+# Default: NO.
+#
+# p0f_user (str) User to drop privileges and change to.
+# Default: p0f.
+#
+# p0f_sock (path): Path to socket used to communicate with p0f.
+# Default: /var/run/p0f.sock
+#
+# p0f_db (path): Location of fingerprint db.
+# Default: %%PREFIX%%/etc/p0f.fp
+#
+# p0f_flags (str): Options passed to the p0f daemon.
+# Default: "-d -u ${p0f_user} -s ${p0f_sock} -f ${p0f_db}"
+#
+# command_args (str): Optional pcap-style traffic filtering rules.
+# See p0f README for details.
+
+. /etc/rc.subr
+
+name="p0f"
+rcvar=p0f_enable
+
+load_rc_config "$name"
+
+: ${p0f_enable:="NO"}
+: ${p0f_user:="p0f"}
+: ${p0f_sock:="/var/run/${name}.sock"}
+: ${p0f_db:="%%PREFIX%%/etc/p0f.fp"}
+: ${p0f_flags:="-d -u ${p0f_user} -s ${p0f_sock} -f ${p0f_db}"}
+
+command="%%PREFIX%%/bin/${name}"
+
+pidfile="/var/run/${name}.pid"
+required_files="${p0f_db}"
+
+start_cmd="${name}_start"
+stop_postcmd="rm -f ${p0f_sock} $pidfile"
+
+extra_commands="reload"
+
+p0f_get_pid() {
+ PID=$(/bin/ps waux | /usr/bin/grep ${command} | /usr/bin/grep -v grep | /usr/bin/grep ${p0f_sock} | /usr/bin/awk '{print $2}')
+}
+
+p0f_start() {
+ p0f_get_pid
+ if [ -z "${PID}" ] ; then
+ echo "Starting ${name}."
+ if [ ! -z "${command_args}" ] ; then
+ ${command} ${p0f_flags} "${command_args}"
+ else
+ ${command} ${p0f_flags}
+ fi
+ if [ ! -z "${pidfile}" ] ; then
+ p0f_get_pid
+ [ -z "${PID}" ] || echo ${PID} > ${pidfile}
+ fi
+ else
+ echo "${name} already running? (pid=${PID})."
+ fi
+}
+
+run_rc_command "$1"