Remove outdated ports:
2014-07-01 security/sudosh3: Funcition replaced by sudo -s 2014-07-01 security/sudosh: Funcition replaced by sudo -s 2014-07-01 security/sudosh2: Funcition replaced by sudo -s 2014-07-01 lang/pike76: Outdated: Users should switch to lang/pike78 2014-07-01 editors/gummi: Builds fine but the program itself is unusable
This commit is contained in:
parent
3abde05452
commit
011f192383
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=359962
42 changed files with 5 additions and 1332 deletions
5
MOVED
5
MOVED
|
@ -6227,3 +6227,8 @@ mail/wanderlust-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs
|
|||
textproc/dictem-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs
|
||||
textproc/uim-el-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs
|
||||
www/emacs-w3m-xemacs21-mule||2014-06-30|Removed: depend on editors/xemacs
|
||||
security/sudosh3||2014-07-01|Has expired: Funcition replaced by sudo -s
|
||||
security/sudosh||2014-07-01|Has expired: Funcition replaced by sudo -s
|
||||
security/sudosh2||2014-07-01|Has expired: Funcition replaced by sudo -s
|
||||
lang/pike76|lang/pike78|2014-07-01|Has expired: Outdated: Users should switch to lang/pike78
|
||||
editors/gummi||2014-07-01|Has expired: Builds fine but the program itself is unusable
|
||||
|
|
|
@ -73,7 +73,6 @@
|
|||
SUBDIR += gnotepad+
|
||||
SUBDIR += gnuserv
|
||||
SUBDIR += gobby
|
||||
SUBDIR += gummi
|
||||
SUBDIR += gwrite
|
||||
SUBDIR += heme
|
||||
SUBDIR += hexcurse
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
# Created by: Hakisho Nukama <nukama@gmail.com>
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= gummi
|
||||
PORTVERSION= 0.6.5
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= editors
|
||||
MASTER_SITES= http://dev.midnightcoding.org/attachments/download/301/
|
||||
|
||||
MAINTAINER= nukama+maintainer@gmail.com
|
||||
COMMENT= Simple LaTex editor for GTK users
|
||||
|
||||
DEPRECATED= Builds fine but the program itself is unusable
|
||||
EXPIRATION_DATE= 2014-07-01
|
||||
|
||||
LICENSE= MIT
|
||||
|
||||
BUILD_DEPENDS+= msgfmt:${PORTSDIR}/devel/gettext
|
||||
LIB_DEPENDS+= libpoppler-glib.so:${PORTSDIR}/graphics/poppler-glib \
|
||||
libgtkspell.so:${PORTSDIR}/textproc/gtkspell
|
||||
|
||||
USES= iconv gmake pkgconfig desktop-file-utils
|
||||
GNU_CONFIGURE= yes
|
||||
USE_XORG= xdamage xft xcursor xcomposite
|
||||
USE_GNOME= gtksourceview2 glib20 intlhack
|
||||
INSTALLS_ICONS= yes
|
||||
INSTALLS_OMF= yes
|
||||
|
||||
OPTIONS_DEFINE= TETEX LATEXMK RUBBER TEXCOUNT
|
||||
OPTIONS_DEFAULT= TETEX
|
||||
|
||||
TETEX_DESC= Use pdfetex typesetter
|
||||
LATEXMK_DESC= Use latexmk typesetter
|
||||
RUBBER_DESC= Use rubber typesetter
|
||||
TEXCOUNT_DESC= With texcount statistics
|
||||
|
||||
CONFIGURE_ARGS+= --disable-nls
|
||||
PLIST_SUB+= NLS="@comment "
|
||||
|
||||
NLS_USES+= gettext
|
||||
NLS_CONFIGURE_ARGS+= --enable-nls
|
||||
NLS_PLIST_SUB+= NLS=""
|
||||
|
||||
TETEX_RUN_DEPENDS= pdfetex:${PORTSDIR}/print/teTeX-base
|
||||
|
||||
LATEXMK_RUN_DEPENDS= latexmk:${PORTSDIR}/print/latexmk
|
||||
|
||||
RUBBER_RUN_DEPENDS= rubber:${PORTSDIR}/textproc/rubber
|
||||
|
||||
TEXCOUNT_RUN_DEPENDS= ${LOCALBASE}/bin/texcount.${PORTVERSION}:${PORTSDIR}/texproc/p5-texcount
|
||||
|
||||
.include <bsd.port.mk>
|
|
@ -1,2 +0,0 @@
|
|||
SHA256 (gummi-0.6.5.tar.gz) = b23c2958376ea43c701a276ad19ceac5b50d9cb32a489a10897b25aa5004fffb
|
||||
SIZE (gummi-0.6.5.tar.gz) = 520902
|
|
@ -1,12 +0,0 @@
|
|||
--- ./po/Makefile.in.in.orig 2012-01-29 20:42:39.060446287 +0000
|
||||
+++ ./po/Makefile.in.in 2012-01-29 20:43:42.348435836 +0000
|
||||
@@ -34,7 +34,8 @@ datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
libdir = @libdir@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
-itlocaledir = $(prefix)/$(DATADIRNAME)/locale
|
||||
+sharedir = share
|
||||
+itlocaledir = $(prefix)/$(sharedir)/locale
|
||||
subdir = po
|
||||
install_sh = @install_sh@
|
||||
# Automake >= 1.8 provides @mkdir_p@.
|
|
@ -1,10 +0,0 @@
|
|||
--- ./src/update.c.orig 2012-01-29 20:34:57.429446671 +0000
|
||||
+++ ./src/update.c 2012-01-29 20:35:29.991443641 +0000
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
+#include <netinet/in.h>
|
||||
|
||||
#ifndef WIN32
|
||||
# include <sys/socket.h>
|
|
@ -1,3 +0,0 @@
|
|||
Gummi is a LaTeX editor. It was designed with simplicity in mind.
|
||||
|
||||
WWW: http://gummi.midnightcoding.org/
|
|
@ -1,38 +0,0 @@
|
|||
bin/gummi
|
||||
share/applications/gummi.desktop
|
||||
share/pixmaps/gummi.png
|
||||
lib/gummi/latex_dvi.sh
|
||||
man/man1/gummi.1.gz
|
||||
%%DATADIR%%/ui/snippets.glade
|
||||
%%DATADIR%%/ui/gummi.glade
|
||||
%%DATADIR%%/ui/prefs.glade
|
||||
%%DATADIR%%/snippets/snippets.lang
|
||||
%%DATADIR%%/snippets/snippets.cfg
|
||||
%%DATADIR%%/misc/default.tex
|
||||
%%DATADIR%%/icons/gummi.png
|
||||
%%DATADIR%%/icons/icon.png
|
||||
%%NLS%%share/locale/ar/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/ca/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/cs/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/da/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/de/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/el/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/es/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/fr/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/hu/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/it/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/nl/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/pl/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/pt/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/pt_BR/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/ro/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/ru/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/sv/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/zh_CN/LC_MESSAGES/gummi.mo
|
||||
%%NLS%%share/locale/zh_TW/LC_MESSAGES/gummi.mo
|
||||
@dirrm %%DATADIR%%/icons
|
||||
@dirrm %%DATADIR%%/misc
|
||||
@dirrm %%DATADIR%%/snippets
|
||||
@dirrm %%DATADIR%%/ui
|
||||
@dirrm %%DATADIR%%
|
||||
@dirrm lib/gummi
|
|
@ -243,7 +243,6 @@
|
|||
SUBDIR += php55-extensions
|
||||
SUBDIR += php_doc
|
||||
SUBDIR += picoc
|
||||
SUBDIR += pike76
|
||||
SUBDIR += pike78
|
||||
SUBDIR += polyml
|
||||
SUBDIR += ptoc
|
||||
|
|
|
@ -1,222 +0,0 @@
|
|||
# Created by: kiwi@oav.net
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= pike76
|
||||
PORTVERSION= 7.6.132
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= lang
|
||||
MASTER_SITES= ftp://pike.ida.liu.se/pub/pike/beta/${PORTVERSION}/ \
|
||||
http://pike.ida.liu.se/pub/pike/beta/${PORTVERSION}/ \
|
||||
ftp://pike.ida.liu.se/pub/pike/all/${PORTVERSION}/ \
|
||||
http://pike.ida.liu.se/pub/pike/all/${PORTVERSION}/ \
|
||||
ftp://ftp.oav.net/pike/7.6/ \
|
||||
ftp://ftp.caudium.net/pike/official_releases/${PORTVERSION}/
|
||||
DISTNAME= Pike-v${PORTVERSION}
|
||||
|
||||
MAINTAINER= johans@FreeBSD.org
|
||||
COMMENT= Dynamic programming language with a syntax similar to C++
|
||||
|
||||
LIB_DEPENDS= libjpeg.so:${PORTSDIR}/graphics/jpeg \
|
||||
libtiff.so:${PORTSDIR}/graphics/tiff \
|
||||
libgdbm.so:${PORTSDIR}/databases/gdbm \
|
||||
libpcre.so:${PORTSDIR}/devel/pcre \
|
||||
libgmp.so:${PORTSDIR}/math/gmp
|
||||
|
||||
DEPRECATED= Outdated: Users should switch to lang/pike78
|
||||
EXPIRATION_DATE=2014-07-01
|
||||
|
||||
CONFLICTS= pike7[28]-[0-9]*
|
||||
CONFLICTS_BUILD=nettle-[2-9]*
|
||||
|
||||
OPTIONS_DEFINE= TTF FREETYPE OPT_CFLAGS MYSQL FFMPEG PGSQL \
|
||||
SANE PDF SVG2 TDS FFTW ODBC
|
||||
OPTIONS_DEFAULT=TTF FREETYPE OPT_CFLAGS MYSQL
|
||||
|
||||
TTF_DESC?= Add FreeType 1 support
|
||||
FREETYPE_DESC?= Add FreeType 2 support
|
||||
OPT_CFLAGS_DESC?= Enable additional compiliation optimizations
|
||||
FFMPEG_DESC?= Add FFmpeg support
|
||||
ODBC_DESC?= Add ODBC support
|
||||
SANE_DESC?= Add SANE support
|
||||
PDF_DESC?= Add PDF support
|
||||
SVG2_DESC?= Add SVG2 support
|
||||
TDS_DESC?= Add FreeTDS (Sybase and MSSQL) support
|
||||
FFTW_DESC?= Add libFFTW support
|
||||
|
||||
MAN1= pike.1
|
||||
|
||||
WANT_MESA= yes
|
||||
|
||||
CPPFLAGS+= -I${LOCALBASE}/include ${PTHREAD_CFLAGS}
|
||||
CONFIGURE_ARGS+=--without-debug \
|
||||
--with-thread-library=${PTHREAD_LIBS} \
|
||||
--with-double-precision \
|
||||
--with-long-double-precision \
|
||||
--disable-rpath \
|
||||
--without-rtldebug \
|
||||
--without-cdebug \
|
||||
--without-copt \
|
||||
--without-security \
|
||||
--with-oob \
|
||||
--without-poll \
|
||||
--without-devpoll \
|
||||
--with-max-fd=60000 \
|
||||
--with-gmp \
|
||||
--with-zlib \
|
||||
--with-threads \
|
||||
--with-readline \
|
||||
--with-jpeg \
|
||||
--with-tiff \
|
||||
--with-gdbm \
|
||||
--without-java \
|
||||
--without-ssleay \
|
||||
--without-GTK \
|
||||
--without-gnome \
|
||||
--without-glade \
|
||||
--without-libglade-config \
|
||||
--without-krb5 \
|
||||
--without-machine-code \
|
||||
--with-perl \
|
||||
--with-relocatable-dumped-modules \
|
||||
--without-GL --without-GLUT \
|
||||
--prefix=${PREFIX}
|
||||
|
||||
MAKE_ARGS= CONFIGUREARGS="${CONFIGURE_ARGS}"
|
||||
MAKE_ENV= "ac_cv_lib_nettle_nettle_md5_init=no"
|
||||
|
||||
USES= bison gettext gmake perl5
|
||||
|
||||
PLIST_FILES= bin/pike bin/pike76 bin/hilfe
|
||||
|
||||
NO_STAGE= yes
|
||||
MAKE_JOBS_UNSAFE=yes
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
ONLY_FOR_ARCHS= i386 amd64
|
||||
|
||||
.if ${PORT_OPTIONS:MEXPERIMENTAL_FEATURES}
|
||||
CONFIGURE_ARGS+= --with-computed-goto \
|
||||
--with-pg \
|
||||
--with-long-long-int \
|
||||
--with-long-int \
|
||||
--with-short-int \
|
||||
--with-keypair-loop \
|
||||
--without-lock \
|
||||
--with-new-multisets
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MOPT_CFLAGS}
|
||||
.if (${MACHINE} == "i386")
|
||||
CFLAGS+= -O3 -ffast-math -fomit-frame-pointer
|
||||
.else
|
||||
CFLAGS+= -ffast-math -fomit-frame-pointer
|
||||
.endif
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MFFMPEG}
|
||||
LIB_DEPENDS+= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
|
||||
CONFIGURE_ARGS+= --with-ffmpeg
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-ffmpeg
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MFFTW}
|
||||
LIB_DEPENDS+= libfftw.so:${PORTSDIR}/math/fftw
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MTTF}
|
||||
LIB_DEPENDS+= libttf.so:${PORTSDIR}/print/freetype
|
||||
CONFIGURE_ARGS+= --with-ttflib
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-ttflib
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MFREETYPE}
|
||||
LIB_DEPENDS+= libfreetype.so:${PORTSDIR}/print/freetype2
|
||||
CONFIGURE_ARGS+= --with-freetype
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-freetype
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MMYSQL}
|
||||
USE_MYSQL= yes
|
||||
CONFIGURE_ARGS+= --with-mysql=${PREFIX}
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-mysql
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPGSQL}
|
||||
USE_PGSQL= yes
|
||||
CONFIGURE_ARGS+= --with-pgsql=${PREFIX}
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-pgsql
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MODBC}
|
||||
LIB_DEPENDS+= libodbc.so:${PORTSDIR}/databases/unixODBC
|
||||
CONFIGURE_ARGS+= --with-odbc
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-odbc
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSANE}
|
||||
LIB_DEPENDS+= libsane.so:${PORTSDIR}/graphics/sane-backends
|
||||
CONFIGURE_ARGS+= --with-sane
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-sane
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MPDF}
|
||||
LIB_DEPENDS+= libpdf.so:${PORTSDIR}/print/pdflib \
|
||||
libpanda.so:${PORTSDIR}/print/panda
|
||||
CONFIGURE_ARGS+= --with-libpdf --with-libpanda
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-libpdf --without-libpanda
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MSVG2}
|
||||
LIB_DEPENDS+= librsvg-2.so:${PORTSDIR}/graphics/librsvg2
|
||||
CONFIGURE_ARGS+= --with-svg
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-svg
|
||||
.endif
|
||||
|
||||
.if ${PORT_OPTIONS:MTDS}
|
||||
LIB_DEPENDS+= libct.so:${PORTSDIR}/databases/freetds
|
||||
CONFIGURE_ARGS+= --with-sybase
|
||||
PLIST_SUB+= SYBASE:=""
|
||||
.else
|
||||
CONFIGURE_ARGS+= --without-sybase
|
||||
PLIST_SUB+= SYBASE:="@comment "
|
||||
.endif
|
||||
|
||||
INSTALL_TARGET= install_nodoc
|
||||
|
||||
pre-configure:
|
||||
@${ECHO} ${CONFIGURE_ARGS}
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -e 's| -lgmp| -L${LOCALBASE}/lib -lgmp|' \
|
||||
${WRKSRC}/src/modules/Gmp/configure ${WRKSRC}/src/modules/_Image_XFace/configure
|
||||
@${REINPLACE_CMD} -e 's|%%PTHREAD_CFLAGS%%|${PTHREAD_CFLAGS}|' \
|
||||
-e 's|%%PTHREAD_LIBS%%|${PTHREAD_LIBS}|' \
|
||||
-e "s|/cc/|&'|" \
|
||||
${WRKSRC}/src/configure
|
||||
|
||||
post-extract:
|
||||
@mv ${WRKSRC}/bundles/nettle-1.15.tar.gz \
|
||||
${WRKSRC}/bundles/nettle-1.15.tar
|
||||
@gzip ${WRKSRC}/bundles/nettle-1.15.tar
|
||||
|
||||
post-install:
|
||||
@${STRIP_CMD} ${PREFIX}/pike/${PORTVERSION}/bin/pike
|
||||
@${INSTALL_SCRIPT} ${WRKSRC}/bin/hilfe ${PREFIX}/bin
|
||||
@${INSTALL_MAN} ${WRKSRC}/man/pike.1 ${MAN1PREFIX}/man/man1
|
||||
@cd ${PREFIX} && ${FIND} pike/${PORTVERSION} ! -type d >> ${TMPPLIST}
|
||||
@cd ${PREFIX} && ${FIND} pike/${PORTVERSION} -type d -empty -delete
|
||||
@cd ${PREFIX} && ${FIND} -d pike/${PORTVERSION} -type d | \
|
||||
${SED} 's,^,@dirrm ,' >> ${TMPPLIST}
|
||||
@${ECHO} '@unexec rmdir %D/pike 2>/dev/null || true' >> ${TMPPLIST}
|
||||
|
||||
.include <bsd.port.post.mk>
|
|
@ -1,2 +0,0 @@
|
|||
SHA256 (Pike-v7.6.132.tar.gz) = aea7d70fb1d6845a5faff2d5d1c3b6f6fa6d5038d8dc08805c7b6e922198470f
|
||||
SIZE (Pike-v7.6.132.tar.gz) = 11759983
|
|
@ -1,11 +0,0 @@
|
|||
--- Makefile.orig 2007-04-18 21:19:27.000000000 +0400
|
||||
+++ Makefile 2011-09-15 15:14:33.000000000 +0400
|
||||
@@ -4,6 +4,8 @@
|
||||
# Meta Makefile
|
||||
#
|
||||
|
||||
+unexport LDFLAGS
|
||||
+
|
||||
VPATH=.
|
||||
OS=`uname -s -r -m|sed \"s/ /-/g\"|tr \"[A-Z]\" \"[a-z]\"|tr \"/()\" \"___\"`
|
||||
BUILDDIR=build/$(OS)
|
|
@ -1,13 +0,0 @@
|
|||
--- src/modules/_Image_FreeType/configure.orig 2007-04-15 14:40:08.000000000 +0200
|
||||
+++ src/modules/_Image_FreeType/configure 2011-03-11 10:35:16.000000000 +0100
|
||||
@@ -2688,8 +2688,8 @@ echo "${ECHO_T}no" >&6
|
||||
fi
|
||||
|
||||
else
|
||||
- # Extract the first word of "${ac_tool_prefix}freetype-config", so it can be a program name with args.
|
||||
-set dummy ${ac_tool_prefix}freetype-config; ac_word=$2
|
||||
+ # Extract the first word of "freetype-config", so it can be a program name with args.
|
||||
+set dummy freetype-config; ac_word=$2
|
||||
echo "$as_me:$LINENO: checking for $ac_word" >&5
|
||||
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
|
||||
if test "${ac_cv_path_FT_CONFIG+set}" = set; then
|
|
@ -1,11 +0,0 @@
|
|||
--- bin/install.pike.orig 2007-01-01 01:28:18.000000000 +0100
|
||||
+++ bin/install.pike 2011-03-11 10:35:16.000000000 +0100
|
||||
@@ -1707,7 +1707,7 @@ void do_install()
|
||||
|
||||
if(file_stat(vars->MANDIR_SRC))
|
||||
{
|
||||
- install_dir(vars->MANDIR_SRC,combine_path(man_prefix,"man1"),0);
|
||||
+ //install_dir(vars->MANDIR_SRC,combine_path(man_prefix,"man1"),0);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- src/modules/common_module_makefile.in.orig 2011-03-12 19:54:33.000000000 +0100
|
||||
+++ src/modules/common_module_makefile.in 2011-03-12 19:54:35.000000000 +0100
|
||||
@@ -58,7 +58,7 @@ $(MODULE_ARCHIVES) ThisIsAPhonyTargetBla
|
||||
.c.o:
|
||||
@echo "Compiling $<" ;\
|
||||
rm -f $@.fail >/dev/null 2>&1; \
|
||||
- if $(CC) $(PREFLAGS) $(CFLAGS) -c $< -o $@ ; then : ; else \
|
||||
+ if $(CC) $(PREFLAGS) $(REAL_CPPFLAGS) $(CFLAGS) -c $< -o $@ ; then : ; else \
|
||||
status=$$?; \
|
||||
if test x"@noopt_retry@" = xyes ; then \
|
||||
echo "WARNING: Compiler failure! Trying without optimization!" >&2;\
|
||||
@@ -102,7 +102,7 @@ $(SRCDIR)/configure: $(SRCDIR)/configure
|
||||
cd $(SRCDIR) && $(PIKE_SRC_DIR)/run_autoconfig .
|
||||
|
||||
config.status: $(SRCDIR)/configure
|
||||
- AR="$(AR)" CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" LDSHARED="$(REAL_LDSHARED)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)" ./config.status --recheck
|
||||
+ ./config.status --recheck AR="$(AR)" CFLAGS="$(REAL_CFLAGS)" LDFLAGS="$(REAL_LDFLAGS)" LDSHARED="$(REAL_LDSHARED)" CPPFLAGS="$(REAL_CPPFLAGS)" BUILDDIR="$(TMP_BUILDDIR)" BINDIR="$(TMP_BINDIR)" PIKE_SRC_DIR="$(PIKE_SRC_DIR)" BUILD_BASE="$(BUILD_BASE)"
|
||||
|
||||
module.pmod: Makefile $(MODULE_PMOD_IN)
|
||||
@if [ "x$(MODULE_PMOD_IN)" != "x" ]; then \
|
|
@ -1,19 +0,0 @@
|
|||
Pike is an interpreted, object-oriented programming language.
|
||||
It looks a bit like C and C++, but it is much easier to learn and use. It
|
||||
can be used for small scripts as well as for large programs.
|
||||
|
||||
Pike is :
|
||||
- High-level and powerful, which means that even very complex
|
||||
things are easy to do.
|
||||
- Object-oriented, which means that you can use modern programming
|
||||
techniques to divide a large program into small pieces, which are much
|
||||
easier to write than it would be to write the entire program at once.
|
||||
- Interpreted, which means that you don't have to wait for a program to
|
||||
compile and link when you want to run it.
|
||||
- One of the fastest "scripting" languages available.
|
||||
- Garbage-collected, which makes programming much simpler, and removes
|
||||
the risk for memory leaks and other memory-related bugs.
|
||||
- Easy to extend, which means that you can create plug-ins, written in
|
||||
Pike as well as in C or C++, and integrate them with the rest of Pike.
|
||||
|
||||
WWW: http://pike.ida.liu.se/
|
|
@ -966,9 +966,6 @@
|
|||
SUBDIR += sud
|
||||
SUBDIR += sudo
|
||||
SUBDIR += sudoscript
|
||||
SUBDIR += sudosh
|
||||
SUBDIR += sudosh2
|
||||
SUBDIR += sudosh3
|
||||
SUBDIR += super
|
||||
SUBDIR += suricata
|
||||
SUBDIR += swatch
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
# Created by: cy@FreeBSD.org
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= sudosh
|
||||
PORTVERSION= 1.8.2
|
||||
PORTREVISION= 5
|
||||
CATEGORIES= security
|
||||
MASTER_SITES= SF/${PORTNAME}/OldFiles
|
||||
|
||||
MAINTAINER= cy@FreeBSD.org
|
||||
COMMENT= A sudo shell
|
||||
|
||||
DEPRECATED= Funcition replaced by sudo -s
|
||||
EXPIRATION_DATE= 2014-07-01
|
||||
|
||||
RUN_DEPENDS= sudo:${PORTSDIR}/security/sudo
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
|
||||
CONFIGURE_ARGS= --bindir="${PREFIX}/bin"
|
||||
CONFIGURE_ARGS+= --sysconfdir="${PREFIX}/etc"
|
||||
CONFIGURE_ARGS+= --program-transform-name=''
|
||||
.if defined(SUDOSH_LOGDIR)
|
||||
CONFIGURE_ARGS+= --with-logdir="${SUDOSH_LOGDIR}"
|
||||
.else
|
||||
CONFIGURE_ARGS+= --with-logdir=/var/log/sudosh
|
||||
.endif
|
||||
LDFLAGS+= -lutil
|
||||
|
||||
MAN1= sudosh.1
|
||||
MAN5= sudosh.conf.5
|
||||
MAN8= sudosh-replay.8
|
||||
|
||||
NO_STAGE= yes
|
||||
.include <bsd.port.mk>
|
|
@ -1,2 +0,0 @@
|
|||
SHA256 (sudosh-1.8.2.tar.gz) = 0a536d970accf1d4366bcb49441ef6773711df7d48501f72ca6cc451ca3e87fd
|
||||
SIZE (sudosh-1.8.2.tar.gz) = 135757
|
|
@ -1,12 +0,0 @@
|
|||
--- src/parse.c.orig Sun Jun 12 16:22:42 2005
|
||||
+++ src/parse.c Fri Jan 5 17:54:55 2007
|
||||
@@ -19,7 +19,8 @@
|
||||
void parse(option * o, const char *file)
|
||||
{
|
||||
FILE *f = fopen(file, "r");
|
||||
- unsigned int line_number, i;
|
||||
+ unsigned int line_number;
|
||||
+ int i;
|
||||
char line[BUFSIZ];
|
||||
char *arg, *cmt, *opt;
|
||||
config *scan;
|
|
@ -1,11 +0,0 @@
|
|||
--- src/Makefile.in.orig Sun Jun 12 19:33:29 2005
|
||||
+++ src/Makefile.in Wed Oct 26 06:59:17 2005
|
||||
@@ -427,7 +427,8 @@
|
||||
|
||||
install-sudosh.conf:
|
||||
test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
|
||||
test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf'
|
||||
+ $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample'
|
||||
|
||||
install: install-am install-sudosh.conf
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
@ -1,129 +0,0 @@
|
|||
--- src/sudosh.c.orig Sun Jun 12 19:35:07 2005
|
||||
+++ src/sudosh.c Fri Jan 5 14:14:05 2007
|
||||
@@ -28,6 +28,13 @@
|
||||
|
||||
#define WRITE(a, b, c) do_write(a, b, c, __FILE__, __LINE__)
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <libutil.h>
|
||||
+#include <sys/param.h>
|
||||
+#endif
|
||||
+
|
||||
static struct termios termorig;
|
||||
static struct winsize winorig;
|
||||
|
||||
@@ -545,19 +552,43 @@
|
||||
{
|
||||
char *sname;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#define PTYLEN 16
|
||||
+ char sname_area[PTYLEN];
|
||||
+ struct termios tt;
|
||||
+ struct winsize win;
|
||||
+
|
||||
+ sname = sname_area;
|
||||
+ if (tcgetattr(STDIN_FILENO, &tt) == -1)
|
||||
+ {
|
||||
+ perror ("tcgetattr");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1)
|
||||
+ {
|
||||
+ perror ("ioctl");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (openpty(&p->mfd, &p->sfd, sname, &tt, &win) == -1) {
|
||||
+#else
|
||||
if ((p->mfd = open ("/dev/ptmx", O_RDWR)) == -1)
|
||||
{
|
||||
if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1)
|
||||
{
|
||||
+#endif
|
||||
perror ("Cannot open cloning master pty");
|
||||
return -1;
|
||||
+#ifndef __FreeBSD__
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
+#if !defined(__FreeBSD_version) || (defined(__FreeBSD_version) && __FreeBSD_version >= 500000)
|
||||
(void) unlockpt (p->mfd);
|
||||
(void) grantpt (p->mfd);
|
||||
|
||||
sname = (char *) ptsname (p->mfd);
|
||||
+#endif
|
||||
|
||||
if ((p->sfd = open (sname, O_RDWR)) == -1)
|
||||
{
|
||||
@@ -619,9 +650,14 @@
|
||||
for (i = 3; i < 100; ++i)
|
||||
close (i);
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+ (void) login_tty(pst->sfd);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
#endif
|
||||
+#endif
|
||||
(void) ioctl (0, TIOCSWINSZ, &winorig);
|
||||
|
||||
setuid (getuid ());
|
||||
@@ -663,6 +699,13 @@
|
||||
{
|
||||
static struct termios termnew;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ if (tcgetattr(ttyfd, &termorig) == -1)
|
||||
+ {
|
||||
+ perror ("tcgetattr failed");
|
||||
+ exit (EXIT_FAILURE);
|
||||
+ }
|
||||
+#else
|
||||
#ifdef TCGETS
|
||||
if (ioctl (ttyfd, TCGETS, &termorig) == -1)
|
||||
{
|
||||
@@ -670,6 +713,7 @@
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
if (ioctl (ttyfd, TIOCGWINSZ, &winorig) == -1)
|
||||
{
|
||||
@@ -677,6 +721,11 @@
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) cfmakeraw(&termnew);
|
||||
+ termnew.c_lflag &= ~ECHO;
|
||||
+ (void) tcsetattr(ttyfd, TCSAFLUSH, &termnew);
|
||||
+#else
|
||||
termnew.c_cc[VEOF] = 1;
|
||||
termnew.c_iflag = BRKINT | ISTRIP | IXON | IXANY;
|
||||
termnew.c_oflag = 0;
|
||||
@@ -686,13 +735,19 @@
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (ttyfd, TCSETS, &termnew);
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void
|
||||
bye (int signum)
|
||||
{
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
close (timing.fd);
|
|
@ -1,7 +0,0 @@
|
|||
sudosh is a sudo shell. Sudosh provides a logged root shell that can
|
||||
be used for auditing. It works just like a VCR, records the root shell
|
||||
session and offers real-time playback. Sudosh is designed to be used
|
||||
with sudo in an enterprise environment.
|
||||
|
||||
WWW: http://sourceforge.net/projects/sudosh/
|
||||
http://freshmeat.net/projects/sudosh/
|
|
@ -1,5 +0,0 @@
|
|||
@unexec test -f %D/etc/sudosh.conf && cmp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf > /dev/null 2>&1 && rm %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has been removed; test -f %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has not been removed; true
|
||||
bin/sudosh
|
||||
bin/sudosh-replay
|
||||
etc/sudosh.conf.sample
|
||||
@exec test -f %D/etc/sudosh.conf || cp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf
|
|
@ -1,41 +0,0 @@
|
|||
# Created by: cy@FreeBSD.org
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= sudosh2
|
||||
PORTVERSION= 1.0.5
|
||||
CATEGORIES= security
|
||||
MASTER_SITES= SF/${PORTNAME}
|
||||
EXTRACT_SUFX= .tgz
|
||||
|
||||
MAINTAINER= cy@FreeBSD.org
|
||||
COMMENT= Second version of the sudo shell
|
||||
CONFLICTS= sudosh-*
|
||||
|
||||
DEPRECATED= Funcition replaced by sudo -s
|
||||
EXPIRATION_DATE= 2014-07-01
|
||||
|
||||
RUN_DEPENDS= sudo:${PORTSDIR}/security/sudo
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
|
||||
CONFIGURE_ARGS= --bindir="${PREFIX}/bin"
|
||||
CONFIGURE_ARGS+= --sysconfdir="${PREFIX}/etc"
|
||||
CONFIGURE_ARGS+= --program-transform-name=''
|
||||
.if defined(SUDOSH_LOGDIR)
|
||||
CONFIGURE_ARGS+= --with-logdir="${SUDOSH_LOGDIR}"
|
||||
.else
|
||||
CONFIGURE_ARGS+= --with-logdir=/var/log/sudosh
|
||||
.endif
|
||||
LDFLAGS+= -lutil
|
||||
|
||||
MAN1= sudosh.1
|
||||
MAN5= sudosh.conf.5
|
||||
MAN8= sudosh-replay.8
|
||||
|
||||
NO_STAGE= yes
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
post-install:
|
||||
@${TEST} -f ${PREFIX}/etc/sudosh.conf || ${CP} -p ${PREFIX}/etc/sudosh.conf.sample ${PREFIX}/etc/sudosh.conf
|
||||
|
||||
.include <bsd.port.post.mk>
|
|
@ -1,2 +0,0 @@
|
|||
SHA256 (sudosh2-1.0.5.tgz) = c6ab7d4b736e19b409e66216d7760f3f64ecac849e034f03db567097cb8eb8ef
|
||||
SIZE (sudosh2-1.0.5.tgz) = 258181
|
|
@ -1,11 +0,0 @@
|
|||
--- src/getopt.c.orig 2007-12-21 13:03:26.000000000 -0800
|
||||
+++ src/getopt.c 2008-09-26 13:45:11.958473185 -0700
|
||||
@@ -195,6 +195,8 @@
|
||||
/* gcc with -traditional declares the built-in strlen to return int,
|
||||
and has done so at least since version 2.4.5. -- rms. */
|
||||
extern int strlen(const char *);
|
||||
+#else
|
||||
+#include <string.h>
|
||||
#endif /* not __STDC__ */
|
||||
#endif /* __GNUC__ */
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- src/replay.c.orig 2010-07-09 13:37:01.000000000 -0700
|
||||
+++ src/replay.c 2013-05-26 10:07:55.720227505 -0700
|
||||
@@ -238,7 +238,7 @@
|
||||
strncpy(s->randstr, randstr, BUFSIZ - 1);
|
||||
strftime(s->date, 20, "%m/%d/%Y %H:%M:%S", localtime(&s->e));
|
||||
snprintf(s->id, BUFSIZ - 1, "%s%c%s%c%ld%c%s", s->from,
|
||||
- config_option.fdl, s->to, config_option.fdl, s->e,
|
||||
+ config_option.fdl, s->to, config_option.fdl, (long)s->e,
|
||||
config_option.fdl, s->randstr);
|
||||
|
||||
link_session(s);
|
|
@ -1,11 +0,0 @@
|
|||
--- src/Makefile.in.orig Sun Jun 12 19:33:29 2005
|
||||
+++ src/Makefile.in Wed Oct 26 06:59:17 2005
|
||||
@@ -427,7 +427,8 @@
|
||||
|
||||
install-sudosh.conf:
|
||||
test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
|
||||
test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf'
|
||||
+ $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample'
|
||||
|
||||
install: install-am install-sudosh.conf
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
@ -1,129 +0,0 @@
|
|||
--- src/sudosh.c.orig Sun Jun 12 19:35:07 2005
|
||||
+++ src/sudosh.c Fri Jan 5 14:14:05 2007
|
||||
@@ -28,6 +28,13 @@
|
||||
|
||||
#define WRITE(a, b, c) do_write(a, b, c, __FILE__, __LINE__)
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <libutil.h>
|
||||
+#include <sys/param.h>
|
||||
+#endif
|
||||
+
|
||||
static struct termios termorig;
|
||||
static struct winsize winorig;
|
||||
|
||||
@@ -545,19 +552,43 @@
|
||||
{
|
||||
char *sname;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#define PTYLEN 16
|
||||
+ char sname_area[PTYLEN];
|
||||
+ struct termios tt;
|
||||
+ struct winsize win;
|
||||
+
|
||||
+ sname = sname_area;
|
||||
+ if (tcgetattr(STDIN_FILENO, &tt) == -1)
|
||||
+ {
|
||||
+ perror ("tcgetattr");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1)
|
||||
+ {
|
||||
+ perror ("ioctl");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (openpty(&p->mfd, &p->sfd, sname, &tt, &win) == -1) {
|
||||
+#else
|
||||
if ((p->mfd = open ("/dev/ptmx", O_RDWR)) == -1)
|
||||
{
|
||||
if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1)
|
||||
{
|
||||
+#endif
|
||||
perror ("Cannot open cloning master pty");
|
||||
return -1;
|
||||
+#ifndef __FreeBSD__
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
+#if !defined(__FreeBSD_version) || (defined(__FreeBSD_version) && __FreeBSD_version >= 500000)
|
||||
(void) unlockpt (p->mfd);
|
||||
(void) grantpt (p->mfd);
|
||||
|
||||
sname = (char *) ptsname (p->mfd);
|
||||
+#endif
|
||||
|
||||
if ((p->sfd = open (sname, O_RDWR)) == -1)
|
||||
{
|
||||
@@ -619,9 +650,14 @@
|
||||
for (i = 3; i < 100; ++i)
|
||||
close (i);
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+ (void) login_tty(pst->sfd);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
#endif
|
||||
+#endif
|
||||
(void) ioctl (0, TIOCSWINSZ, &winorig);
|
||||
|
||||
setuid (getuid ());
|
||||
@@ -663,6 +699,13 @@
|
||||
{
|
||||
static struct termios termnew;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ if (tcgetattr(ttyfd, &termorig) == -1)
|
||||
+ {
|
||||
+ perror ("tcgetattr failed");
|
||||
+ exit (EXIT_FAILURE);
|
||||
+ }
|
||||
+#else
|
||||
#ifdef TCGETS
|
||||
if (ioctl (ttyfd, TCGETS, &termorig) == -1)
|
||||
{
|
||||
@@ -670,6 +713,7 @@
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
if (ioctl (ttyfd, TIOCGWINSZ, &winorig) == -1)
|
||||
{
|
||||
@@ -677,6 +721,11 @@
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) cfmakeraw(&termnew);
|
||||
+ termnew.c_lflag &= ~ECHO;
|
||||
+ (void) tcsetattr(ttyfd, TCSAFLUSH, &termnew);
|
||||
+#else
|
||||
termnew.c_cc[VEOF] = 1;
|
||||
termnew.c_iflag = BRKINT | ISTRIP | IXON | IXANY;
|
||||
termnew.c_oflag = 0;
|
||||
@@ -686,13 +735,19 @@
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (ttyfd, TCSETS, &termnew);
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void
|
||||
bye (int signum)
|
||||
{
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
close (timing.fd);
|
|
@ -1,13 +0,0 @@
|
|||
Sudosh2 is a tool which can provide systems administrators with extensive
|
||||
auditing of user shell usage.
|
||||
|
||||
There are two distinct modes of operation for sudosh2: as a filter for sudo,
|
||||
and directly as a login shell. In either case, you will be able to audit
|
||||
user sessions by replaying them to your screen, much like a VCR.
|
||||
|
||||
Sudosh2 is a fork of sudosh (by Douglas Hanks). He stopped updating sudosh
|
||||
in 2005, and this fork was created in 2007. Sudosh2 is licensed with the
|
||||
Open Source License v2.0.
|
||||
|
||||
http://sourceforge.net/projects/sudosh2/
|
||||
http://www.shortcutsolutions.net/software/40-software-development/55-introduction-to-sudosh2.html
|
|
@ -1,5 +0,0 @@
|
|||
@unexec test -f %D/etc/sudosh.conf && cmp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf > /dev/null 2>&1 && rm %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has been removed; test -f %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has not been removed; true
|
||||
bin/sudosh
|
||||
bin/sudosh-replay
|
||||
etc/sudosh.conf.sample
|
||||
@exec test -f %D/etc/sudosh.conf || cp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf
|
|
@ -1,43 +0,0 @@
|
|||
# Created by: cy@FreeBSD.org
|
||||
# $FreeBSD$
|
||||
|
||||
PORTNAME= sudosh3
|
||||
PORTVERSION= 3.2.0
|
||||
PORTREVISION= 3
|
||||
CATEGORIES= security
|
||||
MASTER_SITES= SF/${PORTNAME}
|
||||
|
||||
MAINTAINER= cy@FreeBSD.org
|
||||
COMMENT= Third version of the sudo shell
|
||||
CONFLICTS= sudosh-*
|
||||
|
||||
DEPRECATED= Funcition replaced by sudo -s
|
||||
EXPIRATION_DATE= 2014-07-01
|
||||
BROKEN= build error in relay.c
|
||||
|
||||
RUN_DEPENDS= sudo:${PORTSDIR}/security/sudo
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
|
||||
EXTRACT_AFTER_ARGS= |${TAR} -xpf - --exclude 'getopt.*'
|
||||
CONFIGURE_ARGS= --bindir="${PREFIX}/bin"
|
||||
CONFIGURE_ARGS+= --sysconfdir="${PREFIX}/etc"
|
||||
CONFIGURE_ARGS+= --program-transform-name=''
|
||||
.if defined(SUDOSH_LOGDIR)
|
||||
CONFIGURE_ARGS+= --with-logdir="${SUDOSH_LOGDIR}"
|
||||
.else
|
||||
CONFIGURE_ARGS+= --with-logdir=/var/log/sudosh
|
||||
.endif
|
||||
LDFLAGS+= -lutil
|
||||
|
||||
MAN1= sudosh.1
|
||||
MAN5= sudosh.conf.5
|
||||
MAN8= sudosh-replay.8
|
||||
|
||||
NO_STAGE= yes
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
post-install:
|
||||
@${TEST} -f ${PREFIX}/etc/sudosh.conf || ${CP} -p ${PREFIX}/etc/sudosh.conf.sample ${PREFIX}/etc/sudosh.conf
|
||||
|
||||
.include <bsd.port.post.mk>
|
|
@ -1,2 +0,0 @@
|
|||
SHA256 (sudosh3-3.2.0.tar.gz) = 8a1099da9a6115db2cf70112aa48600bd056c868e98ac27e80b07bfab4b7b362
|
||||
SIZE (sudosh3-3.2.0.tar.gz) = 244867
|
|
@ -1,10 +0,0 @@
|
|||
--- src/Makefile.am.orig 2008-01-30 14:55:46.000000000 -0800
|
||||
+++ src/Makefile.am 2010-01-14 21:25:28.195547024 -0800
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
install-sudosh.conf:
|
||||
test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
|
||||
- test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf'
|
||||
+ $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample'
|
||||
|
||||
install: install-am install-sudosh.conf
|
|
@ -1,85 +0,0 @@
|
|||
--- src/Makefile.in 2008-02-22 16:11:02.000000000 -0500
|
||||
+++ src/Makefile.in 2013-02-12 16:16:50.000000000 -0500
|
||||
@@ -51,11 +51,11 @@
|
||||
string.$(OBJEXT) util.$(OBJEXT)
|
||||
sudosh_OBJECTS = $(am_sudosh_OBJECTS)
|
||||
sudosh_LDADD = $(LDADD)
|
||||
-am_sudosh_replay_OBJECTS = replay.$(OBJEXT) getopt.$(OBJEXT) \
|
||||
+am_sudosh_replay_OBJECTS = replay.$(OBJEXT) \
|
||||
string.$(OBJEXT) parse.$(OBJEXT) util.$(OBJEXT)
|
||||
sudosh_replay_OBJECTS = $(am_sudosh_replay_OBJECTS)
|
||||
sudosh_replay_LDADD = $(LDADD)
|
||||
-DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
|
||||
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
@@ -165,10 +165,11 @@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
+top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
-sudosh_SOURCES = sudosh.c rand.c parse.c string.c getopt.h struct.h super.h util.c
|
||||
-sudosh_replay_SOURCES = replay.c getopt.c getopt.h string.c parse.c util.c
|
||||
+sudosh_SOURCES = sudosh.c rand.c parse.c string.c struct.h super.h util.c
|
||||
+sudosh_replay_SOURCES = replay.c string.c parse.c util.c
|
||||
EXTRA_DIST = sudosh.conf
|
||||
all: all-am
|
||||
|
||||
@@ -241,7 +242,6 @@
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replay.Po@am__quote@
|
||||
@@ -268,8 +268,8 @@
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
- $(AWK) ' { files[$$0] = 1; } \
|
||||
- END { for (i in files) print i; }'`; \
|
||||
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
@@ -281,8 +281,8 @@
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
- $(AWK) ' { files[$$0] = 1; } \
|
||||
- END { for (i in files) print i; }'`; \
|
||||
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
@@ -292,13 +292,12 @@
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
- here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
- $(AWK) ' { files[$$0] = 1; } \
|
||||
- END { for (i in files) print i; }'`; \
|
||||
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
@@ -442,7 +441,7 @@
|
||||
|
||||
install-sudosh.conf:
|
||||
test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)"
|
||||
- test -f $(sysconfdir)/sudosh.conf || $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf'
|
||||
+ $(INSTALL) -o 0 -g 0 -m 0444 '$(srcdir)/sudosh.conf' '$(sysconfdir)/sudosh.conf.sample'
|
||||
|
||||
install: install-am install-sudosh.conf
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
@ -1,20 +0,0 @@
|
|||
Eliminate unused variables.
|
||||
--- src/parse.c 2009-11-24 07:13:28.000000000 -0500
|
||||
+++ src/parse.c 2013-02-12 16:12:57.000000000 -0500
|
||||
@@ -8,9 +8,7 @@
|
||||
{
|
||||
FILE *f;
|
||||
- unsigned int line_number, i;
|
||||
char line[BUFSIZ];
|
||||
int leftside;
|
||||
char key[BUFSIZ], value[BUFSIZ];
|
||||
- char *arg, *cmt, *opt;
|
||||
char *p;
|
||||
struct stat defshell_stat;
|
||||
@@ -18,5 +16,5 @@
|
||||
char *shell;
|
||||
int found = FALSE;
|
||||
- unsigned int x=0, y=0;
|
||||
+ unsigned int x=0;
|
||||
|
||||
// bzero(c, sizeof (struct s_option));
|
|
@ -1,49 +0,0 @@
|
|||
Use the modern random(3) and device-based seeding.
|
||||
|
||||
-mi
|
||||
|
||||
--- src/rand.c 2009-11-18 07:23:18.000000000 -0500
|
||||
+++ src/rand.c 2013-02-12 16:09:01.000000000 -0500
|
||||
@@ -1,26 +1,18 @@
|
||||
#include "super.h"
|
||||
|
||||
-int myrand(void)
|
||||
-{
|
||||
- struct timeval tv;
|
||||
- unsigned int seed;
|
||||
-
|
||||
- gettimeofday(&tv, (struct timezone *) 0);
|
||||
- seed = (tv.tv_sec % 10000) * 523 + tv.tv_usec * 13 + (getpid() % 1000) * 983;
|
||||
- srand(seed);
|
||||
-
|
||||
- return rand();
|
||||
-}
|
||||
-
|
||||
-char *rand2str(size_t len)
|
||||
+const char *
|
||||
+rand2str(size_t len)
|
||||
{
|
||||
static char buf[BUFSIZ];
|
||||
char *ptr = buf;
|
||||
- char *alphabet =
|
||||
+ char alphabet[] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
- int i;
|
||||
+ size_t i;
|
||||
+
|
||||
+ if (len == 0)
|
||||
+ return NULL;
|
||||
|
||||
- if (len < 0)
|
||||
- return (char *) 0;
|
||||
+ if (buf[0] == '\0') /* First time we are here */
|
||||
+ srandomdev(); /* Seed */
|
||||
|
||||
if (len >= BUFSIZ)
|
||||
@@ -28,5 +20,5 @@
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
- int j = (myrand() & 0xffff) % (26 + 26 + 10);
|
||||
+ int j = random() % (sizeof(alphabet)/sizeof(char) - 1);
|
||||
ptr[i] = alphabet[j];
|
||||
}
|
|
@ -1,110 +0,0 @@
|
|||
Address the buffer-overflow problem outlined here:
|
||||
http://packetstormsecurity.com/files/85687/sa38292.txt
|
||||
(buffer is of size BUFSIZ, but the check is for 8Mb, which may not be the
|
||||
same) by not using a buffer at all. Instead we simply mmap the script-file.
|
||||
|
||||
The patch also adds closing of the script file at the end and fixes some
|
||||
compiler warnings (the the -Wall -W levels).
|
||||
|
||||
On 32-bit architectures this limits the replayable script-size to 4Gb.
|
||||
|
||||
-mi
|
||||
--- src/replay.c 2009-11-24 09:54:58.000000000 -0500
|
||||
+++ src/replay.c 2013-02-12 15:51:31.000000000 -0500
|
||||
@@ -19,4 +19,6 @@
|
||||
#include "super.h"
|
||||
#include "struct.h"
|
||||
+#include <sys/mman.h>
|
||||
+#include <stdint.h>
|
||||
|
||||
#define LL() fprintf(stderr, "[%s, line %i]: ", __FILE__, __LINE__)
|
||||
@@ -71,5 +73,5 @@
|
||||
void show_sessions(void);
|
||||
|
||||
-int main(int argc, char **argv, char **environ)
|
||||
+int main(int argc, char *argv[])
|
||||
{
|
||||
int c;
|
||||
@@ -406,14 +408,15 @@
|
||||
void replay(const char *time, const char *script, int div, int maxwait)
|
||||
{
|
||||
- char read_buffer[BUFSIZ];
|
||||
+ char *read_buffer;
|
||||
char timebuf[BUFSIZ];
|
||||
float ftime = 0;
|
||||
int b = 0;
|
||||
int bInput = 0;
|
||||
- int r = 0;
|
||||
int sec, usec;
|
||||
char buffer[BUFSIZ];
|
||||
struct s_file s_time;
|
||||
struct s_file s_script;
|
||||
+ struct stat sb;
|
||||
+ off_t offset;
|
||||
struct timeval tv;
|
||||
|
||||
@@ -432,9 +435,13 @@
|
||||
}
|
||||
|
||||
- if ((s_script.fd = open(script, O_RDONLY)) == -1) {
|
||||
+ if ((s_script.fd = open(script, O_RDONLY)) == -1 ||
|
||||
+ fstat(s_script.fd, &sb) ||
|
||||
+ (read_buffer = mmap(NULL, sb.st_size, PROT_READ, MAP_NOCORE|MAP_SHARED, s_script.fd, 0))
|
||||
+ == MAP_FAILED) {
|
||||
LL();
|
||||
fprintf(stderr, "%s: %s: %s (%i)\n", progname, script, strerror(errno), errno);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
+ offset = 0;
|
||||
|
||||
for (s_time.line = 1; fgets(buffer, BUFSIZ - 1, s_time.f); s_time.line++) {
|
||||
@@ -478,29 +485,22 @@
|
||||
tv.tv_usec = (time_t) usec;
|
||||
|
||||
- if (b > 1024 * 1024 * 8) { /* 8MB */
|
||||
+ if (b > sb.st_size - offset) { /* 8MB */
|
||||
LL();
|
||||
- fprintf(stderr, "[error]: line %i: wanted to read %i bytes, but the limit is 8MB.\n", s_time.line, b);
|
||||
- exit(EXIT_FAILURE);
|
||||
- }
|
||||
-
|
||||
- memset(read_buffer, '\0', BUFSIZ);
|
||||
- r = read(s_script.fd, read_buffer, (size_t) b);
|
||||
-
|
||||
- if (r != b) {
|
||||
- LL();
|
||||
- fprintf(stderr, "[failure]: read %i bytes out of %i.\n", r, b);
|
||||
+ fprintf(stderr, "[error]: line %i: wanted to read %i bytes, but only %jd are "
|
||||
+ "left in %s.\n", s_time.line, b, (intmax_t)sb.st_size - offset, script);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
select(0, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &tv);
|
||||
- fputs(read_buffer, stdout);
|
||||
+ fwrite(read_buffer + offset, 1, b, stdout); /* Should we check for error here? XXX */
|
||||
+ offset += b;
|
||||
fflush(stdout);
|
||||
- memset(read_buffer, '\0', BUFSIZ);
|
||||
}
|
||||
+ munmap(read_buffer, sb.st_size);
|
||||
+ close(s_script.fd);
|
||||
fprintf(stderr, "[info]: EOF\n");
|
||||
fflush(stderr);
|
||||
}
|
||||
|
||||
-
|
||||
session *session_malloc(void)
|
||||
{
|
||||
@@ -586,5 +586,5 @@
|
||||
session *sort_list(session * list)
|
||||
{
|
||||
- session *p, *q, *e, *tail, *oldhead;
|
||||
+ session *p, *q, *e, *tail;
|
||||
int insize, nmerges, psize, qsize, i;
|
||||
|
||||
@@ -597,5 +597,4 @@
|
||||
|
||||
p = list;
|
||||
- oldhead = list;
|
||||
list = (session *) 0;
|
||||
tail = (session *) 0;
|
|
@ -1,152 +0,0 @@
|
|||
--- src/sudosh.c 2009-11-27 05:19:58.000000000 -0500
|
||||
+++ src/sudosh.c 2013-02-12 16:10:41.000000000 -0500
|
||||
@@ -28,4 +28,11 @@
|
||||
#define WRITE(a, b, c) do_write(a, b, c, __FILE__, __LINE__)
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <libutil.h>
|
||||
+#include <sys/param.h>
|
||||
+#endif
|
||||
+
|
||||
typedef enum {false=0, true=1} bool;
|
||||
|
||||
@@ -94,5 +101,5 @@
|
||||
static int findms (struct pst *);
|
||||
void mysyslog (int, const char *, ...);
|
||||
-char *rand2str (size_t len);
|
||||
+const char *rand2str (size_t len);
|
||||
int do_write (int, void *, size_t, char *, unsigned int);
|
||||
|
||||
@@ -109,10 +116,9 @@
|
||||
extern int optind;
|
||||
|
||||
-int main (int argc, char *argv[], char *environ[])
|
||||
+int main(int argc, char *argv[])
|
||||
{
|
||||
int result = EXIT_SUCCESS;
|
||||
// int n = 1;
|
||||
int valid = -1;
|
||||
- int found = FALSE;
|
||||
// char iobuf[BUFSIZ];
|
||||
char sysconfdir[BUFSIZ];
|
||||
@@ -120,6 +126,5 @@
|
||||
char c_command[BUFSIZ];
|
||||
char *p = NULL;
|
||||
- char *c_args = NULL;
|
||||
- char *rand = rand2str (16);
|
||||
+ const char *rand = rand2str (16);
|
||||
time_t now = time ((time_t *) NULL);
|
||||
struct stat s;
|
||||
@@ -178,13 +183,11 @@
|
||||
strncpy (c_str, optarg, BUFSIZ - 1);
|
||||
strncpy (c_command, optarg, BUFSIZ -1);
|
||||
- c_args = (char *) strchr (optarg, ' ');
|
||||
p=strchr(c_str, ' ');
|
||||
|
||||
if (p) {
|
||||
p[0]=0;
|
||||
- // fprintf(stderr,"args=%s\n",c_args);
|
||||
}
|
||||
|
||||
- if (c_str) {
|
||||
+ {
|
||||
// fprintf(stderr,"Testing c\n");
|
||||
// Make sure that c_str is in argallow
|
||||
@@ -444,10 +447,30 @@
|
||||
char *sname;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+#define PTYLEN 16
|
||||
+ char sname_area[PTYLEN];
|
||||
+ struct termios tt;
|
||||
+ struct winsize win;
|
||||
+
|
||||
+ sname = sname_area;
|
||||
+ if (tcgetattr(STDIN_FILENO, &tt) == -1) {
|
||||
+ perror ("tcgetattr");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1) {
|
||||
+ perror ("ioctl");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (openpty(&p->mfd, &p->sfd, sname, &tt, &win) == -1) {
|
||||
+#else
|
||||
if ((p->mfd = open ("/dev/ptmx", O_RDWR)) == -1) {
|
||||
|
||||
if ((p->mfd = open ("/dev/ptc", O_RDWR)) == -1) {
|
||||
+#endif
|
||||
perror ("Cannot open cloning master pty");
|
||||
return -1;
|
||||
+#ifndef __FreeBSD__
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
@@ -516,7 +539,12 @@
|
||||
close (i);
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+ (void) login_tty(pst->sfd);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
#endif
|
||||
+#endif
|
||||
(void) ioctl (0, TIOCSWINSZ, &winorig);
|
||||
|
||||
@@ -672,4 +700,11 @@
|
||||
static struct termios termnew;
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ if (tcgetattr(ttyfd, &termorig) == -1)
|
||||
+ {
|
||||
+ perror ("tcgetattr failed");
|
||||
+ exit (EXIT_FAILURE);
|
||||
+ }
|
||||
+#else
|
||||
#ifdef TCGETS
|
||||
if (ioctl (ttyfd, TCGETS, &termorig) == -1) {
|
||||
@@ -678,4 +713,5 @@
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
if (ioctl (ttyfd, TIOCGWINSZ, &winorig) == -1) {
|
||||
@@ -686,4 +722,9 @@
|
||||
}
|
||||
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) cfmakeraw(&termnew);
|
||||
+ termnew.c_lflag &= ~ECHO;
|
||||
+ (void) tcsetattr(ttyfd, TCSAFLUSH, &termnew);
|
||||
+#else
|
||||
termnew.c_cc[VEOF] = 1;
|
||||
termnew.c_iflag = BRKINT | ISTRIP | IXON | IXANY;
|
||||
@@ -695,11 +736,16 @@
|
||||
(void) ioctl (ttyfd, TCSETS, &termnew);
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void bye (int signum)
|
||||
{
|
||||
+#ifdef __FreeBSD__
|
||||
+ (void) tcsetattr(0, TCSADRAIN, &termorig);
|
||||
+#else
|
||||
#ifdef TCSETS
|
||||
(void) ioctl (0, TCSETS, &termorig);
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
close (timing.fd);
|
||||
@@ -713,5 +759,5 @@
|
||||
}
|
||||
|
||||
-static void newwinsize (int signum)
|
||||
+static void newwinsize (int signum __unused)
|
||||
{
|
||||
int fd;
|
|
@ -1,12 +0,0 @@
|
|||
Sudosh3 is a tool which can provide systems administrators with extensive
|
||||
auditing of user shell usage.
|
||||
|
||||
There are two distinct modes of operation for sudosh3: as a filter for sudo,
|
||||
and directly as a login shell. In either case, you will be able to audit
|
||||
user sessions by replaying them to your screen, much like a VCR.
|
||||
|
||||
Sudosh3 is a fork of sudosh (by Douglas Hanks). He stopped updating sudosh
|
||||
in 2005, and this fork was created in 2007. Sudosh2 is licensed with the
|
||||
Open Source License v2.0.
|
||||
|
||||
http://sourceforge.net/projects/sudosh3/
|
|
@ -1,5 +0,0 @@
|
|||
@unexec test -f %D/etc/sudosh.conf && cmp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf > /dev/null 2>&1 && rm %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has been removed; test -f %D/etc/sudosh.conf && echo %D/etc/sudosh.conf has not been removed; true
|
||||
bin/sudosh
|
||||
bin/sudosh-replay
|
||||
etc/sudosh.conf.sample
|
||||
@exec test -f %D/etc/sudosh.conf || cp %D/etc/sudosh.conf.sample %D/etc/sudosh.conf
|
Loading…
Reference in a new issue