diff options
Diffstat (limited to 'sysutils/netdump-server')
| -rw-r--r-- | sysutils/netdump-server/Makefile | 68 | ||||
| -rw-r--r-- | sysutils/netdump-server/distinfo | 3 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/netdump-server.sh.in | 54 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/netdump.conf.sample | 3 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-Makefile | 12 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-configuration.c | 87 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-configuration.h | 10 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-netdump-server.8 | 21 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-netdumpclient.c | 21 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-netdumpelf.h | 37 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-server.c | 55 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/patch-server.h | 11 | ||||
| -rw-r--r-- | sysutils/netdump-server/files/pkg-message.in | 17 | ||||
| -rw-r--r-- | sysutils/netdump-server/pkg-descr | 7 | ||||
| -rw-r--r-- | sysutils/netdump-server/pkg-plist | 18 | 
15 files changed, 424 insertions, 0 deletions
diff --git a/sysutils/netdump-server/Makefile b/sysutils/netdump-server/Makefile new file mode 100644 index 000000000000..c267da1f7919 --- /dev/null +++ b/sysutils/netdump-server/Makefile @@ -0,0 +1,68 @@ +# New ports collection makefile for:    netdump-server +# Date created:         20 Mar 2005 +# Whom:                 Stanislav Sedov +# +# $FreeBSD$ + +PORTNAME=	netdump-server +PORTVERSION=	0.7.7 +CATEGORIES=	sysutils net +MASTER_SITES=	http://mbsd.msk.ru/dist/ +DISTNAME=	netdump-${PORTVERSION} + +MAINTAINER=	stas@core.310.ru +COMMENT=	RedHat server part of netdump/netconsole package for linux + +LIB_DEPENDS=	popt:${PORTSDIR}/devel/popt \ +		glib:${PORTSDIR}/devel/glib20 +BUILD_DEPENDS=	pkg-config:${PORTSDIR}/devel/pkgconfig + +PKGMESSAGE=	${WRKDIR}/pkg-message + +DOCSFILES=	README README.client +MAN8=		netdump.8 netdump-server.8 +NETDUMP_OWN?=	netdump +NETDUMP_GRP?=	operator + +USE_RC_SUBR=	netdump-server.sh +PLIST_SUB+=	NETDUMP_OWN=${NETDUMP_OWN} \ +		NETDUMP_GRP=${NETDUMP_GRP} +SUB_FILES+=	pkg-message +PKGMESSAGE=	${WRKDIR}/pkg-message + +PW?=		/usr/sbin/pw + +do-install: +	${INSTALL_MAN} ${WRKSRC}/netdump-server.8 ${MANPREFIX}/man/man8 +	${INSTALL_MAN} ${WRKSRC}/netdump.8 ${MANPREFIX}/man/man8 +	${INSTALL_PROGRAM} ${WRKSRC}/netdump-server ${PREFIX}/bin +	${INSTALL_DATA} ${FILESDIR}/netdump.conf.sample ${PREFIX}/etc +	${MKDIR} ${EXAMPLESDIR} + +	for filename in ${WRKSRC}/example_scripts/*; do		\ +		${INSTALL_SCRIPT} $${filename} ${EXAMPLESDIR};	\ +	done + +post-install: + +.if !defined(NOPORTDOCS) +	@${MKDIR} ${DOCSDIR} +.for FILE in ${DOCSFILES} +	@${INSTALL_DATA} ${WRKSRC}/${FILE} ${DOCSDIR} +.endfor +.endif + +	${PW} groupshow "${NETDUMP_GRP}" 2>/dev/null || \ +		${PW} groupadd -n "${NETDUMP_GRP}" +	${PW} usershow "${NETDUMP_OWN}" 2>/dev/null || \ +		${PW} useradd -n "${NETDUMP_OWN}" -g "${NETDUMP_GRP}" \ +		-s /sbin/nologin -d /nonexistent \ +		-c "Netdump-server pseudo user" + +	${MKDIR} /var/spool/netdump +	${CHOWN} "${NETDUMP_OWN}:${NETDUMP_GRP}" /var/spool/netdump +	${CHMOD} 700 /var/spool/netdump + +	@${CAT} ${PKGMESSAGE} + +.include <bsd.port.mk> diff --git a/sysutils/netdump-server/distinfo b/sysutils/netdump-server/distinfo new file mode 100644 index 000000000000..b68060de7832 --- /dev/null +++ b/sysutils/netdump-server/distinfo @@ -0,0 +1,3 @@ +MD5 (netdump-0.7.7.tar.gz) = 0b2b15cd95d2e64bac4ae5e05f49e82f +SHA256 (netdump-0.7.7.tar.gz) = a72969cbeb98fcba102a1cf0b2b96d68f1192695e3ccd232c5606ab2311aa37e +SIZE (netdump-0.7.7.tar.gz) = 39298 diff --git a/sysutils/netdump-server/files/netdump-server.sh.in b/sysutils/netdump-server/files/netdump-server.sh.in new file mode 100644 index 000000000000..82787e8e19c3 --- /dev/null +++ b/sysutils/netdump-server/files/netdump-server.sh.in @@ -0,0 +1,54 @@ +#!/bin/sh +# + +# PROVIDE: netdump_server +# REQUIRE: +# BEFORE: +# KEYWORD: FreeBSD shutdown + +# Add the following line to /etc/rc.conf to enable mpd: +# +#netdump_server_enable="YES" + +. %%RC_SUBR%% + +load_rc_config netdump_server + +netdump_server_enable=${netdump_server_enable-"NO"} +netdump_server_flags=${netdump_server_flags-"--daemon --secure 0"} + +name=netdump_server +rcvar=`set_rcvar` +command=%%PREFIX%%/bin/netdump-server +pidfile=/var/run/netdump-server.pid +start_cmd=start_cmd +stop_cmd=stop_cmd + +start_cmd() +{ +	if [ -r ${pidfile} ]; then +		echo "netdump_server already runned" +		exit 1 +	fi + +	touch $pidfile +	chown netdump $pidfile + +	su -m netdump -c "${command} --pidfile ${pidfile} ${netdump_server_flags}" +} + +stop_cmd() +{ +	if [ -r ${pidfile} ]; then +		pid=`cat ${pidfile}` +		kill -TERM ${pid} +		wait_for_pids ${pid} +		 +		rm -rf ${pidfile} +	else +		echo "netdump-server not runned" +	fi +} + +load_rc_config $name +run_rc_command "$1" diff --git a/sysutils/netdump-server/files/netdump.conf.sample b/sysutils/netdump-server/files/netdump.conf.sample new file mode 100644 index 000000000000..bb0ebacd7bb1 --- /dev/null +++ b/sysutils/netdump-server/files/netdump.conf.sample @@ -0,0 +1,3 @@ +daemon=true +secure=0 +dumpdirprefix="/var/spool/netdump" diff --git a/sysutils/netdump-server/files/patch-Makefile b/sysutils/netdump-server/files/patch-Makefile new file mode 100644 index 000000000000..31bcff5954f8 --- /dev/null +++ b/sysutils/netdump-server/files/patch-Makefile @@ -0,0 +1,12 @@ +--- Makefile.orig	Tue Mar  1 20:33:03 2005 ++++ Makefile	Sat Mar 19 16:53:49 2005 +@@ -1,7 +1,7 @@ + DEBUG_FLAGS=-Wall -g +  +-CFLAGS=`glib-config --cflags` $(DEBUG_FLAGS) -D_FILE_OFFSET_BITS=64 +-LDFLAGS=`glib-config --libs` -lpopt ++CFLAGS += `pkg-config --cflags glib-2.0` $(DEBUG_FLAGS) -D_FILE_OFFSET_BITS=64 -I /usr/local/include ++LDFLAGS += `pkg-config --libs glib-2.0` -L/usr/local/lib -lpopt +  + VERSION=$(shell awk '/Version:/ { print $$2 }' netdump.spec) + # Used to append this to CVSTAG: _$(subst .,-,$(RELEASE)), but now that diff --git a/sysutils/netdump-server/files/patch-configuration.c b/sysutils/netdump-server/files/patch-configuration.c new file mode 100644 index 000000000000..0f2b6bbd35cb --- /dev/null +++ b/sysutils/netdump-server/files/patch-configuration.c @@ -0,0 +1,87 @@ +--- configuration.c.orig	Sun Mar 20 11:17:08 2005 ++++ configuration.c	Sun Mar 20 10:06:04 2005 +@@ -2,6 +2,7 @@ + #include <string.h> + #include <unistd.h> + #include <stdio.h> ++#include <stdlib.h> + #include <syslog.h> + #include <sys/types.h> + #include <sys/stat.h> +@@ -15,6 +16,8 @@ +  + NetdumpConfiguration config; +  ++char *netdump_dir_prefix = NETDUMP_DIR_PREFIX; ++ + enum ConfigType { +   CONFIG_NONE, +   CONFIG_BOOLEAN, +@@ -46,6 +49,7 @@ +   { "max_concurrent_dumps", CONFIG_INT, CONFIG_OFFSET(max_concurrent_dumps), GINT_TO_POINTER (4) }, +   { "daemon", CONFIG_BOOLEAN, CONFIG_OFFSET(daemon), GINT_TO_POINTER (0) }, +   { "pidfile", CONFIG_STRING, CONFIG_OFFSET(pidfile), NULL }, ++  { "dumpdirprefix", CONFIG_STRING, CONFIG_OFFSET(dumpdirprefix), NETDUMP_DIR_PREFIX }, +   { "secure", CONFIG_INT, CONFIG_OFFSET(secure), GINT_TO_POINTER (1) }, +   { "space_check", CONFIG_INT, CONFIG_OFFSET(space_check), GINT_TO_POINTER (1) }, + }; +@@ -118,7 +122,20 @@ +       *(guint16 *)ptr = GPOINTER_TO_INT (config_data[i].default_value); +       break; +     case CONFIG_STRING: +-      *(gchar **)ptr = (gchar *)config_data[i].default_value; ++      if (config_data[i].default_value != NULL) { ++        *(char **)ptr = (char *)malloc(strlen(config_data[i].default_value) + 1); ++	if (*(char **)ptr != NULL) { ++		strncpy(*(char **)ptr, config_data[i].default_value, strlen(config_data[i].default_value)); ++		(*(char **)ptr)[strlen(config_data[i].default_value)] = '\0'; ++	} ++	else { ++		syslog(LOG_ERR, "Cannot malloc\n"); ++		exit(1); ++	} ++      } ++      else ++	ptr = (char *)NULL; ++ +       break; +     case CONFIG_NONE: +       break; +@@ -181,7 +198,18 @@ +     if (token != G_TOKEN_STRING) +       return G_TOKEN_STRING; +  +-    *(char **)ptr = scanner->value.v_string; ++    if (*(char **)ptr != NULL) ++	free(*(char **)ptr); ++    *(char **)ptr = (char *)malloc(strlen(scanner->value.v_string) + 1); ++	if (*(char **)ptr != NULL) { ++		strncpy(*(char **)ptr, scanner->value.v_string, strlen(scanner->value.v_string)); ++		(*(char **)ptr)[strlen(scanner->value.v_string)] = '\0'; ++	} ++	else { ++		syslog(LOG_ERR, "Cannot malloc\n"); ++		exit(1); ++	} ++ +     break; +   case CONFIG_NONE: +     break; +@@ -277,6 +305,8 @@ +       "run in background as a daemon", NULL }, +     { "pidfile",  'P', POPT_ARG_STRING, &config.pidfile, 0, +       "file in which to store the pid", "path" }, ++    { "dumpdirprefix",  'D', POPT_ARG_STRING, &config.dumpdirprefix, 0, ++      "dir in which to store dumps", "/var/spool/netdump" }, +     { "secure", 's', POPT_ARG_INT, &config.secure, 0, +       "use ssh to send client identification", "1" }, +     { "space_check", 'S', POPT_ARG_INT, &config.space_check, 0, +@@ -305,7 +335,7 @@ +   /* Set the default values */ +   config_set_defaults(); +  +-  config_load ("/etc/netdump.conf"); ++  config_load ("/usr/local/etc/netdump.conf"); +    +   optCon = poptGetContext("netdump-server", argc, (const char **)argv, + 			  optionsTable, 0); diff --git a/sysutils/netdump-server/files/patch-configuration.h b/sysutils/netdump-server/files/patch-configuration.h new file mode 100644 index 000000000000..410016cb1d10 --- /dev/null +++ b/sysutils/netdump-server/files/patch-configuration.h @@ -0,0 +1,10 @@ +--- configuration.h.orig	Sun Mar 20 11:17:12 2005 ++++ configuration.h	Sun Mar 20 08:57:43 2005 +@@ -6,6 +6,7 @@ +   int max_concurrent_dumps; +   gboolean daemon; +   char *pidfile; ++  char *dumpdirprefix; +   int secure; +   int space_check; + } NetdumpConfiguration; diff --git a/sysutils/netdump-server/files/patch-netdump-server.8 b/sysutils/netdump-server/files/patch-netdump-server.8 new file mode 100644 index 000000000000..2ea2853b5856 --- /dev/null +++ b/sysutils/netdump-server/files/patch-netdump-server.8 @@ -0,0 +1,21 @@ +--- netdump-server.8.orig	Sat Mar 19 16:56:34 2005 ++++ netdump-server.8	Sat Mar 19 16:58:00 2005 +@@ -50,6 +50,9 @@ + Store a pidfile.  The default service uses /var/run/netdump-server.pid. + The default is not to write a pidfile. + .TP ++--dumpdirprefix \fIpath\fP ++The directory in which to save dumps. The default - /var/spool/netdump. ++.TP + --daemon + netdump-server should background itself and run as a daemon. + .TP +@@ -76,7 +79,7 @@ + /etc/netdump.conf + A configuration file read by netdump-server on startup. It is a + "key=value" style file. Currently it supports the options: +-port, max_concurrent_dumps, daemon and pidfile. ++port, max_concurrent_dumps, daemon, pidfile and dumpdirprefix. + .TP + /etc/init.d/netdump-server + An init script to start a default system installation of netdump-server. diff --git a/sysutils/netdump-server/files/patch-netdumpclient.c b/sysutils/netdump-server/files/patch-netdumpclient.c new file mode 100644 index 000000000000..5c5ed5e89aaa --- /dev/null +++ b/sysutils/netdump-server/files/patch-netdumpclient.c @@ -0,0 +1,21 @@ +--- netdumpclient.c.orig	Fri Sep  3 23:53:20 2004 ++++ netdumpclient.c	Sat Mar 19 16:53:49 2005 +@@ -5,7 +5,8 @@ + #include <syslog.h> + #include <sys/types.h> + #include <sys/stat.h> +-#include <sys/vfs.h> ++#include <sys/param.h> ++#include <sys/mount.h> + #include <fcntl.h> + #include <unistd.h> + #include <stdlib.h> +@@ -898,7 +899,7 @@ + 	      if (tried_once) + 		syslog (LOG_ERR, "No space for dump image, even after calling netdump-nospace"); + 	      else +-		syslog (LOG_ERR, "No space for dump image"); ++		syslog (LOG_ERR, "No space for dump image, avail = %lld, need = %lld\n", buf.f_bavail, memdump_size); + 	       + 	      status_request (client, TRUE); + 	      g_free (file); diff --git a/sysutils/netdump-server/files/patch-netdumpelf.h b/sysutils/netdump-server/files/patch-netdumpelf.h new file mode 100644 index 000000000000..f2d8a84768d0 --- /dev/null +++ b/sysutils/netdump-server/files/patch-netdumpelf.h @@ -0,0 +1,37 @@ +--- netdumpelf.h.orig	Fri Sep  3 23:53:20 2004 ++++ netdumpelf.h	Sun Mar 20 12:49:10 2005 +@@ -1,7 +1,21 @@ + #include <sys/time.h> +-#include <linux/types.h> ++#include <sys/types.h> + #include <elf.h> +  ++typedef __uint32_t __u32; ++typedef __uint64_t __u64; ++typedef __uint16_t __u16; ++typedef __uint8_t __u8; ++typedef uid_t __kernel_uid_t; ++typedef gid_t __kernel_gid_t; ++typedef Elf_Note Elf32_Nhdr; ++typedef Elf_Note Elf64_Nhdr; ++ ++#if __FreeBSD_version < 500000 ++#define ELFMAG "\177ELF" ++#define SELFMAG 4 ++#endif ++ + #ifndef NT_TASKSTRUCT + #define NT_TASKSTRUCT	4 + #endif +@@ -87,9 +101,9 @@ + #define CLIENT_BYTE_ORDER(client)  \ + 	((client->machine_type == EM_386 || \ + 	 client->machine_type == EM_X86_64 || \ +-         client->machine_type == EM_IA_64) ? __LITTLE_ENDIAN : __BIG_ENDIAN) ++         client->machine_type == EM_IA_64) ? LITTLE_ENDIAN : BIG_ENDIAN) +  +-#define BYTE_SWAP_REQUIRED(client) (__BYTE_ORDER != CLIENT_BYTE_ORDER(client)) ++#define BYTE_SWAP_REQUIRED(client) (BYTE_ORDER != CLIENT_BYTE_ORDER(client)) +  + typedef unsigned short u16; +  diff --git a/sysutils/netdump-server/files/patch-server.c b/sysutils/netdump-server/files/patch-server.c new file mode 100644 index 000000000000..6b58e2f961f6 --- /dev/null +++ b/sysutils/netdump-server/files/patch-server.c @@ -0,0 +1,55 @@ +--- server.c.orig	Sun Mar 20 11:17:45 2005 ++++ server.c	Sun Mar 20 10:09:04 2005 +@@ -66,7 +66,7 @@ +       dir = g_new (CrashDir, 1); +       dir->time = now; +       dir->path = g_strdup_printf ("%s/%d.%d.%d.%d-%s", +-				   NETDUMP_DIR_PREFIX, ++				   config.dumpdirprefix, + 				   (ip >> 24) & 0xff, + 				   (ip >> 16) & 0xff, + 				   (ip >> 8) & 0xff, +@@ -100,7 +100,7 @@ +   char *cmdline; +   int res = -1; +  +-  filename = g_strconcat (NETDUMP_DIR_PREFIX "/scripts/", ++  filename = g_strconcat (config.dumpdirprefix, "/scripts/", + 			  script, + 			  NULL); +    +@@ -147,7 +147,7 @@ +     } +  +   path = g_strdup_printf ("%s/magic/%d.%d.%d.%d", +-			 NETDUMP_DIR_PREFIX, ++			 config.dumpdirprefix, + 			 (ip >> 24) & 0xff, + 			 (ip >> 16) & 0xff, + 			 (ip >> 8) & 0xff, +@@ -373,10 +373,10 @@ +  +   openlog("netdump", LOG_PID, LOG_DAEMON); +  +-  if (chdir (NETDUMP_DIR_PREFIX) == -1) ++  if (chdir (config.dumpdirprefix) == -1) +     { +-      syslog (LOG_ERR, "can't cd to %s", NETDUMP_DIR_PREFIX); +-      fprintf (stderr, "can't cd to %s", NETDUMP_DIR_PREFIX); ++      syslog (LOG_ERR, "can't cd to %s", config.dumpdirprefix); ++      fprintf (stderr, "can't cd to %s\n", config.dumpdirprefix); +       exit (1); +     } +    +@@ -429,6 +429,11 @@ +  +   loop = g_main_new (TRUE); +   g_main_run (loop); ++ ++  if (config.pidfile != NULL) ++    free(config.pidfile); ++  if (config.dumpdirprefix != NULL) ++    free(config.dumpdirprefix); +  +   return 0; + } diff --git a/sysutils/netdump-server/files/patch-server.h b/sysutils/netdump-server/files/patch-server.h new file mode 100644 index 000000000000..fb20386b773d --- /dev/null +++ b/sysutils/netdump-server/files/patch-server.h @@ -0,0 +1,11 @@ +--- server.h.orig	Fri Sep  3 23:53:20 2004 ++++ server.h	Sat Mar 19 16:53:49 2005 +@@ -7,7 +7,7 @@ +  + #define NETDUMP_PORT 6666 +  +-#define NETDUMP_DIR_PREFIX "/var/crash" ++#define NETDUMP_DIR_PREFIX "/var/spool/netdump" +  + extern int master_socket; +  diff --git a/sysutils/netdump-server/files/pkg-message.in b/sysutils/netdump-server/files/pkg-message.in new file mode 100644 index 000000000000..0ee6fc4f2b0a --- /dev/null +++ b/sysutils/netdump-server/files/pkg-message.in @@ -0,0 +1,17 @@ +============================================================================= + +This port installed sample config script '%%PREFIX%%/etc/netdump.conf.sample'. +Rename it to '%%PREFIX%%/etc/netdump.conf' and edit to suit your needs. + +Dumps will be stored in /var/spool/netdump. You can change it in config or +using runtime options. + +In order to enable logging add '!netdump' part to syslog.conf. + +If you want to use netdump-server in secure way set password for netdump +account and change 'secure' config option to 1. + +To run netdump-server from startup, add netdump_server_enable="YES" +in your /etc/rc.conf. + +============================================================================= diff --git a/sysutils/netdump-server/pkg-descr b/sysutils/netdump-server/pkg-descr new file mode 100644 index 000000000000..2c1202480cfd --- /dev/null +++ b/sysutils/netdump-server/pkg-descr @@ -0,0 +1,7 @@ +Netdump-server listens on the network for connections from linux kernels +using the netconsole/netdump module. When such a machine crashes it +contacts the netdump-server on the specified ip/port. The server then +proceeds to log console messages, including the oops message, and a +kernel memory dump in a specified directory, and then reboots the machine. + +WWW: http://www.redhat.com diff --git a/sysutils/netdump-server/pkg-plist b/sysutils/netdump-server/pkg-plist new file mode 100644 index 000000000000..89fe9ea5b415 --- /dev/null +++ b/sysutils/netdump-server/pkg-plist @@ -0,0 +1,18 @@ +@comment $FreeBSD$ +@exec if ! pw groupshow %%NETDUMP_GRP%% 2>/dev/null; then pw groupadd -n %%NETDUMP_GRP%%; fi +@exec if ! pw usershow %%NETDUMP_OWN%% 2>/dev/null; then pw useradd -n %%NETDUMP_OWN%% -g %%NETDUMP_GRP%% -d /nonexistent -s /sbin/nologin -c "Netdump-server pseudo user"; fi +@exec mkdir -p /var/spool/netdump +@exec chown %%NETDUMP_OWN%%:%%NETDUMP_GRP%% /var/spool/netdump +@exec chmod 700 /var/spool/netdump +@unexec rmdir /var/spool/netdump 2>/dev/null || true +@unexec pw userdel %%NETDUMP_OWN%% +bin/netdump-server +etc/netdump.conf.sample +%%EXAMPLESDIR%%/netdump-crash +%%EXAMPLESDIR%%/netdump-nospace +%%EXAMPLESDIR%%/netdump-reboot +%%EXAMPLESDIR%%/netdump-start +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.client +%%PORTDOCS%%@dirrm %%DOCSDIR%% +@dirrm %%EXAMPLESDIR%%  | 
