uruk-20160219/ 0000755 0001750 0001750 00000000000 12661613117 007753 5 0000000 0000000 uruk-20160219/Makefile.am 0000644 0001750 0001750 00000003157 12566620545 011744 0000000 0000000 ## Process this file with automake to produce Makefile.in
## this file maintained at http://git.mdcc.cx/uruk.git
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
## Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
## Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
## Copyright (C) 2003, 2004, 2005 Joost van Baal
## Copyright (C) 2013 Joost van Baal-Ilić
## see booststrap for git2cl
## authors: joostvb,cgielen,wsl. DO display message id's.
ChangeLog: NEWS
git log --pretty --numstat --summary | git2cl | sed 's/<[jcw][^>][^>]*>//g' >ChangeLog
VERSION.m4 VERSION stamp.year stamp.month stamp.day: ChangeLog
./setversion
CONFIGURE_DEPENDENCIES = VERSION.m4
## Hook `dist-bzip2' to `dist'.
## AUTOMAKE_OPTIONS = dist-bzip2 check-news
AUTOMAKE_OPTIONS = dist-xz check-news
## used in make dist[check]
VERSION = @PACKAGE_VERSION@
PACKAGE = @PACKAGE_TARNAME@
SUBDIRS = script man doc contrib init lsb
docdir = $(datadir)/doc/$(PACKAGE)
doc_DATA = AUTHORS COPYING ChangeLog ChangeLog.2003 README THANKS TODO
## local targets
MY_RDIR = beskar.mdcc.cx:www/mdcc.cx/pub/uruk/
sign:
for i in $(DIST_ARCHIVES); do echo "gpg --armor --detach-sign $$i"; gpg --armor --detach-sign $$i; done
publish:
for i in $(DIST_ARCHIVES); do echo "scp $$i $$i.asc $(MY_RDIR)"; scp $$i $$i.asc $(MY_RDIR); done
@echo now run: ssh beskar update-tar-symlinks uruk
@echo '( or: ssh beskar.mdcc.cx ./bin/update-tar-symlinks uruk )'
EXTRA_DIST = bootstrap ChangeLog.2003 setversion stamp.month stamp.year \
stamp.day VERSION.m4 VERSION
uruk-20160219/configure 0000755 0001750 0001750 00000315711 12661613102 011604 0000000 0000000 #! /bin/sh
# From configure.ac 20160219.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for Uruk 20160219.
#
# Report bugs to .
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
#
#
# Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
# Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
# Copyright (C) 2003, 2004, 2005 Joost van Baal
#
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl='
'
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='print -r --'
as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='printf %s\n'
as_echo_n='printf %s'
else
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
as_echo_n='/usr/ucb/echo -n'
else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
case $arg in #(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
esac;
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
'
export as_echo_n_body
as_echo_n='sh -c $as_echo_n_body as_echo'
fi
export as_echo_body
as_echo='sh -c $as_echo_body as_echo'
fi
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
PATH_SEPARATOR=';'
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
# suppresses any "Segmentation fault" message there. '((' could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
_as_can_reexec=no; export _as_can_reexec;
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
as_fn_exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
"
as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }
exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
if (eval "$as_required") 2>/dev/null; then :
as_have_required=yes
else
as_have_required=no
fi
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
as_shell=$as_dir/$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
CONFIG_SHELL=$as_shell as_have_required=yes
if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
break 2
fi
fi
done;;
esac
as_found=false
done
$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
{ $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
CONFIG_SHELL=$SHELL as_have_required=yes
fi; }
IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
if test x$as_have_required = xno; then :
$as_echo "$0: This script requires a shell more modern than all"
$as_echo "$0: the shells that I found on your system."
if test x${ZSH_VERSION+set} = xset ; then
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
$as_echo "$0: Please tell bug-autoconf@gnu.org and
$0: joostvb-uruk@mdcc.cx about your system, including any
$0: error possibly output before this message. Then install
$0: a modern shell, or manually run the script under such a
$0: shell if you do have one."
fi
exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS
## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d "$as_dir" || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
} || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
else
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
$as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
as_lineno_1=$LINENO as_lineno_1a=$LINENO
as_lineno_2=$LINENO as_lineno_2a=$LINENO
eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
# Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
sed -n '
p
/[$]LINENO/=
' <$as_myself |
sed '
s/[$]LINENO.*/&-/
t lineno
b
:lineno
N
:loop
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
t loop
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
. "./$as_me.lineno"
# Exit status is that of the last command.
exit
}
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
xy) ECHO_C='\c';;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
test -n "$DJDIR" || exec 7<&0 &1
# Name of the host.
# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
#
# Initializations.
#
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Uruk'
PACKAGE_TARNAME='uruk'
PACKAGE_VERSION='20160219'
PACKAGE_STRING='Uruk 20160219'
PACKAGE_BUGREPORT='joostvb-uruk@mdcc.cx'
PACKAGE_URL=''
ac_subst_vars='LTLIBOBJS
LIBOBJS
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
am__untar
am__tar
AMTAR
am__leading_dot
SET_MAKE
AWK
mkdir_p
MKDIR_P
INSTALL_STRIP_PROGRAM
STRIP
install_sh
MAKEINFO
AUTOHEADER
AUTOMAKE
AUTOCONF
ACLOCAL
VERSION
PACKAGE
CYGPATH_W
am__isrc
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
target_alias
host_alias
build_alias
LIBS
ECHO_T
ECHO_N
ECHO_C
DEFS
mandir
localedir
libdir
psdir
pdfdir
dvidir
htmldir
infodir
docdir
oldincludedir
includedir
localstatedir
sharedstatedir
sysconfdir
datadir
datarootdir
libexecdir
sbindir
bindir
program_transform_name
prefix
exec_prefix
PACKAGE_URL
PACKAGE_BUGREPORT
PACKAGE_STRING
PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_silent_rules
'
ac_precious_vars='build_alias
host_alias
target_alias'
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
ac_unrecognized_opts=
ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
verbose=
x_includes=NONE
x_libraries=NONE
# Installation directory options.
# These are left unexpanded so users can "make install exec_prefix=/foo"
# and all the variables that are supposed to be based on exec_prefix
# by default will actually change.
# Use braces instead of parens because sh, perl, etc. also accept them.
# (The list follows the same order as the GNU Coding Standards.)
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datarootdir='${prefix}/share'
datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
pdfdir='${docdir}'
psdir='${docdir}'
libdir='${exec_prefix}/lib'
localedir='${datarootdir}/locale'
mandir='${datarootdir}/man'
ac_prev=
ac_dashdash=
for ac_option
do
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval $ac_prev=\$ac_option
ac_prev=
continue
fi
case $ac_option in
*=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
*=) ac_optarg= ;;
*) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
bindir=$ac_optarg ;;
-build | --build | --buil | --bui | --bu)
ac_prev=build_alias ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build_alias=$ac_optarg ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file=$ac_optarg ;;
--config-cache | -C)
cache_file=config.cache ;;
-datadir | --datadir | --datadi | --datad)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=*)
datadir=$ac_optarg ;;
-datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
| --dataroo | --dataro | --datar)
ac_prev=datarootdir ;;
-datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
| --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval enable_$ac_useropt=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
-docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
docdir=$ac_optarg ;;
-dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
ac_prev=dvidir ;;
-dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix=$ac_optarg ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
-help | --help | --hel | --he | -h)
ac_init_help=long ;;
-help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
ac_init_help=recursive ;;
-help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
ac_init_help=short ;;
-host | --host | --hos | --ho)
ac_prev=host_alias ;;
-host=* | --host=* | --hos=* | --ho=*)
host_alias=$ac_optarg ;;
-htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
ac_prev=htmldir ;;
-htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
| --ht=*)
htmldir=$ac_optarg ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
includedir=$ac_optarg ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
infodir=$ac_optarg ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
libdir=$ac_optarg ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
libexecdir=$ac_optarg ;;
-localedir | --localedir | --localedi | --localed | --locale)
ac_prev=localedir ;;
-localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
localedir=$ac_optarg ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst | --locals)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
localstatedir=$ac_optarg ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
mandir=$ac_optarg ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
with_fp=no ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c | -n)
no_create=yes ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
no_recursion=yes ;;
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
| --oldin | --oldi | --old | --ol | --o)
ac_prev=oldincludedir ;;
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
oldincludedir=$ac_optarg ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=$ac_optarg ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
program_prefix=$ac_optarg ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
program_suffix=$ac_optarg ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
| --program-transform-n | --program-transform- \
| --program-transform | --program-transfor \
| --program-transfo | --program-transf \
| --program-trans | --program-tran \
| --progr-tra | --program-tr | --program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | --program-transform-name=* \
| --program-transform-nam=* | --program-transform-na=* \
| --program-transform-n=* | --program-transform-=* \
| --program-transform=* | --program-transfor=* \
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
program_transform_name=$ac_optarg ;;
-pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
ac_prev=pdfdir ;;
-pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
pdfdir=$ac_optarg ;;
-psdir | --psdir | --psdi | --psd | --ps)
ac_prev=psdir ;;
-psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
psdir=$ac_optarg ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
sbindir=$ac_optarg ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
| --sharedst | --shareds | --shared | --share | --shar \
| --sha | --sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
sharedstatedir=$ac_optarg ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
site=$ac_optarg ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir=$ac_optarg ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
sysconfdir=$ac_optarg ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
ac_prev=target_alias ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target_alias=$ac_optarg ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
-version | --version | --versio | --versi | --vers | -V)
ac_init_version=: ;;
-with-* | --with-*)
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=\$ac_optarg ;;
-without-* | --without-*)
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=no ;;
--x)
# Obsolete; use --with-x.
with_x=yes ;;
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes=$ac_optarg ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
-*) as_fn_error $? "unrecognized option: \`$ac_option'
Try \`$0 --help' for more information"
;;
*=*)
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
as_fn_error $? "missing argument to $ac_option"
fi
if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
# Check all directory arguments for consistency.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
case $ac_val in
*/ )
ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
eval $ac_var=\$ac_val;;
esac
# Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
build=$build_alias
host=$host_alias
target=$target_alias
# FIXME: To remove some day.
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
fi
ac_tool_prefix=
test -n "$host_alias" && ac_tool_prefix=$host_alias-
test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
ac_confdir=`$as_dirname -- "$as_myself" ||
$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
srcdir=$ac_confdir
if test ! -r "$srcdir/$ac_unique_file"; then
srcdir=..
fi
else
ac_srcdir_defaulted=no
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
srcdir=.
fi
# Remove unnecessary trailing slashes from srcdir.
# Double slashes in file names in object file debugging info
# mess up M-x gdb in Emacs.
case $srcdir in
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
esac
for ac_var in $ac_precious_vars; do
eval ac_env_${ac_var}_set=\${${ac_var}+set}
eval ac_env_${ac_var}_value=\$${ac_var}
eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
eval ac_cv_env_${ac_var}_value=\$${ac_var}
done
#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures Uruk 20160219 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or \`..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/uruk]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
_ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of Uruk 20160219:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
Report bugs to .
_ACEOF
ac_status=$?
fi
if test "$ac_init_help" = "recursive"; then
# If there are subdirs, report their specific --help.
for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
test -d "$ac_dir" ||
{ cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
continue
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
# Check for guested configure.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
elif test -f "$ac_srcdir/configure"; then
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
Uruk configure 20160219
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
Copyright (C) 2003, 2004, 2005 Joost van Baal
_ACEOF
exit
fi
## ------------------------ ##
## Autoconf initialization. ##
## ------------------------ ##
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by Uruk $as_me 20160219, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
_ACEOF
exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##
hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
_ASUNAME
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
$as_echo "PATH: $as_dir"
done
IFS=$as_save_IFS
} >&5
cat >&5 <<_ACEOF
## ----------- ##
## Core tests. ##
## ----------- ##
_ACEOF
# Keep a trace of the command line.
# Strip out --no-create and --no-recursion so they do not pile up.
# Strip out --silent because we don't want to record it for future runs.
# Also quote any args containing shell meta-characters.
# Make two passes to allow for proper duplicate-argument suppression.
ac_configure_args=
ac_configure_args0=
ac_configure_args1=
ac_must_keep_next=false
for ac_pass in 1 2
do
for ac_arg
do
case $ac_arg in
-no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
2)
as_fn_append ac_configure_args1 " '$ac_arg'"
if test $ac_must_keep_next = true; then
ac_must_keep_next=false # Got value, back to normal.
else
case $ac_arg in
*=* | --config-cache | -C | -disable-* | --disable-* \
| -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
| -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
| -with-* | --with-* | -without-* | --without-* | --x)
case "$ac_configure_args0 " in
"$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
esac
;;
-* ) ac_must_keep_next=true ;;
esac
fi
as_fn_append ac_configure_args " '$ac_arg'"
;;
esac
done
done
{ ac_configure_args0=; unset ac_configure_args0;}
{ ac_configure_args1=; unset ac_configure_args1;}
# When interrupted or exit'd, cleanup temporary files, and complete
# config.log. We remove comments because anyway the quotes in there
# would cause problems or look ugly.
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
# Save into config.log some information that might help in debugging.
{
echo
$as_echo "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
sed -n \
"s/'\''/'\''\\\\'\'''\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
;; #(
*)
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
sort
)
echo
$as_echo "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
eval ac_val=\$$ac_var
case $ac_val in
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
$as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
$as_echo "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
eval ac_val=\$$ac_var
case $ac_val in
*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
$as_echo "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
$as_echo "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
cat confdefs.h
echo
fi
test "$ac_signal" != 0 &&
$as_echo "$as_me: caught signal $ac_signal"
$as_echo "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
for ac_signal in 1 2 13 15; do
trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
done
ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
$as_echo "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
#define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
# We do not want a PATH search for config.site.
case $CONFIG_SITE in #((
-*) ac_site_file1=./$CONFIG_SITE;;
*/*) ac_site_file1=$CONFIG_SITE;;
*) ac_site_file1=./$CONFIG_SITE;;
esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
else
ac_site_file1=$ac_default_prefix/share/config.site
ac_site_file2=$ac_default_prefix/etc/config.site
fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
|| { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
done
if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
$as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
for ac_var in $ac_precious_vars; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val=\$ac_cv_env_${ac_var}_value
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
# differences in whitespace do not lead to failure.
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
*\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
*" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
*) as_fn_append ac_configure_args " '$ac_arg'" ;;
esac
fi
done
if $ac_cache_corrupted; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
## -------------------- ##
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
if test -f "$ac_dir/install-sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
break
elif test -f "$ac_dir/install.sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
elif test -f "$ac_dir/shtool"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/shtool install -c"
break
fi
done
if test -z "$ac_aux_dir"; then
as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
# and are intended to be withdrawn in a future Autoconf release.
# They can cause serious problems if a builder's source tree is in a directory
# whose full name contains unusual characters.
ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
# AmigaOS /C/install, which installs bootblocks on floppy discs
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
# Account for people who put trailing slashes in PATH elements.
case $as_dir/ in #((
./ | .// | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
# Don't use installbsd from OSF since it installs stuff as root
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
rm -rf conftest.one conftest.two conftest.dir
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
break 3
fi
fi
fi
done
done
;;
esac
done
IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
if test "${ac_cv_path_install+set}" = set; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
# value for INSTALL within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
INSTALL=$ac_install_sh
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
$as_echo "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
$as_echo_n "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
esac
# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo "timestamp, slept: $am_has_slept" > conftest.file
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$*" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
if test "$*" != "X $srcdir/configure conftest.file" \
&& test "$*" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
alias in your environment" "$LINENO" 5
fi
if test "$2" = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test "$2" = conftest.file
)
then
# Ok.
:
else
as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep 'slept: no' conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
rm -f conftest.file
test "$program_prefix" != NONE &&
program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
test "$program_suffix" != NONE &&
program_transform_name="s&\$&$program_suffix&;$program_transform_name"
# Double any \ or $.
# By default was `s,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
*)
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
# Installed binaries are usually stripped using 'strip' when the user
# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the 'STRIP' environment variable to overrule this program.
if test "$cross_compiling" != no; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
$as_echo "$STRIP" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_prog_STRIP"; then
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
$as_echo "$ac_ct_STRIP" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
STRIP=":"
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
fi
else
STRIP="$ac_cv_prog_STRIP"
fi
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
if ${ac_cv_path_mkdir+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
'mkdir (fileutils) '4.1*)
ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
break 3;;
esac
done
done
done
IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
MKDIR_P="$ac_install_sh -d"
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
$as_echo "$AWK" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$AWK" && break
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
*)
eval ac_cv_prog_make_${ac_make}_set=no;;
esac
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
SET_MAKE=
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
# Check whether --enable-silent-rules was given.
if test "${enable_silent_rules+set}" = set; then :
enableval=$enable_silent_rules;
fi
case $enable_silent_rules in # (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
if ${am_cv_make_support_nested_variables+:} false; then :
$as_echo_n "(cached) " >&6
else
if $as_echo 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
$as_echo "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AM_BACKSLASH='\'
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
am__isrc=' -I$(srcdir)'
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
# Define the identity of the package.
PACKAGE='uruk'
VERSION='20160219'
cat >>confdefs.h <<_ACEOF
#define PACKAGE "$PACKAGE"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define VERSION "$VERSION"
_ACEOF
# Some tools Automake needs.
ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
mkdir_p='$(MKDIR_P)'
# We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar pax cpio none'
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported "in the wild" to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the 'rm' program in use doesn't match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug-automake@gnu.org about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
echo 'Configuration will proceed anyway, since you have set the' >&2
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to "yes", and re-run configure.
END
as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
fi
fi
## AC_CHECK_PROG(HASZOEM, zoem, yes, no)
## if test "xno" = "x$HASZOEM"
## then
## AC_MSG_ERROR([cannot find zoem ( http://micans.org/zoem ) in your PATH ])
## fi
## AC_CHECK_PROG(HASGROFF, groff, yes, no)
## AC_CHECK_PROG(HASGROFF, col, yes, no)
ac_config_files="$ac_config_files Makefile contrib/Makefile doc/Makefile init/Makefile man/Makefile man/include.zmm script/Makefile lsb/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs, see configure's option --config-cache.
# It is not useful on other systems. If it contains results you don't
# want to keep, you may remove or edit it.
#
# config.status only pays attention to the cache file if you give it
# the --recheck option to rerun configure.
#
# `ac_cv_env_foo' variables (set or unset) will be overridden when
# loading this file, other *unset* `ac_cv_foo' will be assigned the
# following values.
_ACEOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, we kill variables containing newlines.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(
for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space=' '; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
# `set' does not quote correctly, so add quotes: double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \.
sed -n \
"s/'/'\\\\''/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;; #(
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
;;
esac |
sort
) |
sed '
/^ac_cv_env_/b end
t clear
:clear
s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
case $cache_file in #(
*/* | ?:*)
mv -f confcache "$cache_file"$$ &&
mv -f "$cache_file"$$ "$cache_file" ;; #(
*)
mv -f confcache "$cache_file" ;;
esac
fi
fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
#
# If the first sed substitution is executed (which looks for macros that
# take arguments), then branch to the quote section. Otherwise,
# look for a macro that doesn't take arguments.
ac_script='
:mline
/\\$/{
N
s,\\\n,,
b mline
}
t clear
:clear
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
t quote
s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
t quote
b any
:quote
s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
s/\[/\\&/g
s/\]/\\&/g
s/\$/$$/g
H
:any
${
g
s/^\n//
s/\n/ /g
p
}
'
DEFS=`sed -n "$ac_script" confdefs.h`
ac_libobjs=
ac_ltlibobjs=
U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
$as_echo_n "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
$as_echo "done" >&6; }
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
debug=false
ac_cs_recheck=false
ac_cs_silent=false
SHELL=\${CONFIG_SHELL-$SHELL}
export SHELL
_ASEOF
cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl='
'
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='print -r --'
as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='printf %s\n'
as_echo_n='printf %s'
else
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
as_echo_n='/usr/ucb/echo -n'
else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
case $arg in #(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
esac;
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
'
export as_echo_n_body
as_echo_n='sh -c $as_echo_n_body as_echo'
fi
export as_echo_body
as_echo='sh -c $as_echo_body as_echo'
fi
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
PATH_SEPARATOR=';'
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
$as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
# suppresses any "Segmentation fault" message there. '((' could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1='$ '
PS2='> '
PS4='+ '
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
$as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
else
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
xy) ECHO_C='\c';;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=' ';;
esac;;
*)
ECHO_N='-n';;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s='ln -s'
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s='cp -pR'
fi
else
as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d "$as_dir" || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
} || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
exec 6>&1
## ----------------------------------- ##
## Main body of $CONFIG_STATUS script. ##
## ----------------------------------- ##
_ASEOF
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by Uruk $as_me 20160219, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
on `(hostname || uname -n) 2>/dev/null | sed 1q`
"
_ACEOF
case $ac_config_files in *"
"*) set x $ac_config_files; shift; ac_config_files=$*;;
esac
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
\`$as_me' instantiates files and other configuration actions
from templates according to the current configuration. Unless the files
and actions are specified as TAGs, all are instantiated by default.
Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
--config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
Configuration files:
$config_files
Report bugs to ."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
Uruk config.status 20160219
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
MKDIR_P='$MKDIR_P'
AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
case $1 in
--*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
--*=)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=
ac_shift=:
;;
*)
ac_option=$1
ac_optarg=$2
ac_shift=shift
;;
esac
case $ac_option in
# Handling of the options.
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
$as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
--he | --h | --help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
-*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
ac_need_defaults=false ;;
esac
shift
done
ac_configure_extra_args=
if $ac_cs_silent; then
exec 6>/dev/null
ac_configure_extra_args="$ac_configure_extra_args --silent"
fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
fi
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
$as_echo "$ac_log"
} >&5
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"init/Makefile") CONFIG_FILES="$CONFIG_FILES init/Makefile" ;;
"man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
"man/include.zmm") CONFIG_FILES="$CONFIG_FILES man/include.zmm" ;;
"script/Makefile") CONFIG_FILES="$CONFIG_FILES script/Makefile" ;;
"lsb/Makefile") CONFIG_FILES="$CONFIG_FILES lsb/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
done
# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used. Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
fi
# Have a temporary directory for convenience. Make it in the build tree
# simply because there is no reason against having it here, and in addition,
# creating and moving files from /tmp can sometimes cause problems.
# Hook for its removal unless debugging.
# Note that there is a small window in which the directory will not be cleaned:
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
tmp= ac_tmp=
trap 'exit_status=$?
: "${ac_tmp:=$tmp}"
{ test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
# This happens for instance with `./config.status config.h'.
if test -n "$CONFIG_FILES"; then
ac_cr=`echo X | tr X '\015'`
# On cygwin, bash can eat \r inside `` if the user requested igncr.
# But we know of no other shell where ac_cr would be empty at this
# point, so we can use a bashism as a fallback.
if test "x$ac_cr" = x; then
eval ac_cr=\$\'\\r\'
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
ac_cs_awk_cr='\\r'
else
ac_cs_awk_cr=$ac_cr
fi
echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
{
echo "cat >conf$$subs.awk <<_ACEOF" &&
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
s/^/S["/; s/!.*/"]=/
p
g
s/^[^!]*!//
:repl
t repl
s/'"$ac_delim"'$//
t delim
:nl
h
s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
n
b repl
:more1
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t nl
:delim
h
s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
b
:more2
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t delim
' >$CONFIG_STATUS || ac_write_fail=1
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = ""
}
{
line = $ 0
nfields = split(line, field, "@")
substed = 0
len = length(field[1])
for (i = 2; i < nfields; i++) {
key = field[i]
keylen = length(key)
if (S_is_set[key]) {
value = S[key]
line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
len += length(value) + length(field[++i])
substed = 1
} else
len += 1 + keylen
}
print line
}
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
h
s///
s/^/:/
s/[ ]*$/:/
s/:\$(srcdir):/:/g
s/:\${srcdir}:/:/g
s/:@srcdir@:/:/g
s/^:*//
s/:*$//
x
s/\(=[ ]*\).*/\1/
G
s/\n//
s/^[^=]*=[ ]*$//
}'
fi
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
eval set X " :F $CONFIG_FILES "
shift
for ac_tag
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
:L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
ac_save_IFS=$IFS
IFS=:
set x $ac_tag
IFS=$ac_save_IFS
shift
ac_file=$1
shift
case $ac_mode in
:L) ac_source=$1;;
:[FH])
ac_file_inputs=
for ac_f
do
case $ac_f in
-) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
test -f "$ac_f" ||
case $ac_f in
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
$as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
$as_echo "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
ac_sed_conf_input=`$as_echo "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
case $ac_tag in
*:-:* | *:-) cat >"$ac_tmp/stdin" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
ac_dir=`$as_dirname -- "$ac_file" ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
as_dir="$ac_dir"; as_fn_mkdir_p
ac_builddir=.
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
case $ac_mode in
:F)
#
# CONFIG_FILE
#
case $INSTALL in
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
ac_MKDIR_P=$MKDIR_P
case $MKDIR_P in
[\\/$]* | ?:[\\/]* ) ;;
*/*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
ac_sed_dataroot='
/datarootdir/ {
p
q
}
/@datadir@/p
/@docdir@/p
/@infodir@/p
/@localedir@/p
/@mandir@/p'
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
s&@infodir@&$infodir&g
s&@localedir@&$localedir&g
s&@mandir@&$mandir&g
s&\\\${datarootdir}&$datarootdir&g' ;;
esac
_ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
>$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
case $ac_file in
-) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
*) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
esac
done # for ac_tag
as_fn_exit 0
_ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
# Unfortunately, on DOS this fails, as config.log is still kept open
# by configure, so config.status won't be able to write to it; its
# output is simply discarded. So we exec the FD to /dev/null,
# effectively closing config.log, so it can be properly (re)opened and
# appended to by config.status. When coming back to configure, we
# need to make the FD available again.
if test "$no_create" != yes; then
ac_cs_success=:
ac_config_status_args=
test "$silent" = yes &&
ac_config_status_args="$ac_config_status_args --quiet"
exec 5>/dev/null
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
uruk-20160219/VERSION.m4 0000644 0001750 0001750 00000000045 12661613100 011251 0000000 0000000 m4_define([AD1_VERSION], [20160219])
uruk-20160219/configure.ac 0000644 0001750 0001750 00000003604 12033563141 012156 0000000 0000000 # Based upon autoscan(1) output.
# this file maintained at http://git.mdcc.cx/uruk.git
# Process this file with autoconf to produce a configure script.
# This script is free software; you can distribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This script is distributed WITHOUT ANY WARRANTY.
#
# You should have received a copy of the GNU GPL along with this script
# (e.g. in the file COPYING). If not, see .
# We have to use m4_include here: autoconf doesn't do includes natively
# we can't use aclocal.m4 / acinclude.m4 (which is added to aclocal.m4 by
# aclocal) neither:
# "Every `configure' script must call `AC_INIT' before doing anything
# else."
m4_include([VERSION.m4])dnl
# Initializing `configure'
#
# It is preferable that the arguments of `AC_INIT' be static, i.e.,
# there should not be any shell computation, but they can be
# computed by M4.
AC_INIT([Uruk],
[AD1_VERSION],
[joostvb-uruk@mdcc.cx],
[uruk])
AC_PREREQ(2.67)
AM_INIT_AUTOMAKE
AC_COPYRIGHT([
Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
Copyright (C) 2003, 2004, 2005 Joost van Baal
])
AC_REVISION([AD1_VERSION])
## AC_CHECK_PROG(HASZOEM, zoem, yes, no)
## if test "xno" = "x$HASZOEM"
## then
## AC_MSG_ERROR([cannot find zoem ( http://micans.org/zoem ) in your PATH ])
## fi
## AC_CHECK_PROG(HASGROFF, groff, yes, no)
## AC_CHECK_PROG(HASGROFF, col, yes, no)
AC_CONFIG_FILES([Makefile
contrib/Makefile
doc/Makefile
init/Makefile
man/Makefile
man/include.zmm
script/Makefile
lsb/Makefile])
AC_OUTPUT
uruk-20160219/aclocal.m4 0000644 0001750 0001750 00000065253 12661613101 011537 0000000 0000000 # generated automatically by aclocal 1.15 -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.15'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# _AM_AUTOCONF_VERSION(VERSION)
# -----------------------------
# aclocal traces this macro to find the Autoconf version.
# This is a private macro too. Using m4_define simplifies
# the logic in aclocal, which can simply ignore this definition.
m4_define([_AM_AUTOCONF_VERSION], [])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is '.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])
[_AM_PROG_CC_C_O
])
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
[$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(
m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
[ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
AM_MISSING_PROG([AUTOCONF], [autoconf])
AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
AM_MISSING_PROG([AUTOHEADER], [autoheader])
AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES([CC])],
[m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES([CXX])],
[m4_define([AC_PROG_CXX],
m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported "in the wild" to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the 'rm' program in use doesn't match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug-automake@gnu.org about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
echo 'Configuration will proceed anyway, since you have set the' >&2
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to "yes", and re-run configure.
END
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi
dnl The trailing newline in this macro's definition is deliberate, for
dnl backward compatibility and to allow trailing 'dnl'-style comments
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1's index in $config_headers.
_am_arg=$1
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$_am_arg | $_am_arg:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
*)
install_sh="\${SHELL} $am_aux_dir/install-sh"
esac
fi
AC_SUBST([install_sh])])
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it is modern enough.
# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x"${MISSING+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
*)
MISSING="\${SHELL} $am_aux_dir/missing" ;;
esac
fi
# Use eval to expand $SHELL
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing])
fi
])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# --------------------
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
# ------------------------
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# -------------------------------------------
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
'
case `pwd` in
*[[\\\"\#\$\&\'\`$am_lf]]*)
AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
esac
# Do 'set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo "timestamp, slept: $am_has_slept" > conftest.file
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t "$srcdir/configure" conftest.file`
fi
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
if test "$[2]" = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT([yes])
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep 'slept: no' conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
AC_CONFIG_COMMANDS_PRE(
[AC_MSG_CHECKING([that generated files are newer than configure])
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
AC_MSG_RESULT([done])])
rm -f conftest.file
])
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SILENT_RULES([DEFAULT])
# --------------------------
# Enable less verbose build rules; with the default set to DEFAULT
# ("yes" being less verbose, "no" or empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
[AC_ARG_ENABLE([silent-rules], [dnl
AS_HELP_STRING(
[--enable-silent-rules],
[less verbose build output (undo: "make V=1")])
AS_HELP_STRING(
[--disable-silent-rules],
[verbose build output (undo: "make V=0")])dnl
])
case $enable_silent_rules in @%:@ (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
dnl
dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
dnl See automake bug#9928 and bug#10237.
am_make=${MAKE-make}
AC_CACHE_CHECK([whether $am_make supports nested variables],
[am_cv_make_support_nested_variables],
[if AS_ECHO([['TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi])
if test $am_cv_make_support_nested_variables = yes; then
dnl Using '$V' instead of '$(V)' breaks IRIX make.
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH='\'
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor 'install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in "make install-strip", and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using 'strip' when the user
# run "make install-strip". However 'strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the 'STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
# This macro is traced by Automake.
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
# --------------------------
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of 'v7', 'ustar', or 'pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1],
[ustar],
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
# There is notably a 21 bits limit for the UID and the GID. In fact,
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
# and bug#13588).
am_max_uid=2097151 # 2^21 - 1
am_max_gid=$am_max_uid
# The $UID and $GID variables are not portable, so we need to resort
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
# below are definitely unexpected, so allow the users to see them
# (that is, avoid stderr redirection).
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
if test $am_uid -le $am_max_uid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
if test $am_gid -le $am_max_gid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi],
[pax],
[],
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar; do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar /dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
uruk-20160219/Makefile.in 0000644 0001750 0001750 00000064235 12661613101 011743 0000000 0000000 # Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(docdir)"
DATA = $(doc_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
INSTALL NEWS README THANKS TODO install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
GZIP_ENV = --best
DIST_TARGETS = dist-xz dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE_TARNAME@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @PACKAGE_VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = $(datadir)/doc/$(PACKAGE)
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
CONFIGURE_DEPENDENCIES = VERSION.m4
AUTOMAKE_OPTIONS = dist-xz check-news
SUBDIRS = script man doc contrib init lsb
doc_DATA = AUTHORS COPYING ChangeLog ChangeLog.2003 README THANKS TODO
MY_RDIR = beskar.mdcc.cx:www/mdcc.cx/pub/uruk/
EXTRA_DIST = bootstrap ChangeLog.2003 setversion stamp.month stamp.year \
stamp.day VERSION.m4 VERSION
all: all-recursive
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
install-docDATA: $(doc_DATA)
@$(NORMAL_INSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
@case `sed 15q $(srcdir)/NEWS` in \
*"$(VERSION)"*) : ;; \
*) \
echo "NEWS not updated; not releasing" 1>&2; \
exit 1;; \
esac
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
$(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build/sub \
&& ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@test -n '$(distuninstallcheck_dir)' || { \
echo 'ERROR: trying to run $@ with an empty' \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-docDATA
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-docDATA
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-generic distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-docDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-docDATA
.PRECIOUS: Makefile
ChangeLog: NEWS
git log --pretty --numstat --summary | git2cl | sed 's/<[jcw][^>][^>]*>//g' >ChangeLog
VERSION.m4 VERSION stamp.year stamp.month stamp.day: ChangeLog
./setversion
sign:
for i in $(DIST_ARCHIVES); do echo "gpg --armor --detach-sign $$i"; gpg --armor --detach-sign $$i; done
publish:
for i in $(DIST_ARCHIVES); do echo "scp $$i $$i.asc $(MY_RDIR)"; scp $$i $$i.asc $(MY_RDIR); done
@echo now run: ssh beskar update-tar-symlinks uruk
@echo '( or: ssh beskar.mdcc.cx ./bin/update-tar-symlinks uruk )'
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
uruk-20160219/AUTHORS 0000644 0001750 0001750 00000000356 12476343253 010754 0000000 0000000 # this file maintained at http://git.mdcc.cx/uruk.git
Uruk was written by Joost van Baal-Ilić, Wessel Dankers and various
contributors, see THANKS.
The Uruk init script was written by Laurence J. Lane for the Debian iptables
package.
uruk-20160219/COPYING 0000644 0001750 0001750 00000104513 10642030347 010725 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
uruk-20160219/ChangeLog 0000644 0001750 0001750 00000271237 12661613100 011451 0000000 0000000 2016-02-19 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20160219 - The Speurgt Release
2016-02-19 Joost van Baal-Ilić
* uruk/NEWS: record changes
2016-02-19 Joost van Baal-Ilić
* uruk/script/uruk.in: Fix bug: when uruk-save is enabled, loading
saved active ruleset fails with Loading iptables ruleset: load
"active"Bad argument `REASON=invalid' Patch contributed by Wessel
Dankers.
2016-02-18 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20160218 - The Snijders-Chaam Release
2016-02-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/bootstrap: upgrade from automake 1.14 to 1.15
2016-02-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: record changes
2016-02-18 Joost van Baal-Ilić
* uruk/doc/default, uruk/script/urukctl: doc/default: set
enable_uruk_save to true. script/urukctl: no longer assign obsolete
variable enable_uruk_save_warning, get rid of warn_uruk_save()
function.
2016-02-18 Joost van Baal-Ilić
* uruk/NEWS: start next release
2015-12-09 Joost van Baal-Ilić
* uruk/TODO: test-case
2015-12-09 Joost van Baal-Ilić
* uruk/TODO: more to do
2015-11-18 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20151118 - The Āne-wātak Release
2015-11-18 Joost van Baal-Ilić
* uruk/TODO, uruk/script/uruk.in: bugreport: "ip6tables logs IPv6
packets with ACK bit set" was invalid; closed. also: uruk is now
more verbose when logging blocking of INVALID packets. Thanks
Casper Gielen and Wessel Dankers.
2015-11-18 Joost van Baal-Ilić
* uruk/TODO: tnx caspar for bugreport: ip6tables logs IPv6 packets
with ACK bit set
2015-09-21 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150921 - The Prishtinë Release.
Dedicated to DJ Esad from Eindhoven
2015-09-21 Joost van Baal-Ilić
* uruk/NEWS: a name for the upcoming release
2015-09-20 Joost van Baal-Ilić
* uruk/NEWS: dedication
2015-09-19 Joost van Baal-Ilić
* uruk/NEWS: systemd?
2015-09-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/init/uruk.service: add Service section
to .service file
2015-09-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/init/Makefile.am,
uruk/init/uruk.service: systemd stuff (WiP)
2015-09-18 Joost van Baal-Ilić
* uruk/init/uruk.service: systemd support
2015-09-18 Joost van Baal-Ilić
* uruk/NEWS: layout
2015-09-17 Joost van Baal-Ilić
* uruk/NEWS: record changes by Wessel Dankers
2015-09-17 Wessel Dankers
* uruk/script/uruk.in: Add missing conntrack statements For some reason uruk created conntrack entries for outgoing IPv4
traffic but not for IPv6. Fixed by adding entries for IPv6 as well. And even though conntrack entries were created in the output chain,
these were not used. Fixed by adding "--ctstate ESTABLISHED,RELATED"
rules, just like in the INPUT chain.
2015-09-17 Wessel Dankers
* uruk/script/uruk.in: Always treat IPv6 as a
multiple-IPs-per-interface case Even if you do not explicitly configure multiple IPv6 addresses, you
still have to deal with the fact that an interface has at least a
link-local and a global address. That means you can't simply drop
traffic that isn't directed at the primary global address because
that will interfere with things like router advertisements.
Likewise, in the output chain you have to provide for the fact that
sometimes the source address on outgoing traffic will not be the
primary global address. This patch removes the code path that would block all traffic not
directed at the primary global address as well as outgoing traffic
with something other than that primary global address. It will just
always apply the simple bogon network range filtering that it used
for the explicit multiple address case.
2015-09-16 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: ship it: version 20150916 - The ᎠᏍᎦᏯ
ᎩᎦᎨᏱ; Release
2015-09-16 Joost van Baal-Ilić
* uruk/NEWS: prepare uruk version 20150916 for release
2015-09-11 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/script/urukctl: fix bug: [ ok ]
Checking uruk (): uruk not running.
2015-09-02 Joost van Baal-Ilić
* uruk/TODO: ...
2015-09-02 Joost van Baal-Ilić
* uruk/TODO: another debian bug reported
2015-08-25 Joost van Baal-Ilić
* uruk/NEWS: start next release
2015-08-25 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150825 - The Прибој Release
2015-08-24 Joost van Baal-Ilić
* uruk/NEWS: record changes
2015-08-24 Joost van Baal-Ilić
* uruk/script/uruk.in: Apply patch contributed by Wessel Dankers:
"Fix two cases where $ip6_defined was used without being set."
Relevant in cases where more than one IPv6 address is defined on an
interface.
2015-08-10 Joost van Baal-Ilić
* uruk/NEWS: start next release
2015-08-10 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150810 - The Гoрњи
Милановац Release
2015-08-10 Joost van Baal-Ilić
* uruk/NEWS: named this release, after chopped down oak tree near
planned Koridor 11
2015-08-07 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/uruk: no longer inspect obsolete variable
$status_active. Now "service uruk status" will no longer report
_both_ 'active uruk rules loaded' _and_ 'active ruleset not loaded'
when uruk is running. Thanks Casper Gielen for bugreport.
2015-06-08 Joost van Baal-Ilić
* uruk/Makefile.am, uruk/NEWS: deprecate bz2, introduce .xz for tar
releases
2015-06-08 Joost van Baal-Ilić
* uruk/TODO: meer ideeen
2015-06-08 Joost van Baal-Ilić
* uruk/TODO: new bug found in rpm on old RHEL
2015-06-08 Joost van Baal-Ilić
* uruk/NEWS: start next release
2015-06-08 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150608 - The Oude Leije Release
2015-06-08 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: stuff is fixed, prepare release
2015-06-08 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/autodetect-ips: bash 3.2 issue: document
2015-06-08 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/autodetect-ips: make sure it no longer gives
syntax error with bash 3.2. thanks Casper Gielen and Wessel Dankers
2015-05-13 Joost van Baal-Ilić
* uruk/TODO: snap r niks van...: bug found on Red Hat Enterprise
Linux Server release 5.11 (Tikanga) running uruk-20141120-1 rpm, tnx
Jeroen Egmond
2015-04-03 Joost van Baal-Ilić
* uruk/TODO: record Bug#705687 Provide "uruk diff"
2015-04-03 Joost van Baal-Ilić
* uruk/TODO: reprioritization
2015-04-03 Joost van Baal-Ilić
* uruk/TODO: bug: enable uruk-save by default: higher prio now
2015-04-03 Joost van Baal-Ilić
* uruk/TODO: stuff
2015-04-03 Joost van Baal-Ilić
* uruk/TODO: suggested solution of dealing with "service uruk
reload"
2015-04-02 Joost van Baal-Ilić
* uruk/NEWS: start next release
2015-04-02 Joost van Baal-Ilić
* uruk/TODO: another showstopper
2015-04-02 Wessel Dankers
* uruk/script/uruk.in: script/uruk.in: fix whitespace
2015-04-01 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150401 - The Gorp en Roovert Release
2015-04-01 Joost van Baal-Ilić
* uruk/Makefile.am: wsl is an author: deal with email address
stripping
2015-03-30 Wessel Dankers
* uruk/script/uruk.in: Don't drop all traffic when multiple
addresses are used In uruk there is a bit of code that drops incoming packets for
unknown destinations. In the case where there are multiple IP
addresses on an interface, it falls back to just restricting the
destination address to non-bogon ranges. In theory it could restrict
these packets to the set of configured IP addresses, but this would
require creating an extra filter chain (something which uruk has
avoided so far). In commit 4b2dd0f71bf38dbf1e759d3b078c8c8692328dee the code for
handling multiple IP addresses on an interface was changed, which
also touched the code mentioned above. In this commit a logic bug
was introduced, which caused packets to be dropped unless they had
ALL destinations (instead of ANY). Since packets by design only have
a single destination address, that meant all packets were dropped on
that interface. This patch fixes this showstopper issue by fixing the logic bug,
properly keeping track of the number of addresses on an interface,
and separating the filters for local and remote addresses.
2015-03-30 Wessel Dankers
* uruk/init/uruk: fix improper parameter passing (and typo)
2015-03-30 Joost van Baal-Ilić
* uruk/TODO: moar bugs
2015-03-30 Joost van Baal-Ilić
* uruk/TODO: tnx Fruit bugreport
2015-03-25 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20150325 - The De Drie Zwaantjes
Release
2015-03-25 Joost van Baal-Ilić
* uruk/TODO: updated
2015-03-06 Joost van Baal-Ilić
* uruk/AUTHORS, uruk/NEWS, uruk/THANKS: Welcome aboard Wessel
Dankers
2015-03-06 Wessel Dankers
* uruk/NEWS, uruk/script/uruk-save, uruk/script/uruk.in: unify net_*
and net6_* Unifies the net_* and net6_ variables just like sources_* and
sources6_* (and ip_* and ip6_*). As a nice side-effect this finally allows multiple networks to be
specified in net_* (and net6_*). Also expanded the list of bogon networks, based on RFC 6890: 0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/3 64:ff9b::/96 ::ffff:0:0/96 100::/64 200::/7 2001:2::/48 2001:db8::/32 2001:10::/28 fc00::/7 fec0::/10 3ffe::/16 5f00::/8 ::1/128 ::/128 Improved uruk_save() option snooping to accept other syntax variants (-tnat, --table=nat). Made the syntax of uruk-save consistent with that of the main uruk
script. Signed-off-by: Joost van Baal-Ilić
2015-03-06 Wessel Dankers
* uruk/NEWS, uruk/man/uruk-rc.azm, uruk/script/uruk.in: unify ip_*
and ip6_* Just like sources_* and sources6_*, it would be nice if you didn't
have to worry about whether addresses on your interfaces are IPv4 or
IPv6. This change effects that (backwards compatible, of course). As a side effect this introduces the somewhat peculiar (but useful)
feature that you can assign multiple addresses to a
{interface}_{name} that will all be treated the same. In effect the name no longer describes a single address but a class
of addresses that all get the same rules. This can greatly reduce
duplication in configurations with large numbers of addresses
(something not unheard of with IPv6). This patch also makes some formatting/style choices more
consistent/uniform: * use case statements wherever possible (to reduce quoting issues); * deobfuscate eval statements by removing redundant escaped quotes; * always use short option syntax (when possible) for single-line
iptables invocations; * always use long option syntax for iptables invocations that are
spread out over multiple lines. Signed-off-by: Joost van Baal-Ilić
2015-02-13 Joost van Baal-Ilić
* uruk/NEWS, uruk/doc/rc, uruk/man/uruk-rc.azm: Preparing The De
Drie Zwaantjes Release, near Galder
2014-11-20 Joost van Baal-Ilić
* uruk/TODO: tnx Fruit
2014-11-20 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/Makefile.am: ship it: uruk version 20141120
- The Јадар Release / http://sr.wikipedia.org/wiki/Jадар
(притока Дрине)
2014-11-20 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/script/uruk.in: less warnings which are
likely bogus (dccp and sctp proto)
2014-11-20 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/script/Makefile.am, uruk/script/uruk,
uruk/script/uruk.in: uruk offers $uruk_version to rc file now
2014-11-20 Joost van Baal-Ilić
* uruk/TODO: another wishlist bug
2014-08-05 Joost van Baal-Ilić
* uruk/TODO: patch van Fruit
2014-08-05 Joost van Baal-Ilić
* uruk/TODO: tnx Fruit, thijs voor feedback: warning is loos
2014-06-27 Joost van Baal-Ilić
* uruk/NEWS: ship it: uruk version 20140627 - The Vlook Release
2014-06-27 Joost van Baal-Ilić
* uruk/TODO: another nice thing for upcoming release. tnx Wessel
2014-06-27 Joost van Baal-Ilić
* uruk/TODO: tnx casper
2014-06-27 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: cosmetics in NEWS
2014-06-26 Joost van Baal-Ilić
* uruk/NEWS: releasing, step 1 of N
2014-06-04 Joost van Baal-Ilić
* uruk/NEWS: stuff
2014-06-02 Joost van Baal-Ilić
* uruk/NEWS: status of new proto support
2014-05-19 Joost van Baal-Ilić
* uruk/NEWS: dccp, sctp docs
2014-05-19 Joost van Baal-Ilić
* uruk/NEWS: seems we would have to modprobe for that
2014-05-19 Joost van Baal-Ilić
* uruk/NEWS: refer to rfc for dccp and sctp
2014-05-19 Joost van Baal-Ilić
* uruk/doc/DCCP.html, uruk/doc/SCTP.html: from
http://en.wikipedia.org/wiki/SCTP and
http://en.wikipedia.org/wiki/DCCP
2014-05-18 Joost van Baal-Ilić
* uruk/TODO: reorder items cf stuff for upcoming release
2014-05-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: sctp
2014-05-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/uruk: uruk: add new protocols dccp sctp to
supported ones tcp udp. not yet tested, needs more code.
2014-05-17 Joost van Baal-Ilić
* uruk/TODO: ...
2014-05-17 Joost van Baal-Ilić
* uruk/TODO: sctp research
2014-05-17 Joost van Baal-Ilić
* uruk/TODO: sctp-plan
2014-05-16 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: update NEWS
2014-05-16 Joost van Baal-Ilić
* uruk/TODO, uruk/man/uruk-rc.azm: add section IPv4 and IPv6 to
uruk-rc(5), about sources_ vs obsolete sources6_
2014-05-16 Joost van Baal-Ilić
* uruk/bootstrap: update from automake 1.11 to 1.14
2014-05-16 Joost van Baal-Ilić
* uruk/man/uruk-rc.azm: documenting new-style ipv6 handling
2014-05-16 Joost van Baal-Ilić
* uruk/doc/rc: fixed FIXME about ipv6
2014-05-16 Joost van Baal-Ilić
* uruk/TODO, uruk/doc/rc: examples/rc now uses new-style way to
specify IPv6 sources
2014-05-16 Joost van Baal-Ilić
* uruk/TODO: stuff to check on current status: documentation
2014-05-16 Joost van Baal-Ilić
* uruk/TODO: some hints on heirloom-mailx usage
2014-05-16 Joost van Baal-Ilić
* uruk/TODO: administrativia: how to read bugreports in mails when
mutt is not available
2014-04-06 Joost van Baal-Ilić
* uruk/NEWS: new release name. Waar nu De Vloek is
2014-03-19 Joost van Baal-Ilić
* uruk/NEWS: start next release
2014-03-19 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20140319 - The Alfama Release
2014-03-19 Joost van Baal-Ilić
* uruk/NEWS: use IPv6 example range, to be used in documentation, in
our documentation. Thanks Wessel Dankers
2014-03-19 Joost van Baal-Ilić
* uruk/NEWS: finish NEWS-item
2014-03-15 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: more to do
2014-03-15 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: cosmetics
2014-03-15 Joost van Baal-Ilić
* uruk/NEWS: more documentation
2014-03-15 Joost van Baal-Ilić
* uruk/NEWS: start documenting new behaviour
2014-03-15 Joost van Baal-Ilić
* uruk/doc/uruk-auto.msg, uruk/init/autodetect-ips: Apply patch
contributed by Wessel Dankers at Fri, 7 Mar 2014 17:00:20 +0100 in
Message-Id: <1394208020-164526-1-git-send-email-wsl@fruit.je>:
"[PATCH] autodetect-ips: debian inet6 stanzas default to netmask=64"
2014-03-15 Joost van Baal-Ilić
* uruk/doc/uruk-ipv6.msg: patch is applied
2014-03-15 Joost van Baal-Ilić
* uruk/script/uruk: Apply patch contributed by Wessel Dankers at
Fri, 7 Mar 2014 14:39:00 +0100 in Subject: [PATCH] Use
sources_${iface}_${proto}_${service} for IPv6; Message-Id:
<1394199540-133252-1-git-send-email-wsl@fruit.je>: "Before this change, uruk required seperate sources_* and sources6_*
variables to configure access for v4/v6 sources. With this patch the
rules are as follows: 1) If both sources_* and sources6_* are defined (even if they're
just empty), each is used for its respective address family. This ensures backwards compatibility. 2) If sources6_* is undefined, sources_* is used for both v4 and v6. 3) In either case, v4 literals in v6 context and v6 literals in v4 context are silently ignored. This patch also fixes the detection of undefined variables, which
was broken."
2014-03-15 Joost van Baal-Ilić
* uruk/doc/uruk-auto.msg, uruk/doc/uruk-ipv6.msg: 2 patches by
Wessel
2014-02-08 Joost van Baal-Ilić
* uruk/NEWS: tnx Jelena for choosing this release's name
2014-02-08 Joost van Baal-Ilić
* uruk/TODO: some stuff is fixed
2014-02-07 Joost van Baal-Ilić
* uruk/NEWS, uruk/bootstrap, uruk/doc/debian-bug-704807.mbox,
uruk/doc/debian-bug-720306.mbox, uruk/man/Makefile.am: ERROR: files
left in build directory after distclean: ./man/uruk-save.ps
./man/uruk-save.txt ./man/uruk.ps ./man/uruk.txt make[1]: ***
[distcleancheck] Gre#ka 1
2014-02-07 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: bugfix documented
2014-02-07 Joost van Baal-Ilić
* uruk/TODO, uruk/doc/debian-bug-704807.mbox,
uruk/doc/debian-bug-705687.mbox, uruk/doc/debian-bug-720306.mbox:
keep some debian bug reports in git, for offline work
2014-02-07 Joost van Baal-Ilić
* uruk/TODO: this bug should be fixed now
2014-02-07 Joost van Baal-Ilić
* uruk/TODO, uruk/init/uruk: no longer abort script if call "urukctl
status" fails. this causes "service uruk force-reload" to fail bad
in case uruk "not running"
2014-02-05 Joost van Baal-Ilić
* uruk/TODO: the plot thickens
2014-02-05 Joost van Baal-Ilić
* uruk/TODO: one bug is fixed
2014-02-05 Joost van Baal-Ilić
* uruk/TODO: investigating upgrade-bug
2014-02-05 Joost van Baal-Ilić
* uruk/TODO: reproduceer
2014-02-05 Joost van Baal-Ilić
* uruk/TODO: tnx Wessel for bugreport
2013-12-15 Joost van Baal-Ilić
* uruk/NEWS: start next release
2013-12-13 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20131213 - The Gweek Release
2013-12-13 Joost van Baal-Ilić
* uruk/init/uruk: actually _do_ perform a reload when called as
"service uruk force-reload"
2013-11-20 Joost van Baal-Ilić
* uruk/TODO: tnx fruit
2013-11-20 Joost van Baal-Ilić
* uruk/TODO: nog meer ideeen
2013-11-20 Joost van Baal-Ilić
* uruk/TODO: tnx Fruit
2013-09-17 Joost van Baal-Ilić
* uruk/TODO: init...
2013-09-16 Joost van Baal-Ilić
* uruk/TODO: some update-rc.d issues in current debian sid (and
jessie)
2013-09-16 Joost van Baal-Ilić
* uruk/TODO: cosmetics
2013-09-16 Joost van Baal-Ilić
* uruk/TODO: Bug#712869 was fixed in uruk version 20130809 (The
Corbeşti Release) with "init/autodetect-ips, man/uruk-rc.azm:
detect IPs currently assigned to [...]".
2013-09-16 Joost van Baal-Ilić
* uruk/TODO: a bug is fixed
2013-09-15 Joost van Baal-Ilić
* uruk/script/urukctl: fix warning about enable_uruk_save_warning is
no longer supported
2013-09-15 Joost van Baal-Ilić
* uruk/TODO: lintian systemd lsb init hassle
2013-09-13 Joost van Baal-Ilić
* uruk/NEWS: start next release
2013-09-13 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: ship it: version 20130913 - The Clochán na
bhFomhórach Release
2013-09-13 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/urukctl: script/urukctl: don't test running
iptables when called with argument "save", enable running "urukctl
save active" as non-root, using uruk-save.
2013-09-12 Joost van Baal-Ilić
* uruk/TODO: investigating another wishlist bug
2013-09-12 Joost van Baal-Ilić
* uruk/TODO: another bug squashed
2013-09-12 Joost van Baal-Ilić
* uruk/NEWS: cosmetics
2013-09-12 Joost van Baal-Ilić
* uruk/TODO: one bug squashed
2013-09-12 Joost van Baal-Ilić
* uruk/NEWS, uruk/doc/default, uruk/script/urukctl: doc/default,
script/urukctl: default: explicitly add /sbin to PATH. urukctl:
check command line args earlier in execution. Now "urukctl --help"
and "urukctl help" e.a. behave better when called as non-root.
2013-09-12 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: fatal bug found
2013-09-12 Joost van Baal-Ilić
* uruk/TODO: designing better tests
2013-09-07 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: found another bug: urukctl usage info
2013-09-07 Joost van Baal-Ilić
* uruk/NEWS: record changes
2013-09-03 Joost van Baal-Ilić
* uruk/NEWS: we have got a name
2013-09-03 Joost van Baal-Ilić
* uruk/TODO: more insight in "nf_conntrack: table full, dropping
packet"
2013-09-03 Joost van Baal-Ilić
* uruk/TODO: tnx jhoeke
2013-09-03 Joost van Baal-Ilić
* uruk/bootstrap: bootstrap: upgrade from automake 1.11 to 1.13
2013-09-02 Joost van Baal-Ilić
* uruk/script/urukctl: use just initd_status to decide upon status;
do not inspect $status_active
2013-08-30 Joost van Baal-Ilić
* : commit c2f808ed7491a90c1fc972b834263e004153bcfd Author: Joost
van Baal-Ilić Date: Fri Aug 30 20:01:21
2013 +0200
2013-08-30 Joost van Baal-Ilić
* uruk/TODO: broken!
2013-08-30 Joost van Baal-Ilić
* uruk/NEWS: start next release
2013-08-30 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20130830 - The Dr Syntax's Head
Release
2013-08-30 Joost van Baal-Ilić
* uruk/NEWS: the release has a name:
http://www.esmerel.com/circle/britain/syntax.html
2013-08-21 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/uruk: deal with Bug#720306: uruk:
incorrectly blocks and logs tcp RSET packets
2013-08-09 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20130809 - The Corbeşti Release
2013-08-09 Joost van Baal-Илић
* uruk/NEWS: record changes
2013-08-07 Joost van Baal-Ilić
* uruk/init/autodetect-ips: Apply patch contributed by Wessel
Dankers: commit 34aee39ea25bcb90c4a6e0463455f59549bcf782 "accept
debian interfaces entries that include the netmask".
2013-08-02 Joost van Baal-Ilić
* uruk/TODO: stuff is done
2013-08-02 Joost van Baal-Ilić
* uruk/script/uruk: update copyright
2013-08-02 Joost van Baal-Ilić
* uruk/TODO, uruk/man/include.zmm.in, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm, uruk/man/urukctl.azm:
introduce zoem macro \gplheader, update copyright of all manpages
2013-08-02 Joost van Baal-Ilić
* uruk/AUTHORS, uruk/THANKS: update and reshuffle
2013-07-31 Joost van Baal-Ilić
* uruk/TODO: more to do. for this release?
2013-07-31 Joost van Baal-Ilić
* uruk/man/uruk-rc.azm: cosmetics
2013-07-31 Joost van Baal-Ilić
* uruk/man/uruk-save.azm: refer to urukctl, not init script
2013-07-31 Joost van Baal-Ilić
* uruk/doc/rc, uruk/man/uruk-rc.azm: use ips_eth0 and
..._eth0_default_... ; one IP per NIC-mode is being phased out
2013-07-31 Joost van Baal-Ilić
* uruk/NEWS, uruk/man/uruk.azm: cosmetics
2013-07-31 Joost van Baal-Ilić
* uruk/init/autodetect-ips: cosmetics
2013-07-31 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/autodetect-ips: add cgielen to copyright
owners
2013-07-30 Joost van Baal-Ilić
* uruk/man/uruk-rc.azm: fix typo
2013-07-30 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: list changes
2013-07-30 Joost van Baal-Ilić
* uruk/man/urukctl.azm: finished urukctl(8) manpage
2013-07-30 Joost van Baal-Ilić
* uruk/doc/default, uruk/man/urukctl.azm: urukctl config file:
update documentation
2013-07-30 Joost van Baal-Ilić
* uruk/NEWS: cosmetics
2013-07-30 Joost van Baal-Ilić
* uruk/init/autodetect-ips: cosmetics
2013-07-30 Joost van Baal-Ilić
* uruk/init/autodetect-ips: fix serbian
2013-07-29 Joost van Baal-Ilić
* uruk/NEWS: english
2013-07-29 Joost van Baal-Ilić
* uruk/TODO: cosmetics
2013-07-29 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: cosmetics
2013-07-29 Joost van Baal-Ilić
* uruk/script/urukctl: remove useless comments
2013-07-29 Joost van Baal-Ilić
* uruk/NEWS: cosmetics
2013-07-28 Joost van Baal-Ilić
* uruk/init/autodetect-ips: refer to documentation
2013-07-28 Joost van Baal-Ilić
* uruk/man/uruk-rc.azm: document new autodetec-ips features
2013-07-28 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/autodetect-ips: only use scope global IPv6
addresses
2013-07-28 Joost van Baal-Ilić
* uruk/man/uruk-rc.azm: start documenting new autodetect-ips
features
2013-07-28 Joost van Baal-Ilić
* uruk/init/autodetect-ips: update copyright
2013-07-28 Joost van Baal-Ilić
* uruk/TODO, uruk/init/autodetect-ips: fix typo
2013-07-28 Joost van Baal-Ilić
* uruk/init/autodetect-ips: detect IPs currently assigned to
interfaces, not listed in config files
2013-07-27 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/autodetect-ips: Corbeşti near Petriş
2013-07-27 Joost van Baal-Ilić
* uruk/TODO, uruk/init/autodetect-ips: working on improving
autodetect-ips: use ip(1) if needed. in progress
2013-07-27 Joost van Baal-Ilić
* uruk/NEWS: cosmetics
2013-07-27 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/init/autodetect-ips: working on
improving autodetect-ips: use ip(1) if needed, found more bugs in
autodetect-ips
2013-07-27 Joost van Baal-Ilić
* uruk/TODO, uruk/init/autodetect-ips: working on improving
autodetect-ips: use ip(1) if needed
2013-07-26 Joost van Baal-Ilić
* uruk/TODO: improved todo-item, tnx Wessel
2013-07-26 Joost van Baal-Ilić
* uruk/TODO: verduidiljk
2013-07-26 Joost van Baal-Ilić
* uruk/TODO: idee: check soms niet op destination-ip
2013-06-28 Joost van Baal-Илић
* : commit be0e4385d2c97734bb7000d9beff745d11ce91b5 Author: Joost
van Baal-Илић Date: Fri Jun 28 12:38:02 2013
+0200
2013-06-28 Joost van Baal-Ilić
* uruk/TODO: discussion irl
2013-06-28 Joost van Baal-Илић
* uruk/TODO: [...]
2013-06-27 Joost van Baal-Илић
* uruk/man/urukctl.azm: urukctl(8)
2013-06-27 Joost van Baal-Илић
* uruk/NEWS: more stuff to add to NEWS
2013-06-27 Joost van Baal-Илић
* uruk/man/urukctl.azm: still improving urukctl manpage
2013-06-27 Joost van Baal-Илић
* uruk/NEWS: record changes
2013-06-25 Joost van Baal-Ilić
* uruk/TODO: record debian Bug#712869, tnx Casper and Wessel
2013-06-19 Joost van Baal-Илић
* uruk/TODO, uruk/man/urukctl.azm: syntax urukctl(8) manpage
2013-06-19 Joost van Baal-Илић
* uruk/doc/default, uruk/man/urukctl.azm: moving documentation for
/etc/default/uruk to proper manpage
2013-06-19 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: found a bug in git
2013-06-19 Joost van Baal-Илић
* uruk/NEWS: tnx wessel
2013-06-18 Joost van Baal-Илић
* uruk/init/uruk, uruk/script/urukctl: source /etc/default/uruk in
urukctl, not in init script
2013-06-18 Joost van Baal-Илић
* uruk/README: minor improvement
2013-06-18 Joost van Baal-Илић
* uruk/man/urukctl.azm: minor improvements
2013-06-18 Joost van Baal-Илић
* uruk/man/uruk.azm: suggest to use urukctl, one no longer should
call /etc/init.d/uruk
2013-06-18 Joost van Baal-Илић
* uruk/README: fix some minor typos
2013-06-18 Joost van Baal-Ilić
* uruk/TODO: another bug in urukctl?
2013-06-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/urukctl: Fix bug in urukctl, introduced
2013-05-29: be sure to assign variables ($libdir e.a.) on time. No
longer fails with "mkdir: cannot create directory `': No such file
or directory". Thanks Casper Gielen for bugreport.
2013-06-18 Joost van Baal-Ilić
* uruk/man/include.zmm.in, uruk/man/urukctl.azm: layout urukctl(8)
2013-06-18 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20130619 - The Het De Siptenpad
Release
2013-06-18 Joost van Baal-Ilić
* uruk/NEWS, uruk/man/urukctl.azm: urukctl(8) no longer alpha but
beta
2013-06-18 Joost van Baal-Ilić
* uruk/init/uruk: bugfix: change DAEMON from /usr/sbin/uruk to
/sbin/uruk
2013-06-18 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO, uruk/man/urukctl.azm: ship it: uruk version
20130618 - The Sterreke Release
2013-06-18 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO, uruk/man/urukctl.azm: fixing urukctl.azm
syntax, part 1
2013-06-18 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: more ideas, more to do
2013-06-18 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO, uruk/bootstrap: make sure no email addresses
show up in ChangeLog (really)
2013-06-18 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: tweak
2013-06-18 Joost van Baal-Илић
* uruk/NEWS: state rationale of changes
2013-05-31 Joost van Baal-Илић
* uruk/init/uruk: fix "start", "stop" and "status" by calling
urukctl
2013-05-31 Joost van Baal-Илић
* uruk/NEWS: tweak
2013-05-31 Joost van Baal-Илић
* uruk/NEWS: document changes, first shot at it
2013-05-31 Joost van Baal-Илић
* uruk/Makefile.am: (again) make sure no email adresses show up in ChangeLog
2013-05-29 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk: calling initscript with arg
save|create|load|reload|clear|halt|flush is deprecated (but still
supported for now)
2013-05-29 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk: init script is borken in case wrong
argument passed
2013-05-29 Joost van Baal-Илић
* uruk/script/urukctl: no longer requires root-access always
2013-05-29 Joost van Baal-Илић
* uruk/init/uruk, uruk/man/urukctl.azm, uruk/script/urukctl: move
usage info to manpage
2013-05-29 Joost van Baal-Илић
* uruk/script/urukctl: s/log_failure_msg/echo/
2013-05-29 Joost van Baal-Илић
* uruk/init/uruk: $iptables_command not available in init-script:
remove call
2013-05-29 Joost van Baal-Илић
* uruk/init/uruk, uruk/script/urukctl: source lsb/init-functions,
/etc/default/uruk in init script
2013-05-29 Joost van Baal-Илић
* uruk/init/uruk, uruk/script/urukctl: move some log_failure_msg
log_success_msg calls from urukctl to init/uruk. add "start",
"stop", "restart", "force-reload" to init/uruk.
2013-05-25 Joost van Baal-Илић
* uruk/init/urukctl, uruk/man/Makefile.am, uruk/man/urukctl.azm,
uruk/script/Makefile.am, uruk/script/urukctl: start work on new
urukctl(8) manpage, urukctl now in SCRIPTS
2013-05-25 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk, uruk/init/urukctl: new script: urukctl.
it will be the main interface for "save", "create", "load", "clear",
"halt" and "flush" actions. the init script will call urukctl
2013-05-25 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk: cosmetics; move init/purge bugreport to
TODO
2013-05-24 Joost van Baal-Илић
* uruk/init/uruk: update comments about lsb specs
2013-05-22 Joost van Baal-Ilić
* uruk/init/uruk: more facts about removed-uruk behaviour
2013-05-22 Joost van Baal-Ilić
* uruk/init/uruk: Wessel reported a bug: uruk init script behaves
weird in case uruk package is removed from debian (not purged).
draft plan for fix
2013-04-13 Joost van Baal-Илић
* uruk/NEWS: start next release
2013-04-11 Joost van Baal-Илић
* uruk/NEWS: ship it: version 20130426 - The Sy Release (10th
anniversary release)
2013-04-11 Joost van Baal-Илић
* uruk/NEWS: document changes
2013-04-11 Joost van Baal-Ilić
* uruk/script/uruk: do 11 11:04 < joostvb> vertel hier maar ff wat
je in ip6_noroute_ranges wilt hebben do 11 11:04 < casper>
ip6_noroute_ranges='::1/128 ::ffff:0:0/96 fc00::/7 fec0::/10
0200::/7 2001:0db8::/32' do 11 11:04 < casper> dus ::ffff:0:0/96
met de puntjes voorop do 11 11:04 < joostvb> zeker? do 11 11:04 <
casper> ja closes: #705202
2013-04-10 Joost van Baal-Илић
* uruk/NEWS: tweak NEWS
2013-04-10 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: prepare migrating to new meaning for
enable_ipv6
2013-04-10 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: uruk-save no longer considered experimental
2013-04-10 Joost van Baal-Илић
* uruk/doc/default, uruk/init/uruk, uruk/man/uruk.azm: The
enable_uruk_save_warning variable (set in e.g. /etc/default/uruk) is
deprecated. The uruk init script will display a warning if it finds
it.
2013-03-22 Joost van Baal-Ilić
* uruk/TODO: 1ste amandement
2013-03-22 Joost van Baal-Ilić
* uruk/TODO: idea from Wessel for blocking ipv6-traffic
2013-03-22 Joost van Baal-Ilić
* uruk/TODO: 2 more things to do before release
2013-03-17 Joost van Baal-Илић
* uruk/NEWS: name upcoming release
2013-03-14 Joost van Baal-Ilić
* uruk/NEWS: refer to debian bug number
2013-03-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/README, uruk/man/uruk.azm, uruk/script/uruk: apply
patch contributed by Thijs Kinkhorst, 1 Mar 2013, in
<1362140354-7012-1-git-send-email-thijs@uvt.nl>: "Replace obsolete
'state' module usage with 'conntrack'."
2013-02-26 Joost van Baal-Ilić
* uruk/NEWS: start next release
2013-02-26 Joost van Baal-Ilić
* uruk/NEWS: ship it: uruk version 20130226 - The Vlist Release
2013-02-26 Joost van Baal-Ilić
* uruk/NEWS: record changes
2013-02-16 Joost van Baal-Ilić
* uruk/init/autodetect-ips: Apply patch contributed by Wessel
Dankers in Message-Id: <20130215160813.18E6312F3E@homsar.uvt.nl>,
Fri, 15 Feb 2013: "typo in autodetect-ips breekt situaties met
eth0:0"
2012-12-06 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: fix spelling error, tnx Debian lintian
2012-12-06 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: escape -: do not output as hyphen but as
minus sign. first shot.
2012-12-05 Joost van Baal-Ilić
* uruk/NEWS: start next release
2012-12-05 Joost van Baal-Ilić
* uruk/NEWS: ship it
2012-12-05 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/man/uruk-save.azm: document uruk-save
patch; some stuff is done
2012-12-04 Joost van Baal-Илић
* uruk/TODO: some stuff is done
2012-12-04 Joost van Baal-Илић
* uruk/TODO: some stuff is done
2012-12-04 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk: cleanup: consistent way of testing
booleans (variables enable_foo) in shell
2012-12-04 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: tweak manpage more
2012-12-04 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: tweak manpage
2012-12-04 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: 2nd shot at documenting autodetect-ips in
uruk-rc(5)
2012-12-04 Joost van Baal-Илић
* uruk/man/uruk-rc.azm: first shot at documenting autodetect-ips in
uruk-rc(5)
2012-12-03 Joost van Baal-Илић
* uruk/NEWS, uruk/init/autodetect-ips, uruk/init/enable-ipv6: add
shell shbang
2012-11-30 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: ship it
2012-11-30 Joost van Baal-Ilić
* uruk/NEWS: preparing the Вршац Release
2012-11-30 Joost van Baal-Ilić
* uruk/TODO: some stuff is done
2012-11-30 Joost van Baal-Ilić
* uruk/doc/default, uruk/doc/rc, uruk/init/Makefile.am,
uruk/init/autodetect-ips: doc/default: call helper enable-ipv6;
doc/rc: add example /lib/uruk/init/autodetect-ips usage;
init/Makefile.am: install autodetect-ips and enable-ipv6 in
/lib/uruk/init/
2012-11-30 Joost van Baal-Ilić
* uruk/init/autodetect-ips, uruk/init/enable-ipv6: my preferred
indent style
2012-11-30 Joost van Baal-Ilić
* uruk/init/autodetect-ips, uruk/init/enable-ipv6: more usage info,
tweaking interface
2012-11-30 Joost van Baal-Ilić
* uruk/init/autodetect-ips, uruk/script/autodetect-ips: to be
installed in /usr/share/uruk/init/autodetect-ips
2012-11-30 Joost van Baal-Ilić
* uruk/init/enable-ipv6, uruk/script/autodetect-ips,
uruk/script/uruk-ipv6: ©
2012-11-30 Joost van Baal-Ilić
* uruk/TODO: ideas from coffee meeting with Wessel
2012-11-29 Joost van Baal-Ilić
* uruk/TODO: usage
2012-11-29 Joost van Baal-Ilić
* uruk/TODO: do 29 17:39 < joostvb> Fruit: rc-experimental: "GPL-3
of later" ? do 29 17:39 < Fruit> ook ok
2012-11-29 Joost van Baal-Ilić
* uruk/TODO: one more nice hack by Wessel
2012-11-29 Joost van Baal-Ilić
* uruk/script/uruk-ipv6: helper for /etc/default/uruk, by Wessel
Dankers
2012-11-29 Joost van Baal-Ilić
* uruk/script/uruk: bugfix, by Wessel Dankers in
<20121128162113.38CA411E2C@homsar.uvt.nl>
2012-11-29 Joost van Baal-Ilić
* uruk/script/uruk-save: update copyright
2012-11-29 Joost van Baal-Ilić
* uruk/script/uruk, uruk/script/uruk-save: Apply patch contributed
by Wessel Dankers in
<1354116979-10246-1-git-send-email-wsl@fruit.je>: "allow access to
different tables (nat, mangle, raw) in uruk-save". Thanks.
2012-11-29 Joost van Baal-Илић
* uruk/script/uruk-save: replace obsolete note about arch.gna.org
with note about git. thanks Wessel Dankers
2012-10-26 Joost van Baal-Илић
* uruk/NEWS: fix typo in NEWS entry, thanks Adam D. Barratt
2012-10-23 Joost van Baal-Ilić
* uruk/TODO: tnx Fruit for bugreport
2012-10-23 Joost van Baal-Ilić
* uruk/man/uruk.azm: di 23 15:48 < Fruit> joostvb: However, if you
don't use any hooks in your rc file, you're save. di 23 15:48 <
Fruit> typo
2012-10-23 Joost van Baal-Илић
* uruk/TODO: another issue found
2012-10-23 Joost van Baal-Ilić
* uruk/NEWS: ship it
2012-10-23 Joost van Baal-Ilić
* uruk/NEWS: record changes
2012-10-22 Joost van Baal-Ilić
* uruk/THANKS: tnx Thijs
2012-10-22 Joost van Baal-Ilić
* uruk/script/uruk: Apply patch contributed by Thijs Kinkhorst in
Message-Id: <1350907287-15481-1-git-send-email-thijs@uvt.nl>: Uruk
implemented RFC 4890 section 4.3: Recommendations for ICMPv6 Transit
Traffic. However uruk is used in some (many?) cases not as a transit
firewall but as a host firewall for destination entities. Therefore,
also the recommentations from section 4.4: Recommendations for
ICMPv6 Local Configuration Traffic need to be added.
2012-10-17 Joost van Baal-Илић
* uruk/TODO: more to do
2012-10-09 Joost van Baal-Илић
* uruk/TODO: some stuff is done
2012-10-05 Joost van Baal-Ilić
* uruk/NEWS: start next release
2012-10-05 Joost van Baal-Ilić
* uruk/NEWS: ship it (really)
2012-10-05 Joost van Baal-Ilić
* uruk/Makefile.am: fix syntax error in private target "publish"
2012-10-05 Joost van Baal-Ilić
* uruk/NEWS: ship it
2012-10-05 Joost van Baal-Ilić
* uruk/NEWS: record changes
2012-10-05 Joost van Baal-Ilić
* uruk/init/uruk: remove "mountkernfs" from "Required-Start:
mountkernfs $local_fs". Add "Required-Stop: $local_fs". We need
/var in both start and stop. (We don't need /usr (i.e. remote_fs)).
2012-09-18 Joost van Baal-Илић
* uruk/man/include.zmm.in: uruk generally is installed in
/sbin/uruk, not /usr/sbin/uruk. (and update my name)
2012-09-17 Joost van Baal-Илић
* uruk/TODO: plan for dealing with init script /var issue
2012-09-17 Joost van Baal-Илић
* uruk/Makefile.am: workaround in ChangeLog email address stripping
2012-09-17 Joost van Baal-Илић
* uruk/TODO: tested fix for "uruk init-script dependency's zijn 72
MB" as reported Fri, 23 Mar 2012 11:00:06 +0100 by Thijs Kinkhorst
in <201203231100.09625@incagijs.uvt.nl>
2012-09-17 Joost van Baal-Илић
* uruk/NEWS, uruk/configure.ac: include lsb/ in dist
2012-09-17 Joost van Baal-Илић
* uruk/NEWS: credit
2012-09-17 Joost van Baal-Илић
* uruk/NEWS, uruk/TODO: record changes
2012-09-16 Joost van Baal-Илић
* uruk/NEWS: NEWS: fixme
2012-09-16 Joost van Baal-Илић
* uruk/Makefile.am, uruk/init/uruk, uruk/lsb/Makefile.am: install
lsb stuff, load it from init script
2012-09-16 Joost van Baal-Илић
* uruk/TODO, uruk/init/uruk, uruk/lsb/init-functions:
uruk/lsb/init-functions: uruk compliant. init/uruk: fixme
2012-09-16 Joost van Baal-Илић
* uruk/lsb/init-functions: use uruk implementation if Red Hat one is
not available
2012-09-16 Joost van Baal-Илић
* uruk/TODO, uruk/lsb/init-functions: copy from
/lib/lsb/init-functions as shipped with redhat-lsb-4.0-3.el6.x86_64,
by Lawrence Lim e.a.
2012-09-16 Joost van Baal-Илић
* uruk/NEWS: a name for this release
2012-09-15 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: started reimplementing lsb for RHEL machines
2012-09-15 Joost van Baal-Ilić
* uruk/lsb/lsb_killproc, uruk/lsb/lsb_log_message,
uruk/lsb/lsb_pidofproc, uruk/lsb/lsb_start_daemon: copy from
/etc/redhat-lsb/* as shipped with redhat-lsb-4.0-3.el6.x86_64
2012-09-14 Joost van Baal-Илић
* uruk/TODO: ...
2012-09-14 Joost van Baal-Илић
* uruk/TODO: omlossing, tnx Fruit
2012-09-14 Joost van Baal-Ilić
* uruk/TODO: grrr
2012-09-14 Joost van Baal-Ilić
* uruk/TODO: todo: try to be more nice on RHEL. tnx Thijs
2012-09-14 Joost van Baal-Ilić
* uruk/Makefile.am, uruk/NEWS: start next release, fix private
target "publish"
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: ship it
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/init/uruk: stop uruk when switching to
single-user mode (runlevel 1), not just when rebooting the system
(runlevel 6) or halting the system (runlevel 0).
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/man/uruk-rc.azm: fix zoem syntax
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/man/uruk-rc.azm, uruk/script/uruk:
document allowing proto 41
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/uruk: be nice to people calling e.g. awk when
starting uruk (and relying on /usr/bin being in the PATH)
2012-09-14 Joost van Baal-Ilić
* uruk/script/uruk: Fix bug: vr 14 15:21 < Fruit> ip6tables v1.4.8: unknown option `--tcp-flags'
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS: we got a name for this release
2012-09-14 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/uruk: fix for http://bugs.debian.org/687621
: FIN ACK incorrectly blocked
2012-06-12 Joost van Baal-Ilić
* uruk/NEWS, uruk/init/uruk: more strict init requirements
2012-06-12 Joost van Baal-Ilić
* : merge NEWS
2012-06-08 Joost van Baal-Ilić
* uruk/NEWS: start next releae
2012-06-08 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20120608 - The Hooidonk Release
2012-06-08 Joost van Baal-Ilić
* uruk/TODO, uruk/script/uruk: No longer block, but allow ICMPv6
type 137 Redirect Message [RFC4861]. These are needed for Duplicate
Address Detection in IPv6 autoconfiguration: RFC 4429 says: "the
router should [...] provide the ON with an ICMP Redirect, which may
include a Target Link-Layer Address Option (TLLAO)." Thanks Casper
Gielen.
2012-06-08 Joost van Baal-Ilić
* uruk/init/uruk: Apply patch for uruk init script: -# Required-Start: $network $remote_fs -# Required-Stop: $network $remote_fs +# Required-Start: mountkernfs $local_fs +# Required-Stop: -# Default-Stop: 0 1 6 +# Default-Stop: 0 6 +# X-Start-Before: networking +# X-Stop-Before: Contributed by Wessel Dankers in Message-ID:
<20120606170607.GA2280837@fruit.je>. Thank!
2012-06-08 Joost van Baal-Ilić
* uruk/TODO: tnx cgielen
2012-06-05 Joost van Baal-Ilić
* uruk/NEWS: start next release
2012-06-05 Joost van Baal-Ilić
* uruk/NEWS: ship it: version 20120605 - The Pickensteeg Release
2012-06-05 Joost van Baal-Ilić
* uruk/configure.ac: no longer die if zoem, col and/or groff are not
found. require autoconf 2.67 (was: 2.53)
2012-06-05 Joost van Baal-Ilić
* uruk/NEWS: record some changes
2012-05-31 Joost van Baal-Ilić
* uruk/TODO: etc/network/if-up.d/uruk shipped by debian package
2012-05-30 Joost van Baal-Ilić
* uruk/Makefile.am, uruk/NEWS: start next release
2012-05-30 Joost van Baal-Ilić
* uruk/NEWS: ship it: release 20120530
2012-05-30 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO: document changes
2012-05-30 Joost van Baal-Ilić
* uruk/README: document: zoem generally no longer needed
2012-05-30 Joost van Baal-Ilić
* uruk/init/Makefile.am, uruk/man/Makefile.am,
uruk/script/Makefile.am: installing from tarball no longer builds
docs: now shipped with tarball. no longer needs zoem on buildhost
(just on maintainer-host)
2012-05-30 Joost van Baal-Ilić
* uruk/init/uruk: got rid of some more AC_DEFINE_DIR expansions
2012-05-30 Joost van Baal-Ilić
* uruk/bootstrap, uruk/configure.ac: we no longer rely upon
expansion of BIN_PATH SBIN_PATH DATA_PATH SYSCONF_PATH
LOCALSTATE_PATH using AC_DEFINE_DIR, as defined in GNU Autoconf
Macro Archive's ac_define_dir.m4: remove obsolete code
2012-05-30 Joost van Baal-Ilić
* uruk/man/include.zmm.in: no longer expand @SBIN_PATH@
@SYSCONF_PATH@ @PACKAGE_TARNAME@ @LOCALSTATE_PATH@ @DATA_PATH@. due
to AC_DEFINE_DIR macro being obsolete
2012-05-30 Joost van Baal-Ilić
* uruk/configure.ac, uruk/script/uruk, uruk/script/uruk-save,
uruk/script/uruk-save.in, uruk/script/uruk.in: no longer expand
@SYSCONF_PATH@ and @PACKAGE_TARNAME@ in uruk scripts: hardcode /etc/
and uruk. due to AC_DEFINE_DIR macro being obsolete
2012-05-30 Joost van Baal-Ilić
* uruk/configure.ac, uruk/init/Makefile.am, uruk/init/uruk,
uruk/init/uruk.in: no longer expand @SYSCONF_PATH@ and
@PACKAGE_TARNAME@ in uruk init script: hardcode /etc/ and uruk. due
to AC_DEFINE_DIR macro being obsolete
2012-02-02 Joost van Baal-Ilić
* uruk/TODO: found "the right way" to deal with ac_define_dir issue
2012-02-02 Joost van Baal-Ilić
* uruk/TODO: more TODO: bootstrap fails on debian wheezy due to
autoconf-archive 20111221-1 changes
2012-02-02 Joost van Baal-Ilić
* uruk/script/uruk.in: icmpv6: DROP some. based upon
rfc4890-icmpv6-firewall.sh
2011-12-30 Joost van Baal-Ilić
* uruk/doc/Makefile.am: ship and install rfc4890-icmpv6-firewall.sh,
contributed by Suresh Krishnan
2011-12-30 Joost van Baal-Ilić
* uruk/doc/rfc4890-icmpv6-firewall.sh, uruk/doc/rfc4890.license.msg:
rfc4890-icmpv6-firewall.sh is free software. thanks a lot Suresh
Krishnan!
2011-12-30 Joost van Baal-Ilić
* uruk/doc/rfc4890.txt: http://www.rfc-editor.org/rfc/rfc4890.txt
2011-12-29 Joost van Baal-Ilić
* uruk/TODO: should we fork?
2011-12-29 Joost van Baal-Ilić
* uruk/TODO: use rfc 4890 for icmp v6 filtering
2011-12-07 Joost van Baal-Ilić
* uruk/TODO: major overhaul needed
2011-12-07 Joost van Baal-Ilić
* uruk/TODO: progress on ifup/ifdown support in debian package
2011-08-31 Joost van Baal-Ilić
* uruk/NEWS: ship it: uruk version 20110831
2011-08-31 Joost van Baal-Ilić
* uruk/Makefile.am: uruk homepage now hosted at beskar.soleus.nu
2011-08-31 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/man/Makefile.am: get rid of hardcoded
ZOEMSEARCHPATH=/usr/share/aephea
2011-06-08 Joost van Baal-Ilić
* uruk/NEWS: ship it! The IPv6 Day release!
2011-06-07 Joost van Baal-Ilić
* uruk/TODO, uruk/doc/default: change examples in default file to
display non-default value: just uncomment the line to change
behaviour. tnx Thijs Kinkhorst for sharing ideas
2011-06-07 Joost van Baal-Ilić
* uruk/TODO: thijs found a bug. tnx
2011-06-04 Joost van Baal-Ilić
* uruk/TODO: document test-procedure
2011-06-04 Joost van Baal-Ilić
* uruk/NEWS, uruk/TODO, uruk/man/include.zmm.in,
uruk/man/uruk-rc.azm, uruk/man/uruk-save.azm, uruk/man/uruk.azm: Fix
some more zoem >= 10-265-1 (cosmetic) issues.
2011-06-02 Joost van Baal-Ilić
* uruk/NEWS: ship it: uruk 20110602
2011-05-20 Joost van Baal-Ilić
* uruk/NEWS, uruk/script/uruk.in: fix bug in generating warning
about suspicious rc file
2011-05-19 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/script/uruk.in: first shot at behaving
more gracefully on suspicious rc file
2011-05-16 Joost van Baal-Ilić
* uruk/NEWS, uruk/bootstrap: newer automake
2011-05-16 Joost van Baal-Ilić
* uruk/man/uruk-save.azm: more zoem conversion
2011-05-16 Joost van Baal-Ilić
* uruk/NEWS: document changes, preparing next release
2011-05-16 Joost van Baal-Ilić
* uruk/man/Makefile.am, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm: convert manpages to zoem
>= 10-265-1 format
2011-05-12 Joost van Baal
* uruk/man/uruk.azm: converting to zoem >= 10-265-1 + aephea >=
10.008-1. needs
ZOEMSEARCHPATH=/usr/share/aephea/pud:/usr/share/aephea
2011-02-15 Joost van Baal
* uruk/TODO: add hint on how to improve flushing rules. tnx Wessel
2011-02-13 Joost van Baal
* uruk/NEWS: ship it: release 20110213
2011-02-13 Joost van Baal
* uruk/man/uruk.azm, uruk/script/uruk.in: ipv6 filtering enabled by
default: update docs
2011-02-13 Joost van Baal
* uruk/README, uruk/TODO: added upgrade instructions to README file
2011-02-13 Joost van Baal
* uruk/TODO: cleanup
2011-02-13 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/doc/default, uruk/init/uruk.in: IPv6
packet filtering now enabled by default
2011-02-13 Joost van Baal
* uruk/TODO: more stuff to do about ipv6. Thanks Wessel
2010-10-08 Joost van Baal
* uruk/script/uruk.in: assume we have ip6tables connection tracking
support. iptables as shipped with debian etch has it
2010-08-31 Joost van Baal
* uruk/NEWS: version 20100831: ship it
2010-08-31 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/doc/rc, uruk/script/uruk.in: fix
example rc file. Thanks ﻢﻫﺪﻳ ﺎﻟﺩڤﻱ at
http://lists.debian.org/debian-release/2010/08/msg01587.html
2010-08-23 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/script/uruk.in: new iptables syntax,
and another 20100823 release
2010-08-23 Joost van Baal
* uruk/TODO: found another issue which should be fixed before
uploading
2010-08-23 Joost van Baal
* uruk/NEWS, uruk/README: oops, fix bug in upgrade instructions
2010-08-23 Joost van Baal
* uruk/README: add upgrade instructions now that IPv6 is enabled by
default
2010-08-22 Joost van Baal
* uruk/script/uruk.in: some layout fixes, update copyright statement
2010-08-21 Joost van Baal
* uruk/NEWS: ship it: 20100821
2010-08-21 Joost van Baal
* uruk/TODO: add a suggestion by Casper Gielen, send in Date: Fri,
20 Aug 2010 17:27:18 +0200, Message-ID: <4C6E9ED6.9070400@uvt.nl>,
From 4e6b6a2ac6451369945e710f62a0b5d750b6657e Mon Sep 17 00:00:00
2001, Date: Fri, 20 Aug 2010 17:14:37 +0200, Subject: [PATCH 7/8]
Move IPv6 multicast comment to TODO
2010-08-21 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/script/uruk.in: bugfix: fatal syntax
error in /usr/sbin/uruk
2010-08-20 Joost van Baal
* uruk/NEWS, uruk/script/uruk.in: Use connection tracking for IPv6 If support for IPv6 connection tracking is available use it to
restrict full processing to IP packets with the NEW flag set.
Packets that are part of an established connection (or related to
one) get a free pass. Patch contributed by Casper Gielen in Date: Fri, 20 Aug 2010
16:56:55 +0200, Message-Id:
<1282316215-21616-1-git-send-email-cgielen@uvt.nl>
2010-08-20 Joost van Baal
* uruk/NEWS: ship it: 20100820
2010-08-20 Joost van Baal
* uruk/script/uruk.in: Drop unroutable IPv6 traffic Patch supplied by Casper Gielen in Message-Id:
<1282308925-17493-1-git-send-email-cgielen@uvt.nl>, Date: Fri, 20
Aug 2010 14:55:25 +0200
2010-08-20 Joost van Baal
* uruk/TODO: one more issue tackled
2010-08-20 Joost van Baal
* uruk/NEWS, uruk/init/uruk.in: require $remote_fs for init scripts
2010-08-20 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/init/uruk.in: no need to special case
runlevel 1
2010-08-20 Joost van Baal
* uruk/TODO: found out more problems with lsb headers. thanks Debian
lintian
2010-08-20 Joost van Baal
* uruk/README, uruk/TODO: update README: instructions about git, not
arch
2010-08-20 Joost van Baal
* uruk/AUTHORS, uruk/Makefile.am, uruk/README, uruk/TODO,
uruk/bootstrap, uruk/configure.ac, uruk/contrib/Makefile.am,
uruk/doc/Makefile.am, uruk/doc/default, uruk/doc/rc,
uruk/init/Makefile.am, uruk/man/Makefile.am,
uruk/man/include.zmm.in, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm, uruk/script/Makefile.am,
uruk/script/uruk.in, uruk/setversion: replace arch headers by
commented note about git
2010-08-20 Casper Gielen
* uruk/script/uruk.in: Drop traffic that is not to/from us Signed-off-by: Joost van Baal
2010-08-20 Casper Gielen
* uruk/script/uruk.in: Reject unwanted IPv6 traffic with a proper
reset package. Signed-off-by: Joost van Baal
2010-08-20 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/doc/rc, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm, uruk/script/uruk.in:
IPv6-support is no longer considered experimental
2010-08-20 Joost van Baal
* uruk/init/uruk.in: No longer mention obsolete Red Hat EL AS rel
2.1. Update arch-header to git.
2010-08-20 Joost van Baal
* uruk/NEWS, uruk/TODO, uruk/init/uruk.in: Fix LSB init header.
Partially closes http://bugs.debian.org/581659. Thanks Petter
Reinholdtsen
2010-07-27 Joost van Baal
* uruk/TODO: fixed homepage at http://mdcc.cx/uruk : now talks about
git (not GNU Arch)
2010-07-17 Joost van Baal
* uruk/TODO: another bug to fix
2010-07-17 Joost van Baal
* uruk/Makefile.am, uruk/NEWS: some tweaking of buildsystem
2010-07-17 Joost van Baal
* uruk/NEWS: release 20100717
2010-07-17 Joost van Baal
* uruk/TODO: set prios for upcoming release
2010-07-17 Joost van Baal
* uruk/bootstrap: adjust to updated autoconf-archive debian package
layout
2010-07-17 Joost van Baal
* uruk/script/uruk.in: and now finally apply Casper's patch
2010-07-17 Joost van Baal
* uruk/THANKS, uruk/TODO: updated
2010-07-17 Joost van Baal
* uruk/TODO: new plans
2010-07-17 Joost van Baal
* uruk/Makefile.am, uruk/README, uruk/bootstrap: generate ChangeLog
from git commit messages
2010-06-24 Joost van Baal
* uruk/ChangeLog, uruk/ChangeLog.2004: convert from arch to git;
move ChangeLog from arch era out of the way
2010-03-02 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: record changes record changes git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-179
2010-03-02 Joost van Baal
* uruk/ChangeLog: use IPv6 connection tracking if available. patch
contributed by Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> use IPv6 connection tracking if available. patch contributed by
Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-178
2010-03-02 Joost van Baal
* uruk/ChangeLog: use IPv6 connection tracking if available. patch
contributed by Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> use IPv6 connection tracking if available. patch contributed by
Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-177
2010-03-02 Joost van Baal
* uruk/ChangeLog: use IPv6 connection tracking if available. patch
contributed by Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> use IPv6 connection tracking if available. patch contributed by
Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-176
2010-03-02 Joost van Baal
* uruk/ChangeLog: use IPv6 connection tracking if available. patch
contributed by Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> use IPv6 connection tracking if available. patch contributed by
Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl> git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-175
2009-09-08 Joost van Baal
* uruk/ChangeLog: tnx Fruit tnx Fruit git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-174
2009-09-04 Joost van Baal
* uruk/ChangeLog: a better way to fix this a better way to fix this git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-173
2009-09-04 Joost van Baal
* uruk/ChangeLog, uruk/TODO: a better way to fix this a better way to fix this git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-172
2009-09-04 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/rc, uruk/script/uruk.in: first
shot at using abbreviated notation for IP addresses first shot at using abbreviated notation for IP addresses git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-171
2009-08-29 Joost van Baal
* uruk/ChangeLog, uruk/TODO: tnx fvos for wishlist bug tnx fvos for wishlist bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-170
2009-08-29 Joost van Baal
* uruk/ChangeLog, uruk/TODO: another feature request, tnx Wessel another feature request, tnx Wessel git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-169
2009-08-29 Joost van Baal
* uruk/ChangeLog: s/tla/git/ s/tla/git/ git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-168
2009-08-29 Joost van Baal
* uruk/ChangeLog, uruk/TODO: s/tla/git/ s/tla/git/ git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-167
2008-11-24 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: fix typo: its vs it's fix typo: its vs it's git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-166
2008-10-13 Joost van Baal
* uruk/ChangeLog, uruk/TODO: tnx Fruit for tips on if-up.d usage tnx Fruit for tips on if-up.d usage git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-165
2008-04-17 Joost van Baal
* uruk/ChangeLog, uruk/TODO: found another design bug :( found another design bug :( git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-164
2008-03-30 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: release 20080330 release 20080330 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-163
2008-03-29 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: document changes document changes git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-162
2008-03-28 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: bugfix Be very sure we _never_ trigger ip6tables v1.3.6: Unknown arg `--destination' Try `ip6tables -h' or 'ip6tables --help' for more information. by running /sbin/ip6tables -A INPUT -j LOG --log-level debug --log-prefix
'ip6tables: ' -i eth0 --destination . git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-161
2008-03-08 Joost van Baal
* uruk/ChangeLog, uruk/TODO: did some testing did some testing git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-160
2008-03-08 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-159
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: release 20080307: this is a
prerelease release 20080307: this is a prerelease git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-158
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/script/uruk.in: implement support
for multiple rc_a files implement support for multiple rc_a files git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-157
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm, uruk/man/uruk.azm: document
upcoming support for multiple rc_a files document upcoming support for multiple rc_a files git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-156
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: workaround zoem typesetting
issue in "allowing any traffic on an interface" heading workaround zoem typesetting issue in "allowing any traffic on an
interface" heading git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-155
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/TODO: another wishlist bug by Wessel Dankers:
multiple rc_a's another wishlist bug by Wessel Dankers: multiple rc_a's git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-154
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: fix bug showing up when
loglevel between 20 and 40 and ipv6 enabled: it caused errors like
"ip6tables v1.3.6: host/network 10.1.2.3 not found". these did NOT
compromise the firewall rules, btw fix bug showing up when loglevel between 20 and 40 and ipv6 enabled:
it caused errors like "ip6tables v1.3.6: host/network 10.1.2.3 not
found". these did NOT compromise the firewall rules, btw git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-153
2008-03-07 Joost van Baal
* uruk/ChangeLog, uruk/TODO: one bug has been squashed earlier.
another was reported one bug has been squashed earlier. another was reported git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-152
2008-01-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO: more bugs found git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-151
2008-01-18 Joost van Baal
* uruk/ChangeLog, uruk/TODO: Tnx Fruit for another wishlist bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-150
2007-11-26 Joost van Baal
* uruk/ChangeLog, uruk/TODO: another idea for improvement:
urukconfig git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-149
2007-11-04 Joost van Baal
* uruk/ChangeLog, uruk/TODO: upload to Debian done. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-148
2007-11-04 Joost van Baal
* uruk/ChangeLog, uruk/TODO: another test done git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-147
2007-11-03 Joost van Baal
* uruk/ChangeLog, uruk/TODO: adjusted test plan git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-146
2007-11-03 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk.azm: mention $interfaces_unprotect
in section on Debian ifupdown: we now offer better support. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-145
2007-11-03 Joost van Baal
* uruk/ChangeLog, uruk/TODO: did another test-install and a fresh
test-install, found two more bugs git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-144
2007-11-03 Joost van Baal
* uruk/ChangeLog, uruk/TODO: did another test-install, found a
possible bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-143
2007-11-03 Joost van Baal
* uruk/ChangeLog, uruk/TODO: did another test-install, found a bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-142
2007-11-02 Joost van Baal
* uruk/ChangeLog, uruk/contrib/fw_2007-10.xsd,
uruk/contrib/sample.xml: minor fixes by Fred Vos git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-141
2007-11-02 Joost van Baal
* uruk/ChangeLog: fix permissions in VC repo: world-readable please git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-140
2007-11-02 Joost van Baal
* uruk/ChangeLog, uruk/TODO: plan for tests git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-139
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: release 20071101 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-138
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: cosmetics in printed
messages git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-137
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: recorded some changes git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-136
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: always clean up tmpfiles: use
trap git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-135
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: fix behaviour of
"reload" in case uruk not running git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-134
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: LSB compliancy: consider
stopping a stopped uruk as success. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-133
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: made force-reload a
no-op in case uruk not running git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-132
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: removed some dead
and obfuscating code git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-131
2007-11-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: Found out this: root@nagy:~# invoke-rc.d uruk stop Autosaving iptables ruleset: save "active" with counters. Loading iptables ruleset: load "inactive". Shutting down uruk (iptables) root@nagy:~# invoke-rc.d uruk status; echo $? Checking uruk (iptables): uruk not running invoke-rc.d: initscript uruk, action "status" failed. 3 is LSB-compliant behaviour. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-130
2007-10-31 Joost van Baal
* uruk/ChangeLog, uruk/contrib/Makefile.am: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-129
2007-10-31 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-128
2007-10-31 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: add description for status when
printing help git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-127
2007-10-31 Joost van Baal
* uruk/ChangeLog, uruk/contrib/README, uruk/contrib/fw2dot.xsl:
Added another contribution from Fred Vos: fw2dot.xsl: generating a
dot file (for graphiz) from an XML-ed uruk rc file. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-126
2007-10-30 Joost van Baal
* uruk/ChangeLog, uruk/contrib/README: Refer to Fred Vos's website
on his Uruk XML stuff. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-125
2007-10-30 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/doc/rc: release
20071030 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-124
2007-10-30 Joost van Baal
* uruk/ChangeLog, uruk/Makefile.am, uruk/configure.ac,
uruk/contrib/Makefile.am: make sure stuff in contrib/ gets
distributed and installed git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-123
2007-10-30 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/contrib/README,
uruk/contrib/fw2urukrc.xsl, uruk/contrib/fw_2007-10.xsd,
uruk/contrib/fw_firewall_2007-10.xsd, uruk/contrib/sample.xml: Add
XML stuff contributed by Fred Vos, including some preliminary
documentation (in Dutch). Could be used to transform an XML-file
describing uruk rules to an uruk rc file. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-122
2007-10-21 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: fixed some bugs in "status"
argument git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-121
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: found a bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-120
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: layout git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-119
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: document LSB-stuff in init
script in NEWS git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-118
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: exit with LSB-compliant status
code in case "status" was requested git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-117
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: implemented "status" argument git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-116
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: more ideas for "status" git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-115
2007-10-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: LSB compliancy: exit
with status code 2 in case wrong arguments are passed. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-114
2007-10-19 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-113
2007-10-19 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: use exit 5 and exit 6 if
required by LSB git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-112
2007-10-19 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in, uruk/script/uruk.in:
Work on support for Linux Standard Base Specification 3.1 in uruk
init script: Added LSB comments (for LSB's install_initd and
remove_initd), source /lib/lsb/init-functions. call LSB's
log_success_msg and log_warning_msg, add support for finegrained
exit code (not yet completed), start working on support for argument
"status". git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-111
2007-09-26 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm: Documented support for unprotecting an interface git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-110
2007-09-26 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/doc/rc,
uruk/script/uruk.in: Added support for unprotecting an interface:
introduced variable interfaces_unprotect. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-109
2007-09-25 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/script/uruk.in: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-108
2007-09-25 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/man/uruk.azm:
documented "ACCEPT traffic on lo earlier in the uruk ruleset".
Thanks to Wessel Dankers for the idea. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-107
2007-09-25 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: moved accepting packets on lo
to beginning of rules, before rc_a is sourced: that's more
efficient. (it used to be between the sourcing of rc_d and rc_e.) if you'd like to add rules at the absolute beginning, stick these in
your rc file (not in rc_a). traffic on lo is accepted _before_ rc_a
is sourced. if your loglevel is fascist, traffic on lo will no longer be logged. rc_e is now obsolete. use rc_d instead. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-106
2007-09-23 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm: finished documenting "uruk internals: the gory
details" in uruk(8). git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-105
2007-09-23 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/man/uruk.azm: started
documenting uruk internals: the gory details in uruk(8) git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-104
2007-09-23 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: started documenting the rescheduling of
handling lo traffic git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-103
2007-09-23 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: in sync with current ChangeLog git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-102
2007-09-23 Joost van Baal
* uruk/ChangeLog, uruk/TODO: reprioritized stuff to do for upcoming
release git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-101
2007-09-22 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/bootstrap, uruk/configure.ac,
uruk/doc/rc, uruk/init/uruk.in, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm, uruk/script/uruk.in: Uruk
is now licensed under GPLv3 (or any later version). git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-100
2007-09-21 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-99
2007-09-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO: prioritized todo-items for upcoming
release git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-98
2007-09-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-97
2007-09-20 Joost van Baal
* uruk/ChangeLog, uruk/TODO: added wishlist bug reported by Fred
Vos. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-96
2007-09-14 Joost van Baal
* uruk/ChangeLog, uruk/man/Makefile.am: no longer try to support
non-ascii characters in .txt manpages. col, as shipped with
bsdutils 1:2.13-2 Debian packages chokes on output of groff, as
shipped with 1.18.1.1-12 Debian package. See also Debian bug
Bug#441659. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-95
2006-03-11 Joost van Baal
* uruk/ChangeLog, uruk/TODO: added some more received wishlist bugs git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-94
2006-01-16 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: improved way to unprotect an
interface, thanks Wessel Dankers git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-93
2006-01-10 Joost van Baal
* uruk/ChangeLog, uruk/TODO: add idea for a better way to unsupport
an interface. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-92
2006-01-10 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: add note on how to unprotect
an interface git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-91
2006-01-10 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: Finetuning of manpage.
Thanks Wessel Dankers. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-90
2006-01-06 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: force-reload breaks
when nat or mangle table are used. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-89
2005-12-21 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-88
2005-11-30 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm: maintenance on manpages, mainly cosmetic git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-87
2005-11-29 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/man/uruk-rc.azm:
release 20051129 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-86
2005-11-29 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-85
2005-11-27 Joost van Baal
* uruk/ChangeLog, uruk/README, uruk/man/include.zmm.in: build-depend
upon zoem >= 05-328 : new tr semantics and better 'make distcheck'
behaviour. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-84
2005-11-27 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: release 20051127 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-83
2005-11-27 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/init/uruk.in: document
bug: window of opportunity during system boot. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-82
2005-11-27 Joost van Baal
* uruk/ChangeLog, uruk/TODO: more issues with init-script git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-81
2005-11-25 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: on Red Hat, run start uruk
initscript _after_ /etc/init.d/network (and stop before
/etc/init.d/network). network has S10network and K90network. This
is needed since we build our rules from the uruk rc file (not the
saved rules files). Building rules from an rc file might need a
configured network interface: some users like to invoke /sbin/ip to
learn about the current IP. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-80
2005-11-24 Joost van Baal
* uruk/ChangeLog, uruk/TODO: found new referral to lsb stuff git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-79
2005-10-27 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/README: release 20051027 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-78
2005-10-27 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: fix bug in version check in
uruk script: if version was unset, and /bin/sh is not bash, it would
give: Loading IPv4 uruk rules/usr/sbin/uruk: line 51: test: : integer
expression expected . git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-77
2005-10-26 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-rc.azm: uruk-rc html
manpage now holds link to uruk html manpage git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-76
2005-10-26 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/doc/rc,
uruk/man/include.zmm.in: release 20051026 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-75
2005-10-23 Joost van Baal
* uruk/ChangeLog, uruk/man/include.zmm.in, uruk/man/uruk-rc.azm:
improved notes on debugging git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-74
2005-10-23 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-save.azm: fix zoem syntax errors in
uruk-save(8) git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-73
2005-10-23 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-72
2005-10-23 Joost van Baal
* uruk/ChangeLog, uruk/README, uruk/init/uruk.in, uruk/man/uruk.azm:
move quick setup guide from README to uruk(8) git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-71
2005-10-23 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/rc: add some IPv6 examples git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-70
2005-10-22 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/README, uruk/TODO,
uruk/man/uruk.azm, uruk/script/uruk.in: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-69
2005-10-22 Joost van Baal
* uruk/ChangeLog, uruk/README, uruk/man/include.zmm.in,
uruk/man/uruk.azm: add quick setup guide to README, and refer to it. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-68
2005-10-21 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-67
2005-10-21 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in, uruk/script/uruk.in: init
script somewhat more verbose git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-66
2005-10-21 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/script/uruk.in: poor man's
connection tracking for IPv6 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-65
2005-10-20 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: more to do git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-64
2005-10-18 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/default, uruk/init/uruk.in:
git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-63
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-62
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-61
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: updated NEWS file git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-60
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/Makefile.am,
uruk/doc/default, uruk/script/uruk.in: deal sane with ipv6 logging.
ship /etc/default/uruk example file. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-59
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: add reload option to
init script git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-58
2005-10-16 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm: adjusted uruk(8) to new init script git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-57
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/rc, uruk/man/uruk-rc.azm,
uruk/script/uruk.in: Implemented version variable. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-56
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: we cannot support
"reload": we generally can't atomically load new rc file. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-55
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in,
uruk/man/uruk-save.azm: display warning before calling uruk-save git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-54
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/init/uruk.in: reimplemented init
script. Thanks to Wessel Dankers for suggestions. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-53
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/init/uruk.in: get rid
of Debianism: /etc/default/uruk git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-52
2005-10-15 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/README, uruk/TODO: started
thinking about init script: upgrade-plans git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-51
2005-10-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-50
2005-10-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/bootstrap: use autoreconf in
bootstrap git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-49
2005-10-14 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/man/uruk-rc.azm,
uruk/man/uruk-save.azm, uruk/man/uruk.azm: fixed FSF address. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-48
2005-10-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/man/uruk-save.azm,
uruk/script/uruk-save.in: uruk-save is now IPv6 aware git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-47
2005-10-11 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO: new stuff to do git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-46
2005-10-11 Joost van Baal
* uruk/ChangeLog, uruk/etc/rc_d_ipv6, uruk/etc/rc_g_ipv6,
uruk/etc/rc_h_ipv6, uruk/etc/rc_i_ipv6: moved to uruk proper git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-45
2005-10-11 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: move IPv6 stuff in etc/ to
uruk proper. By default, ip6tables is disabled. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-44
2005-10-10 Joost van Baal
* uruk/ChangeLog, uruk/etc/rc_g_ipv6, uruk/etc/rc_h_ipv6,
uruk/etc/rc_i_ipv6: this is enough to get limited ipv6 working. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-43
2005-10-10 Joost van Baal
* uruk/ChangeLog, uruk/etc/rc_d_ipv6, uruk/etc/rc_i_ipv6: default
reject for ipv6 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-42
2005-10-10 Joost van Baal
* uruk/ChangeLog, uruk/etc/rc_d_ipv6: typo fix, some start of
documentation of this ipv6 stuff git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-41
2005-10-10 Joost van Baal
* uruk/ChangeLog, uruk/etc/rc_d_ipv6: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-40
2005-10-09 Joost van Baal
* uruk/ChangeLog, uruk/TODO: more to do git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-39
2005-09-03 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-38
2005-09-03 Joost van Baal
* uruk/ChangeLog, uruk/man/include.zmm.in, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm: fix typo, add example for NAT git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-37
2005-08-25 Joost van Baal
* uruk/ChangeLog, uruk/README: found out about yet another
alternative tool git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-36
2005-08-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-35
2005-08-01 Joost van Baal
* uruk/ChangeLog, uruk/TODO: git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-34
2005-07-26 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk.azm: when using uruk-save, use it
atomically git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-33
2005-07-26 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: yet another way to debug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-32
2005-07-26 Joost van Baal
* uruk/ChangeLog: remove some leftover cruft from manpage. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-31
2005-07-22 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: be more clear on how to set
loglevel in rc file. Thanks Wessel Dankers for bugreport. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-30
2005-07-18 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: fix sh bugs git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-29
2005-07-18 Joost van Baal
* uruk/ChangeLog, uruk/man/uruk-rc.azm: fix zoem bug: ui change. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-28
2005-07-18 Joost van Baal
* uruk/ChangeLog, uruk/NEWS: release 20050718 release 20050718 git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-27
2005-07-18 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/doc/rc, uruk/man/uruk-rc.azm,
uruk/man/uruk.azm, uruk/script/uruk.in: loglevel implemented and documented loglevel variable. Thanks to Wessel
Dankers for the bugreport about uruk's too enthousiastic logging
behaviour. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-26
2005-05-26 Joost van Baal
* uruk/ChangeLog, uruk/TODO: another idea on how to implement better
(less spammy) logging git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-25
2005-05-25 Joost van Baal
* uruk/ChangeLog, uruk/TODO: plan for implementing more granular
logging. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-24
2005-04-16 Joost van Baal
* uruk/ChangeLog, uruk/TODO: some more pending issues git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-23
2005-04-15 Joost van Baal
* uruk/ChangeLog: this stuff is moved git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-22
2005-04-15 Joost van Baal
* packages/debian.log, packages/debian/README,
packages/debian/TODO, packages/debian/changelog,
packages/debian/conffiles, packages/debian/control,
packages/debian/copyright, packages/debian/dirs,
packages/debian/postinst, packages/debian/postrm,
packages/debian/prerm, packages/debian/rc, packages/debian/rules,
packages/rpm.log, packages/rpm/uruk-source.1.README.RPM,
packages/rpm/uruk-source.2.TODO.RPM, packages/rpm/uruk.spec,
uruk/ChangeLog: moved to new archive maintained in http://arch.gna.org/uruk/archive-2005-uruk-pkg/ now git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-21
2005-04-15 Joost van Baal
* uruk/ChangeLog, uruk/TODO: bug fixed, bug opened git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-20
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO: uruk-save could need more attention git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-19
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/Makefile.am, uruk/README, uruk/init/uruk.in,
uruk/man/uruk.azm: some minor tweaks to sneak in the 20050414
release Makefile.am: ship ChangeLog.2003. README: zoem is distributed with
Debian now. init/uruk.in: warn about uruk-save unsafeness.
man/uruk.azm: _finally_ fix the zoem bug, so that this manpage is
completely typesetted again. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-18
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/Makefile.am, uruk/NEWS: release 20050414:
this is a prerelease git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-17
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/NEWS, uruk/TODO, uruk/configure.ac,
uruk/doc/rc, uruk/init/uruk.in, uruk/man/Makefile.am,
uruk/man/include.zmm.in, uruk/man/uruk-rc.azm, uruk/man/uruk.azm,
uruk/script/Makefile.am, uruk/script/uruk.in: almost ready for next
release Fixed wishlist bug from 2004-05-26, Wessel Dankers (might need more
testing though). Ship and install uruk-save(8) script and manpage.
init script behaves more sane when saved state files are missing: we
are now able to generate these on the fly. Minor improvement of uruk-rc(5) manpage. Document URUK_CONFIG and URUK_IPTABLES in uruk(8) manpage. Document
one way of using uruk-save in uruk(8) manpage. In the uruk script itself, only some typos in comments have been
fixed. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-16
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/script/uruk.in: don't test wether $iptables
is executable: it might be set to 'echo foo' git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-15
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/script/uruk-save.in: adding a hook
to save uruk's rc directly to iptables-save file: more flexibility git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-14
2005-04-14 Joost van Baal
* uruk/ChangeLog, uruk/TODO: bugreports bugs submitted by Wessel Dankers git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-13
2005-03-10 Joost van Baal
* packages/rpm/uruk.spec, uruk/ChangeLog, uruk/bootstrap: autoconf
archive is moved. Thanks Anton Sluijtman git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-12
2004-11-20 Joost van Baal
* uruk/ChangeLog, uruk/init/uruk.in: new file /etc/default/uruk can
overrule variable enable_uruk_check, enable_ipv6, enable_autosave,
enable_save_counters and PATH git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-11
2004-11-17 Joost van Baal
* uruk/ChangeLog, uruk/TODO, uruk/script/uruk.in: uruk now honors
environment variables URUK_IPTABLES and URUK_CONFIG git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-10
2004-11-02 Joost van Baal
* uruk/ChangeLog, uruk/TODO: found another bug git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-9
2004-09-27 Joost van Baal
* uruk/ChangeLog: hrm, would this get me an autogenerated ChangeLog? git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-8
2004-09-27 Joost van Baal
* uruk/bootstrap: no longer using cvs2cl, but tla changelog git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-7
2004-09-27 Joost van Baal
* uruk/doc/Makefile.am, uruk/doc/rc, uruk/init/Makefile.am,
uruk/init/uruk.in, uruk/man/Makefile.am, uruk/man/include.zmm.in,
uruk/man/uruk-rc.azm, uruk/man/uruk.azm, uruk/script/Makefile.am,
uruk/script/uruk.in: getting rid of even more cvs id tags git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-6
2004-09-27 Joost van Baal
* uruk/ChangeLog.2003: ChangeLog as build using cvs2cl: changes done
via CVS git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-5
2004-09-27 Joost van Baal
* uruk/AUTHORS, uruk/Makefile.am, uruk/NEWS, uruk/THANKS,
uruk/TODO, uruk/bootstrap, uruk/configure.ac, uruk/setversion: get
rid of CVS-style Id tags git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-4
2004-09-27 Joost van Baal
* uruk/README: added note about new version control system git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-3
2004-09-27 Joost van Baal
* packages/debian.log, packages/debian/README,
packages/debian/TODO, packages/debian/changelog,
packages/debian/conffiles, packages/debian/control,
packages/debian/copyright, packages/debian/dirs,
packages/debian/postinst, packages/debian/postrm,
packages/debian/prerm, packages/debian/rc, packages/debian/rules,
packages/rpm.log, packages/rpm/uruk-source.1.README.RPM,
packages/rpm/uruk-source.2.TODO.RPM, packages/rpm/uruk.spec:
importing packaging stuff from cvs rpm and .deb stuff git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-2
2004-09-27 Joost van Baal
* : importing old cvs history ,v files the tar.gz is taken from old cvsroot on topaz.conuropsis.org. You
might want to convert it to a GNU Arch changeset. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--patch-1
2004-09-27 Joost van Baal
* initial import Importing stuff as it is in CVS on topaz.conuropsis.org today,
omitting the CVS history. git-archimport-id:
joostvb-arch@mdcc.cx--2004-uruk/uruk--mainline--0.1--base-0
uruk-20160219/INSTALL 0000644 0001750 0001750 00000036610 12657715017 010741 0000000 0000000 Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
Briefly, the shell command `./configure && make && make install'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
uruk-20160219/NEWS 0000644 0001750 0001750 00000111351 12661612743 010400 0000000 0000000 Uruk NEWS - user visible changes (and some other changes also.)
Refer to ChangeLog for detailed per-file info.
uruk version 20160219 - The Speurgt Release
[ changes by Wessel Dankers ]
- script/uruk.in: Fix bug which was introduced in version 20151118: when
uruk-save is enabled, loading saved active ruleset fails with
Loading iptables ruleset: load "active"Bad argument `REASON=invalid'
.
uruk version 20160218 - The Snijders-Chaam Release
[ changes by Joost van Baal-Ilić ]
- Set enable_uruk_save to true in example configuration file doc/default. If
this variable is unset or false, uruk-save(8) is by default (still) not used.
No longer warn when obsolete (since 2013-04) variable enable_uruk_save_warning
is found in /etc/default/uruk (or /etc/sysconfig/uruk):
+ doc/default: set enable_uruk_save to true.
+ script/urukctl: no longer assign obsolete variable enable_uruk_save_warning,
get rid of warn_uruk_save() function.
- bootstrap: upgrade from automake 1.14 to 1.15.
uruk version 20151118 - The Āne-wātak Release
[ changes by Joost van Baal-Ilić ]
- script/uruk.in: uruk is now more verbose when logging the blocking packets
with an INVALID connection tracking state.
uruk version 20150921 - The Prishtinë Release
[ changes by Wessel Dankers ]
- script/uruk.in: Add missing conntrack statements:
For some reason uruk created conntrack entries for outgoing IPv4 traffic but
not for IPv6. Fixed by adding entries for IPv6 as well. And even though
conntrack entries were created in the output chain, these were not used. Fixed
by adding "--ctstate ESTABLISHED,RELATED" rules, just like in the INPUT chain.
- script/uruk.in: Always treat IPv6 as a multiple-IPs-per-interface case:
Even if you do not explicitly configure multiple IPv6 addresses, you still
have to deal with the fact that an interface has at least a link-local and a
global address. That means you can't simply drop traffic that isn't directed
at the primary global address because that will interfere with things like
router advertisements. Likewise, in the output chain you have to provide for
the fact that sometimes the source address on outgoing traffic will not be the
primary global address. This change removes the code path that would block
all traffic not directed at the primary global address as well as outgoing
traffic with something other than that primary global address. It will just
always apply the simple bogon network range filtering that it used for the
explicit multiple address case.
[ changes by Joost van Baal-Ilić ]
- init/{uruk.service,Makefile.am}: ship and install new file
/lib/systemd/system/uruk.service, for systems using the systemd system and
service manager by Lennart Poettering, Kay Sievers e.a. NB: this is untested
experimental code. It is interesting for developers only. Do not use.
uruk version 20150916 - The ᎠᏍᎦᏯ ᎩᎦᎨᏱ; Release
[ changes by Joost van Baal-Ilić ]
- script/urukctl: Behave sane after reboot. Under some circumstances, after
a reboot, one would end up with files like
-rw-r--r-- 1 root root 17658 Sep 11 13:00 iptables/active
-rw-r--r-- 1 root root 0 Sep 11 13:00 iptables/inactive
-rw-r--r-- 1 root root 0 Sep 11 13:00 iptables/autosave
-rw-r--r-- 1 root root 4060 Sep 11 13:00 ip6tables/active
-rw-r--r-- 1 root root 0 Sep 11 13:00 ip6tables/inactive
-rw-r--r-- 1 root root 0 Sep 11 13:00 ip6tables/autosave
in /var/lib/uruk . Running "sudo service uruk status" would yield
Checking uruk (iptables): active uruk rules loaded
Checking uruk (ip6tables): active uruk rules loaded
[ ok ] Checking uruk (): uruk not running.
. However, uruk _is_ running. We now no longer ignore zero-sized files in
/var/lib/uruk/*/ , but regard them as valid rulesets. This fixes this bug.
uruk version 20150825 - The Прибој Release
[ changes by Wessel Dankers ]
- script/uruk.in: Fix two cases where $ip6_defined was used without being set.
uruk was unusable in cases where more than one IPv6 address is defined on an
interface.
uruk version 20150810 - The Гoрњи Милановац Release
[ changes by Joost van Baal-Ilić ]
- init/uruk: no longer inspect obsolete variable $status_active. Now "service
uruk status" will no longer report _both_ 'active uruk rules loaded' _and_
'active ruleset not loaded' when uruk is running. Thanks Casper Gielen for
bugreport.
uruk version 20150608 - The Oude Leije Release
[ changes by Joost van Baal-Ilić ]
- init/autodetect-ips: make sure it no longer gives "autodetect-ips: command
substitution: line 106: syntax error near unexpected token `newline' [...]"
when running under bash 3.2. The old Red Hat Enterprise Linux 5.11 ships
bash-3.2-33.el5_11.4. Also, bash 3.2-4.2 is shipped with Debian GNU/Linux
5.0.10 (lenny) (a currently unsupported old Debian release). Debian releases
6.0 Squeeze and later install with dash as /bin/sh so on these platforms, uruk
does not suffer from this issue with bash. Thanks Casper Gielen for report
and initial patch.
- Makefile.am: no longer ship uruk-VERSION.tar.bz2, do ship
uruk-VERSION.tar.xz (next to .tar.gz).
uruk version 20150401 - The Gorp en Roovert Release
[ changes by Wessel Dankers ]
- script/uruk.in: Don't drop all traffic when multiple addresses are used:
In uruk there is a bit of code that drops incoming packets for unknown
destinations. In the case where there are multiple IP addresses on an
interface, it falls back to just restricting the destination address to
non-bogon ranges. In theory it could restrict these packets to the set of
configured IP addresses, but this would require creating an extra filter chain
(something which uruk has avoided so far). In commit
4b2dd0f71bf38dbf1e759d3b078c8c8692328dee the code for handling multiple IP
addresses on an interface was changed, which also touched the code mentioned
above. In this commit a logic bug was introduced, which caused packets to be
dropped unless they had ALL destinations (instead of ANY). Since packets by
design only have a single destination address, that meant all packets were
dropped on that interface. This patch fixes this showstopper issue by fixing
the logic bug, properly keeping track of the number of addresses on an
interface, and separating the filters for local and remote addresses.
- init/uruk: fix improper parameter passing (and typo)
uruk version 20150325 - The De Drie Zwaantjes Release
Uruk is no longer a one man show: Since this release, Wessel Dankers joined the
uruk maintainers. Welcome aboard!
[ changes by Joost van Baal-Ilić ]
- man/uruk-rc.azm doc/rc: Things like
interfaces_nocast="eth0"
are now deprecated in favor of
bcasts_eth1="local"
: use the multiple-IP-per-nic style if you want full control over which
broadcast and multicast-traffic gets dropped. (The old syntax is still
supported; for now it's just no longer documented.)
[ changes by Wessel Dankers ]
- script/uruk.in man/uruk-rc.azm: ip_* and ip6_* are now unified in the same way
as sources_* and sources6_*. As a bonus you can now mention multiple addresses
in each ip "name". Example:
ips_eth0='admin service'
ip_eth0_admin='192.0.2.2 2001:db8::2'
ip_eth0_public='192.0.2.3 192.0.2.4 2001:db8::3 2001:db8::4'
services_eth0_admin_tcp='ssh'
ports_eth0_admin_tcp_admin='22'
sources_eth0_admin_tcp_admin='192.0.2.0/24 2001:db8::/32'
services_eth0_public_tcp='www'
ports_eth0_public_tcp_www='80 443'
sources_eth0_public_tcp_www='0/0 ::/0'
- script/uruk.in script/uruk-save: net_* and net6_ are now unified as well, and
accept multiple networks. The list of bogon networks is significantly
expanded and now contains:
0.0.0.0/8
10.0.0.0/8
100.64.0.0/10
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.0.0.0/24
192.0.2.0/24
192.88.99.0/24
192.168.0.0/16
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
224.0.0.0/3
64:ff9b::/96
::ffff:0:0/96
100::/64
200::/7
2001:2::/48
2001:db8::/32
2001:10::/28
fc00::/7
fec0::/10
3ffe::/16
5f00::/8
::1/128
::/128
uruk version 20141120 - The Јадар Release
- script/uruk.in: make uruk_version available to rc files. One can use that
to handle unsupported uruk versions gracefully in rc files. Thanks Wessel
Dankers for suggestion.
- script/uruk.in: no longer warn if services_${iface}_${proto} is undefined
for proto in udp, dccp or sctp. To reduce useless warnings, we now only
warn for undefined services_${iface}_tcp. Thanks Wessel Dankers, Thijs
Kinkhorst and Casper Gielen for suggestion.
uruk version 20140627 - The Vlook Release
- script/uruk: next to protocols tcp and udp, uruk now has preliminary
experimental support for dccp and sctp. Stream Control Transmission Protocol
(needs iptables >= 1.2.9) is defined in RFC 4960; Datagram Congestion Control
Protocol is defined in RFC 4340. These protocols are implemented in the
sctp.ko and dccp.ko Linux kernel modules.
Beware! For TCP, we do inspect "tcp --tcp-flags SYN,ACK,FIN,RST [...]".
However, for DCCP or SCTP, we don't do anything specific yet with respect to
the state of the DCCP or SCTP connections! You'll have to take measures
yourself to deal sanely with open connections. Untested code.
- doc/rc, man/uruk-rc.azm: document new semantics of
sources_${iface}_${proto}_${service} vs sources6_${iface}_${proto}_${service}
- bootstrap: update to automake 1.14.
uruk version 20140319 - The Alfama Release
- init/uruk: no longer abort on failed commands. This fixes a bug: upgrading
a "not running" uruk from 20130426 to 20131213 on Debian systems
would fail with "invoke-rc.d: initscript uruk, action "force-reload" failed.
dpkg: error processing uruk (--install): subprocess installed
post-installation script returned error exit status 3". Indeed, calling
/etc/init.d/uruk force-reload on a "not running" uruk would give error exit
status 3, and would not give any output.
- init/autodetect-ips: make sure Debian inet6 stanzas default to netmask=64.
Patch contributed by Wessel Dankers.
- script/uruk: Simplify semantics of sources_${iface}_${proto}_${service} vs
sources6_${iface}_${proto}_${service}. sources6_* is no longer needed; just
list both IPv4 and IPv6 addresses in sources_*.
Before this change, uruk required seperate sources_* and sources6_*
variables to configure access for v4/v6 sources. To be precise, the semantics
now is: 1) If both sources_* and sources6_* are defined (even if they're just
empty), each is used for its respective address family. (This ensures
backwards compatibility.) 2) If sources6_* is undefined, sources_* is used
for both v4 and v6. 3) In either case, v4 literals in v6 context and v6
literals in v4 context are silently (!) ignored.
The patch also fixes the detection of undefined variables, which was broken.
Patch contributed by Wessel Dankers.
uruk version 20131213 - The Gweek Release
- init/uruk: actually _do_ perform a reload when called as "service uruk
force-reload".
- script/urukctl: fix warning about "enable_uruk_save_warning is no longer
supported".
uruk version 20130913 - The Clochán na bhFomhórach Release
- script/urukctl: use just initd_status to decide upon status; do not inspect
$status_active. This fixes a severe bug, which made the Dr Syntax's Head
release unusable: running "# urukctl start && service uruk force-reload"
would give "Nothing to do for reloading uruk: uruk is not running [ OK ]".
Thanks Casper Gielen for reporting this issue.
- doc/default, script/urukctl: default: explicitly add /sbin to PATH. urukctl:
check command line args earlier in execution. Now "urukctl --help" and
"urukctl help" e.a. behave better when called as non-root.
- script/urukctl: don't test running iptables when called with argument "save",
enable running "urukctl save active" as non-root, using uruk-save.
- bootstrap: bootstrap: upgrade from automake 1.11 to 1.13
uruk version 20130830 - The Dr Syntax's Head Release
- script/uruk: work around possible bug in conntrack, found when: we are client
and initialize outgoing tcp session. Return traffic gets allowed since
matching state. Incoming rset packet gets received, apparently kernel doesn't
recognize it as belonging to a tcp-session being shut down, and can't match
the state. Uruk then blocks and logs it. Now it explictly allows such RSET
packets. This closes Debian Bug#720306 (http://bugs.debian.org/720306).
uruk version 20130809 - The Corbeşti Release
- script/urukctl: Fix bug in urukctl, introduced 2013-05-29. (Previous uruk
versions 20130619 and 20130618 are unusable.) Be sure to assign variables
($libdir e.a.) on time. No longer fails with "mkdir: cannot create directory
`': No such file or directory". Thanks Casper Gielen for bugreport.
- script/urukctl: no longer strictly requires root-access when called as
"urukctl create active".
- init/autodetect-ips, man/uruk-rc.azm: detect IPs currently assigned to
interfaces, which are not listed in config files /etc/network/interfaces or
/etc/sysconfig/network-scripts/ifcfg-*, by calling ip(8) if needed. Useful in
case e.g. udev is used to assign IPs to interfaces. This closes Debian
Bug#712869 (http://bugs.debian.org/712869).
- init/autodetect-ips: Apply patch contributed by Wessel Dankers: "accept
debian interfaces entries that include the netmask".
- man/{uruk,urukctl}.azm: Various improvements in uruk(8) and urukctl(8)
manpages.
- man/include.zmm.in, man/uruk*.azm: introduce zoem macro \gplheader, update
copyright of all manpages
- Special thanks to Wessel Dankers for recovering my git repo: it didn't really
like a sudden powerfailure. And thanks for lending me an Ubuntu EeePC to
replace mine which died after an encounter with my bicycle's wheel spokes.
- Thanks Jelena for teaching me how to spell četiri.
uruk version 20130619 - The Het De Siptenpad Release
- init/uruk: bugfix: change DAEMON from /usr/sbin/uruk to /sbin/uruk.
- man/urukctl.azm: various improvements.
uruk version 20130618 - The Sterreke Release
- A part of the uruk init script's functionality is now delivered by the new
script urukctl (with manpage urukctl(8)). Calling the init script with
arguments "save", "create", "load", "reload", "clear", "halt" and "flush" is
deprecated (but still supported for now; the init script calls urukctl).
Only the arguments "start", "stop", "restart", "force-reload" are still (and
will continue to be) fully supported in /etc/init.d/uruk.
When the uruk software is removed from a system, but one chooses to keep the
uruk configuration files, /etc/init.d/uruk could be kept (e.g. on a Debian
system when removing (not purging) the uruk package; /etc/init.d/uruk is
considered to be a configuration file on Debian). When one boots such a
system, the LSB standards require the init script to exit with error 5
("program is not installed"). Such an error causes the boot process to fail.
The revised uruk init script now exits succesfully when the uruk program is
not installed, like any init script on Debian systems.
uruk version 20130426 - The Sy Release
- 10th anniversary release \o/
- Currently, setting enable_ipv6=false in /etc/{default,sysconfig}/uruk means:
uruk should never call ip6tables, i.e. uruk won't change or set any
ip6tables rule. In an upcoming uruk release (not this one), setting
enable_ipv6=false will mean: block all IPv6 traffic.
So, if you don't use any IPv6 networking functionality, you're advised
to now make sure you have set enable_ipv6=false.
If you have some IPv6 filtering rules but are managing them NOT using uruk,
and therefore have set enable_ipv6=false, you should start thinking about
migration now. You can either decide to start managing your IPv6 rules with
uruk, and set enable_ipv6=true, or stop using uruk.
In all other cases, things will just continue to work.
- The uruk-save script (managed by setting enable_uruk_save in
/etc/{default,sysconfig}/uruk) is now no longer considered experimental,
but fully supported. It is still disabled by default, though.
- README, man/uruk.azm, script/uruk: apply patch contributed by Thijs
Kinkhorst, 1 Mar 2013, in <1362140354-7012-1-git-send-email-thijs@uvt.nl>:
"Replace obsolete 'state' module usage with 'conntrack'.":
The iptables 'state' module has been obsoleted and produces warnings in
current Debian sid. The modern form to express this is with the 'conntrack'
module. Change uruk's iptables commands to make use of the newer syntax.
As according to the README uruk already depended on the conntrack module
being present, this introduces no higher minimum iptables version. The change
has been tested against Debian Lenny, Squeeze, Wheezy and Sid.
Thanks Thijs! This closes bug http://bugs.debian.org/702064 .
- script/uruk: apply patch contibuted by Casper Gielen, fixing typo in the
ip6_noroute_ranges value. Thanks Casper! This closes bug
http://bugs.debian.org/705202 .
uruk version 20130226 - The Vlist Release
- init/autodetect-ips: Apply patch contributed by Wessel Dankers,
2013-02-15: "typo in autodetect-ips breekt situaties met eth0:0"
- man/uruk-rc.azm: cosmetic fixes.
uruk version 20121205 - The Zes Blokskes Release
- init/autodetect-ips init/enable-ipv6: add missing #!/bin/sh.
- man/uruk-rc.azm: documented autodetect-ips in uruk-rc(5).
- man/uruk-save.azm: documented changes in 20121130 in uruk-save(8).
uruk version 20121130 - The Вршац Release
- experimental release.
- init/autodetect-ips, init/enable-ipv6: Added new helpers for uruk rc and for
uruk/default, contributed by Wessel Dankers.
- script/uruk, script/uruk-save: Apply patch contributed by Wessel Dankers in
<1354116979-10246-1-git-send-email-wsl@fruit.je>: "allow access to different
tables (nat, mangle, raw) in uruk-save".
uruk version 20121023 - The Grafwegen Release
- uruk/script/uruk: Fix IPv6 firewalling in case uruk is used on a host (not
transit) firewall by applying patch contributed by Thijs Kinkhorst: "Uruk
implemented RFC 4890 section 4.3: Recommendations for ICMPv6 Transit Traffic.
However uruk is used in some (many?) cases not as a transit firewall but as a
host firewall for destination entities. Therefore, also the recommendations
from section 4.4: Recommendations for ICMPv6 Local Configuration Traffic need
to be added."
uruk version 20121005 - The Onze-Lieve-Vrouw-Waver Release
- lsb/init-functions, lsb/lsb_killproc, lsb/lsb_log_message, lsb/lsb_pidofproc,
lsb/lsb_start_daemon: added. By default installed in
/usr/local/libexec/uruk/lsb/; RPM packages should install these in
/lib/uruk/lsb/. On a non-LSB-system, uruk tries to use
/etc/init.d/functions. This file is installed by the initscripts RPM package
(e.g. with version 9.03.31-2.el6.x86_64 for Red Hat Enterprise Linux).
Rationale for shipping /lib/uruk/lsb/: In order to supply a RHEL 6 system
with the LSB init interface, one has to install the redhat-lsb RPM package
(e.g. version 4.0-3.el6.x86_64). This package pulls in massive amounts of
dependencies. (70 MBs, we've been told, thanks Thijs Kinkhorst for reporting
this issue.) Using the initscripts RPM package and /lib/uruk/lsb/ keeps the
system small and lean.
- uruk/init/uruk: add missing $local_fs (for /var) to Required-Stop LSB header.
uruk version 20120914 - The Sankt Goar Release
- uruk/init/uruk: init script should now work without /usr being mounted. (It
still needs /var though.) It no longer sets PATH. (It used to set it to
include /usr{,/local}/{,s}bin.) This init script should work on systems
using our Debian package, as well as on systems using our RPM package. If
you run uruk on another system you likely have to make sure /usr/sbin and/or
/usr/local/sbin are in your PATH when executing the init script.
- uruk/init/uruk: stop uruk when switching to single-user mode (runlevel 1),
not just when rebooting the system (runlevel 6) or halting the system
(runlevel 0).
- Linux kernel behaves in ways which makes iptables incorrectly block final
FIN-ACK packets. Workaround implemented. Uruk now explicitly allows these,
and no longer logs them. See http://bugs.debian.org/687621. Thanks Wessel
Dankers.
- uruk/man/uruk-rc.azm: document how to allow IPv6 tunneling by ACCEPTing
IP protocol 41.
uruk version 20120608 - The Hooidonk Release
- uruk/script/uruk: No longer block, but allow ICMPv6 type 137 Redirect Message
[RFC4861]. These are needed for Duplicate Address Detection in IPv6
autoconfiguration: RFC 4429 says: "the router should [...] provide the ON with
an ICMP Redirect, which may include a Target Link-Layer Address Option
(TLLAO)." Thanks Casper Gielen.
- uruk/init/uruk: Apply patch for uruk init script, in order to make sure uruk
starts early enough in boot sequence:
-# Required-Start: $network $remote_fs
-# Required-Stop: $network $remote_fs
+# Required-Start: mountkernfs $local_fs
+# Required-Stop:
-# Default-Stop: 0 1 6
+# Default-Stop: 0 6
+# X-Start-Before: networking
+# X-Stop-Before:
contributed by Wessel Dankers. Thanks!
uruk version 20120605 - The Pickensteeg Release
- configure.ac: no longer die if programs zoem, col and/or groff are not found.
uruk version 20120530
- uruk/script/uruk.in: icmpv6: DROP some. Based upon suggestions found in
rfc4890-icmpv6-firewall.sh. A.o., the following ICMPv6 packets are now
dropped by default: Redirect messages: redirect; Multicast Listener queries
(MLDv1 and MLDv2): 130; Multicast Listener reports (MLDv1): 131; Multicast
Listener Done messages (MLDv1): 132; Multicast Listener reports (MLDv2):
143; Router renumbering messages: 138; and Node information queries (139)
and replies (140): 139 140.
- uruk/doc/rfc4890-icmpv6-firewall.sh, uruk/doc/rfc4890.license.msg: ship
example ICMP v6 script from RFC 4890, by Suresh Krishnan. It is available
under a BSD-style license.
- zoem no longer needed to build from this tarball: pretypeset documentation is
shipped.
- we no longer rely upon expansion of BIN_PATH SBIN_PATH DATA_PATH SYSCONF_PATH
LOCALSTATE_PATH using AC_DEFINE_DIR, as defined in GNU Autoconf Macro
Archive's ac_define_dir.m4. These are now hardcoded to /usr/bin, /usr/sbin,
/var, /etc and /usr/share. (Package autoconf-archive >= 20111221-1 (and
possible also older ones) no longer ships ac_define_dir. From changelog:
2011-09-16 "AX_DEFINE_DIR: Obsolete: it doesn't comply with the GCS." See
http://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00013.html for
discussion.)
uruk version 20110831
- uruk/man/Makefile.am: assume zoem knows where to find aephea; get rid of
hardcoded ZOEMSEARCHPATH=/usr/share/aephea. You need zoem >= 11-166 to build
this uruk.
uruk version 20110608
- The IPv6 Day release! (Today is ISOC's World IPv6 Day, see
http://www.worldipv6day.org/)
- Fix some more zoem >= 10-265-1 (cosmetic) issues.
- doc/default: examples now more useful: just uncomment the line to change
behaviour. tnx Thijs Kinkhorst for sharing ideas.
uruk version 20110602
- bootstap: now builds with automake 1.11 (no longer 1.9)
- uruk/man/Makefile.am, uruk/man/uruk-rc.azm, uruk/man/uruk-save.azm,
uruk/man/uruk.azm: converted manpages to zoem >= 10-265-1 + aephea >= 10.008-1
format.
- script/uruk.in: behave more gracefully on suspicious rc file: issue a warning
in case of undefined variable. Thanks Wessel Dankers for bringing this up &
supplying a first implementation.
uruk version 20110213
- init/uruk.in: Support for IPv6 packet filtering has been enabled by default.
It is no longer required to edit /etc/default/uruk to enable it: if you'd
like to use IPv6 packet filtering, you now can remove any setting of
enable_ipv6 in /etc/default/uruk. If you'd prefer NOT to use IPv6 packet
filtering, be sure your /etc/default/uruk has "enable_ipv6=false".
uruk version 20100831
- Fix example rc file: found out /sbin/ip6tables (as shipped with e.g. iptables
1.4.8-2) understands both full and abbreviated IPv6 names, while the shipped
/sbin/iptables understands full names only. Thanks ﻢﻫﺪﻳ ﺎﻟﺩڤﻱ.
uruk version 20100823
- README: added upgrade instructions for releases <= 20100717.
- script/uruk.in: Update to new iptables syntax: Get rid of warning "Using
intrapositioned negation (`--option ! this`) is deprecated in favor of
extrapositioned (`! --option this`)."
uruk version 20100821
- script/uruk.in: fix bug introduced in version 20100820: uruk: 391: Syntax
error: Unterminated quoted string.
uruk version 20100820
- Enable support for IPv6 packet filtering. See the README file for
upgrade instructions.
+ script/uruk.in: ip6tables is now enabled in the uruk script by default.
However, if you interact with uruk using the init script, you still have
to add "enable_ipv6=true" to /etc/default/uruk to fully enable it.
+ man/uruk*.azm, doc/rc: manpages and example rc file updated to reflect
IPv6-support is no longer considered experimental.
+ script/uruk.in: Drop unroutable IPv6 traffic. Use connection tracking
for IPv6. Patch supplied by Casper Gielen.
- init/uruk.in: Fix bugs in support for dependency based boot sequencing
+ We want to start early in boot sequence (on entering runlevel S). LSB
init.d header however had "Default-Start: 2 3 5". Fix this to S. Thanks
Petter Reinholdtsen for the patch in http://bugs.debian.org/581659.
+ Furthermore, change Default-Stop: "0 6" to "0 1 6": no need to special
case runlevel 1 (thanks Debian's lintian).
+ Finally, added "$remote_fs" to Required-Start: and Required-Stop: since
obviously we need /usr/sbin/uruk to be available (thanks again Debian's
lintian).
- Makefile.am, bootstrap: some tweaking of buildsystem.
uruk version 20100717
- The uruk code is no longer maintained using GNU Arch, but using the git
version control system.
- Use IPv6 connection tracking if supported by kernel. Patch contributed by
Casper Gielen in Message-ID: <4B8D3D30.50201@uvt.nl>.
uruk version 20080330
- Make behaviour more robust when uruk loglevel is set between 20 and 40 and
IPv6 is enabled. In case not all IPv6 adresses were explicitly specified,
uruk would give an error:
ip6tables v1.3.6: Unknown arg `--destination'
Try `ip6tables -h' or 'ip6tables --help' for more information.
(it would try to run
/sbin/ip6tables -A INPUT -j LOG --log-level debug --log-prefix
'ip6tables: ' -i eth0 --destination
in this situation.) These errors these did NOT compromise the firewall
rules, btw. When adresses are missing, uruk does no longer try to log the
traffic.
uruk version 20080307
- Fix a bug showing up when uruk loglevel is set between 20 and 40 and IPv6 is
enabled: it caused errors like "ip6tables v1.3.6: host/network 10.1.2.3 not
found". These errors these did NOT compromise the firewall rules, btw.
- Added support for multiple hook files (like rc_a) working at one entry point.
See uruk-rc(5) and uruk(8). Thanks Wessel Dankers for the suggestion and for
a first implementation.
uruk version 20071101
- Added another contribution from Fred Vos to contrib/: fw2dot.xsl: generating
a dot file (for graphiz) from an XML-ed uruk rc file.
- Various fixes in uruk init script. Among others: fix behaviour of "reload"
and "force-reload" in case uruk not running.
uruk version 20071030
- We ACCEPT traffic on lo earlier in the uruk ruleset: that's more efficient.
Traffic on lo will no longer be delayed by our ruleset.
Uruk <= 20051129 built it's rule like:
1 rc is sourced as a shell script
2 $rc_a is sourced as a shell script
[...]
8 $rc_d is sourced
9 Traffic on lo is trusted
10 $rc_e is sourced
11 Don't answer broadcast and multicast packets
[...]
Uruk >= FIXME builds it's rule as:
1 rc is sourced as a shell script
2 Traffic on lo is trusted
3 $rc_a is sourced as a shell script
[...]
9 $rc_d is sourced
10 Don't answer broadcast and multicast packets
[...]
see uruk(5)
If you've done tricks with lo in any of the rc_ hook scripts, you risk being
hit by incompatibilities. Study the uruk source to find out how to fix your
hook. If you're not using any hook scripts, you are save: your uruk
configuration will still work fine. If you're using hook scripts, but don't
do anything specific with lo in your scripts, you are likely save: your
configuration will likely still work.
If you were using rc_a to add rules to the absolute beginning of the ruleset,
you might have to move these to the rc-file: traffic on lo is now accepted
_before_ rc_a is sourced.
If you rely on traffic on lo to be logged, and your loglevel was "fascist",
you should craft some hack: this traffic will no longer be logged by default
with this loglevel.
rc_e is now obsolete. You should move your rc_e stuff to rc_d. (rc_e for now
will still work, though.)
- The uruk init script now is (should be) Linux Standards Base v 3.1.0 compliant.
Added extra supported argument "status". The script now _requires_ the file
/lib/lsb/init-functions to be present, and to define the shell functions
log_success_msg, log_failure_msg and log_warning_msg. LSB compliant systems
(recent releases of Debian GNU/Linux, Red Hat Enterprise Linux, Ubuntu Linux,
a.o.) supply this.
- Introduced new variables interfaces_unprotect and URUK_INTERFACES_UNPROTECT.
- Add XML stuff contributed by Fred Vos, including some preliminary documentation
(in Dutch). Could be used to transform an XML-file describing uruk rules to an
uruk rc file. Shipped in contrib/, installed in .../doc/uruk/contrib/.
- Uruk is now licensed under GPLv3 (or any later version).
- man/Makefile.am: no longer try to support non-ascii characters in .txt
manpages. col, as shipped with the bsdutils 1:2.13-2 Debian package chokes
on output of groff, as shipped with the 1.18.1.1-12 Debian package. See also
Debian bug Bug#441659.
- TODO: added some more received wishlist bugs (thanks Wessel Dankers and Fred
Vos)
- Minor fixes in uruk(8) manpage.
- uruk-rc(5): documented improved way to unprotect an interface, thanks Wessel
Dankers.
- TODO, init/uruk.in: found and documented bug: /etc/init.d/uruk force-reload
breaks when nat or mangle table are used. Thanks Wessel Dankers for spotting
this.
uruk version 20051129
- On Red Hat, run start uruk initscript _after_ network interfaces are
configured. (We have always been doing this in the Debian package.) This is
needed in order to support usage where the rc file queries the operating
system to learn about current IP adresses. With uruk 20051026 and 20051027,
such usage was not possible. See TODO for notes on pending issues related to
this.
- Build-depend upon zoem >= 05-328.
uruk version 20051027
- Fixed bug in uruk script. Reported to pop up when /bin/sh is bash and
$version is not set in /etc/uruk/rc.
uruk version 20051026
- More examples in uruk-rc(5) manpage. Thanks Roland van Hout for suggestion.
- Experimental ip6tables support added to uruk(8) and uruk-save(8). See comments
in the uruk script. New option "-6" for uruk-save(8).
- The uruk init script now sources both /etc/default/uruk and /etc/sysconfig/uruk
(if present, of course). An example file for /etc/{default,sysconfig}/uruk is
now shipped and gets installed in /usr/[local/]share/doc/uruk/examples/.
- Major overhaul of the uruk init script. This script now is more integrated in
the uruk framework.
+ The pre-uruk situation is now saved and restorable.
+ Optionally calls uruk-save (and displays a warning by default).
+ Calls uruk if applicable.
+ Improved options: start, stop, force-reload, reload. These now behave more
intuitive.
+ The saved active and inactive rules now no longer get out of sync with the
uruk rc file. (O.t.o.h.: one can no longer maintain part of the firewall
configuration outside the uruk rc file.)
+ New option: create
See README on what the implications are if you're upgrading. Thanks to Wessel
Dankers for his ideas about an improved uruk init script.
- uruk(8) now checks for the Uruk version the rc file was created for. This
will allow for more sane behaviour in case of future incompatible upgrades.
- Buildsystem: ./bootstrap now uses autoreconf(1).
uruk version 20050718
- This is a pre-release.
- Added support for loglevel, see uruk-rc(5). Some people were annoyed by uruk's
syslog spamming. If you're one of these, set loglevel=30 (or 10) in your
rc-file.
uruk version 20050414
- This is a pre-release.
- Uruk now is maintained using GNU Arch on http://arch.gna.org/uruk/ . See
README.
- ChangeLog entries from 2003 split off in ChangeLog.2003.
- Uruk(8) now honors environment variables URUK_IPTABLES (/sbin/iptables by
default) and URUK_CONFIG (/etc/uruk/rc by default).
- Now ships new script uruk-save(8); which saves /etc/uruk/rc in
iptables-{save,restore} format, without invoking iptables. You could
use it e.g. when loading a new rc file. See the updated uruk(8) manpage.
- The uruk init script now honors /etc/default/uruk. See comments in the code.
- The uruk init script acts more sane when passed {stop,start} while no saved
rules files are present: it tries to generate these in such circumstances. It
will warn you it's doing so.
uruk version 20040625
- Fixed bug in multiple IP per network interface mode. Uruk was unusable in
such a setup.
- Some tweaking of build system.
uruk version 20040216
- Fixed severe bugs in uruk script: 20040213 was unusable.
- init script now supports chkconfig: Red Hat is now better supported.
uruk version 20040213
- Support for multiple IP adresses on one network interface added. New
variables ips_ and bcasts_ introduced. See uruk-rc(5). Don't
worry: your old rc file will still behave as it used to.
uruk version 20040210
- Allow more ICMP types by default. Tnx Wessel Dankers for suggestion.
- The Uruk init script is now more helpful when often-encountered errors occur.
- Added warning to uruk(8) manpage: uruk does no sanity checking.
uruk version 20031111
- We no longer create our own ``block'' chain: the built-in INPUT and OUTPUT
chains suffice for our purposes. This makes uruk's rule setup much more
simple. Thanks to Wessel Dankers.
- rc_1, ... , rc_10 are NO LONGER SUPPORTED. We use rc_a, rc_b, rc_c, ... now.
In the future, rc_aa, rc_aab, ... might get added. You'll HAVE TO rewrite
your rc_ style stuff MANUALLY. See the notes on UPGRADE in the README
file. (Your uruk/rc file will still work fine. No other changes in the
configuration file syntax are introduced in this release.)
- If you have saved your rules using iptables-save or the uruk init script,
you'll have to rebuild them. The old-style rules are not supported by this
uruk release.
uruk version 20031026
- Fixed bug which made "/etc/init.d/uruk stop" to fail.
- Documented more of uruk's features.
uruk version 20031008
- Init script more robust, especially on fresh installs. (We still suffer from
at least one bug though, see TODO.)
- Started documenting rc_ hooks.
- Various minor and cosmetic cleanups in documentation.
uruk version 20031004
- ad1810-firewall is now called uruk.
- big changes in build system and documentation system:
- manpages have been converted from Perl's pod format to zoem format. See
README for details.
- now build-depends on zoem: documentation depends on configure-time
settings.
- ad1810-firewall under some circumstances was not reboot-resistent: I've
missed a change in the Debian iptables package behaviour. The Debian iptables
package >= 1.2.7-8 (7 Dec 2002) will not call /etc/init.d/iptables on boot by
default. We now ship our own init script to deal with this (thanks to
Laurence J. Lane).
ad1810-firewall version 20030829
- ad1810-firewall-rc manpage converted from pod to zoem
( http://micans.org/zoem ).
- rc_1, rc_2, .... rc_10 feature supported by ad1810-firewall script: set e.g.
rc_1=/usr/local/etc/ad1810-firewall/rc_1 in your ad1810-firewall-rc(5). This
file should contain shell code. This is executed early in the ad1810-firewall
routine, allowing finegrained tweaking of rules, for systems with special
demands. For now, see the ad1810-firewall shell code for more details. More
documentation will follow.
ad1810-firewall version 20030512
- Moving manpage format from pod to zoem.
- Fixed automatic version numbering in build system; no more wacky vyyyymmdd
versions. Thanks Raja R Harinath on the autoconf list.
- rc should no longer define e.g. sources_eth0_tcp_www, where www is a port, but
e.g. sources_eth0_tcp_public, where public is a symbolic name for a (set of)
services. Furthermore, the new variable ports_eth0_tcp_public should be
defined as e.g. "www".
ad1810-firewall version v20030427
- rc File location now depends on sysconfdir, as set during configure.
- Various documentation updates.
ad1810-firewall version v20030426
- First public alpha release. Untested!
uruk-20160219/README 0000644 0001750 0001750 00000022043 12162331213 010542 0000000 0000000 INTRODUCTION
Uruk is a simple shell script (uruk(5)) which calls Linux
iptables. It uses a template file to get lists of source addresses, allowed to
use specific network services.
REQUIREMENTS
Uruk is useful only on Linux systems. However, the rc file (see uruk-rc(5))
could be used by other packet filtering engine wrappers too.
For this script to work, your Linux kernel needs stuff from the
netfilter/iptables project ( http://www.netfilter.org/ ). The specific needed
settings are
.config variable module name description in ``make config''
CONFIG_IP_NF_IPTABLES ip_tables.o (``IP tables support'')
CONFIG_IP_NF_TARGET_LOG ipt_LOG.o (``LOG target support'')
CONFIG_IP_NF_TARGET_REJECT ipt_REJECT.o (``REJECT target support'')
CONFIG_IP_NF_CONNTRACK (``Connection tracking'')
. Furthermore, you need the iptables(8) command, as shipped with the iptables
package from the netfilter project.
For retypesetting the documentation (the uruk(8), uruk-rc(5) and uruk-save(8)
manpages), you'll need zoem >= 05-328. Zoem is a an interpretive macro
language, for creating mark-up languages, by Stijn van Dongen. Information
about zoem, as well as tarballs for download, can be found on the zoem webpage
at http://micans.org/zoem/ . Binary zoem packages are shipped with Debian
GNU/Linux. However, pretypesetted uruk docs are shipped with the tarball,
you likely don't need zoem.
INSTALL
If you use the uruk Debian package or the uruk RPM, use your package manager to
take care of installation; skip this section. If you'd prefer to install using
the uruk .tar.gz release however, do read on.
See the INSTALL file for generic installation instructions. The Uruk init
script, in init/uruk, gets installed in /usr/local/etc/init.d/ by default.
Symlinks are _not_ created. You'll have to create them yourself, after running
'make install'. E.g. do:
# cd /etc/init.d && ln -s /usr/local/etc/init.d/uruk
# update-rc.d uruk defaults
.
(If you lack update-rc.d, do something like
# cd /etc/
# ln -s ../init.d/uruk rc0.d/K92uruk
# ln -s ../init.d/uruk rc1.d/K92uruk
# ln -s ../init.d/uruk rc2.d/S20uruk
# ln -s ../init.d/uruk rc3.d/S20uruk
# ln -s ../init.d/uruk rc4.d/S20uruk
# ln -s ../init.d/uruk rc5.d/S08uruk
# ln -s ../init.d/uruk rc6.d/K92uruk
)
UPGRADE
For upgrades from any version: run /etc/init.d/uruk force-reload after
installation. Read the NEWS file.
* upgrading from uruk <= 20100831
Support for IPv6 packet filtering has been enabled by default in the uruk init
script.
If you'd like to start using IPv6 filtering now, and you interact with uruk
using the init script, you don't have to change anything. You might however
like to do some janitoring on your file /etc/default/uruk: you now can remove
any setting of enable_ipv6 in this file. If you run /usr/sbin/uruk directly,
you don't have to edit any special configuration file. In both cases, if you
want to block/allow specific IPv6 traffic, you'll have to adjust the uruk rc
file of course. See /usr/share/doc/uruk/examples/rc for hints on how to do
that.
If you don't want to use any IPv6 filtering, and you interact with uruk using
the init script, be sure your /etc/default/uruk has "enable_ipv6=false". If
you run /usr/sbin/uruk directly, add URUK_IP6TABLES=':' to the top of your uruk
rc file.
If you have been using IPv6 filtering, and want to continue to do so, you don't
have to change anything. You might however like to do some janitoring on your
file /etc/default/uruk: you now can remove any setting of enable_ipv6 in this
file.
* upgrading from uruk <= 20100717
IPv6 support is now blessed mature. It is enabled by default in the uruk
script.
If you'd like to start using IPv6 filtering now, and you interact with uruk
using the init script, you have to add "enable_ipv6=true" to /etc/default/uruk
to enable IPv6 filtering. If you run /usr/sbin/uruk directly, you don't have
to edit any special configuration file. In both cases, if you want to
block/allow specific IPv6 traffic, you'll have to adjust the uruk rc file of
course. See /usr/share/doc/uruk/examples/rc for hints on how to do that.
If you don't want to use any IPv6 filtering, and you interact with uruk using
the init script, you're safe. If you run /usr/sbin/uruk directly, add
URUK_IP6TABLES=':' to the top of your uruk rc file.
If you have been using IPv6 filtering, and want to continue to do so, you don't
have to change anything. You might however like to do some janitoring on your
rc file: a statement like
ip6tables=${URUK_IP6TABLES:-/sbin/ip6tables}
is no longer needed: you no longer need to override the $ip6tables variable.
(The statement "enable_ipv6=true" in /etc/default/uruk is still needed.)
* upgrading from uruk <= 20050718
You might like to use the experimental IPv6 support. See the NEWS file.
Behaviour of the uruk init script has changed. Before 20050718, you were
advised to run
/etc/init.d/uruk stop; uruk; /etc/init.d/uruk save active
. This has changed. One now should run
/etc/init.d/uruk force-reload
after changing the uruk rc file.
Some details: To understand this, consider the uruk states: Iptables rules are
kept in:
liverules inactivestatefile activestatefile uruk-rc
. Actions on copying rules from one to the other are:
init.d/uruk stop
init.d/uruk start
init.d/uruk reload
sbin/uruk
uruk-save
The actions perform the following copies:
sbin/uruk : uruk-rc -> liverules
uruk-save : uruk-rc -> activestatefile
Uruk's init behaviour <= 20050718:
init.d/uruk stop : inactivestatefile -> liverules [1]
init.d/uruk start : activestatefile -> liverules [1]
init.d/uruk reload: activestatefile -> liverules [1]
Uruk's init behaviour > 20050718:
init.d/uruk stop : inactivestatefile -> liverules [1]
init.d/uruk start : liverules -> inactivestatefile;
uruk-rc -> activestatefile ;
uruk-rc -> liverules
init.d/uruk force-reload:
uruk-rc -> activestatefile ;
uruk-rc -> liverules
[1] depends on wether or not inactivestatefile and activestatefile are present.
* upgrading from uruk < 20031026
After uruk version 20031026, the hooks are no longer called rc_1, rc_2, ....
rc_10, but rc_a, ... rc_i. rc_1 is taken over by rc_a; rc_9 and rc_10 are
taken over by rc_i. For most situations, replacing ``-A block'' with ``-A
INPUT'' suffices to translate rc_ to rc_. However, please take a look at
the uruk script itself to find out. uruk-rc(5) is updated and contains some
examples.
POST INSTALLATION STUFF
Uruk will _not_ "just work" out of the box. It needs manual configuration.
See the uruk(8) manpage for quick setup instructions.
HACKING
Uruk version control is handled using git. You can get a fresh copy by running
git clone http://git.mdcc.cx/uruk.git
See http://git-scm.com/ for information about git. (Until june 2010, the
uruk code was maintained using GNU Arch.)
MORE INFORMATION, SIMILAR TOOLS
The uruk(8), uruk-rc(5) and uruk-save(8) manpages are available in HTML format
too. By default, they're installed in /usr/local/share/doc/uruk/html/ .
The Uruk webpage is at http://mdcc.cx/uruk/ .
See also http://www.openbsd.org/faq/faq6.html#6.2 and pf.conf(5) (online on
http://resin.csoft.net/cgi-bin/man.cgi?section=5&topic=pf.conf ) for general
ideas on packet filtering.
Tools doing similar stuff as this script are Auke Kok's ``ferm'', available
from http://www.geo.vu.nl/~koka/ferm/ and Arno van Amersfoort's
``arno-iptables-firewall'', available from
http://rocky.eld.leidenuniv.nl/page/iptables/iptframe.htm . Other tools, with
varying levels of userfriendlyness (or bloatedness) are: ipmasq, shorewall,
firestarter, ipmenu, fireflier, firewall-easy, fwbuilder, fwctl, gfcc, lokkit,
gnome-lokkit, gshield, guarddog, hlfl, knetfilter, mason and gshield. Another
list of alternatives is in the "Securing Debian Manual",
http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html#s-firewall-pack
; this howto is also available via the Debian harden-doc package.
TRIVIA
Uruk is named after the city of Uruk in Mesopotamia (now Iraq), that Gilgamesh
ruled in the Epic of Gilgamesh. This epic reads something like:
View its strong walls, for which there is no equal.
(I only have access to a Dutch translation here, which reads:
De muren van Oeroek, het Oeroek van de schaapskooien, liet hij bouwen.
...
Bekijk zijn onvergelijkelijke borstwering.
...
Bestijg de muren van Oeroek, loop erop.
Beproef de fundering, bekijk het tichelwerk.
Is zijn tichelwerk niet van baksteen?
.)
The city of Uruk is known under the name Erech in the bible:
9 He was a mighty hunter before the LORD: wherefore it is said, Even as
Nimrod the mighty hunter before the LORD.
10 And the beginning of his kingdom was Babel, and Erech, and Accad, and
Calneh, in the land of Shinar.
Gen 10:9-10, KJV
It has nothing to do with http://www.uruk.org/ , where Erich Boleyn's Home Page
is.
# this file maintained at http://git.mdcc.cx/uruk.git
uruk-20160219/THANKS 0000644 0001750 0001750 00000000645 12476343307 010620 0000000 0000000 Uruk THANKS file
Thanks go to Tilburg University and Stichting Logreport Foundation, for
supporting this and other Free Software.
Thanks to Laurence J. Lane for creating the Debian iptables package, giving
inspiration for the Uruk init script.
Thanks to Wessel Dankers for giving valuable feedback, and willingness to
accept commit rights.
Thanks to Fred Vos, Casper Gielen and Thijs Kinkhorst for contributing
code.
uruk-20160219/TODO 0000644 0001750 0001750 00000057170 12661605702 010376 0000000 0000000
- init/{uruk.service,Makefile.am}: ship and install
/lib/systemd/system/uruk.service. FIXME probably doesn't work!!
init/uruk.service : incomplete
----
fix in RPM: #796700 - uruk: Has init script in runlevel S but no matching service file
Thanks fsateler@debian.org
----
do not ship rpm package until this is fixed:
root@v:~# rpm -q --list iptables-ipv6 | grep lib
/lib64/iptables/libip6t_CONNMARK.so
/lib64/iptables/libip6t_DSCP.so
/lib64/iptables/libip6t_HL.so
/lib64/iptables/libip6t_LOG.so
/lib64/iptables/libip6t_MARK.so
/lib64/iptables/libip6t_NFQUEUE.so
/lib64/iptables/libip6t_REJECT.so
/lib64/iptables/libip6t_TRACE.so
/lib64/iptables/libip6t_ah.so
/lib64/iptables/libip6t_connmark.so
/lib64/iptables/libip6t_dscp.so
/lib64/iptables/libip6t_dst.so
/lib64/iptables/libip6t_eui64.so
/lib64/iptables/libip6t_frag.so
/lib64/iptables/libip6t_hbh.so
/lib64/iptables/libip6t_hl.so
/lib64/iptables/libip6t_icmpv6.so
/lib64/iptables/libip6t_ipv6header.so
/lib64/iptables/libip6t_length.so
/lib64/iptables/libip6t_limit.so
/lib64/iptables/libip6t_mac.so
/lib64/iptables/libip6t_mark.so
/lib64/iptables/libip6t_multiport.so
/lib64/iptables/libip6t_owner.so
/lib64/iptables/libip6t_physdev.so
/lib64/iptables/libip6t_policy.so
/lib64/iptables/libip6t_rt.so
/lib64/iptables/libip6t_standard.so
/lib64/iptables/libip6t_state.so
/lib64/iptables/libip6t_tcp.so
/lib64/iptables/libip6t_udp.so
root@v:~# service uruk force-reload
Checking uruk (iptables): active uruk rules loaded
Checking uruk (ip6tables): active uruk rules loaded
Flushing all current iptables rules.
Loading IPv4 uruk rules.
Saving iptables ruleset: save "active" with counters.
Flushing all current ip6tables rules.
Loading IPv6 uruk rulesip6tables v1.3.5: Couldn't load match `conntrack':/lib64/iptables/libip6t_conntrack.so: cannot open shared object file: No such file or directory
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.3.5: Couldn't load match `conntrack':/lib64/iptables/libip6t_conntrack.so: cannot open shared object file: No such file or directory
root@v:~# rpm -q iptables-ipv6
iptables-ipv6-1.3.5-9.2.el5_8
Description: Red Hat Enterprise Linux Server release 5.11 (Tikanga)
not supported by kernel? users of these system should explicitly disable
IPv6 support in uruk?
----------
do not ship debian package until this is fixed:
init script is buggy:
- force-reload does not behave according to specs
- reload should be supported
(
restart
stop and restart the service if it's already running, otherwise start the
service
reload
cause the configuration of the service to be reloaded without actually
stopping and restarting the service,
force-reload
cause the configuration to be reloaded if the service supports this,
otherwise restart the service.
The start, stop, restart, and force-reload options should be supported by all
scripts in /etc/init.d, the reload option is optional.
чет 02 10:16 < casper> https://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.2
)
one possible solution: enforce running uruk in uruk_save-mode; no longer
support setups having enable_uruk_save=false. reload and force-reload should
act the same
-----
enable uruk-save by default
------
Wessel fixt dit:
пон 30 11:34 < joostvb_thuis> we weten nog niet of r n uruk-bug is, wel?
пон 30 11:34 < joostvb_thuis> met dat gedoe met uruk is not running
пон 30 11:34 < Fruit> volgens mij is het een transitieprobleem
пон 30 11:35 < Fruit> maar dat weet ik niet 100% zeker
пон 30 11:35 < joostvb_thuis> en dus niet 100% zeker of dat transitieprobleem in
uruk zit
пон 30 11:35 < joostvb_thuis> of in de debian packaging
пон 30 11:35 < joostvb_thuis> of in onze zut
пон 30 11:35 < Fruit> combi
пон 30 11:36 < Fruit> mijn hypothese is dat als je overschakelt naar uruk_save en er
draaide al een uruk, dat-ie dat dan niet doorheeft
пон 30 11:36 < joostvb_thuis> klinkt best aannemelijk
пон 30 11:36 < Fruit> want hij is gestart zonder uruk_save
пон 30 11:36 < Fruit> dus geen save-file aangemaakt
пон 30 11:36 * joostvb_thuis gaat t tot de bodem uitzoeken
пон 30 11:37 < Fruit> ik heb wel de nieuwe uruk draaien op pichu
пон 30 11:37 < Fruit> fwiw
пон 30 11:37 < joostvb_thuis> die .deb prerelease?
пон 30 11:37 < Fruit> ja
==========================
somewhat less urgent issues
----
пон 30 11:38 < Fruit> ik heb trouwens opeens een file /etc/uruk/extra.d/version
пон 30 11:39 < Fruit> terwijl ik me niet kan herinneren die ooit aangemaakt te hebben
пон 30 11:39 < Fruit> er zit een datum in de toekomst in
пон 30 11:39 < Fruit> version=20160319
пон 30 11:41 < joostvb_thuis> zou n bug in uruk/NEWS kunnen zijn
пон 30 11:41 < joostvb_thuis> dat dat niet gemeld wordt
------
think about systemd (and runit, while we're at it)
ship a systemd (or go with lsb hack firing of systemd stuff via traditional
init script) and a daemontools init thingie
-------
document $uruk_version
------
document this:
сре 20 16:41 < Fruit> joostvb: sctp-support in uruk zou handig zijn
сре 20 16:46 < Fruit> joostvb: misschien ook meteen dccp dan maar
--protocol protocol
The protocol of the rule or of the packet to check. The specified protocol
can be one of tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or the spe‐
cial keyword "all", or it can be a numeric value, representing one of these
protocols or a different one. A protocol name from /etc/protocols is also
allowed. A "!" argument before the protocol inverts the test. The number
zero is equivalent to all. "all" will match with all protocols and is taken
as default when this option is omitted. Note that, in ip6tables, IPv6
extension headers except esp are not allowed. esp and ipv6-nonext can be
used with Kernel version 2.6.11 or later.
in script/uruk, see "for proto in tcp udp" and "--tcp-flags"
see also iptables-extensions(8)
- for proto in tcp udp
+ for proto in dccp sctp tcp udp
sctp: find out about --chunk-types (vs --tcp-flags in tcp-case)
---------------
phase out sources6 in uruk? is there still a use-case?
-----
if uruk is configured for ipv4, but not for ipv6, it should block all ipv6 traffic.
if uruk is configured for ipv6, but not for ipv4, it should block all ipv4 traffic.
if uruk is not configured for ipv4 and not for ipv6, it should do nothing (as it currently does).
fix bugs:
querybts --mbox 705687 >debian-bug-705687.mbox
doc/debian-bug-704807.mbox doc/debian-bug-705687.mbox doc/debian-bug-720306.mbox
joostvb@arrr:ding% mailx -f ./doc/debian-bug-720306.mbox
then give 'v' or 'p' or ~v or ~p
#704807 [n|+u| ] [uruk] uruk: autodetect non-routable nets
#720306 [n| | ] [uruk] uruk: incorrectly blocks and logs tcp RSET packets
чет 20 11:06 < joostvb> Fruit: heb alleen https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=720306 nog,
geloof ik
чет 20 11:07 < joostvb> Fruit: ik weet niet hoe ik doe moet fixen, en ook niet of die bug er eigenlijk nog
wel in zit....
чет 20 11:11 < Fruit> gewoon die RST-dingen niet loggen ofzo
чет 20 11:20 < Fruit> ik zie ze iig nog steeds
чет 20 14:47 < joostvb> niet loggen voelt niet goed
чет 20 14:55 < Fruit> hoger loglevel dan?
чет 20 14:55 < Fruit> zodat je ze kunt loggen als je da per se wil
чет 20 14:55 < Fruit> net als broadcastcrap
чет 20 15:22 < joostvb> broadcastcrap krijg je nu ook automagisch in je logs
чет 20 15:22 < joostvb> das ook n bug dan
чет 20 15:22 * joostvb noteert t
---------------
#705687 [w| | ] [uruk] Provide "uruk diff" showing diff between running and config
From: Thijs Kinkhorst
Subject: Provide "uruk diff" showing diff between running and config
Please provide an "uruk diff". When uruk config has been changed, this will
output the difference between the currently installed firewall rules and
the result of the config that would be installed when force-reload is used.
This can be used to check whether any applied changes indeed have the
desired effect, and just the desired effect.
--------------
support for iptables-opvolger: niet netfilter maar ....
----
пон 16 16:04 < joostvb> http://mdcc.cx/tmp/uruk/uruk_20130913-1_all.deb <- klaar voor testen
пон 16 16:20 < thijs> joostvb: update-rc.d: warning: start and stop actions are no longer
supported; falling back to defaults
пон 16 16:21 < thijs> sid
пон 16 16:22 < Fruit> ja logisch, gaat via dependencies nu toch
пон 16 16:23 < joostvb> thijs: sysv-rc 2.88dsf-43 zie ik, zo zo
en zie ook insserv package
пон 16 16:24 < joostvb> thijs: maar t werkt verder wel, als je die warnign laat voor wat ie
is?
пон 16 16:24 < thijs> inderdaad, hij valt terug naar de defaults
пон 16 16:25 < joostvb> ok, tnx voor testen
See insserv(8) for lsb header descriptions
likely removing
# Default-Start: S
# Default-Stop: 0 1 6
will fix that
------
lintian complains init.d-script-does-not-source-init-functions .
Either change /etc/init.d/uruk's
. $lsb_init_functions
in
. /lib/lsb/init-functions
, add lintian override or fix /usr/share/lintian/checks/systemd.pm as shipped
with lintian 2.5.17
----------
stick in documentation somewhere:
уто 03 09:24 < joostvb> hrm, "conntrack_max = (ram/16384) / (arch/32)"
уто 03 09:24 < joostvb> waarom is dat?
уто 03 09:24 < joostvb> omdat linus t zo wil?
уто 03 09:39 < joostvb> t zou wel mooi zijn als t nog te overrulen is
+Sep 2 14:04:21 tsingou kernel: [3459743.665364] nf_conntrack: table full, dropping packet.
+root@tsingou:~# cat /proc/sys/net/nf_conntrack_maxnntrack_max
+65536
+root@tsingou:~# wc -l /proc/net/ip_conntrack
+63453 /proc/net/ip_conntrack
+dus aardig vol ja
+maar conntrack_max = (ram/16384) / (arch/32) = 64336 dus verhogen heeft geen zin.
уто 03 09:54 < Fruit> joostvb: je kunt het overrulen
уто 03 09:56 < casper> joostvb: afaik heb ik die formule op tory gebruikt
уто 03 09:56 < casper> om uit te rekenen hoe hoog ik conntrack_max kon zetten
уто 03 09:57 < casper> ik geloof niet dat het de default is
--------
urukctl: document how to set up file access permissions in order to be able to
run "urukctl create active" as non-root user.
------
Als lokale ip ongespecifeerd is, check verkeer dan niet op destination
ip, maar alleen op source, port, etc. Handig bij dhcp en dynamische
ipv6. Tnx Wessel voor idee.
Bv. als ip_eth0_failover='', dan daar niet op checken.
-------------------------------------------------------------------
kijk in /sys om netwerkinterfaces te vinden. via ip(1): is niet-standaard
op red hat. mogelijk fijn voor niet-debian/niet-rh; bv. gentoo oid.
-------
git should do "write to tempfile; fsync(); rename" when updating HEAD ref.
due to powerfailure my HEAD ref file was empty. occured with
git 1:1.7.10.4-1+wheezy1
------
metagross# chmod a+x /tmp/urukctl
metagross# /tmp/urukctl start
Flushing all current iptables rules.
Loading IPv4 uruk rules.
Saving iptables ruleset: save "active" with counters.
Flushing all current ip6tables rules.
Loading IPv6 uruk rulesip6tables: Protocol wrong type for socket.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
ip6tables v1.4.14: host/network `' not found
Try `ip6tables -h' or 'ip6tables --help' for more information.
.
Saving ip6tables ruleset: save "active" with counters.
metagross#
------------
- fix copyright in .azm: use template.
- The revised uruk init script now exits succesfully when the uruk program
is not installed, like any init script on Debian systems. FIXME Red Hat?
-------------
FIXME: this is probably / partially fixed (as of < 2013-09) :
plan: hernoem dit script naar uruk-ctl, schrijf nieuw sane init-script dat
wel een configfile is, en dan is dit oude script geen debian config file meer.
wo 22 10:51 < joostvb> Fruit: log_failure_msg "Aborting uruk
initd: missing executable $i"
wo 22 10:52 < Fruit> service uruk start
wo 22 10:52 < Fruit> exit 0
wo 22 10:52 < joostvb> exit 5
wo 22 10:52 < joostvb> das fout?
wo 22 10:52 < Fruit> root@fry:~# facedin
wo 22 10:52 < Fruit> service uruk force-reload exited with status 5
wo 22 10:53 < Fruit> snmpd:test -x /usr/sbin/snmpd || exit 0
als je n /e/d/uruk hebt met enable-ipv6 call, en je doet dpkg --remove uruk:
wo 22 16:40 /etc/init.d/uruk: 17: /etc/default/uruk:
enable-ipv6: not found
en als je n /e/d/uruk hebt zionder enable-ipv6 call:
wo 22 16:41 root@bender:~# facedin
wo 22 16:41 service uruk force-reload exited with status 5
-------------
init/enable-ipv6 doc/default : currently enable_ipv6=false means: do not call
ip6tables. it should mean: block all ipv6 traffic. see NEWS.
vr 22 10:16 <@Fruit> joostvb: als IPv6 disabled is in uruk, misschien gewoon alle IPv6-verkeer blokkeren?
vr 22 10:17 <@Fruit> alle tables wissen en de policy op DROP zetten?
vr 22 10:17 <@Fruit> ik kan wel ff een mooie autistische ruleset in elkaar zetten
vr 22 10:22 < joostvb> ja, graag zo'n autistische ruleset voor ipv6
Date: Fri, 22 Mar 2013 11:00:13 +0100
From: Wessel Dankers
To: Joost
Subject: autistische IPv6-rulebase
Message-ID: <20130322100013.GN2849@homsar.uvt.nl>
Om te voeren aan ip6tables-restore:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
*raw
:PREROUTING DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
*mangle
:PREROUTING DROP [0:0]
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:POSTROUTING DROP [0:0]
COMMIT
Zonder ip6tables-restore:
ip6tables -F
ip6tables -t raw -F
ip6tables -t mangle -F
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
ip6tables -t raw -P PREROUTING DROP
ip6tables -t raw -P OUTPUT DROP
ip6tables -t mangle -P PREROUTING DROP
ip6tables -t mangle -P INPUT DROP
ip6tables -t mangle -P FORWARD DROP
ip6tables -t mangle -P OUTPUT DROP
ip6tables -t mangle -P POSTROUTING DROP
Dit gaat er trouwens wel vanuit dat je in uruk de policies op ACCEPT
instelt, iets wat sowieso zou moeten gebeuren (anders kun je niet robuust
een ruleset laden).
-----------
later: reimplement uruk-save in perl, be sure to run it only when /usr is
mounted, not in init-script during boot.
from group/uruk/etc/uruk/rc-experimental by Wessel Dankers, 2012:
-------------------
di 23 15:50 < Fruit> joostvb: Saving iptables ruleset: save "inactive".
di 23 15:50 < Fruit> joostvb: dat probeer ik te voorkomen, met enable_autosave=false en
enable_save_counters=false
di 23 15:51 < Fruit> joostvb: maar dat blijft-ie doen
- enable ip-not-yet-known. for roaming users, for fast-chagnging ipv6 adresses,for
interfaces for which ip is not yet known. optionally: allow specifying range as
local adress. tnx Wessel for reporting issue.
- init script
*** /var issue
2 init scripts
eentje doet deny alles
tweede doet stuff
alternatief:
ifupdown /etc/network/interfaces en vooral /etc/init.d/networking
/run is cleared during reboot. we'd prefer to be able to load from saved state during
boot. therefore, first block everything. later, when /var etc. are available,
run uruk. what to do before halt?
*** rh issue
/etc/redhat-lsb/lsb_* geleverd door redhat-lsb-4.0-3.el6.x86_64
License GPL, by Lawrence Lim e.a., 2011, for Red Hat, Inc.
--------------
- decide: fork this package, get new name, don't bother about migration scenario,
use dedicated named chains and tables.
- major overhaul: use different chains, optimise behaviour when dealing with ipv6.
we deal with private ip ranges in a braindead way; improve that.
- test on dijkstra, rolle, bruhat, freitag
root@janacopoulos:/tmp# wget http://mdcc.cx/tmp/uruk/uruk_20110602-1_all.deb && dpkg -i uruk_20110602-1_all.deb
-------------
- add a full IPv6 example to uruk-rc manpage (we now only have the example
rc-file).
- 28 14:11 < joostvb> ip6_noroute_ranges='::1/128 ffff:0:0::/96 fc00::/7
fec0::/10 0200::/7 2001:0db8::/32'
vr 28 14:14 < Fruit> joostvb: overigens kun je in IPv6 veel beter over
*routable* spreken dan unroutable
vr 28 14:14 < Fruit> 2000::/3 is gewoon de enige die routeerbaar is, de rest is
lokaal
vr 28 14:26 < Fruit> 2001:0DB8::/32 has been assigned as a NON-ROUTABLE range
to be used for documentation purpose [RFC3849].
vr 28 14:26 < Fruit> daar gaat de mooie 2000::/3 regel :(
--------------------------------------------------
- improve flush:
Subject: Re: uruk Re: iptables leegflikkeren: lelijk maar robuust Wessel
Dankers
In-Reply-To: <20110114092236.GA14988@dijkstra.uvt.nl>
> Op Fri 14 Jan 2011 om 10:17:10 +0100 schreef Wessel Dankers:
> > iptables-save |
> > sed -rn 's/^:([A-Z]+) [A-Z]+ \[[0-9]+:[0-9]+\]$/:\1 ACCEPT [0:0]/p; /^(\*|COMMIT$)/p' |
> > iptables-restore
- gebruik voor net_foo strings als
privnet-10
privnet-0
privnet-172
- 29 15:16 < fvos> joostvb: misschien kan het al, maar op de eee wil ik dat
het ook kan werken als er per verbinding een ander ip-adres
is
za 29 15:18 < fvos> checking van de rc-file is er niet, zoals je zelf aangeeft,
maar met de xml+xsl-aanvulling van mij kun je de
instelling-documenten valideren tegen een xsd en het
bestand opdelen in logische bestanden die je met xinclude
samenvoegt
za 29 19:29 < joostvb> fvos: valideren tegen een xsd: patches welkom :)
za 29 19:29 < joostvb> fvos: maar ik denk niet dat ik dat de default ga maken,
dat ie dat doet
- localhost is 0000:0000:0000:0000:0000:0000:0000:0001 aka
Fri 18 10:36 < Fruit> ::1
000:0000:0000:0000:0000:0000:0000:0000/0 is ::/0
s/(^|:)(0+($|:))+/::/
rijen van woorden kun je afkorten tot ::
Tnx Wessel
http://www.faqs.org/rfcs/rfc3330.html
- Suggested by Casper Gielen: enable broadcast/multicast filtering for IPv6
Carefull, this part is very different from IPv4. IPv6 does not support
broadcast (at all) while support for multicast is mandatory. Do not block
without a proper understanding of what you are blocking.
Very likely needs to get implemented in script/uruk.in near "# Don't answer
broadcast and multicast packets"
-----------------------------------------------------
RSN: write urukconfig : generate uruk rc file based upon currently
offered network services. all services will be available for _all_ IPs
(or perhaps just local network?)
Packages could run this to generate a first rc file.
-----------------------------------
- use ip{,6}tables-apply by Martin Krafft: safe testing of new rules on remote host.
- get rid of duplicated code in init-script:
if test "$found_active" -a "$found_inactive"; then
eval found_$rule=1
- dpkg --remove uruk does not remove symlinks in /etc/rcS.d/; init-script fails hard
if binary gone.
- dpkg --purge uruk does not remove /var/lib/uruk/iptables/active.
- "status" is borken in case IPv6 is enabled (found on yosida):
root@yosida:~# invoke-rc.d uruk start
Saving IPv4 uruk rules as active ruleset.
Loading iptables ruleset: load "active".
Starting uruk (iptables)
Saving IPv6 uruk rules as active ruleset.
Loading ip6tables ruleset: load "active".
Starting uruk (ip6tables)
root@yosida:~# /etc/init.d/uruk status
* Checking uruk (iptables): both active and inactive rulesets present, but active ruleset not loaded
* Checking uruk (ip6tables): both active and inactive rulesets present, but active ruleset not loaded
- "start" when uruk is running flushes and reloads current active ruleset.
Should it do this? Or should it rather be a no-op? check lsb.
- add a "dump-status" option to init-script: dump details about status, keep
tmpfiles. usefull for debugging.
- /etc/init.d/uruk flush does not flush nat nor mangle table. This means
force-reload breaks when these tables are in use. See comment near initd_flush.
Fix this, and accept the introduced cruft. Tnx Wessel.
- Phase out support for services_eth0_udp, but enforce ipS_eth0; warn for
obsolete syntax
----------------- end of candidates for some upcoming release -------------
----------------- stuff which just might happen one day -------------------
- improve documentation on usage with non-fixed IPs, refer to /etc/network/if-up.d/uruk.
- using names of interfaces in names of variables is dumb. the characters
@ : . occur in interface names, but are not allowed in variable names.
E.g. eth0.54@eth0 and vif6.0 and eth0:3
- use functions
log_daemon_msg
log_end_msg
log_action_msg
in init-script, see e.g. firehol init script
- Thu 20 23:13 < fvos> joostvb: ik zou de huidige rc graag gesplitst zien in
meerdere losse bestanden, bijvoorbeeld 'networks',
'sources' en zo. Daardoor kunnen de entries in die
bestanden ook eenvoudiger namen hebben en is misschien
kwaliteitscontrole op missende verwijzingen ook
eenvoudiger.
Fri 21 05:37 < joostvb> fvos: een syntax-checker zou inderdaad wel handig zijn
ja
- Phase out support for rc_e
- Debian package: S40uruk could better be S41uruk: explicitly start after
networking (which is S40networking).
- We setup firewall rules only _after_ the network interfaces are configured.
This is dumb: we are vulnerable for bugs in the kernel's IP stack. One
solution for this: Create an /etc/init.d/uruk-pre script, which is run as early
as possible, and _before_ network interfaces are configured. It should disable
all networktraffic (except for traffic on loopbackinterface). Only later,
networkinterfaces are configured, /etc/init.d/uruk is run and networkservices
are started. (N.B.: so even with the current setup we _do_ protect our
services).
- In uruk-rc manpage, include example rc-file verbatim.
- Create "upload" target in /Makefile.am
- Improve examples in documentation:
joostvb: ik geloof dat ":" een leuke shorthand is voor "alle poorten"
- Fix bugs in uruk script: (force-)reload should do something sane when
uruk not running.
- Check documentation: uruk-rc manpage needs more stuff.
- Write a wrapper for OpenBSD's pf and FreeBSD's ipfilter, so that these tools
can use the same rc file format. We'd also have to make sure init-script
works on non-LSB-systems, then.
- Reimplement uruk-save: make it more robust. See
http://www.faqs.org/docs/iptables/iptables-save.html for example of file
format. Use logic from iptables-save.c.
- Think about alternative for uruk-save: create a chain, and enable it once it's
fully build by doing just one iptables call. This would allow truly atomical
loading of new rulesets.
- Is it sane to allow all traffic in default inactive rule?
- Check save_counters support in init script. It's likely broken.
- Date: Wed, 9 Feb 2005 15:09:16 +0100
Message-ID: <20050209140916.GZ1487@trogdor.uvt.nl>
Herken broadcasts (misschien aan destination MAC-adres?) en log ze niet.
.
alternative implementation: near code-snippet:
# supporting this for multiple-ips would need multiple chains
# or, perhaps, some iptables extension.
This log-spamming happens only in multiple-ip-per-nic mode.
Do DROP stuff just before log, would that work? (No, we really can't do
something like "--dest !(ip1 or ip2 or ip3)".)
.
yet to implement: loglevel "high". Document multiple ip per nic logspamming bug.
# this file maintained at http://git.mdcc.cx/uruk.git
uruk-20160219/install-sh 0000755 0001750 0001750 00000035463 12657715017 011721 0000000 0000000 #!/bin/sh
# install - install a program, script, or datafile
scriptversion=2014-09-12.12; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
# $RANDOM is not portable (e.g. dash); use it when possible to
# lower collision chance
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
# As "mkdir -p" follows symlinks and we work in /tmp possibly; so
# create the $tmpdir first (and fail if unsuccessful) to make sure
# that nobody tries to guess the $tmpdir name.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
uruk-20160219/missing 0000755 0001750 0001750 00000015330 12657715017 011303 0000000 0000000 #! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
scriptversion=2013-10-28.13; # UTC
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard , 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try '$0 --help' for more information"
exit 1
fi
case $1 in
--is-lightweight)
# Used by our autoconf macros to check whether the available missing
# script is modern enough.
exit 0
;;
--run)
# Back-compat with the calling convention used by older automake.
shift
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
to PROGRAM being missing or too old.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
Supported PROGRAM values:
aclocal autoconf autoheader autom4te automake makeinfo
bison yacc flex lex help2man
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
'g' are ignored when checking the name.
Send bug reports to ."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: unknown '$1' option"
echo 1>&2 "Try '$0 --help' for more information"
exit 1
;;
esac
# Run the given program, remember its exit status.
"$@"; st=$?
# If it succeeded, we are done.
test $st -eq 0 && exit 0
# Also exit now if we it failed (or wasn't found), and '--version' was
# passed; such an option is passed most likely to detect whether the
# program is present and works.
case $2 in --version|--help) exit $st;; esac
# Exit code 63 means version mismatch. This often happens when the user
# tries to use an ancient version of a tool on a file that requires a
# minimum version.
if test $st -eq 63; then
msg="probably too old"
elif test $st -eq 127; then
# Program was missing.
msg="missing on your system"
else
# Program was found and executed, but failed. Give up.
exit $st
fi
perl_URL=http://www.perl.org/
flex_URL=http://flex.sourceforge.net/
gnu_software_URL=http://www.gnu.org/software
program_details ()
{
case $1 in
aclocal|automake)
echo "The '$1' program is part of the GNU Automake package:"
echo "<$gnu_software_URL/automake>"
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/autoconf>"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
autoconf|autom4te|autoheader)
echo "The '$1' program is part of the GNU Autoconf package:"
echo "<$gnu_software_URL/autoconf/>"
echo "It also requires GNU m4 and Perl in order to run:"
echo "<$gnu_software_URL/m4/>"
echo "<$perl_URL>"
;;
esac
}
give_advice ()
{
# Normalize program name to check for.
normalized_program=`echo "$1" | sed '
s/^gnu-//; t
s/^gnu//; t
s/^g//; t'`
printf '%s\n' "'$1' is $msg."
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
case $normalized_program in
autoconf*)
echo "You should only need it if you modified 'configure.ac',"
echo "or m4 files included by it."
program_details 'autoconf'
;;
autoheader*)
echo "You should only need it if you modified 'acconfig.h' or"
echo "$configure_deps."
program_details 'autoheader'
;;
automake*)
echo "You should only need it if you modified 'Makefile.am' or"
echo "$configure_deps."
program_details 'automake'
;;
aclocal*)
echo "You should only need it if you modified 'acinclude.m4' or"
echo "$configure_deps."
program_details 'aclocal'
;;
autom4te*)
echo "You might have modified some maintainer files that require"
echo "the 'autom4te' program to be rebuilt."
program_details 'autom4te'
;;
bison*|yacc*)
echo "You should only need it if you modified a '.y' file."
echo "You may want to install the GNU Bison package:"
echo "<$gnu_software_URL/bison/>"
;;
lex*|flex*)
echo "You should only need it if you modified a '.l' file."
echo "You may want to install the Fast Lexical Analyzer package:"
echo "<$flex_URL>"
;;
help2man*)
echo "You should only need it if you modified a dependency" \
"of a man page."
echo "You may want to install the GNU Help2man package:"
echo "<$gnu_software_URL/help2man/>"
;;
makeinfo*)
echo "You should only need it if you modified a '.texi' file, or"
echo "any other file indirectly affecting the aspect of the manual."
echo "You might want to install the Texinfo package:"
echo "<$gnu_software_URL/texinfo/>"
echo "The spurious makeinfo call might also be the consequence of"
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
echo "want to install GNU make:"
echo "<$gnu_software_URL/make/>"
;;
*)
echo "You might have modified some files without having the proper"
echo "tools for further handling them. Check the 'README' file, it"
echo "often tells you about the needed prerequisites for installing"
echo "this package. You may also peek at any GNU archive site, in"
echo "case some other package contains this missing '$1' program."
;;
esac
}
give_advice "$1" | sed -e '1s/^/WARNING: /' \
-e '2,$s/^/ /' >&2
# Propagate the correct exit status (expected to be 127 for a program
# not found, 63 for a program that failed due to version mismatch).
exit $st
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
uruk-20160219/bootstrap 0000755 0001750 0001750 00000002222 12661605702 011635 0000000 0000000 #!/bin/sh -e
# this file maintained at http://git.mdcc.cx/uruk.git
# bootstrap - script to bootstrap the distribution rolling engine
# usage:
# ./bootstrap && ./configure && make distcheck
#
# this yields a tarball which one can install doing
#
# $ tar zxf PACKAGENAME-*.tar.gz
# $ cd PACKAGENAME-*
# $ ./configure
# $ make
# # make install
# requirements:
# GNU autoconf, from e.g. ftp.gnu.org:/pub/gnu/autoconf/autoconf-2.50.tar.gz
# GNU automake, from e.g. ftp.cygnus.com:/pub/tromey
# git2cl, from e.g. http://josefsson.org/git2cl/, and git
set -x
test -f ChangeLog || {
# we want no unprotected emailadresses in the cl
git log --pretty --numstat --summary | git2cl | \
sed 's/<[jc][^>][^>]*>//g' >ChangeLog
}
test -f VERSION.m4 || ./setversion
# Override automake 1.9 default: automake1.9 version 1.9.6+nogfdl-3
# creates symlink to /usr/share/automake-1.9/COPYING which is GPL v2.
# We want v3.
test -f COPYING || {
ln -s /usr/share/common-licenses/GPL-3 COPYING
}
AUTOMAKE=automake-1.15 ACLOCAL=aclocal-1.15 autoreconf --install \
--symlink --make
# aclocal \
# && automake --add-missing --verbose --gnu \
# && autoconf
uruk-20160219/ChangeLog.2003 0000644 0001750 0001750 00000027177 11712513436 012045 0000000 0000000 2004-09-10 09:00 joostvb
* script/uruk.in: ouch, _lots_ of RFCs talk about ICMP...
2004-09-10 08:39 joostvb
* script/uruk.in: comment about icmp types updated
2004-08-18 09:02 joostvb
* README: bible quote about uruk added to trivia section
2004-07-03 19:15 joostvb
* TODO.local: obsolete by now
2004-06-25 10:34 joostvb
* NEWS: release 20040625: this is a prerelease
2004-06-25 10:08 joostvb
* man/uruk-rc.azm: fix bug in example for multiple-ip-per-nic setup
2004-03-18 17:40 joostvb
* man/uruk.azm: added note about default FORWARD policy. Thanks
Wessel Dankers
2004-03-11 10:02 joostvb
* bootstrap, configure.ac: use AC_DEFINE_DIR as shipped with
autoconf-archive; do not fork
2004-02-17 16:41 joostvb
* script/uruk.in: added comment: we should deal more sane with
dropping private and thus probably spoofed packets in multiple-ip
mode
2004-02-17 15:42 joostvb
* script/uruk.in: revert back to dropping input packets with
destination other than our IP
2004-02-17 13:09 joostvb
* script/uruk.in: uruk failed in multiple IP-per-nic mode.
workaround enabled: be less strict on possibly spoofed packets
2004-02-17 11:10 joostvb
* man/uruk-rc.azm: added note on debugging as non-priviliged user
2004-02-16 14:37 joostvb
* NEWS: release 20040216
2004-02-16 14:29 joostvb
* init/uruk.in: uruk init script now has some chkconfig stuff in,
to easy maintenance for people on systems using this init system
(red hat, e.g.)
2004-02-16 14:28 joostvb
* script/uruk.in: fixed some pretty fatal typos
2004-02-13 17:03 joostvb
* NEWS: release 20040213
2004-02-13 17:01 joostvb
* NEWS, TODO, man/uruk-rc.azm: documented multiple IP-per-nic setup
2004-02-13 17:01 joostvb
* script/uruk.in: handle dropping broadcasts in multiple-ip-per nic
setup
2004-02-10 18:08 joostvb
* Makefile.am, configure.ac, doc/Makefile.am, doc/rc,
init/Makefile.am, init/uruk.in, man/Makefile.am,
man/include.zmm.in, man/uruk-rc.azm, man/uruk.azm,
script/Makefile.am: update copyright statements: 2004
2004-02-10 18:08 joostvb
* TODO: documented plan on how to get multiple-IP-per-interface
support
2004-02-10 18:01 joostvb
* script/uruk.in: first shot at allowing more than one IP assigned
to one physical NIC
2004-02-10 14:54 joostvb
* NEWS, TODO: release 20040210
2004-02-10 14:53 joostvb
* NEWS, man/uruk.azm: warn users
2004-02-10 14:45 joostvb
* init/uruk.in: be more helpful in case of errors
2004-01-16 16:40 joostvb
* man/uruk.azm: updated manpage to reflect new icmp policy
2004-01-16 16:33 joostvb
* script/uruk.in: allow more icmp stuff, as suggested by Wessel
Dankers
2004-01-06 13:43 joostvb
* TODO.local: moving to savannah
2003-11-28 13:30 joostvb
* script/uruk.in: peek sheet added
2003-11-13 12:46 joostvb
* script/uruk.in: shell code cleanup
2003-11-11 13:40 joostvb
* NEWS: release 20031111
2003-11-11 13:38 joostvb
* script/uruk.in: finetuning of dealing with packets with bogus
dest/source addresses
2003-11-11 13:12 joostvb
* man/Makefile.am: handle non-ascii stuff slightly better
2003-11-11 12:02 joostvb
* README: notes on upgrading
2003-11-11 11:58 joostvb
* TODO, script/uruk.in: no longer use block chain, replace rc_
by rc_, dont keep state for lo traffic
2003-11-11 11:56 joostvb
* man/: uruk-rc.azm, uruk.azm: no longer use block chain, replace
rc_ by rc_
2003-10-27 17:20 joostvb
* README, man/uruk.azm: minor improvements
2003-10-26 16:41 joostvb
* NEWS: release 20031026
2003-10-26 16:28 joostvb
* init/uruk.in: fixed bug: /etc/init.d/uruk stop did NOT load
inactive ruleset. now it does.
2003-10-26 13:04 joostvb
* man/: uruk-rc.azm, uruk.azm: documented default policy, gave some
hello-world-style rc examples
2003-10-08 22:05 joostvb
* TODO, man/include.zmm.in: preparing centered header in manpage,
awaiting zoem release
2003-10-08 21:32 joostvb
* Makefile.am: fix small bug in version handling
2003-10-08 20:43 joostvb
* NEWS: release 20031008
2003-10-08 20:38 joostvb
* man/: include.zmm.in, uruk.azm: zoem syntax finetuning
2003-10-08 20:35 joostvb
* man/uruk-rc.azm: added some notes about rc_ hooks
2003-10-05 20:33 joostvb
* configure.ac, man/.cvsignore, man/uruk-rc.azm,
man/uruk-rc.azm.in, man/uruk.azm, man/uruk.azm.in: move zoem
defines to single file: cleanup
2003-10-05 20:24 joostvb
* init/uruk.in: act sanely when var/lib/uruk directory not yet
present on system
2003-10-05 20:19 joostvb
* init/uruk.in: init script acts sanely when present on systems
with borken uruk setup
2003-10-05 18:31 joostvb
* TODO: another wishlist bug
2003-10-05 16:03 joostvb
* TODO: wishlist bug added
2003-10-05 16:03 joostvb
* doc/rc, script/uruk.in: added copyright statement
2003-10-04 22:26 joostvb
* NEWS: release 20031004
2003-10-04 22:24 joostvb
* TODO: found a BUG
2003-10-04 22:24 joostvb
* doc/rc, man/uruk-rc.azm.in, man/uruk.azm.in: documentation
updated and improved
2003-10-04 22:20 joostvb
* README: more notes on zoem
2003-10-04 18:06 joostvb
* README, configure.ac, man/Makefile.am: we build-depend on zoem
(and groff and col) now. check wether these programs are
available
2003-10-04 17:30 joostvb
* configure.ac, man/uruk-rc.azm, man/uruk-rc.azm.in: expand
pathnames in uruk-rc manpage
2003-10-04 17:24 joostvb
* configure.ac, init/.cvsignore, init/uruk.in, man/.cvsignore,
man/uruk.azm, man/uruk.azm.in, script/uruk.in: use hacked
AC_DEFINE_DIR from autoconf macro archive, for flexible expansion
of pathnames in scripts and docs
2003-10-04 14:20 joostvb
* README, configure.ac, init/uruk, init/uruk.in, man/uruk.azm: sane
default statedir for init script
2003-10-04 13:59 joostvb
* AUTHORS, Makefile.am, NEWS, README, TODO, configure.ac,
init/.cvsignore, init/Makefile.am, man/uruk.azm: integrated init
script in build environement, started documenting usage of init
script
2003-10-04 12:29 joostvb
* init/uruk: changed default autosave behaviour
2003-10-04 12:25 joostvb
* init/uruk: added copyright statement
2003-10-04 12:13 joostvb
* init/uruk: /usr/share/doc/iptables/examples/oldinitdscript.gz as
shipped with Debian iptables 1.2.8-4, used to be used as
/etc/init.d/iptables
2003-10-04 11:55 joostvb
* man/: Makefile.am, uruk.azm: next step in converting from pod to
zoem syntax
2003-10-04 11:29 joostvb
* man/Makefile.am, script/Makefile.am: renamed ad1810-firewall
script to uruk, renamed manpages
2003-10-04 11:24 joostvb
* .cvsignore, AUTHORS, NEWS, README, THANKS, TODO, configure.ac,
doc/rc, man/include.zmm, man/uruk-rc.azm, man/uruk.azm,
script/.cvsignore: changed name from ad1810-firewall to uruk
2003-10-04 10:54 joostvb
* README, man/uruk.azm: more pointers to alternative tools
2003-09-04 11:54 joostvb
* man/uruk.azm: ifupdown integration
2003-09-04 11:34 joostvb
* man/uruk.azm: warning for deprecated Debian integration added
2003-09-04 11:31 joostvb
* man/: ad1810-firewall.pod, uruk.azm: first shot at converting to
zoem
2003-08-29 16:43 joostvb
* NEWS: release 20030829
2003-08-29 16:33 joostvb
* Makefile.am, man/Makefile.am, man/include.zmm, man/uruk-rc.azm:
zoem finetuning
2003-08-29 16:19 joostvb
* configure.ac, man/ad1810-firewall.pod, man/uruk-rc.azm: new
author email adress
2003-08-29 16:15 joostvb
* man/ad1810-firewall-rc.pod: ad1810-firewall-rc zoemized
2003-08-29 16:12 joostvb
* setversion, man/include.zmm, man/uruk-rc.azm: autozoemization
2003-08-29 15:50 joostvb
* TODO: bugreport by Wessel Dankers
2003-08-29 15:41 joostvb
* doc/rc: fixed inconsistencies, improved documentation. Tnx Fruit
2003-08-24 13:56 joostvb
* script/uruk.in: minor tweak
2003-08-14 10:51 joostvb
* man/Makefile.am: migrating to zoem manpages sources, phase 2
2003-08-14 10:35 joostvb
* script/uruk.in: more robust by better quoting, tnx Fruit
2003-06-01 14:39 joostvb
* script/uruk.in: enable injecting homebrew rules and scripts
2003-05-28 11:41 joostvb
* man/ad1810-firewall.pod: more notes on debian iptables package
2003-05-25 17:41 joostvb
* man/ad1810-firewall.pod: added extra note on working with Debian
iptables package
2003-05-25 17:14 joostvb
* doc/rc: even more explicit
2003-05-12 13:57 joostvb
* script/uruk.in: fixed new sources_ usage bug
2003-05-12 13:06 joostvb
* NEWS: release 20030512
2003-05-12 13:04 joostvb
* man/uruk-rc.azm: zoem-ized manpage
2003-05-11 14:31 joostvb
* man/Makefile.am: trying out zoem. its _FAST_
2003-05-06 19:01 joostvb
* NEWS, doc/rc, script/uruk.in: more flex
2003-04-27 16:44 joostvb
* TODO, configure.ac, setversion: fixed autoversion stuff, tnx Raja
R Harinath
2003-04-27 16:11 joostvb
* NEWS: version v20030427 released
2003-04-27 16:06 joostvb
* TODO: added referer to post to autoconf list: version numbering
generating issues
2003-04-27 16:04 joostvb
* bootstrap: bugfix in ChangeLog generating code
2003-04-27 16:04 joostvb
* README: moved some stuff from ad1810-firewall manpage to README
2003-04-27 16:02 joostvb
* man/Makefile.am: fixed bug in manpage section numbering
2003-04-27 16:01 joostvb
* man/ad1810-firewall.pod: getting started notes added
2003-04-27 16:00 joostvb
* Makefile.am, configure.ac, script/Makefile.am, script/uruk.in: rc
file location now depends on sysconfdir, as set during configure
2003-04-27 14:24 joostvb
* script/: ad1810-firewall, uruk.in: rc file location now depends
on sysconfdir
2003-04-26 19:35 joostvb
* Makefile.am, bootstrap, configure.ac, setversion: compatibility:
created old-style VERSION file
2003-04-26 19:28 joostvb
* NEWS, README, TODO, doc/.cvsignore: some loose ends remain...
2003-04-26 19:24 joostvb
* doc/: Makefile.am, rc: separate example rc file
2003-04-26 19:23 joostvb
* Makefile.am, THANKS, TODO, configure.ac, man/Makefile.am,
man/ad1810-firewall-rc.pod, man/ad1810-firewall.pod,
script/Makefile.am: moved example to doc/examples/rc, moved
script to sbin
2003-04-26 18:54 joostvb
* AUTHORS, README, TODO, configure.ac, man/Makefile.am,
man/ad1810-firewall.pod, script/Makefile.am: generate manpages in
html format too
2003-04-26 18:39 joostvb
* Makefile.am, README, configure.ac, setversion, man/Makefile.am,
man/ad1810-firewall-rc.pod, man/ad1810-firewall.pod,
script/Makefile, script/Makefile.am, script/ad1810-firewall:
separated manpages, set up manpage for rc file format
2003-04-26 17:48 joostvb
* configure.ac: autoconf 2.53 is fine too: we can use the Debian
woody devel environment
2003-04-26 17:33 joostvb
* script/Makefile.am: autoconfiscated
2003-04-26 17:32 joostvb
* Makefile.am, configure.ac, setversion: automatic release version
number generating
2003-04-26 11:04 joostvb
* AUTHORS, Makefile.am, NEWS, README, THANKS, TODO, bootstrap,
configure.ac, setversion: autotoolized
2003-03-28 13:02 joostvb
* script/ad1810-firewall: Corno Vromas said: yes, open source is ok
(fr mar 28, 2003, 13:00, UvT kantine)
2003-03-27 22:08 joostvb
* script/ad1810-firewall: no longer in debug mode
2003-03-27 21:41 joostvb
* script/ad1810-firewall: more comments
2003-03-27 19:37 joostvb
* include/install.mk: hibou uses it too
2003-03-27 18:51 joostvb
* include/install.mk: casparized
2003-03-27 18:50 joostvb
* script/ad1810-firewall: comments, syntax
2003-03-27 12:34 joostvb
* script/firewall: renamed
2003-03-27 12:34 joostvb
* script/ad1810-firewall: enable config sourcing
2003-03-27 12:30 joostvb
* script/firewall: support for public vs private interfaces
2003-03-27 12:07 joostvb
* script/firewall: from
cvs/perlharbor/syst_netw/systems/unique/bolzano/usr/local/sbin
uruk-20160219/setversion 0000755 0001750 0001750 00000001207 11712513436 012021 0000000 0000000 # this file maintained at http://git.mdcc.cx/uruk.git
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
# thanks Raja R Harinath, see the post
# Subject: Re: how to automatically generate package version, calling AC_INIT
# From: Raja R Harinath
# Date: Sun, 27 Apr 2003 09:33:02 -0500
# Message-ID:
# on autoconf@gnu.org
echo 'm4_define([AD1_VERSION], ['`date +%Y%m%d`'])' > VERSION.m4
# compatibility with other ad1810 packages
date +%Y%m%d > VERSION
# zoem stuff
date +%e > stamp.day
date +%b > stamp.month
date +%Y > stamp.year
uruk-20160219/stamp.month 0000644 0001750 0001750 00000000007 12661613100 012053 0000000 0000000 феб
uruk-20160219/stamp.year 0000644 0001750 0001750 00000000005 12661613100 011664 0000000 0000000 2016
uruk-20160219/stamp.day 0000644 0001750 0001750 00000000003 12661613100 011477 0000000 0000000 19
uruk-20160219/VERSION 0000644 0001750 0001750 00000000011 12661613100 010723 0000000 0000000 20160219
uruk-20160219/script/ 0000755 0001750 0001750 00000000000 12661613117 011257 5 0000000 0000000 uruk-20160219/script/Makefile.am 0000644 0001750 0001750 00000000376 12436027776 013253 0000000 0000000 ## Process this file with automake to produce Makefile.in
## this file maintained at http://git.mdcc.cx/uruk.git
sbin_SCRIPTS = uruk urukctl uruk-save
EXTRA_DIST = $(sbin_SCRIPTS) uruk.in
uruk: uruk.in
sed 's/@URUK_VERSION@/@PACKAGE_VERSION@/' $< >$@
uruk-20160219/script/Makefile.in 0000644 0001750 0001750 00000032614 12661613102 013244 0000000 0000000 # Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = script
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(sbindir)"
SCRIPTS = $(sbin_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
sbin_SCRIPTS = uruk urukctl uruk-save
EXTRA_DIST = $(sbin_SCRIPTS) uruk.in
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu script/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu script/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-sbinSCRIPTS: $(sbin_SCRIPTS)
@$(NORMAL_INSTALL)
@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n' \
-e 'h;s|.*|.|' \
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
if (++n[d] == $(am__install_max)) { \
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
else { print "f", d "/" $$4, $$1 } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
} \
; done
uninstall-sbinSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
dir='$(DESTDIR)$(sbindir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(SCRIPTS)
installdirs:
for dir in "$(DESTDIR)$(sbindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-sbinSCRIPTS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-sbinSCRIPTS
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-sbinSCRIPTS install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags-am uninstall uninstall-am \
uninstall-sbinSCRIPTS
.PRECIOUS: Makefile
uruk: uruk.in
sed 's/@URUK_VERSION@/@PACKAGE_VERSION@/' $< >$@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
uruk-20160219/script/uruk 0000644 0001750 0001750 00000050204 12661613103 012104 0000000 0000000 #! /bin/sh
# vim:syntax=sh
# this file maintained at http://git.mdcc.cx/uruk.git
# Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
# Copyright (C) 2003, 2004, 2010 Tilburg University http://www.uvt.nl/
# Copyright (C) 2003, 2004, 2005, 2007, 2010 Joost van Baal
# Copyright (C) 2012, 2013 Joost van Baal-Ilić
# Copyright © 2014,2015 Wessel Dankers
#
# This file is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This file is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
#
# You should have received a copy of the GNU GPL along with this file, see
# e.g. the file named COPYING. If not, see .
#
# peeksheet: iptables predefined chains:
#
# - INPUT - - localhost - - OUTPUT -
# / \
# PREROUTING - - - - - - - - FORWARD - - - - - - - - POSTROUTING
#
iptables=${URUK_IPTABLES:-/sbin/iptables}
ip6tables=${URUK_IP6TABLES:-/sbin/ip6tables}
# Variables used: ip6_<...>, sources6_<...>, ip6tables.
interfaces_unprotect=${URUK_INTERFACES_UNPROTECT:-lo}
etcdir="/etc/uruk"
config=${URUK_CONFIG:-${etcdir}/rc}
# IPv4 ranges that should not send or receive packets unless specifically permitted
# See RFC 6890.
ip4_noroute_ranges='0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/3'
# IPv6 ranges that should not send or receive packets
# see http://www.iana.org/assignments/ipv6-address-space/
# and http://www.iana.org/assignments/ipv6-unicast-address-assignments/
# and RFC 6890.
# All IPv6 addresses in their canonical form.
ip6_noroute_ranges='64:ff9b::/96 ::ffff:0:0/96 100::/64 200::/7 2001:2::/48 2001:db8::/32 2001:10::/28 fc00::/7 fec0::/10 3ffe::/16 5f00::/8 ::1/128 ::/128'
uruk_version="20160219"
test -r $config || {
echo >&2 "No readable rc file $config found. Please create one." && exit 1
}
. $config
case $version in ?*)
case $((version < 20040210)) in 1)
cat >&2 <&2
esac
if test -f $uruk_save_dir/$table
then
space=
for arg
do
case $arg in -[a-zA-Z0-9])
echo -n "$space-"
echo -n "${arg#-}"
;; *[!a-zA-Z0-9_!+,./:=@-]*)
echo -n "$space\""
echo -n "$arg" | sed 's/[\\\"'\'']/\\&/g'
echo -n \"
;; *)
echo -n "$space$arg"
esac
space=' '
done >>$uruk_save_dir/$table
echo >>$uruk_save_dir/$table
else
echo "Unknown table '$table'; skipping rule '" -t $table $* "'" >&2
fi
}
#
# bootstrap these rules
#
# 40 < 60 ( 50) medium: log denied non-broadcasts (default)
test -z "$loglevel" && loglevel=50
#
# traffic on interfaces_unprotect (lo, per default) is trusted
for iface in ${interfaces_unprotect}
do
$iptables -A INPUT -i $iface -j ACCEPT
$iptables -A OUTPUT -o $iface -j ACCEPT
$ip6tables -A INPUT -i $iface -j ACCEPT
$ip6tables -A OUTPUT -o $iface -j ACCEPT
done
uruk_hook "$rc_a"
if test $loglevel -ge 80
then
# 80 < 99 ( 90) fascist: log all packets
uruk_log
uruk6_log
fi
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6tables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# workaround bug(?) in linux kernel, see also
# http://serverfault.com/questions/309691/why-is-our-firewall-ubuntu-8-04-rejecting-the-final-packet-fin-ack-psh-wit
# first argument is the flags which we should examine, the second argument is
# the flags which must be set
$iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST FIN,ACK -j ACCEPT
$ip6tables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST FIN,ACK -j ACCEPT
$iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT
$ip6tables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT
uruk_hook "$rc_b"
#
# protect interfaces_public agains spoofing
#
for iface in ${interfaces}
do
#
# don't allow anyone to spoof non-routeable addresses
#
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
# set of all addresses on this (physical) interface
blockips=
blockips6=
# set of all permitted "special" nets for this (physical) interface
eval "blocknet=\$net_${iface}"
eval "blocknet6=\$net6_${iface}"
for iface_x in $interfaces_x
do
eval "ips=\$ip_${iface_x}"
eval "ips6_defined=\${ip6_${iface_x}+DEFINED}"
case $ips6_defined in '')
ips6=$ips
;; *)
eval "ips6=\$ip6_${iface_x}"
esac
eval "net=\$net_${iface_x}"
eval "net6=\$net6_${iface_x}"
blocknet="$blocknet $net"
blocknet6="$blocknet6 $net6"
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
for no_route_ip in $ip4_noroute_ranges
do
case " $net " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$iptables -A INPUT -i $iface -s $no_route_ip -d $ip -j DROP
$iptables -A OUTPUT -o $iface -s $ip -d $no_route_ip -j DROP
esac
done
blockips="$blockips $ip"
esac
done
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
for no_route_ip in $ip6_noroute_ranges
do
case " $net $net6 " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$ip6tables -A INPUT -i $iface -s $no_route_ip -d $ip6 -j DROP
$ip6tables -A OUTPUT -o $iface -s $ip6 -d $no_route_ip -j DROP
esac
done
blockips6="$blockips6 $ip6"
esac
done
done
case $blockips in *[!$IFS][$IFS]*[!$IFS]*)
# in multiple ip mode, we have to drop only if source is
# not _one_ of the nic's IPs
# supporting this for multiple ips would need multiple chains
# or, perhaps, some iptables extension.
# for now, we just block "known bad" addresses
for no_route_ip in $ip4_noroute_ranges
do
case " $blocknet " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$iptables -A INPUT -i $iface -d $no_route_ip -j DROP
$iptables -A OUTPUT -o $iface -s $no_route_ip -j DROP
esac
done
;; *)
# block outgoing packets that don't have our address as source,
# they are either spoofed or something is misconfigured (NAT disabled,
# for instance), we want to be nice and don't send out garbage.
for ip in $blockips
do
# drop all outgoing packets which don't have us as a source
$iptables -A OUTPUT -o $iface ! -s "$ip" -j DROP
# drop all incoming packets which don't have us as destination
$iptables -A INPUT -i $iface ! -d "$ip" -j DROP
done
esac
# in IPv6 we always have a multiple IP mode, because an interface
# always has a link-local address as well
# in multiple ip mode, we have to drop only if source is
# not _one_ of the nic's IPs
# supporting this for multiple ips would need multiple chains
# or, perhaps, some iptables extension.
# for now, we just block "known bad" addresses
for no_route_ip in $ip6_noroute_ranges
do
case " $blocknet $blocknet6 " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$ip6tables -A INPUT -i $iface -d $no_route_ip -j DROP
$ip6tables -A OUTPUT -o $iface -s $no_route_ip -j DROP
esac
done
# Always allow outgoing connections
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface -j ACCEPT
$ip6tables -A OUTPUT -m conntrack --ctstate NEW -o $iface -j ACCEPT
done
uruk_hook "$rc_c"
#
# allow traffic to offered services, from trusted sources
#
for iface in $interfaces
do
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
# tcp is special
eval "services_defined=\${services_${iface_x}_tcp+DEFINED}"
case $services_defined in '')
cat >&2 <&2 <&2 "WARNING: sources_${iface_x}_${proto}_${service} is undefined. (Processing uruk rc file nevertheless.)"
esac
eval "sources6_defined=\${sources6_${iface_x}_${proto}_${service}+DEFINED}"
eval "sources6=\$sources6_${iface_x}_${proto}_${service}"
case $sources6_defined in '')
eval "sources6=\$sources_${iface_x}_${proto}_${service}"
esac
eval "ports_defined=\${ports_${iface_x}_${proto}_${service}+DEFINED}"
eval "ports=\$ports_${iface_x}_${proto}_${service}"
case $ports_defined in '')
echo >&2 "WARNING: ports_${iface_x}_${proto}_${service} is undefined. (Processing uruk rc file nevertheless.)"
;; *)
for port in $ports
do
# port is e.g. www or 1023
for source in $sources
do
case $source in *:*) ;; *) # if it doesn't look like an IPv6 address/range
# source is e.g. 10.56.0.10/32
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
$iptables \
--append INPUT \
--match conntrack \
--ctstate NEW \
--in-interface $iface \
--protocol $proto \
--source "$source" \
--destination "$ip" \
--destination-port "$port" \
--jump ACCEPT
esac
done
esac
done
for source6 in $sources6
do
case $source6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
$ip6tables \
--append INPUT \
--match conntrack \
--ctstate NEW \
--in-interface $iface \
--protocol $proto \
--source "$source6" \
--destination "$ip6" \
--destination-port "$port" \
--jump ACCEPT
esac
done
esac
done
done
esac
done
esac
done
done
done
uruk_hook "$rc_d"
#
# rc_e: backwards compatibility. should be removed one day.
#
uruk_hook "$rc_e"
#
# Don't answer broadcast and multicast packets
#
for iface in $interfaces_nocast
do
eval "is=\$bcasts_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
eval "bcast=\$bcast_${iface_x}"
$iptables -A INPUT -i $iface -d "$bcast" -j DROP
done
$iptables -A INPUT -i $iface -d 255.255.255.255 -j DROP
done
uruk_hook "$rc_f"
#
# icmp stuff. See RFC 1122 and also RFC 792, RFC 950, RFC 1812, RFC 1349,
# RFC 2474 and Stevens' TCP/IP Illustrated Chapter 6, p 69.
# The icmp types are even in %num2icmp_type in Lire::Firewall.
# Running "iptables -p icmp -h" gives iptables's idea of icmp types
#
#
# By default, we disallow
#
# source-quench
# redirect (
# network-redirect
# host-redirect
# TOS-network-redirect
# TOS-host-redirect
# )
# router-advertisement
# router-solicitation
#
# You might want to allow just
#
# echo-request echo-reply ttl-zero-during-transit \
# ttl-zero-during-reassembly ip-header-bad required-option-missing
#
# This makes pings succeed, as well as traceroute. However
# debugging network problems might be _much_ more difficult when disallowing
# lots of other icmp types. If you really want to do this, use rc_g.
#
for type in \
address-mask-reply \
address-mask-request \
destination-unreachable \
echo-reply \
echo-request \
parameter-problem \
timestamp-reply \
timestamp-request \
ttl-zero-during-reassembly \
ttl-zero-during-transit
do
$iptables -A INPUT -p icmp --icmp-type $type -j ACCEPT
done
# Drop echo replies which have a multicast address as a
# destination. See rfc4890-icmpv6-firewall.sh.
$ip6tables -A INPUT --protocol icmpv6 -d ff00::/8 \
--icmpv6-type echo-reply -j DROP
# See http://www.iana.org/assignments/icmpv6-parameters for ICMPv6 types
# Or run # ip6tables -p ipv6-icmp -h
for type in \
echo-request \
echo-reply \
destination-unreachable \
packet-too-big \
ttl-zero-during-transit \
ttl-zero-during-reassembly \
unknown-header-type \
unknown-option \
bad-header \
redirect \
144 \
145 \
146 \
147 \
router-solicitation \
router-advertisement \
neighbour-solicitation \
neighbour-advertisement \
141 \
142 \
130 \
131 \
132 \
143 \
148 \
149 \
151 \
152 \
153
do
$ip6tables -A INPUT --protocol icmpv6 --icmpv6-type $type -j ACCEPT
done
# Type 144 - Home Agent Address Discovery [RFC3775]
# Type 145 - Home Agent Address Discovery [RFC3775]
# Type 146 - Mobile Prefix Solicitation [RFC3775]
# Type 147 - Mobile Prefix Advertisement [RFC3775]
# We DROP, a.o.:
# Router renumbering messages: 138
# Node information queries (139) and replies (140): 139 140
#
$ip6tables -A INPUT --protocol icmpv6 -j DROP
uruk_hook "$rc_g"
#
# log packets which make it till here: denied packets (not denied broadcasts
# or spoofed stuff). take loglevel into account.
#
if test $loglevel -lt 20
then
# be silent
:
elif test $loglevel -lt 40
then
# log denied packets, targetted at our IPs
# INVALID: The packet is associated with no known connection. See iptables-extensions(8)
# may be due to the system running out of memory or ICMP error messages that do not
# respond to any known connections. It is helpfull to log these with explicitly
# mentioning reason of logging (and dropping).
$iptables -A INPUT -j LOG --log-level debug -m state --state INVALID --log-prefix 'iptables: REASON=invalid '
$ip6tables -A INPUT -j LOG --log-level debug -m state --state INVALID --log-prefix 'ip6tables: REASON=invalid '
for iface in $interfaces
do
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
eval "ip=\$ip_${iface_x}"
eval "ips6_defined=\${ip6_${iface_x}+DEFINED}"
case $ips6_defined in '')
ips6=$ips
;; *)
eval "ips6=\$ip6_${iface_x}"
esac
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
uruk_log -i $iface -d $ip
esac
done
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
uruk6_log -i $iface -d $ip6
esac
done
done
done
elif test $loglevel -lt 60
then
# 40 < 60 ( 50) medium: log denied non-broadcasts (default)
uruk_log
uruk6_log
fi
# FIXME : yet to implement:
# 60 < 80 ( 70) high: log denied packets
uruk_hook "$rc_h"
#
# reject all others
#
$iptables -A INPUT -j REJECT --reject-with tcp-reset -p tcp
$iptables -A INPUT -j REJECT
# These ip6tables flags are supported since 2.4.5; we don't support older kernels
$ip6tables -A INPUT -j REJECT --reject-with tcp-reset -p tcp
$ip6tables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
uruk_hook "$rc_i"
# make sure we exit 0, even if last test failed
exit 0
uruk-20160219/script/urukctl 0000644 0001750 0001750 00000025672 12661605702 012630 0000000 0000000 #!/bin/sh
#
# this file maintained at http://git.mdcc.cx/uruk.git
#
# Uruk control script.
# Copyright (C) 2002, 2003 Laurence J. Lane
# Copyright (C) 2003, 2004, 2005, 2007, 2010 Joost van Baal
# Copyright (C) 2013 Joost van Baal-Ilić
#
# This file is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This file is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
#
# You should have received a copy of the GNU GPL along with this file, see
# e.g. the file named COPYING. If not, see .
# Based upon /etc/init.d/iptables as shipped with the Debian iptables
# package by Laurence J. Lane
set -e
# do sanity check on uruk environment.
enable_uruk_check=true
## enable_uruk_check=false
# enable ipv6 support
enable_ipv6=true
# enable calling the unstable uruk-save script
enable_uruk_save=false
# set enable_autosave to "true" to autosave the active ruleset
# when going from start to stop
enable_autosave=true
# set enable_save_counters to "true" to save table counters with
# rulesets
enable_save_counters=true
# /etc/default/uruk can overrule
# enable_uruk_check, enable_ipv6, enable_autosave, enable_save_counters and PATH
# On Debian systems, configuration for init scripts is in /etc/default/
test -f /etc/default/uruk && . /etc/default/uruk
# On Red Hat systems, configuration for init scripts is in /etc/sysconfig/
test -f /etc/sysconfig/uruk && . /etc/sysconfig/uruk
# exit code
STATUS=0
initd="$0"
initd_abort_wrong_arg () {
cmd=$1
shift
echo "Aborting urukctl $cmd: wrong argument: $@"
exit 2
}
initd_have_a_cow_man () {
for i in $@; do
if ! command -v "$i" >/dev/null 2>&1; then
echo "Aborting urukctl: missing executable $i"
exit 5
fi
done
}
initd_clear () {
rm -f "$autosave"
echo -n "Clearing ${iptables_command} ruleset: default ACCEPT policy"
$iptables_save | sed "/-/d;/^#/d;s/DROP/ACCEPT/" | $iptables_restore
echo "."
}
initd_halt () {
rm -f $autosave
echo -n "Clearing ${iptables_command} ruleset: default DROP policy"
$iptables_save | sed "/-/d;/^#/d;s/ACCEPT/DROP/" | $iptables_restore
echo "."
}
initd_flush () {
# This will NOT flush the mangle or nat table. If we wanna do that, we'd have to do
# something like
#
# while read -r table;do iptables -t $table -F;done "$ruleset"
STATUS=$?
else
$iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' > "$ruleset"
STATUS=$?
fi
}
initd_save () {
rm -f $autosave
ruleset="$libdir/$@"
echo -n "Saving ${iptables_command} ruleset: save \"$@\""
initd_counters
echo "."
}
initd_autosave () {
if $enable_autosave && test -f $autosave; then
ruleset="$libdir/active"
echo -n "Autosaving ${iptables_command} ruleset: save \"active\""
initd_counters
echo "."
fi
}
initd_active_uruk_save () {
if test $iptables_command = ip6tables; then
echo -n "Saving IPv6 uruk rules as active ruleset"
uruk-save -6 > "$libdir/active"
STATUS=$?
echo "."
else
echo -n "Saving IPv4 uruk rules as active ruleset"
uruk-save > "$libdir/active"
STATUS=$?
echo "."
fi
initd_load active
dummy=$?
test "$STATUS" = 0 && STATUS=$dummy
}
initd_active () {
if $enable_uruk_save; then
initd_active_uruk_save
else
initd_flush
if test $iptables_command = ip6tables; then
echo -n "Loading IPv6 uruk rules"
# skip all iptables commands in uruk
URUK_IPTABLES=':' uruk
STATUS=$?
echo "."
else
echo -n "Loading IPv4 uruk rules"
# skip all ip6tables commands in uruk
URUK_IP6TABLES=':' uruk
STATUS=$?
echo "."
fi
initd_save active
dummy=$?
test "$STATUS" = 0 && STATUS=$dummy
fi
}
initd_start () {
if ! test -e "$libdir/inactive"; then
initd_save inactive
fi
initd_active
if $enable_autosave; then
touch $autosave
fi
}
initd_stop () {
# act sane if inactive state file missing
ruleset="$libdir/inactive"
if test -e $ruleset; then
initd_load inactive
rm $ruleset
else
echo "Uruk not running (no inactive file found)"
STATUS=0
fi
}
initd_status() {
initd_preload
tmpdir=`mktemp -d /tmp/uruk.$iptables_command.XXXXXXXXXX`
trap 'rm -rf $tmpdir' 0
# grep possibly matches nothing, force succesfull exit
$iptables_save | grep '^-' >$tmpdir/kernel || true
for rule in active inactive; do
eval status_$rule=
eval found_$rule=
if test -e $libdir/$rule; then
sed -n 's/^\[[0-9]\{1,\}:[0-9]\{1,\}\] //p' $libdir/$rule >$tmpdir/ruleset
if diff $tmpdir/ruleset $tmpdir/kernel >/dev/null; then
echo "Checking uruk ($iptables_command): $rule uruk rules loaded"
eval status_$rule=1
fi
eval found_$rule=1
fi
done
rm -r $tmpdir
# if running, active loaded; then rulesets existing as file: active inactive
# if "not running", inactive loaded; then active
if test "$found_active"; then
if test "$found_inactive"; then
# uruk is running, STATUS=0
STATUS=0
else
# uruk is not running
STATUS=3
fi
else
# uruk not running, unconfigured: "unknown"
STATUS=4
fi
}
usage () {
cat << END
$initd options:
start
save
create
load
reload
force-reload
stop
restart
status
clear
halt
flush
See the urukctl(8) manpage for details.
END
}
initd_main () {
initd_vars
case "$1" in
start)
initd_start
;;
stop)
initd_stop
;;
restart)
# Restart service (if running) or start service
$initd stop
$initd start
;;
force-reload)
for rule in active inactive; do
eval found_$rule=
if test -e $libdir/$rule; then
eval found_$rule=1
fi
done
if test "$found_active" -a "$found_inactive"; then
# uruk is running
initd_active
else
echo "Uruk is not running"
STATUS=0
fi
;;
status)
# If the status action is requested, the init script will
# return the following exit status codes.
#
# 0 program is running or service is OK
#(1 program is dead and /var/run pid file exists)
#(2 program is dead and /var/lock lock file exists)
# 3 program is not running
# 4 program or service status is unknown
# will set STATUS, used as exit code
initd_status
;;
# end of LSB required init arguments
reload)
for rule in active inactive; do
eval found_$rule=
if test -e $libdir/$rule; then
eval found_$rule=1
fi
done
if test "$found_active" -a "$found_inactive"; then
if $enable_uruk_save; then
initd_active_uruk_save
else
cat < "$libdir/active"
echo "."
else
echo -n "Saving IPv4 uruk rules as active ruleset"
uruk-save > "$libdir/active"
echo "."
fi
else
cat </dev/null; then
echo "Fails to run ${iptables_command}."
exit 4
fi
}
check_uruk() {
initd_have_a_cow_man uruk >/dev/null
uruk_config="/etc/uruk/rc"
# check for existence of uruk rc file.
if ! test -r $uruk_config; then
echo "No file $uruk_config present."
exit 6
fi
# check for sanity of uruk rc file.
if grep -q URUK_IS_UNCONFIGURED $uruk_config; then
echo "Uruk is unconfigured. Please create a sane file $uruk_config. See uruk(8)."
exit 6
fi
}
# check command line args
case "$1" in
start|stop|restart|force-reload|status|reload|clear|halt|flush|save|create|load)
# pass
;;
*)
usage
initd_abort_wrong_arg "$*"
;;
esac
if $enable_uruk_check; then
check_uruk
fi
iptables_command=iptables initd_main $*
if $enable_ipv6; then
iptables_command=ip6tables initd_main $*
fi
exit $STATUS
uruk-20160219/script/uruk-save 0000644 0001750 0001750 00000002321 12476343033 013043 0000000 0000000 #! /bin/sh
# uruk-save - directly dump /etc/uruk/rc to an iptables-save style
# file, without invoking iptables
# this file maintained at http://git.mdcc.cx/uruk.git
# Copyright © 2005 Joost van Baal
# Copyright © 2012,2015 Wessel Dankers
#
# This file is part of Uruk. Uruk is free software; you can redistribute
# it and/or modify it under the terms of the GNU GPL, see the file named
# COPYING.
echo "# Generated by uruk-save on $(date)"
echo
export uruk_save_dir=$(mktemp -d)
trap 'rm -rf -- "$uruk_save_dir"' EXIT INT HUP QUIT TERM
echo "*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]" >$uruk_save_dir/filter
echo "*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]" >$uruk_save_dir/raw
echo "*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]" >$uruk_save_dir/mangle
case $1 in -6)
URUK_IPTABLES=: URUK_IP6TABLES=uruk_save uruk
;; *)
echo "*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]" >$uruk_save_dir/nat
URUK_IPTABLES=uruk_save URUK_IP6TABLES=: uruk
esac
for f in $uruk_save_dir/*
do
cat $f
echo COMMIT
echo
done
echo "# Completed on $(date)"
uruk-20160219/script/uruk.in 0000644 0001750 0001750 00000050212 12661606273 012522 0000000 0000000 #! /bin/sh
# vim:syntax=sh
# this file maintained at http://git.mdcc.cx/uruk.git
# Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
# Copyright (C) 2003, 2004, 2010 Tilburg University http://www.uvt.nl/
# Copyright (C) 2003, 2004, 2005, 2007, 2010 Joost van Baal
# Copyright (C) 2012, 2013 Joost van Baal-Ilić
# Copyright © 2014,2015 Wessel Dankers
#
# This file is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This file is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
#
# You should have received a copy of the GNU GPL along with this file, see
# e.g. the file named COPYING. If not, see .
#
# peeksheet: iptables predefined chains:
#
# - INPUT - - localhost - - OUTPUT -
# / \
# PREROUTING - - - - - - - - FORWARD - - - - - - - - POSTROUTING
#
iptables=${URUK_IPTABLES:-/sbin/iptables}
ip6tables=${URUK_IP6TABLES:-/sbin/ip6tables}
# Variables used: ip6_<...>, sources6_<...>, ip6tables.
interfaces_unprotect=${URUK_INTERFACES_UNPROTECT:-lo}
etcdir="/etc/uruk"
config=${URUK_CONFIG:-${etcdir}/rc}
# IPv4 ranges that should not send or receive packets unless specifically permitted
# See RFC 6890.
ip4_noroute_ranges='0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/3'
# IPv6 ranges that should not send or receive packets
# see http://www.iana.org/assignments/ipv6-address-space/
# and http://www.iana.org/assignments/ipv6-unicast-address-assignments/
# and RFC 6890.
# All IPv6 addresses in their canonical form.
ip6_noroute_ranges='64:ff9b::/96 ::ffff:0:0/96 100::/64 200::/7 2001:2::/48 2001:db8::/32 2001:10::/28 fc00::/7 fec0::/10 3ffe::/16 5f00::/8 ::1/128 ::/128'
uruk_version="@URUK_VERSION@"
test -r $config || {
echo >&2 "No readable rc file $config found. Please create one." && exit 1
}
. $config
case $version in ?*)
case $((version < 20040210)) in 1)
cat >&2 <&2
esac
if test -f $uruk_save_dir/$table
then
space=
for arg
do
case $arg in -[a-zA-Z0-9])
echo -n "$space-"
echo -n "${arg#-}"
;; *[!a-zA-Z0-9_!+,./:=@-]*)
echo -n "$space\""
echo -n "$arg" | sed 's/[\\\"'\'']/\\&/g'
echo -n \"
;; *)
echo -n "$space$arg"
esac
space=' '
done >>$uruk_save_dir/$table
echo >>$uruk_save_dir/$table
else
echo "Unknown table '$table'; skipping rule '" -t $table $* "'" >&2
fi
}
#
# bootstrap these rules
#
# 40 < 60 ( 50) medium: log denied non-broadcasts (default)
test -z "$loglevel" && loglevel=50
#
# traffic on interfaces_unprotect (lo, per default) is trusted
for iface in ${interfaces_unprotect}
do
$iptables -A INPUT -i $iface -j ACCEPT
$iptables -A OUTPUT -o $iface -j ACCEPT
$ip6tables -A INPUT -i $iface -j ACCEPT
$ip6tables -A OUTPUT -o $iface -j ACCEPT
done
uruk_hook "$rc_a"
if test $loglevel -ge 80
then
# 80 < 99 ( 90) fascist: log all packets
uruk_log
uruk6_log
fi
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ip6tables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# workaround bug(?) in linux kernel, see also
# http://serverfault.com/questions/309691/why-is-our-firewall-ubuntu-8-04-rejecting-the-final-packet-fin-ack-psh-wit
# first argument is the flags which we should examine, the second argument is
# the flags which must be set
$iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST FIN,ACK -j ACCEPT
$ip6tables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST FIN,ACK -j ACCEPT
$iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT
$ip6tables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j ACCEPT
uruk_hook "$rc_b"
#
# protect interfaces_public agains spoofing
#
for iface in ${interfaces}
do
#
# don't allow anyone to spoof non-routeable addresses
#
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
# set of all addresses on this (physical) interface
blockips=
blockips6=
# set of all permitted "special" nets for this (physical) interface
eval "blocknet=\$net_${iface}"
eval "blocknet6=\$net6_${iface}"
for iface_x in $interfaces_x
do
eval "ips=\$ip_${iface_x}"
eval "ips6_defined=\${ip6_${iface_x}+DEFINED}"
case $ips6_defined in '')
ips6=$ips
;; *)
eval "ips6=\$ip6_${iface_x}"
esac
eval "net=\$net_${iface_x}"
eval "net6=\$net6_${iface_x}"
blocknet="$blocknet $net"
blocknet6="$blocknet6 $net6"
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
for no_route_ip in $ip4_noroute_ranges
do
case " $net " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$iptables -A INPUT -i $iface -s $no_route_ip -d $ip -j DROP
$iptables -A OUTPUT -o $iface -s $ip -d $no_route_ip -j DROP
esac
done
blockips="$blockips $ip"
esac
done
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
for no_route_ip in $ip6_noroute_ranges
do
case " $net $net6 " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$ip6tables -A INPUT -i $iface -s $no_route_ip -d $ip6 -j DROP
$ip6tables -A OUTPUT -o $iface -s $ip6 -d $no_route_ip -j DROP
esac
done
blockips6="$blockips6 $ip6"
esac
done
done
case $blockips in *[!$IFS][$IFS]*[!$IFS]*)
# in multiple ip mode, we have to drop only if source is
# not _one_ of the nic's IPs
# supporting this for multiple ips would need multiple chains
# or, perhaps, some iptables extension.
# for now, we just block "known bad" addresses
for no_route_ip in $ip4_noroute_ranges
do
case " $blocknet " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$iptables -A INPUT -i $iface -d $no_route_ip -j DROP
$iptables -A OUTPUT -o $iface -s $no_route_ip -j DROP
esac
done
;; *)
# block outgoing packets that don't have our address as source,
# they are either spoofed or something is misconfigured (NAT disabled,
# for instance), we want to be nice and don't send out garbage.
for ip in $blockips
do
# drop all outgoing packets which don't have us as a source
$iptables -A OUTPUT -o $iface ! -s "$ip" -j DROP
# drop all incoming packets which don't have us as destination
$iptables -A INPUT -i $iface ! -d "$ip" -j DROP
done
esac
# in IPv6 we always have a multiple IP mode, because an interface
# always has a link-local address as well
# in multiple ip mode, we have to drop only if source is
# not _one_ of the nic's IPs
# supporting this for multiple ips would need multiple chains
# or, perhaps, some iptables extension.
# for now, we just block "known bad" addresses
for no_route_ip in $ip6_noroute_ranges
do
case " $blocknet $blocknet6 " in *[$IFS]$no_route_ip[$IFS]*) ;; *)
$ip6tables -A INPUT -i $iface -d $no_route_ip -j DROP
$ip6tables -A OUTPUT -o $iface -s $no_route_ip -j DROP
esac
done
# Always allow outgoing connections
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface -j ACCEPT
$ip6tables -A OUTPUT -m conntrack --ctstate NEW -o $iface -j ACCEPT
done
uruk_hook "$rc_c"
#
# allow traffic to offered services, from trusted sources
#
for iface in $interfaces
do
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
# tcp is special
eval "services_defined=\${services_${iface_x}_tcp+DEFINED}"
case $services_defined in '')
cat >&2 <&2 <&2 "WARNING: sources_${iface_x}_${proto}_${service} is undefined. (Processing uruk rc file nevertheless.)"
esac
eval "sources6_defined=\${sources6_${iface_x}_${proto}_${service}+DEFINED}"
eval "sources6=\$sources6_${iface_x}_${proto}_${service}"
case $sources6_defined in '')
eval "sources6=\$sources_${iface_x}_${proto}_${service}"
esac
eval "ports_defined=\${ports_${iface_x}_${proto}_${service}+DEFINED}"
eval "ports=\$ports_${iface_x}_${proto}_${service}"
case $ports_defined in '')
echo >&2 "WARNING: ports_${iface_x}_${proto}_${service} is undefined. (Processing uruk rc file nevertheless.)"
;; *)
for port in $ports
do
# port is e.g. www or 1023
for source in $sources
do
case $source in *:*) ;; *) # if it doesn't look like an IPv6 address/range
# source is e.g. 10.56.0.10/32
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
$iptables \
--append INPUT \
--match conntrack \
--ctstate NEW \
--in-interface $iface \
--protocol $proto \
--source "$source" \
--destination "$ip" \
--destination-port "$port" \
--jump ACCEPT
esac
done
esac
done
for source6 in $sources6
do
case $source6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
$ip6tables \
--append INPUT \
--match conntrack \
--ctstate NEW \
--in-interface $iface \
--protocol $proto \
--source "$source6" \
--destination "$ip6" \
--destination-port "$port" \
--jump ACCEPT
esac
done
esac
done
done
esac
done
esac
done
done
done
uruk_hook "$rc_d"
#
# rc_e: backwards compatibility. should be removed one day.
#
uruk_hook "$rc_e"
#
# Don't answer broadcast and multicast packets
#
for iface in $interfaces_nocast
do
eval "is=\$bcasts_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
eval "bcast=\$bcast_${iface_x}"
$iptables -A INPUT -i $iface -d "$bcast" -j DROP
done
$iptables -A INPUT -i $iface -d 255.255.255.255 -j DROP
done
uruk_hook "$rc_f"
#
# icmp stuff. See RFC 1122 and also RFC 792, RFC 950, RFC 1812, RFC 1349,
# RFC 2474 and Stevens' TCP/IP Illustrated Chapter 6, p 69.
# The icmp types are even in %num2icmp_type in Lire::Firewall.
# Running "iptables -p icmp -h" gives iptables's idea of icmp types
#
#
# By default, we disallow
#
# source-quench
# redirect (
# network-redirect
# host-redirect
# TOS-network-redirect
# TOS-host-redirect
# )
# router-advertisement
# router-solicitation
#
# You might want to allow just
#
# echo-request echo-reply ttl-zero-during-transit \
# ttl-zero-during-reassembly ip-header-bad required-option-missing
#
# This makes pings succeed, as well as traceroute. However
# debugging network problems might be _much_ more difficult when disallowing
# lots of other icmp types. If you really want to do this, use rc_g.
#
for type in \
address-mask-reply \
address-mask-request \
destination-unreachable \
echo-reply \
echo-request \
parameter-problem \
timestamp-reply \
timestamp-request \
ttl-zero-during-reassembly \
ttl-zero-during-transit
do
$iptables -A INPUT -p icmp --icmp-type $type -j ACCEPT
done
# Drop echo replies which have a multicast address as a
# destination. See rfc4890-icmpv6-firewall.sh.
$ip6tables -A INPUT --protocol icmpv6 -d ff00::/8 \
--icmpv6-type echo-reply -j DROP
# See http://www.iana.org/assignments/icmpv6-parameters for ICMPv6 types
# Or run # ip6tables -p ipv6-icmp -h
for type in \
echo-request \
echo-reply \
destination-unreachable \
packet-too-big \
ttl-zero-during-transit \
ttl-zero-during-reassembly \
unknown-header-type \
unknown-option \
bad-header \
redirect \
144 \
145 \
146 \
147 \
router-solicitation \
router-advertisement \
neighbour-solicitation \
neighbour-advertisement \
141 \
142 \
130 \
131 \
132 \
143 \
148 \
149 \
151 \
152 \
153
do
$ip6tables -A INPUT --protocol icmpv6 --icmpv6-type $type -j ACCEPT
done
# Type 144 - Home Agent Address Discovery [RFC3775]
# Type 145 - Home Agent Address Discovery [RFC3775]
# Type 146 - Mobile Prefix Solicitation [RFC3775]
# Type 147 - Mobile Prefix Advertisement [RFC3775]
# We DROP, a.o.:
# Router renumbering messages: 138
# Node information queries (139) and replies (140): 139 140
#
$ip6tables -A INPUT --protocol icmpv6 -j DROP
uruk_hook "$rc_g"
#
# log packets which make it till here: denied packets (not denied broadcasts
# or spoofed stuff). take loglevel into account.
#
if test $loglevel -lt 20
then
# be silent
:
elif test $loglevel -lt 40
then
# log denied packets, targetted at our IPs
# INVALID: The packet is associated with no known connection. See iptables-extensions(8)
# may be due to the system running out of memory or ICMP error messages that do not
# respond to any known connections. It is helpfull to log these with explicitly
# mentioning reason of logging (and dropping).
$iptables -A INPUT -j LOG --log-level debug -m state --state INVALID --log-prefix 'iptables: REASON=invalid '
$ip6tables -A INPUT -j LOG --log-level debug -m state --state INVALID --log-prefix 'ip6tables: REASON=invalid '
for iface in $interfaces
do
eval "is=\$ips_${iface}"
case $is in '')
interfaces_x=$iface
;; *)
interfaces_x=
for i in $is
do
interfaces_x="$interfaces_x ${iface}_$i"
done
esac
for iface_x in $interfaces_x
do
eval "ip=\$ip_${iface_x}"
eval "ips6_defined=\${ip6_${iface_x}+DEFINED}"
case $ips6_defined in '')
ips6=$ips
;; *)
eval "ips6=\$ip6_${iface_x}"
esac
for ip in $ips
do
case $ip in *:*) ;; *) # if it doesn't look like an IPv6 address/range
uruk_log -i $iface -d $ip
esac
done
for ip6 in $ips6
do
case $ip6 in *[!0-9/.]*) # if it doesn't look like an IPv4 address/range
uruk6_log -i $iface -d $ip6
esac
done
done
done
elif test $loglevel -lt 60
then
# 40 < 60 ( 50) medium: log denied non-broadcasts (default)
uruk_log
uruk6_log
fi
# FIXME : yet to implement:
# 60 < 80 ( 70) high: log denied packets
uruk_hook "$rc_h"
#
# reject all others
#
$iptables -A INPUT -j REJECT --reject-with tcp-reset -p tcp
$iptables -A INPUT -j REJECT
# These ip6tables flags are supported since 2.4.5; we don't support older kernels
$ip6tables -A INPUT -j REJECT --reject-with tcp-reset -p tcp
$ip6tables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
uruk_hook "$rc_i"
# make sure we exit 0, even if last test failed
exit 0
uruk-20160219/man/ 0000755 0001750 0001750 00000000000 12661613117 010526 5 0000000 0000000 uruk-20160219/man/Makefile.am 0000644 0001750 0001750 00000004403 12312254645 012503 0000000 0000000 ## Process this file with automake to produce Makefile.in
## this file maintained at http://git.mdcc.cx/uruk.git
## Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
## Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
## Copyright (C) 2003, 2004, 2005 Joost van Baal
## zoem hacks based upon work by Stijn van Dongen.
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
TROFF = groff
COL = col
## Zoem is a an interpretive macro language, for creating mark-up languages, by
## Stijn van Dongen. Information about zoem can be found on the zoem webpage at
## http://micans.org/zoem/ .
ZOEM = zoem
## tidy is a HTML syntax checker and reformatter, available from
## http://www.w3.org/People/Raggett/tidy/ , by Dave Raggett
TIDY = tidy -quiet
## http://w3m.sourceforge.net/
## w3m is a text-based web browser, which can be used as a text formatting tool
## which typesets HTML into plain text.
W3M = w3m
azms = uruk-rc.azm uruk-save.azm uruk.azm urukctl.azm
typetargets = uruk-rc.html uruk-rc.ps uruk-rc.txt \
uruk-save.html uruk-save.ps uruk-save.txt uruk.html uruk.ps uruk.txt \
urukctl.html urukctl.ps urukctl.txt
tmpfiles = uruk-rc.zmt uruk-rc.zmr uruk-save.zmt uruk-save.zmr \
uruk.zmt uruk.zmr urukctl.zmt urukctl.zmr
doc_DATA = $(typetargets) $(azms)
man_MANS = uruk.8 uruk-rc.5 uruk-save.8 urukctl.8
EXTRA_DIST = $(doc_DATA) $(man_MANS)
## DISTCLEANFILES = $(man_MANS) $(typetargets) $(tmpfiles)
VERSION = @PACKAGE_VERSION@
PACKAGE = @PACKAGE_TARNAME@
docdir = $(datadir)/doc/$(PACKAGE)
SUFFIXES = .5 .8 .html .azm .ps .txt
.azm.5:
$(ZOEM) -d roff -i $< -o $@
$(ZOEM) -d roff -i $< -o $@
.azm.8:
$(ZOEM) -d roff -i $< -o $@
$(ZOEM) -d roff -i $< -o $@
.5.ps:
$(TROFF) -man $< > $@
.8.ps:
$(TROFF) -man $< > $@
.azm.html:
$(ZOEM) -d html -i $< -o $@
$(ZOEM) -d html -i $< -o $@
## - $(TIDY) -e $@
## .html.txt:
## $(W3M) -dump $< > $@
## -Tlatin1 causes col to choke
## use -Tuft8 if you really need non-ascii characters
.5.txt:
$(TROFF) -t -e -mandoc -Tascii $< | $(COL) -bxp > $@
.8.txt:
$(TROFF) -t -e -mandoc -Tascii $< | $(COL) -bxp > $@
MAINTAINERCLEANFILES = $(manazms) $(typetargets) $(tmpfiles)
DISTCLEANFILES = $(typetargets)
uruk-20160219/man/Makefile.in 0000644 0001750 0001750 00000043005 12661613102 012507 0000000 0000000 # Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = man
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = include.zmm
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
man5dir = $(mandir)/man5
am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" \
"$(DESTDIR)$(docdir)"
man8dir = $(mandir)/man8
NROFF = nroff
MANS = $(man_MANS)
DATA = $(doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/include.zmm.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE_TARNAME@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @PACKAGE_VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = $(datadir)/doc/$(PACKAGE)
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
TROFF = groff
COL = col
ZOEM = zoem
TIDY = tidy -quiet
W3M = w3m
azms = uruk-rc.azm uruk-save.azm uruk.azm urukctl.azm
typetargets = uruk-rc.html uruk-rc.ps uruk-rc.txt \
uruk-save.html uruk-save.ps uruk-save.txt uruk.html uruk.ps uruk.txt \
urukctl.html urukctl.ps urukctl.txt
tmpfiles = uruk-rc.zmt uruk-rc.zmr uruk-save.zmt uruk-save.zmr \
uruk.zmt uruk.zmr urukctl.zmt urukctl.zmr
doc_DATA = $(typetargets) $(azms)
man_MANS = uruk.8 uruk-rc.5 uruk-save.8 urukctl.8
EXTRA_DIST = $(doc_DATA) $(man_MANS)
SUFFIXES = .5 .8 .html .azm .ps .txt
MAINTAINERCLEANFILES = $(manazms) $(typetargets) $(tmpfiles)
DISTCLEANFILES = $(typetargets)
all: all-am
.SUFFIXES:
.SUFFIXES: .5 .8 .html .azm .ps .txt
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu man/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
include.zmm: $(top_builddir)/config.status $(srcdir)/include.zmm.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-man5: $(man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
list2='$(man_MANS)'; \
test -n "$(man5dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.5[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
done; }
uninstall-man5:
@$(NORMAL_UNINSTALL)
@list=''; test -n "$(man5dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.5[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
install-man8: $(man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
list2='$(man_MANS)'; \
test -n "$(man8dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.8[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
done; }
uninstall-man8:
@$(NORMAL_UNINSTALL)
@list=''; test -n "$(man8dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.8[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
install-docDATA: $(doc_DATA)
@$(NORMAL_INSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-docDATA:
@$(NORMAL_UNINSTALL)
@list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(MANS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-docDATA install-man
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man: install-man5 install-man8
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-docDATA uninstall-man
uninstall-man: uninstall-man5 uninstall-man8
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-docDATA install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-man5 \
install-man8 install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \
uninstall uninstall-am uninstall-docDATA uninstall-man \
uninstall-man5 uninstall-man8
.PRECIOUS: Makefile
.azm.5:
$(ZOEM) -d roff -i $< -o $@
$(ZOEM) -d roff -i $< -o $@
.azm.8:
$(ZOEM) -d roff -i $< -o $@
$(ZOEM) -d roff -i $< -o $@
.5.ps:
$(TROFF) -man $< > $@
.8.ps:
$(TROFF) -man $< > $@
.azm.html:
$(ZOEM) -d html -i $< -o $@
$(ZOEM) -d html -i $< -o $@
.5.txt:
$(TROFF) -t -e -mandoc -Tascii $< | $(COL) -bxp > $@
.8.txt:
$(TROFF) -t -e -mandoc -Tascii $< | $(COL) -bxp > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
uruk-20160219/man/include.zmm.in 0000644 0001750 0001750 00000004176 12200455502 013222 0000000 0000000 \: this file maintained at http://git.mdcc.cx/uruk.git
\: This file is free software; you can distribute it and/or modify it
\: under the terms of the GNU GPL. See the file COPYING.
\:
\: based upon mac/zoem.zmm in the zoem sources and man/include.zmm.in in the
\: draai sources.
\: Copyright (C) 2003, 2004, 2005 Joost van Baal,
\: Copyright (C) 2002, 2003, 2011 Stijn van Dongen
\setx{"man::year"}{\zinsert{@top_srcdir@/stamp.year}}
\setx{"man::month"}{\zinsert{@top_srcdir@/stamp.month}}
\setx{"man::day"}{\zinsert{@top_srcdir@/stamp.day}}
\setx{"man::tag"}{\zinsert{@top_srcdir@/VERSION}}
\setx{"man::year"}{\tr{{delete}{[:space:]}}{\"man::year"}}
\setx{"man::month"}{\tr{{delete}{[:space:]}}{\"man::month"}}
\setx{"man::day"}{\tr{{delete}{[:space:]}}{\"man::day"}}
\setx{"man::tag"}{\tr{{delete}{[:space:]}}{\"man::tag"}}
\set{"man::author"}{Joost van Baal-Ilić }
\setx{man_share}{
{year} {\"man::year"}
{month} {\"man::month"}
{day} {\"man::day"}
{tag} {\"man::tag"}
{author} {\"man::author"}
{synstyle}{long}
{defstyle}{long}
}
\def{uruk}{\bf{uruk}}
\def{uruk_save}{\bf{uruk-save}}
\def{urukctl}{\bf{urukctl}}
\def{rc}{\it{rc}}
\def{sbinpath}{/sbin}
\def{sysconfpath}{/etc}
\def{rcpath}{/etc/uruk/rc}
\def{statepath}{/var/lib/uruk}
\def{initpath}{/etc/init.d/uruk}
\def{expath}{/usr/share/doc/uruk/examples/rc}
\def{defpath}{/usr/share/doc/uruk/examples/default}
\def{ttrcpath}{\tt{\rcpath}}
\def{ttinitpath}{\tt{\initpath}}
\def{ttexpath}{\tt{\expath}}
\def{gplheader}{
\par{
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
} \par{
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
} \par{
You should have received a copy of the GNU General Public License along
with this program. If not, see \httpref{http://www.gnu.org/licenses/}.
}
}
uruk-20160219/man/uruk-rc.html 0000644 0001750 0001750 00000046670 12535264244 012744 0000000 0000000
Uruk rc file
8 Jun 2015
uruk-rc
20150608
NAME
uruk-rc — uruk resource file, defining access policy
SYNOPSIS
/etc/uruk/rc
DESCRIPTION
rc is a shell script snippet, sourced in uruk by /bin/sh.
rc lists IP addresses, allowed to use services.
EXAMPLES
default
The simplest valid rc file is the empty file. This rc file blocks all TCP
and UDP connection attempts to services on our host: this is the default
behaviour.
simplest
The simplest rc file which does allow traffic to our services looks like e.g.:
interfaces=eth0
ips_eth0=default
ip_eth0_default=192.168.26.27
net_eth0_default=192.168.0.0/16
ip6_eth0_default=2001:db8::1/64
net6_eth0_default=2001:db8::/32
services_eth0_default_tcp=local
ports_eth0_default_tcp_local="0:65535"
sources_eth0_default_tcp_local="0.0.0.0/0 ::/0"
services_eth0_default_udp=local
ports_eth0_default_udp_local="0:65535"
sources_eth0_default_udp_local="0.0.0.0/0"
This rc file allows all IPv4 and IPv6 UDP and TCP traffic from publicly routable IPs to
eth0's IP.
realistic
If you'd like to block traffic on wlan0 and allow traffic to ssh on your
wired interface, and don't like to explicitly set your IPs in rc:
# list of interfaces you'd like uruk to protect
interfaces=eth0 wlan0
# set variables ip{,6}_eth0_default and net{,6}_eth0_default
. /lib/uruk/init/autodetect-ips
# names for eth0's 2 IPv4 addresses
ips_eth0="default dhcp"
# allow access to our sshd on eth0's primary IP on tcp port 443
# from anywhere
services_eth0_default_tcp=ssh
ports_eth0_default_tcp_ssh=443
sources_eth0_default_tcp_ssh="0.0.0.0/0 ::/0"
# we get a static IPv4 via dhcp
ip_eth0_dhcp=10.0.0.3
net_eth0_dhcp=10./8
services_eth0_dhcp_tcp=http
ports_eth0_dhcp_tcp_http=http
sources_eth0_dhcp_tcp_http=$net_eth0_dhcp
# we leave services_wlan0_default_{tcp,udp} unset: don't allow any
# incoming connections on wlan0's default IP
autodetect-ips
The script autodetect-ips --as used in the previous example-- looks for files
/etc/sysconfig/network-scripts/ifcfg-* (commonly found at e.g. Red Hat and
Fedora systems) and /etc/network/interfaces (as found at e.g. Debian and Ubuntu
systems), and, for each interface nic, and each found IPv4 and IPv6
address and network, sets variables ip_nic_default,
ip6_nic_default, net_nic_default and
net6_nic_default . Then it calls ip(8) and adds any other found
nic, ip and net triplets (for IPv4 and, for IPv6, only addresses
in scope "global").
The script autodetect-ips is useful if you'd like to share your rc file among
different hosts.
another example
For an even more reasonable rc file, look at the well-commented example rc
file in /usr/share/doc/uruk/examples/rc.
IPv4 AND IPv6
You can mix IPv4 and IPv6-addresses in sources_*. E.g.:
ips_eth0='default private'
ip_eth0_default=1.2.3.4
ip6_eth0_default=
services_eth0_default_tcp='mail local'
sources_eth0_default_tcp_mail='10.0.0.0/24 192.0.32.0/24 192.168.6.26'
sources_eth0_default_tcp_local='192.0.32.0/24 svejk.example.com 2001:db8::/32'
ports_eth0_default_tcp_mail=smtp
ports_eth0_default_tcp_local='ssh ftp'
If svejk.example.com has both an IPv4 PTR record in DNS, as well as
an IPv6 PTR record, connection attempts from svejk to the ssh and ftp
TCP ports are allowed, via both IPv4 and IPv6.
Uruk used to require variables sources6_* to be set to support ip6tables.
Since uruk version 20140319 (The Alfama Release), this is no longer needed;
setting sources_* suffices. To be precise, the semantics since uruk version
20140319 is: 1) If both sources_* and sources6_* are defined (even if they're
just empty), each is used for its respective address family. (This ensures
backwards compatibility.) 2) If sources6_* is undefined, sources_* is used for
both v4 and v6. 3) In either case, v4 literals in v6 context and v6 literals
in v4 context are silently (!) ignored.
HOOKS
Uruk offers hooks for inserting your own code between iptables invocations.
Examples will show the usefulness of these hooks.
allowing broadcasts
In rc, there is:
rc_b=$etcdir/bootp
while the file bootp reads
iptables —A INPUT —m state ——state NEW —i eth0 \
——protocol udp ——destination-port bootps —j ACCEPT
.
This enables one to add rules for packets with broadcast addresses in their
destination. (Uruk has no support for this in its regular rc.)
allowing non-matching returntraffic
In rc there is:
rc_d=$etcdir/dns
while the file dns reads
for source in 10.5.0.27 10.56.0.40
do
$iptables -A INPUT -i eth0 --protocol udp \
--source "$source" --source-port domain \
--destination "$ip_eth0" \
--destination-port 30000: -j ACCEPT
done
This allows one to allow (return)traffic, disregarding the state. (Uruk has no
support for this in its regular rc.)
allowing NAT
In rc there is:
rc_a=${etcdir}/nat
while the file nat reads
$iptables -t nat -A POSTROUTING \
--out-interface eth0 -j SNAT \
--to-source $ip_eth0
This allows Network Address Translation. However, beware! Like all extensive
use of hooks, this will break the uruk-save script. If you make sure your
active iptables rules are wiped, and invoke uruk manually to load new rules,
you're safe. Using the init script with its default settings is safe too.
allowing IPv6 tunneling
In rc there is:
rc_b=${etcdir}/proto_41
while the file proto_41 reads
$iptables -A INPUT -i ppp0 --protocol 41 --destination $ip_ppp0 -j ACCEPT
This allows IP protocol 41, typically used for this kind of tunneling.
allowing any traffic on an interface
In rc there is:
interfaces_unprotect="lo eth2"
This allows any traffic on eth2 (and on lo, the default), including
any ICMP packets and packets from any source address.
using multiple hooks at one entry point in the main uruk process
In case rc_a, rc_b, ... , or rc_i does not have a file as its value, but a
directory, all files matching "$rc_x"/*.rc will get sourced. This helps
configuration management in complex situations involving lots of uruk
configuration files for lots of hosts.
See the section "THE GORY DETAILS: uruk INTERNALS" in uruk(8)
(or the uruk source) to find out which hook (there are hooks rc_a, rc_b, ... ,
rc_i) to use.
NETWORK INTERFACES WITH MULTIPLE IP ADDRESSES
Uruk supports situations where a network interface has more than one IP address
attached. Variables ips_nic and bcasts_nic are used for
this.
If ips_nic is set, e.g. like
ips_eth0="ip0 ip1 ip2"
we assume multiple (three in this example) IPs are assigned to eth0. If
this variable is not set only one IP is supported on eth0.
In multiple-IP mode, IP addresses are listed as e.g.
ip_eth0_ip0="137.56.247.16"
(If you're used to the Linux ifconfig(8) output, you could use the name ip
for eth0, and ip0 for eth0:0.)
The ports, services and sources variables look like
e.g.
services_eth0_ip2_tcp=local
ports_eth0_ip2_tcp_local=smtp
sources_eth0_ip2_tcp_local=$localnet
and, similarly,
net_eth0_ip1=192.168.0.0/16
Furthermore, for dropping broadcast packets, specify e.g.
bcasts_eth0="ip0 ip2" # yes, possibly a subset of ips_eth0
bcast_eth0_ip0="10.0.0.255"
bcast_eth0_ip2="10.0.255.255"
As an additional feature, if you have multiple IP addresses that all need
to get the same rules, you can assign them to a single name:
ip_eth0_ip0="137.56.247.16 137.56.247.17 137.56.247.18"
LOGGING AND DEBUGGING
Uruk has support for logging network packets, and for debugging the uruk
script.
Logging
By default, uruk logs denied packets. This is adjustable using the
loglevel variable. The settings are:
"zero": be silent; do not log any packet. rc file features loglevel=10.
"low": log denied packets, which are targeted at one of our IPs.
rc file features loglevel=30.
"medium": log denied non-broadcast packets. This is the default:
loglevel is unset or rc file features loglevel=50.
"fascist": log all packets. rc file features loglevel=90.
Debugging
To debug the uruk script, invoke uruk as
sh -x /sbin/uruk
this shows what is done, along with executing it. (Like an uruk '-v' option.)
If you'd rather prefer not to execute, but just watch what would've been done,
invoke uruk as
URUK_IPTABLES='echo iptables' URUK_IP6TABLES='echo ip6tables' uruk
(Like an uruk '-n' option.) If you have this statement set, you can run uruk
under a non-priviliged user account.
If you'd like to test a new rc file before installing it, run something like:
URUK_CONFIG=/path/to/new/uruk/rc/file uruk
Of course, all these tweaks can be combined.
VARIABLES
The uruk script honors the following variables in rc files:
"version" Uruk version compatibility of this rc file
"loglevel"
"iptables" Full pathname of iptables executable.
"ip6tables" Full pathname of ip6tables executable.
"interfaces" List of network interfaces.
More variables are available. For now, you'll have to take a look at the
example rc file in /usr/share/doc/uruk/examples/rc for more details.
ENVIRONMENT VARIABLES
See uruk(8) for a list of honored environment variables.
FILES
/etc/uruk/rc
SEE ALSO
A well-commented example rc file is in /usr/share/doc/uruk/examples/rc.
And see uruk(8), uruk-save(8).
COPYRIGHT
Copyright (C) 2005, 2007, 2008, 2010, 2011, 2012, 2013 Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
uruk-20160219/man/uruk-rc.ps 0000644 0001750 0001750 00000062153 12535264244 012414 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Mon Jun 8 12:04:20 2015
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Courier
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.22 3
%%Pages: 6
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.22 3
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F/F1 10.95/Times-Bold@0 SF -.219(NA)20 84
S(ME).219 E F0
(uruk-rc \255 uruk resource \214le, de\214ning access polic)100 96 Q(y)
-.15 E F1(SYNOPSIS)20 112.8 Q/F2 10/Courier@0 SF(/etc/uruk/rc)100 124.8
Q F1(DESCRIPTION)20 141.6 Q/F3 10/Times-Italic@0 SF -.37(rc)100 153.6 S
F0(is a shell script snippet, sourced in)2.87 E/F4 10/Times-Bold@0 SF
(uruk)2.5 E F0(by /bin/sh.)2.5 E F3 -.37(rc)100 177.6 S F0
(lists IP addresses, allo)2.87 E(wed to use services.)-.25 E F1
(EXAMPLES)20 194.4 Q F4(default)100 206.4 Q F0 1.51(The simplest v)100
218.4 R(alid)-.25 E F3 -.37(rc)4.01 G F0 1.51
(\214le is the empty \214le. This)4.38 F F3 -.37(rc)4.009 G F0 1.509
(\214le blocks all TCP and UDP connection)4.379 F
(attempts to services on our host: this is the def)100 230.4 Q
(ault beha)-.1 E(viour.)-.2 E F4(simplest)100 254.4 Q F0(The simplest)
100 266.4 Q F3 -.37(rc)2.5 G F0(\214le which does allo)2.87 E 2.5(wt)
-.25 G(raf)-2.5 E(\214c to our services looks lik)-.25 E 2.5(ee)-.1 G
(.g.:)-2.5 E F2(interfaces=eth0)106 290.4 Q(ips_eth0=default)106 314.4 Q
(ip_eth0_default=192.168.26.27)106 326.4 Q
(net_eth0_default=192.168.0.0/16)106 338.4 Q
(ip6_eth0_default=2001:db8::1/64)106 362.4 Q
(net6_eth0_default=2001:db8::/32)106 374.4 Q
(services_eth0_default_tcp=local)106 398.4 Q
(ports_eth0_default_tcp_local="0:65535")106 410.4 Q
(sources_eth0_default_tcp_local="0.0.0.0/0 ::/0")106 422.4 Q
(services_eth0_default_udp=local)106 446.4 Q
(ports_eth0_default_udp_local="0:65535")106 458.4 Q
(sources_eth0_default_udp_local="0.0.0.0/0")106 470.4 Q F0(This)100
494.4 Q F3 -.37(rc)3.267 G F0 .767(\214le allo)3.637 F .768
(ws all IPv4 and IPv6 UDP and TCP traf)-.25 F .768
(\214c from publicly routable IPs to eth0')-.25 F(s)-.55 E(IP.)100 506.4
Q F4 -.18(re)100 530.4 S(alistic).18 E F0 .339(If you')100 542.4 R 2.839
(dl)-.5 G(ik)-2.839 E 2.839(et)-.1 G 2.839(ob)-2.839 G .339(lock traf)
-2.839 F .338(\214c on wlan0 and allo)-.25 F 2.838(wt)-.25 G(raf)-2.838
E .338(\214c to ssh on your wired interf)-.25 F .338(ace, and don')-.1 F
(t)-.18 E(lik)100 554.4 Q 2.5(et)-.1 G 2.5(oe)-2.5 G
(xplicitly set your IPs in)-2.65 E F3 -.37(rc)2.5 G F0(:).37 E
(uruk-rc 20150608)20 768 Q 2.5(8J)140.125 G(un 2015)-2.5 E(1)207.055 E 0
Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F/F1 10/Courier@0 SF 6(#l)106 84 S
(ist of interfaces you'd like uruk to protect)-6 E
(interfaces=eth0 wlan0)106 96 Q 6(#s)106 120 S
(et variables ip{,6}_eth0_default and net{,6}_eth0_default)-6 E 6(./)106
132 S(lib/uruk/init/autodetect-ips)-6 E 6(#n)106 156 S
(ames for eth0's 2 IPv4 addresses)-6 E(ips_eth0="default dhcp")106 168 Q
6(#a)106 192 S
(llow access to our sshd on eth0's primary IP on tcp port 443)-6 E 6(#f)
106 204 S(rom anywhere)-6 E(services_eth0_default_tcp=ssh)106 216 Q
(ports_eth0_default_tcp_ssh=443)106 228 Q
(sources_eth0_default_tcp_ssh="0.0.0.0/0 ::/0")106 240 Q 6(#w)106 264 S
6(eg)-6 G(et a static IPv4 via dhcp)-6 E(ip_eth0_dhcp=10.0.0.3)106 276 Q
(net_eth0_dhcp=10./8)106 288 Q(services_eth0_dhcp_tcp=http)106 312 Q
(ports_eth0_dhcp_tcp_http=http)106 324 Q
(sources_eth0_dhcp_tcp_http=$net_eth0_dhcp)106 336 Q 6(#w)106 360 S 6
(el)-6 G(eave services_wlan0_default_{tcp,udp} unset: don't allow any)-6
E 6(#i)106 372 S(ncoming connections on wlan0's default IP)-6 E/F2 10
/Times-Bold@0 SF(autodetect-ips)100 396 Q F0 1.075
(The script autodetect-ips --as used in the pre)100 408 R 1.075(vious e)
-.25 F 1.075(xample-- looks for \214les /etc/syscon\214g/net-)-.15 F -.1
(wo)100 420 S 3.141(rk-scripts/ifcfg-* \(commonly found at e.g. Red Hat\
and Fedora systems\) and /etc/net-).1 F -.1(wo)100 432 S(rk/interf).1 E
.912(aces \(as found at e.g. Debian and Ub)-.1 F .912
(untu systems\), and, for each interf)-.2 F(ace)-.1 E/F3 10
/Times-Italic@0 SF(nic)3.413 E F0 3.413(,a)C(nd)-3.413 E 5.796
(each found IPv4 and IPv6 address and netw)100 444 R 5.796(ork, sets v)
-.1 F(ariables)-.25 E F1(ip_)8.296 E F3(nic)A F1(_default)A F0(,)A F1
(ip6_)100 456 Q F3(nic)A F1(_default)A F0(,)A F1(net_)3.508 E F3(nic)A
F1(_default)A F0(and)3.509 E F1(net6_)3.509 E F3(nic)A F1(_default)A F0
3.509(.T)3.509 G 1.009(hen it calls ip\(8\) and)-3.509 F .679(adds an)
100 468 R 3.179(yo)-.15 G .679(ther found)-3.179 F F3(nic)3.179 E F0(,)A
F1(ip)3.179 E F0(and)3.179 E F1(net)3.179 E F0 .679
(triplets \(for IPv4 and, for IPv6, only addresses in scope)3.179 F
("global"\).)100 480 Q(The script autodetect-ips is useful if you')100
504 Q 2.5(dl)-.5 G(ik)-2.5 E 2.5(et)-.1 G 2.5(os)-2.5 G(hare your)-2.5 E
F3 -.37(rc)2.5 G F0(\214le among dif)2.87 E(ferent hosts.)-.25 E F2
(another example)100 528 Q F0 -.15(Fo)100 540 S 6.65(ra).15 G 6.65(ne)
-6.65 G -.15(ve)-6.9 G 6.65(nm).15 G 4.15(ore reasonable)-6.65 F F3 -.37
(rc)6.651 G F0 4.151(\214le, look at the well-commented e)7.021 F
(xample)-.15 E F3 -.37(rc)6.651 G F0 4.151(\214le in)7.021 F F1
(/usr/share/doc/uruk/examples/rc)100 552 Q F0(.)A/F4 10.95/Times-Bold@0
SF(IPv4 AND IPv6)20 568.8 Q F0 -1.1(Yo)100 580.8 S 2.5(uc)1.1 G
(an mix IPv4 and IPv6-addresses in sources_*. E.g.:)-2.5 E
(uruk-rc 20150608)20 768 Q 2.5(8J)140.125 G(un 2015)-2.5 E(2)207.055 E 0
Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F/F1 10/Courier@0 SF
(ips_eth0='default private')106 84 Q(ip_eth0_default=1.2.3.4)106 96 Q
(ip6_eth0_default=)106 108 Q(services_eth0_default_tcp='mail local')106
132 Q
(sources_eth0_default_tcp_mail='10.0.0.0/24 192.0.32.0/24 192.168.6.26')
106 156 Q(sources_eth0_default_tcp_local='192.0.32.0/24 svejk.example.c\
om 2001:db8::/32')106 168 Q(ports_eth0_default_tcp_mail=smtp)106 192 Q
(ports_eth0_default_tcp_local='ssh ftp')106 204 Q F0 .116(If sv)100 228
R(ejk.e)-.15 E .116(xample.com has both an IPv4 PTR record in DNS, as w\
ell as an IPv6 PTR record, con-)-.15 F(nection attempts from sv)100 240
Q(ejk to the ssh and ftp TCP ports are allo)-.15 E
(wed, via both IPv4 and IPv6.)-.25 E 1.437(Uruk used to require v)100
264 R 1.437(ariables sources6_* to be set to support ip6tables.)-.25 F
1.438(Since uruk v)6.437 F(ersion)-.15 E .302(20140319 \(The Alf)100 276
R .301(ama Release\), this is no longer needed; setting sources_* suf)
-.1 F .301(\214ces. T)-.25 F 2.801(ob)-.8 G 2.801(ep)-2.801 G(re-)-2.801
E 1.519(cise, the semantics since uruk v)100 288 R 1.519
(ersion 20140319 is: 1\) If both sources_* and sources6_* are)-.15 F
.402(de\214ned \(e)100 300 R -.15(ve)-.25 G 2.902(ni).15 G 2.902(ft)
-2.902 G(he)-2.902 E(y')-.15 E .401
(re just empty\), each is used for its respecti)-.5 F .701 -.15(ve a)
-.25 H .401(ddress f).15 F .401(amily. \(This ensures)-.1 F(backw)100
312 Q .025(ards compatibility.\) 2\) If sources6_* is unde\214ned, sour\
ces_* is used for both v4 and v6. 3\))-.1 F
(In either case, v4 literals in v6 conte)100 324 Q
(xt and v6 literals in v4 conte)-.15 E(xt are silently \(!\) ignored.)
-.15 E/F2 10.95/Times-Bold@0 SF(HOOKS)20 340.8 Q F0 1.643(Uruk of)100
352.8 R 1.643(fers hooks for inserting your o)-.25 F 1.642
(wn code between iptables in)-.25 F -.2(vo)-.4 G 4.142
(cations. Examples).2 F(will)4.142 E(sho)100 364.8 Q 2.5(wt)-.25 G
(he usefulness of these hooks.)-2.5 E/F3 10/Times-Bold@0 SF(allo)100
388.8 Q(wing br)-.1 E(oadcasts)-.18 E F0(In)100 400.8 Q/F4 10
/Times-Italic@0 SF -.37(rc)2.5 G F0 2.5(,t).37 G(here is:)-2.5 E F1
(rc_b=$etcdir/bootp)106 424.8 Q F0(while the \214le)100 448.8 Q F1
(bootp)2.5 E F0(reads)2.5 E F1
(iptables \255A INPUT \255m state \255\255state NEW \255i eth0 \\)106
472.8 Q
(\255\255protocol udp \255\255destination-port bootps \255j ACCEPT)118
484.8 Q F0 5.618(.T)100 508.8 S .618
(his enables one to add rules for pack)-5.618 F .619
(ets with broadcast addresses in their destination. \(Uruk)-.1 F
(has no support for this in its re)100 520.8 Q(gular)-.15 E F4 -.37(rc)
2.5 G F0(.\)).37 E F3(allo)100 544.8 Q(wing non-matching r)-.1 E(etur)
-.18 E(ntraf\214c)-.15 E F0(In)100 556.8 Q F4 -.37(rc)2.5 G F0
(there is:)2.87 E F1(rc_d=$etcdir/dns)106 580.8 Q F0(while the \214le)
100 604.8 Q F1(dns)2.5 E F0(reads)2.5 E F1
(for source in 10.5.0.27 10.56.0.40)112 628.8 Q(do)112 640.8 Q
($iptables -A INPUT -i eth0 --protocol udp \\)124 652.8 Q
(--source "$source" --source-port domain \\)136 664.8 Q
(--destination "$ip_eth0" \\)136 676.8 Q
(--destination-port 30000: -j ACCEPT)136 688.8 Q(done)112 700.8 Q F0
.007(This allo)100 724.8 R .007(ws one to allo)-.25 F 2.507(w\()-.25 G
(return\)traf)-2.507 E .007(\214c, disre)-.25 F -.05(ga)-.15 G .007
(rding the state. \(Uruk has no support for this in its).05 F
(uruk-rc 20150608)20 768 Q 2.5(8J)140.125 G(un 2015)-2.5 E(3)207.055 E 0
Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F(re)100 84 Q(gular)-.15 E/F1 10
/Times-Italic@0 SF -.37(rc)2.5 G F0(.\)).37 E/F2 10/Times-Bold@0 SF
(allo)100 108 Q(wing N)-.1 E -.95(AT)-.2 G F0(In)100 120 Q F1 -.37(rc)
2.5 G F0(there is:)2.87 E/F3 10/Courier@0 SF(rc_a=${etcdir}/nat)106 144
Q F0(while the \214le)100 168 Q F3(nat)2.5 E F0(reads)2.5 E F3
($iptables -t nat -A POSTROUTING \\)112 192 Q
(--out-interface eth0 -j SNAT \\)124 204 Q(--to-source $ip_eth0)124 216
Q F0 1.295(This allo)100 240 R 1.295(ws Netw)-.25 F 1.296(ork Address T)
-.1 F 1.296(ranslation. Ho)-.35 F(we)-.25 E -.15(ve)-.25 G 2.096 -.4
(r, b).15 H -2.1 -.25(ew a).4 H 1.296(re! Lik).25 F 3.796(ea)-.1 G 1.296
(ll e)-3.796 F(xtensi)-.15 E 1.596 -.15(ve u)-.25 H 1.296(se of hooks,)
.15 F .662(this will break the)100 252 R F2(uruk-sa)3.162 E -.1(ve)-.25
G F0 .661(script. If you mak)3.261 F 3.161(es)-.1 G .661(ure your acti)
-3.161 F .961 -.15(ve i)-.25 H .661(ptables rules are wiped, and).15 F
(in)100 264 Q -.2(vo)-.4 G -.1(ke).2 G F2(uruk)3.511 E F0 .911
(manually to load ne)3.411 F 3.411(wr)-.25 G .911(ules, you')-3.411 F
.911(re safe. Using the init script with its def)-.5 F .912(ault set-)
-.1 F(tings is safe too.)100 276 Q F2(allo)100 300 Q
(wing IPv6 tunneling)-.1 E F0(In)100 312 Q F1 -.37(rc)2.5 G F0
(there is:)2.87 E F3(rc_b=${etcdir}/proto_41)106 336 Q F0
(while the \214le)100 360 Q F3(proto_41)2.5 E F0(reads)2.5 E F3($iptabl\
es -A INPUT -i ppp0 --protocol 41 --destination $ip_ppp0 -j ACCEPT)106
384 Q F0(This allo)100 408 Q
(ws IP protocol 41, typically used for this kind of tunneling.)-.25 E F2
(allo)100 432 Q(wing any traf\214c on an interface)-.1 E F0(In)100 444 Q
F1 -.37(rc)2.5 G F0(there is:)2.87 E F3(interfaces_unprotect="lo eth2")
106 468 Q F0 .087(This allo)100 492 R .087(ws an)-.25 F 2.587(yt)-.15 G
(raf)-2.587 E .087(\214c on)-.25 F F3(eth2)2.587 E F0 .087(\(and on)
2.587 F F3(lo)2.587 E F0 2.587(,t)C .087(he def)-2.587 F .087
(ault\), including an)-.1 F 2.587(yI)-.15 G .087(CMP pack)-2.587 F .086
(ets and pack-)-.1 F(ets from an)100 504 Q 2.5(ys)-.15 G(ource address.)
-2.5 E F2(using multiple hooks at one entry point in the main uruk pr)
100 528 Q(ocess)-.18 E F0 .414
(In case rc_a, rc_b, ... , or rc_i does not ha)100 540 R .714 -.15
(ve a \214)-.2 H .414(le as its v).15 F .414(alue, b)-.25 F .414
(ut a directory)-.2 F 2.914(,a)-.65 G .414(ll \214les matching)-2.914 F
2.891("$rc_x"/*.rc will get sourced. This helps con\214guration managem\
ent in comple)100 552 R 5.391(xs)-.15 G(ituations)-5.391 E(in)100 564 Q
-.2(vo)-.4 G
(lving lots of uruk con\214guration \214les for lots of hosts.).2 E .208
(See the section "THE GOR)100 588 R 2.708(YD)-.65 G(ET)-2.708 E .208
(AILS: uruk INTERN)-.93 F .209(ALS" in)-.35 F F2(uruk\(8\))2.709 E F0
.209(\(or the)2.709 F F2(uruk)2.709 E F0 .209(source\) to)2.709 F(\214n\
d out which hook \(there are hooks rc_a, rc_b, ... , rc_i\) to use.)100
600 Q/F4 10.95/Times-Bold@0 SF(NETW)20 616.8 Q(ORK INTERF)-.11 E -.602
(AC)-.986 G(ES WITH MUL).602 E(TIPLE IP ADDRESSES)-1.007 E F0 .255
(Uruk supports situations where a netw)100 628.8 R .255(ork interf)-.1 F
.255(ace has more than one IP address attached. V)-.1 F(ari-)-1.11 E
(ables)100 640.8 Q F3(ips_)2.5 E F1(nic)A F0(and)2.5 E F3(bcasts_)2.5 E
F1(nic)A F0(are used for this.)2.5 E(If)100 664.8 Q F3(ips_)2.5 E F1
(nic)A F0(is set, e.g. lik)2.5 E(e)-.1 E F3(ips_eth0="ip0 ip1 ip2")106
688.8 Q F0 .653(we assume multiple \(three in this e)100 712.8 R .653
(xample\) IPs are assigned to)-.15 F F3(eth0)3.154 E F0 3.154(.I)C 3.154
(ft)-3.154 G .654(his v)-3.154 F .654(ariable is not set)-.25 F
(only one IP is supported on)100 724.8 Q F3(eth0)2.5 E F0(.)A
(uruk-rc 20150608)20 768 Q 2.5(8J)140.125 G(un 2015)-2.5 E(4)207.055 E 0
Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F
(In multiple-IP mode, IP addresses are listed as e.g.)100 84 Q/F1 10
/Courier@0 SF(ip_eth0_ip0="137.56.247.16")106 108 Q F0 .579(\(If you')
100 132 R .578
(re used to the Linux ifcon\214g\(8\) output, you could use the name)-.5
F F1(ip)3.078 E F0(for)3.078 E F1(eth0)3.078 E F0 3.078(,a)C(nd)-3.078 E
F1(ip0)3.078 E F0(for)100 144 Q F1(eth0:0)2.5 E F0 2.5(.\) The)B/F2 10
/Times-Italic@0 SF(ports)2.5 E F0(,)A F2(services)2.5 E F0(and)2.5 E F2
(sour)2.5 E(ces)-.37 E F0 -.25(va)2.5 G(riables look lik).25 E 2.5(ee)
-.1 G(.g.)-2.5 E F1(services_eth0_ip2_tcp=local)106 168 Q
(ports_eth0_ip2_tcp_local=smtp)106 180 Q
(sources_eth0_ip2_tcp_local=$localnet)106 192 Q F0(and, similarly)100
216 Q(,)-.65 E F1(net_eth0_ip1=192.168.0.0/16)106 240 Q F0
(Furthermore, for dropping broadcast pack)100 264 Q(ets, specify e.g.)
-.1 E F1(bcasts_eth0="ip0 ip2")106 288 Q 6(#y)30 G
(es, possibly a subset of ips_eth0)-6 E(bcast_eth0_ip0="10.0.0.255")106
300 Q(bcast_eth0_ip2="10.0.255.255")106 312 Q F0 .936
(As an additional feature, if you ha)100 336 R 1.236 -.15(ve m)-.2 H
.936(ultiple IP addresses that all need to get the same rules,).15 F
(you can assign them to a single name:)100 348 Q F1
(ip_eth0_ip0="137.56.247.16 137.56.247.17 137.56.247.18")106 372 Q/F3
10.95/Times-Bold@0 SF(LOGGING AND DEB)20 400.8 Q(UGGING)-.11 E F0
(Uruk has support for logging netw)100 412.8 Q(ork pack)-.1 E
(ets, and for deb)-.1 E(ugging the uruk script.)-.2 E/F4 10/Times-Bold@0
SF(Logging)100 436.8 Q F0 .446(By def)100 448.8 R .446
(ault, uruk logs denied pack)-.1 F .446
(ets. This is adjustable using the)-.1 F F2(lo)2.945 E(gle)-.1 E(vel)
-.15 E F0 -.25(va)2.945 G .445(riable. The settings).25 F(are:)100 460.8
Q<83>100 484.8 Q("zero": be silent; do not log an)120 496.8 Q 2.5(yp)
-.15 G(ack)-2.5 E(et.)-.1 E F2 -.37(rc)2.5 G F0(\214le features)2.87 E
F1(loglevel=10)2.5 E F0(.)A<83>100 508.8 Q("lo)120 520.8 Q 3.807
(w": log denied pack)-.25 F 3.808(ets, which are tar)-.1 F 3.808
(geted at one of our IPs.)-.18 F F2 -.37(rc)8.808 G F0 3.808
(\214le features)6.678 F F1(loglevel=30)120 532.8 Q F0(.)A<83>100 544.8
Q .388("medium": log denied non-broadcast pack)120 556.8 R .387
(ets. This is the def)-.1 F(ault:)-.1 E F2(lo)2.887 E(gle)-.1 E(vel)-.15
E F0 .387(is unset or)2.887 F F2 -.37(rc)2.887 G F0(\214le)3.257 E
(features)120 568.8 Q F1(loglevel=50)2.5 E F0(.)A<83>100 580.8 Q("f)120
592.8 Q(ascist": log all pack)-.1 E(ets.)-.1 E F2 -.37(rc)2.5 G F0
(\214le features)2.87 E F1(loglevel=90)2.5 E F0(.)A F4(Deb)100 616.8 Q
(ugging)-.2 E F0 1.6 -.8(To d)100 628.8 T(eb).8 E(ug the)-.2 E F4(uruk)
2.5 E F0(script, in)2.5 E -.2(vo)-.4 G .2 -.1(ke u).2 H(ruk as).1 E F1
(sh -x /sbin/uruk)106 652.8 Q F0(this sho)100 676.8 Q
(ws what is done, along with e)-.25 E -.15(xe)-.15 G(cuting it. \(Lik)
.15 E 2.5(ea)-.1 G 2.5(nu)-2.5 G(ruk '-v' option.\))-2.5 E(If you')100
700.8 Q 2.5(dr)-.5 G(ather prefer not to e)-2.5 E -.15(xe)-.15 G
(cute, b).15 E(ut just w)-.2 E(atch what w)-.1 E(ould')-.1 E .3 -.15
(ve b)-.5 H(een done, in).15 E -.2(vo)-.4 G .2 -.1(ke u).2 H(ruk as).1 E
(uruk-rc 20150608)20 768 Q 2.5(8J)140.125 G(un 2015)-2.5 E(5)207.055 E 0
Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 154.295(uruk-rc\(5\) FILE)20 48 R(FORMA)2.5 E
156.795(TS uruk-rc\(5\))-1.11 F/F1 10/Courier@0 SF
(URUK_IPTABLES='echo iptables' URUK_IP6TABLES='echo ip6tables' uruk)106
84 Q F0(\(Lik)100 108 Q 3.391(ea)-.1 G 3.391(nu)-3.391 G .891
(ruk '-n' option.\) If you ha)-3.391 F 1.191 -.15(ve t)-.2 H .891
(his statement set, you can run).15 F/F2 10/Times-Bold@0 SF(uruk)3.391 E
F0 .892(under a non-pri)3.392 F(v-)-.25 E(iliged user account.)100 120 Q
(If you')100 144 Q 2.5(dl)-.5 G(ik)-2.5 E 2.5(et)-.1 G 2.5(ot)-2.5 G
(est a ne)-2.5 E(w)-.25 E/F3 10/Times-Italic@0 SF -.37(rc)2.5 G F0
(\214le before installing it, run something lik)2.87 E(e:)-.1 E F1
(URUK_CONFIG=/path/to/new/uruk/rc/file uruk)112 180 Q F0
(Of course, all these tweaks can be combined.)100 204 Q/F4 10.95
/Times-Bold@0 SF -1.478(VA)20 220.8 S(RIABLES)1.478 E F0
(The uruk script honors the follo)100 232.8 Q(wing v)-.25 E(ariables in)
-.25 E F3 -.37(rc)2.5 G F0(\214les:)2.87 E<83>100 256.8 Q("v)120 268.8 Q
(ersion" Uruk v)-.15 E(ersion compatibility of this)-.15 E F3 -.37(rc)
2.5 G F0(\214le)2.87 E<83>100 280.8 Q("logle)120 292.8 Q -.15(ve)-.25 G
(l").15 E<83>100 304.8 Q("iptables" Full pathname of iptables e)120
316.8 Q -.15(xe)-.15 G(cutable.).15 E<83>100 328.8 Q
("ip6tables" Full pathname of ip6tables e)120 340.8 Q -.15(xe)-.15 G
(cutable.).15 E<83>100 352.8 Q("interf)120 364.8 Q(aces" List of netw)
-.1 E(ork interf)-.1 E(aces.)-.1 E 2.03(More v)100 376.8 R 2.03
(ariables are a)-.25 F -.25(va)-.2 G 2.03(ilable. F).25 F 2.03(or no)
-.15 F 3.33 -.65(w, y)-.25 H(ou').65 E 2.03(ll ha)-.1 F 2.329 -.15(ve t)
-.2 H 4.529(ot).15 G(ak)-4.529 E 4.529(eal)-.1 G 2.029(ook at the e)
-4.529 F(xample)-.15 E F3 -.37(rc)4.529 G F0 2.029(\214le in)4.899 F F1
(/usr/share/doc/uruk/examples/rc)100 388.8 Q F0(for more details.)2.5 E
F4(ENVIR)20 405.6 Q(ONMENT V)-.329 E(ARIABLES)-1.478 E F0(See)100 417.6
Q F2(uruk\(8\))2.5 E F0(for a list of honored en)2.5 E(vironment v)-.4 E
(ariables.)-.25 E F4(FILES)20 434.4 Q F1(/etc/uruk/rc)100 446.4 Q F4
(SEE ALSO)20 463.2 Q F0 2.628(Aw)100 475.2 S .129(ell-commented e)-2.628
F(xample)-.15 E F3 -.37(rc)2.629 G F0 .129(\214le is in)2.999 F F1
(/usr/share/doc/uruk/examples/rc)2.629 E F0 5.129(.A)C .129(nd see)
-5.129 F F2(uruk\(8\))100 487.2 Q F0(,)A F2(uruk-sa)2.5 E -.1(ve)-.25 G
(\(8\)).1 E F0(.)A F4(COPYRIGHT)20 504 Q F0(Cop)100 516 Q 3.189
(yright \(C\) 2005, 2007, 2008, 2010, 2011, 2012, 2013 Joost v)-.1 F
3.189(an Baal-Ili\304 )100 528 Q 1.216
(This program is free softw)100 552 R 1.217(are: you can redistrib)-.1 F
1.217(ute it and/or modify it under the terms of the)-.2 F .466
(GNU General Public License as published by the Free Softw)100 564 R
.466(are F)-.1 F .465(oundation, either v)-.15 F .465(ersion 3 of)-.15 F
(the License, or \(at your option\) an)100 576 Q 2.5(yl)-.15 G(ater v)
-2.5 E(ersion.)-.15 E 2.086(This program is distrib)100 600 R 2.087
(uted in the hope that it will be useful, b)-.2 F 2.087
(ut WITHOUT ANY W)-.2 F(AR-)-1.2 E(RANTY)100 612 Q 4.227(;w)-.92 G 1.727
(ithout e)-4.227 F -.15(ve)-.25 G 4.227(nt).15 G 1.727(he implied w)
-4.227 F 1.726(arranty of MERCHANT)-.1 F 1.726(ABILITY or FITNESS FOR A)
-.93 F -.92(PA)100 624 S -.6(RT).92 G
(ICULAR PURPOSE. See the GNU General Public License for more details.).6
E -1.1(Yo)100 648 S 2.588(us)1.1 G .088(hould ha)-2.588 F .388 -.15
(ve r)-.2 H(ecei).15 E -.15(ve)-.25 G -5.087 2.588(da c).15 H(op)-2.588
E 2.589(yo)-.1 G 2.589(ft)-2.589 G .089
(he GNU General Public License along with this program. If)-2.589 F
(not, see http://www.gnu.or)100 660 Q(g/licenses/.)-.18 E F4 -.548(AU)20
676.8 S(THOR).548 E F0(Joost v)100 688.8 Q
(an Baal-Ili\304 )-.25 E(uruk-rc 20150608)20 768 Q
2.5(8J)140.125 G(un 2015)-2.5 E(6)207.055 E 0 Cg EP
%%Trailer
end
%%EOF
uruk-20160219/man/uruk-rc.txt 0000644 0001750 0001750 00000026405 12535264244 012611 0000000 0000000 uruk-rc(5) FILE FORMATS uruk-rc(5)
NAME
uruk-rc - uruk resource file, defining access policy
SYNOPSIS
/etc/uruk/rc
DESCRIPTION
rc is a shell script snippet, sourced in uruk by /bin/sh.
rc lists IP addresses, allowed to use services.
EXAMPLES
default
The simplest valid rc file is the empty file. This rc file blocks all
TCP and UDP connection attempts to services on our host: this is the
default behaviour.
simplest
The simplest rc file which does allow traffic to our services looks like
e.g.:
interfaces=eth0
ips_eth0=default
ip_eth0_default=192.168.26.27
net_eth0_default=192.168.0.0/16
ip6_eth0_default=2001:db8::1/64
net6_eth0_default=2001:db8::/32
services_eth0_default_tcp=local
ports_eth0_default_tcp_local="0:65535"
sources_eth0_default_tcp_local="0.0.0.0/0 ::/0"
services_eth0_default_udp=local
ports_eth0_default_udp_local="0:65535"
sources_eth0_default_udp_local="0.0.0.0/0"
This rc file allows all IPv4 and IPv6 UDP and TCP traffic from publicly
routable IPs to eth0's IP.
realistic
If you'd like to block traffic on wlan0 and allow traffic to ssh on your
wired interface, and don't like to explicitly set your IPs in rc:
# list of interfaces you'd like uruk to protect
interfaces=eth0 wlan0
# set variables ip{,6}_eth0_default and net{,6}_eth0_default
. /lib/uruk/init/autodetect-ips
# names for eth0's 2 IPv4 addresses
ips_eth0="default dhcp"
# allow access to our sshd on eth0's primary IP on tcp port 443
# from anywhere
services_eth0_default_tcp=ssh
ports_eth0_default_tcp_ssh=443
sources_eth0_default_tcp_ssh="0.0.0.0/0 ::/0"
# we get a static IPv4 via dhcp
ip_eth0_dhcp=10.0.0.3
net_eth0_dhcp=10./8
services_eth0_dhcp_tcp=http
ports_eth0_dhcp_tcp_http=http
sources_eth0_dhcp_tcp_http=$net_eth0_dhcp
# we leave services_wlan0_default_{tcp,udp} unset: don't allow any
# incoming connections on wlan0's default IP
autodetect-ips
The script autodetect-ips --as used in the previous example-- looks for
files /etc/sysconfig/network-scripts/ifcfg-* (commonly found at e.g. Red
Hat and Fedora systems) and /etc/network/interfaces (as found at e.g.
Debian and Ubuntu systems), and, for each interface nic, and each found
IPv4 and IPv6 address and network, sets variables ip_nic_default,
ip6_nic_default, net_nic_default and net6_nic_default . Then it calls
ip(8) and adds any other found nic, ip and net triplets (for IPv4 and,
for IPv6, only addresses in scope "global").
The script autodetect-ips is useful if you'd like to share your rc file
among different hosts.
another example
For an even more reasonable rc file, look at the well-commented example
rc file in /usr/share/doc/uruk/examples/rc.
IPv4 AND IPv6
You can mix IPv4 and IPv6-addresses in sources_*. E.g.:
ips_eth0='default private'
ip_eth0_default=1.2.3.4
ip6_eth0_default=
services_eth0_default_tcp='mail local'
sources_eth0_default_tcp_mail='10.0.0.0/24 192.0.32.0/24 192.168.6.26'
sources_eth0_default_tcp_local='192.0.32.0/24 svejk.example.com 2001:db8::/32'
ports_eth0_default_tcp_mail=smtp
ports_eth0_default_tcp_local='ssh ftp'
If svejk.example.com has both an IPv4 PTR record in DNS, as well as an
IPv6 PTR record, connection attempts from svejk to the ssh and ftp TCP
ports are allowed, via both IPv4 and IPv6.
Uruk used to require variables sources6_* to be set to support
ip6tables. Since uruk version 20140319 (The Alfama Release), this is no
longer needed; setting sources_* suffices. To be precise, the semantics
since uruk version 20140319 is: 1) If both sources_* and sources6_* are
defined (even if they're just empty), each is used for its respective
address family. (This ensures backwards compatibility.) 2) If sources6_*
is undefined, sources_* is used for both v4 and v6. 3) In either case,
v4 literals in v6 context and v6 literals in v4 context are silently (!)
ignored.
HOOKS
Uruk offers hooks for inserting your own code between iptables invoca-
tions. Examples will show the usefulness of these hooks.
allowing broadcasts
In rc, there is:
rc_b=$etcdir/bootp
while the file bootp reads
iptables -A INPUT -m state --state NEW -i eth0 \
--protocol udp --destination-port bootps -j ACCEPT
. This enables one to add rules for packets with broadcast addresses in
their destination. (Uruk has no support for this in its regular rc.)
allowing non-matching returntraffic
In rc there is:
rc_d=$etcdir/dns
while the file dns reads
for source in 10.5.0.27 10.56.0.40
do
$iptables -A INPUT -i eth0 --protocol udp \
--source "$source" --source-port domain \
--destination "$ip_eth0" \
--destination-port 30000: -j ACCEPT
done
This allows one to allow (return)traffic, disregarding the state. (Uruk
has no support for this in its regular rc.)
allowing NAT
In rc there is:
rc_a=${etcdir}/nat
while the file nat reads
$iptables -t nat -A POSTROUTING \
--out-interface eth0 -j SNAT \
--to-source $ip_eth0
This allows Network Address Translation. However, beware! Like all
extensive use of hooks, this will break the uruk-save script. If you
make sure your active iptables rules are wiped, and invoke uruk manually
to load new rules, you're safe. Using the init script with its default
settings is safe too.
allowing IPv6 tunneling
In rc there is:
rc_b=${etcdir}/proto_41
while the file proto_41 reads
$iptables -A INPUT -i ppp0 --protocol 41 --destination $ip_ppp0 -j ACCEPT
This allows IP protocol 41, typically used for this kind of tunneling.
allowing any traffic on an interface
In rc there is:
interfaces_unprotect="lo eth2"
This allows any traffic on eth2 (and on lo, the default), including any
ICMP packets and packets from any source address.
using multiple hooks at one entry point in the main uruk process
In case rc_a, rc_b, ... , or rc_i does not have a file as its value, but
a directory, all files matching "$rc_x"/*.rc will get sourced. This
helps configuration management in complex situations involving lots of
uruk configuration files for lots of hosts.
See the section "THE GORY DETAILS: uruk INTERNALS" in uruk(8) (or the
uruk source) to find out which hook (there are hooks rc_a, rc_b, ... ,
rc_i) to use.
NETWORK INTERFACES WITH MULTIPLE IP ADDRESSES
Uruk supports situations where a network interface has more than one IP
address attached. Variables ips_nic and bcasts_nic are used for this.
If ips_nic is set, e.g. like
ips_eth0="ip0 ip1 ip2"
we assume multiple (three in this example) IPs are assigned to eth0. If
this variable is not set only one IP is supported on eth0.
In multiple-IP mode, IP addresses are listed as e.g.
ip_eth0_ip0="137.56.247.16"
(If you're used to the Linux ifconfig(8) output, you could use the name
ip for eth0, and ip0 for eth0:0.) The ports, services and sources vari-
ables look like e.g.
services_eth0_ip2_tcp=local
ports_eth0_ip2_tcp_local=smtp
sources_eth0_ip2_tcp_local=$localnet
and, similarly,
net_eth0_ip1=192.168.0.0/16
Furthermore, for dropping broadcast packets, specify e.g.
bcasts_eth0="ip0 ip2" # yes, possibly a subset of ips_eth0
bcast_eth0_ip0="10.0.0.255"
bcast_eth0_ip2="10.0.255.255"
As an additional feature, if you have multiple IP addresses that all
need to get the same rules, you can assign them to a single name:
ip_eth0_ip0="137.56.247.16 137.56.247.17 137.56.247.18"
LOGGING AND DEBUGGING
Uruk has support for logging network packets, and for debugging the uruk
script.
Logging
By default, uruk logs denied packets. This is adjustable using the
loglevel variable. The settings are:
o
"zero": be silent; do not log any packet. rc file features
loglevel=10.
o
"low": log denied packets, which are targeted at one of our IPs. rc
file features loglevel=30.
o
"medium": log denied non-broadcast packets. This is the default:
loglevel is unset or rc file features loglevel=50.
o
"fascist": log all packets. rc file features loglevel=90.
Debugging
To debug the uruk script, invoke uruk as
sh -x /sbin/uruk
this shows what is done, along with executing it. (Like an uruk '-v'
option.)
If you'd rather prefer not to execute, but just watch what would've been
done, invoke uruk as
URUK_IPTABLES='echo iptables' URUK_IP6TABLES='echo ip6tables' uruk
(Like an uruk '-n' option.) If you have this statement set, you can run
uruk under a non-priviliged user account.
If you'd like to test a new rc file before installing it, run something
like:
URUK_CONFIG=/path/to/new/uruk/rc/file uruk
Of course, all these tweaks can be combined.
VARIABLES
The uruk script honors the following variables in rc files:
o
"version" Uruk version compatibility of this rc file
o
"loglevel"
o
"iptables" Full pathname of iptables executable.
o
"ip6tables" Full pathname of ip6tables executable.
o
"interfaces" List of network interfaces.
More variables are available. For now, you'll have to take a look at the
example rc file in /usr/share/doc/uruk/examples/rc for more details.
ENVIRONMENT VARIABLES
See uruk(8) for a list of honored environment variables.
FILES
/etc/uruk/rc
SEE ALSO
A well-commented example rc file is in /usr/share/doc/uruk/examples/rc.
And see uruk(8), uruk-save(8).
COPYRIGHT
Copyright (C) 2005, 2007, 2008, 2010, 2011, 2012, 2013 Joost van Baal-
Ili
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABIL-
ITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ili
uruk-rc 20150608 8 Jun 2015 uruk-rc(5)
uruk-20160219/man/uruk-save.html 0000644 0001750 0001750 00000016036 12201162772 013260 0000000 0000000
uruk-save
9 авг 2013
uruk-save
20130809
NAME
uruk-save — save uruk rc configuration in iptables-save-style format
SYNOPSIS
uruk-save [-6]
OPTIONS
Don't save iptables rules but save
ip6tables rules, for IPv6 filtering.
DESCRIPTION
uruk-save saves the IPv4 rules (for all of the filter, raw, mangle and nat
tables) in /etc/uruk/rc in iptables-save(5)-style format, without invoking
iptables(8). If the -6 option is given, the IPv6 rules (if any) in
/etc/uruk/rc are saved, in ip6tables-save(5)-style format. It prints output
to stdout; suggested invocation therefore is
# uruk-save > /var/lib/uruk/iptables/active
or
# uruk-save -6 > /var/lib/uruk/ip6tables/active
. This script is useful if you don't like the default behaviour of the uruk
init script, and would like it to load the current uruk rc file instead of the
current active file. Please note: generally you don't need to invoke this
script manually: the script urukctl which comes with uruk is suitable for most
cases, it invokes uruk-save if needed.
WARNING
Just as uruk, in order to keep the uruk-save script small and simple, the
script does very little error handling. It does not check the contents of the
rc file in any way before executing it. When your rc file contains bogus
stuff, uruk-save will very likely behave in unexpected ways. Caveat emptor.
Things will likely break if you do very fancy stuff in an rc hook file. If
your rc file is in verbose mode (i.e. it features set -x) or in no-act
mode (i.e. it features a hardcoded iptables='echo iptables'), uruk-save
fails.
SEE ALSO
uruk(8), uruk-rc(5) .
COPYRIGHT
Copyright (C) 2005, 2007, 2010, 2011, 2012, 2013 Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
uruk-20160219/man/uruk-save.ps 0000644 0001750 0001750 00000026064 12201162772 012740 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.21
%%CreationDate: Fri Aug 9 14:52:10 2013
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Courier
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.21 0
%%Pages: 1
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.21 0
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Courier
%%IncludeResource: font Times-Italic
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Times-Italic@0 ENC0/Times-Italic RE/Courier@0 ENC0/Courier RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(uruk-sa)20 48 Q -.15(ve)-.2 G 115.765
(\(8\) SYSTEM).15 F(ADMINISTRA)2.5 E 118.265(TION uruk-sa)-1.11 F -.15
(ve)-.2 G(\(8\)).15 E/F1 10.95/Times-Bold@0 SF -.219(NA)20 84 S(ME).219
E F0(uruk-sa)100 96 Q .3 -.15(ve \255 s)-.2 H -2.25 -.2(av e).15 H
(uruk rc con\214guration in iptables-sa)2.7 E -.15(ve)-.2 G
(-style format).15 E F1(SYNOPSIS)20 112.8 Q/F2 10/Times-Bold@0 SF
(uruk-sa)100 124.8 Q .2 -.1(ve [)-.25 H F0(-6).1 E F2(])A F1(OPTIONS)20
141.6 Q F0(-6)100 153.6 Q(Don')120 165.6 Q 2.5(ts)-.18 G -2.25 -.2(av e)
-2.5 H(iptables rules b)2.7 E(ut sa)-.2 E .3 -.15(ve i)-.2 H
(p6tables rules, for IPv6 \214ltering.).15 E F1(DESCRIPTION)20 182.4 Q
F2(uruk-sa)100 194.4 Q -.1(ve)-.25 G F0(sa)6.764 E -.15(ve)-.2 G 6.664
(st).15 G 4.163(he IPv4 rules \(for all of the \214lter)-6.664 F 6.663
(,r)-.4 G -.15(aw)-6.663 G 6.663(,m)-.5 G 4.163
(angle and nat tables\) in)-6.663 F/F3 10/Courier@0 SF(/etc/uruk/rc)100
206.4 Q F0(in)5.588 E F2(iptables-sa)5.589 E -.1(ve)-.25 G(\(5\)).1 E F0
3.089(-style format, without in)B -.2(vo)-.4 G(king).2 E F2
(iptables\(8\))5.589 E F0 5.589(.I)C 5.589(ft)-5.589 G(he)-5.589 E F2
(-6)5.589 E F0 .24(option is gi)100 218.4 R -.15(ve)-.25 G .24
(n, the IPv6 rules \(if an).15 F .24(y\) in)-.15 F F3(/etc/uruk/rc)2.74
E F0 .24(are sa)2.74 F -.15(ve)-.2 G .24(d, in).15 F F2(ip6tables-sa)
2.74 E -.1(ve)-.25 G(\(5\)).1 E F0(-style)A
(format. It prints output to stdout; suggested in)100 230.4 Q -.2(vo)-.4
G(cation therefore is).2 E F3 6(#u)106 254.4 S
(ruk-save > /var/lib/uruk/iptables/active)-6 E F0(or)100 278.4 Q F3 6
(#u)106 302.4 S(ruk-save -6 > /var/lib/uruk/ip6tables/active)-6 E F0
3.416(.T)100 326.4 S .916(his script is useful if you don')-3.416 F
3.416(tl)-.18 G(ik)-3.416 E 3.416(et)-.1 G .916(he def)-3.416 F .916
(ault beha)-.1 F .916(viour of the uruk init script, and w)-.2 F(ould)
-.1 E(lik)100 338.4 Q 2.745(ei)-.1 G 2.745(tt)-2.745 G 2.745(ol)-2.745 G
.245(oad the current uruk rc \214le instead of the current acti)-2.745 F
.544 -.15(ve \214)-.25 H .244(le. Please note: generally you).15 F(don')
100 350.4 Q 3.148(tn)-.18 G .648(eed to in)-3.148 F -.2(vo)-.4 G .848
-.1(ke t).2 H .649(his script manually: the script).1 F F2(urukctl)3.149
E F0 .649(which comes with uruk is suitable)3.149 F
(for most cases, it in)100 362.4 Q -.2(vo)-.4 G -.1(ke).2 G(s).1 E F2
(uruk-sa)2.5 E -.1(ve)-.25 G F0(if needed.)2.6 E F1 -1.314(WA)20 379.2 S
(RNING)1.314 E F0 .687(Just as)100 391.2 R F2(uruk)3.187 E F0 3.187(,i)C
3.187(no)-3.187 G .687(rder to k)-3.187 F .687(eep the)-.1 F F2(uruk-sa)
3.187 E -.1(ve)-.25 G F0 .686
(script small and simple, the script does v)3.286 F .686(ery little)-.15
F .222(error handling. It does not check the contents of the)100 403.2 R
/F4 10/Times-Italic@0 SF -.37(rc)2.722 G F0 .222(\214le in an)3.092 F
2.722(yw)-.15 G .223(ay before e)-2.822 F -.15(xe)-.15 G .223
(cuting it. When).15 F(your)100 415.2 Q F4 -.37(rc)2.953 G F0 .452
(\214le contains bogus stuf)3.323 F(f,)-.25 E F2(uruk-sa)2.952 E -.1(ve)
-.25 G F0 .452(will v)3.052 F .452(ery lik)-.15 F .452(ely beha)-.1 F
.752 -.15(ve i)-.2 H 2.952(nu).15 G(ne)-2.952 E .452(xpected w)-.15 F
.452(ays. Ca)-.1 F -.15(ve)-.2 G(at).15 E(emptor.)100 427.2 Q .329
(Things will lik)100 451.2 R .329(ely break if you do v)-.1 F .329
(ery f)-.15 F(anc)-.1 E 2.829(ys)-.15 G(tuf)-2.829 E 2.829(fi)-.25 G
2.829(na)-2.829 G(n)-2.829 E F4 -.37(rc)2.829 G F0 .329
(hook \214le. If your)3.199 F F4 -.37(rc)2.829 G F0 .329(\214le is in v)
3.199 F(erbose)-.15 E 3.102(mode \(i.e. it features)100 463.2 R F3 3.102
(set -x)5.602 F F0 5.601(\)o)C 5.601(ri)-5.601 G 5.601(nn)-5.601 G 3.101
(o-act mode \(i.e. it features a hardcoded)-5.601 F F3(ipta-)5.601 E
(bles='echo iptables')100 475.2 Q F0(\),)A F2(uruk-sa)2.5 E -.1(ve)-.25
G F0 -.1(fa)2.6 G(ils.).1 E F1(SEE ALSO)20 492 Q F2(uruk\(8\))100 504 Q
F0(,)A F2(uruk-r)2.5 E(c\(5\))-.18 E F0(.)2.5 E F1(COPYRIGHT)20 520.8 Q
F0(Cop)100 532.8 Q 5.752
(yright \(C\) 2005, 2007, 2010, 2011, 2012, 2013 Joost v)-.1 F 5.752
(an Baal-Ili\304 )100 544.8 Q 1.217
(This program is free softw)100 568.8 R 1.217(are: you can redistrib)-.1
F 1.217(ute it and/or modify it under the terms of the)-.2 F .466
(GNU General Public License as published by the Free Softw)100 580.8 R
.466(are F)-.1 F .466(oundation, either v)-.15 F .466(ersion 3 of)-.15 F
(the License, or \(at your option\) an)100 592.8 Q 2.5(yl)-.15 G(ater v)
-2.5 E(ersion.)-.15 E 2.087(This program is distrib)100 616.8 R 2.087
(uted in the hope that it will be useful, b)-.2 F 2.086
(ut WITHOUT ANY W)-.2 F(AR-)-1.2 E(RANTY)100 628.8 Q 4.226(;w)-.92 G
1.726(ithout e)-4.226 F -.15(ve)-.25 G 4.226(nt).15 G 1.726
(he implied w)-4.226 F 1.726(arranty of MERCHANT)-.1 F 1.727
(ABILITY or FITNESS FOR A)-.93 F -.92(PA)100 640.8 S -.6(RT).92 G
(ICULAR PURPOSE. See the GNU General Public License for more details.).6
E -1.1(Yo)100 664.8 S 2.589(us)1.1 G .089(hould ha)-2.589 F .389 -.15
(ve r)-.2 H(ecei).15 E -.15(ve)-.25 G 2.589(dac).15 G(op)-2.589 E 2.589
(yo)-.1 G 2.589(ft)-2.589 G .089
(he GNU General Public License along with this program. If)-2.589 F
(not, see http://www.gnu.or)100 676.8 Q(g/licenses/.)-.18 E F1 -.548(AU)
20 693.6 S(THOR).548 E F0(Joost v)100 705.6 Q
(an Baal-Ili\304 )-.25 E(uruk-sa)20 768 Q .3 -.15
(ve 2)-.2 H 119.09(0130809 9).15 F2.5 E(1)198.17
E 0 Cg EP
%%Trailer
end
%%EOF
uruk-20160219/man/uruk-save.txt 0000644 0001750 0001750 00000005365 12201162772 013136 0000000 0000000 uruk-save(8) SYSTEM ADMINISTRATION uruk-save(8)
NAME
uruk-save - save uruk rc configuration in iptables-save-style format
SYNOPSIS
uruk-save [-6]
OPTIONS
-6
Don't save iptables rules but save ip6tables rules, for IPv6 filter-
ing.
DESCRIPTION
uruk-save saves the IPv4 rules (for all of the filter, raw, mangle and
nat tables) in /etc/uruk/rc in iptables-save(5)-style format, without
invoking iptables(8). If the -6 option is given, the IPv6 rules (if any)
in /etc/uruk/rc are saved, in ip6tables-save(5)-style format. It prints
output to stdout; suggested invocation therefore is
# uruk-save > /var/lib/uruk/iptables/active
or
# uruk-save -6 > /var/lib/uruk/ip6tables/active
. This script is useful if you don't like the default behaviour of the
uruk init script, and would like it to load the current uruk rc file
instead of the current active file. Please note: generally you don't
need to invoke this script manually: the script urukctl which comes with
uruk is suitable for most cases, it invokes uruk-save if needed.
WARNING
Just as uruk, in order to keep the uruk-save script small and simple,
the script does very little error handling. It does not check the con-
tents of the rc file in any way before executing it. When your rc file
contains bogus stuff, uruk-save will very likely behave in unexpected
ways. Caveat emptor.
Things will likely break if you do very fancy stuff in an rc hook file.
If your rc file is in verbose mode (i.e. it features set -x) or in no-
act mode (i.e. it features a hardcoded iptables='echo iptables'), uruk-
save fails.
SEE ALSO
uruk(8), uruk-rc(5) .
COPYRIGHT
Copyright (C) 2005, 2007, 2010, 2011, 2012, 2013 Joost van Baal-Ili
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABIL-
ITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ili
uruk-save 20130809 9 2013 uruk-save(8)
uruk-20160219/man/uruk.html 0000644 0001750 0001750 00000053756 12201162772 012336 0000000 0000000
uruk
9 авг 2013
uruk
20130809
NAME
uruk — wrapper for Linux iptables, for managing firewall rules
SYNOPSIS
uruk
DESCRIPTION
uruk loads an rc file (see uruk-rc(5)) which defines
network service access policy, and invokes iptables(8) to set up firewall
rules implementing this policy. By default the file /etc/uruk/rc is used; one can
overrule this by specifying another file in the URUK_CONFIG environment
variable. Under some circumstances, it's useful to use another command for
iptables; this can be achieved by setting the URUK_IPTABLES (and/or
URUK_IP6TABLES) environment variables. See uruk-rc(5) for
details.
QUICK SETUP GUIDE
Uruk will not "just work" out of the box. It needs manual configuration.
For those of you who don't like reading lots of documentation:
# cp /usr/share/doc/uruk/examples/rc \
/etc/uruk/rc
# vi /etc/uruk/rc
# urukctl start
GETTING STARTED
Once the uruk script is installed, you want to go use it, of course. We'll
give a detailed description of what to do here.
First, create an rc file. See uruk-rc(5) for info on how to
do this. Once this file is created and installed (this script looks in
/etc/uruk/rc by default), you're ready to run uruk. You might want to test your
rc file by running uruk in debug mode, see uruk-rc(5).
There are at least 3 ways to load your rc file. We'll first describe a low
level one: using vanilla iptables.
Vanilla iptables
After editing rc, load your rules like this. First flush your current rules:
# iptables -F
# ip6tables -F
Then enable your rc rules
# uruk
. Inspect the rules by doing:
# iptables -L
# ip6tables -L
.
If you want to make these changes survive a reboot, use the init script as
shipped with this package. If you'd rather write your own init script, the
iptables-restore(8) and iptables-save(8) commands from the iptables
package might be helpful.
Using the Uruk init script
Assumed is the Uruk init script is installed as explained in the README file.
Optionally, install /etc/default/uruk (or /etc/sysconfig/uruk) and
tweak it. An example file is in /usr/share/doc/uruk/examples/default (You might like to enable
support for uruk-save.) Now activate uruk by doing:
# urukctl start
Now your pre-uruk iptables rules (if any) are saved as the "inactive" ruleset.
While executing urukctl start, your box is open during a short while.
If you don't like this, read below about uruk-save.
When rebooting, everything will be fine: /etc/init.d/uruk stores
state in /var/lib/uruk/iptables, using
iptables-save(8), which comes with Linux iptables.
Using Debian ifupdown
In case you have just one network interface which should get protected, you
could use interfaces(5) from the Debian ifupdown package instead of the
init script. Suppose you'd like to protect ppp0, and would like not to
interfere with traffic on eth0: your other network interface.
First write an rc file. Be sure it features
interfaces_unprotect="lo eth0"
Then run:
# mkdir -p /var/lib/uruk/iptables
# iptables -F
# iptables-save -c > /var/lib/uruk/iptables/down
# uruk
# iptables-save -c > /var/lib/uruk/iptables/up
Add
pre-up iptables-restore < /var/lib/uruk/iptables/up
post-down iptables-restore < /var/lib/uruk/iptables/down
to your interfaces stanza, in your /etc/network/interfaces .
Similar tricks might be possible on GNU/Linux systems from other distributions.
The author is interested.
LOADING A NEW rc FILE
Need to change your rules?
Using the Uruk init script
Do
# vi /etc/uruk/rc
# urukctl force-reload
While executing urukctl force-reload, your box is open during a short
while. If you don't like this, read below about uruk-save.
THE GORY DETAILS: uruk INTERNALS
The uruk script works like (and looks like) the list of statements below. Of
course, take a look at /sbin/uruk for the final word on the workings.
rc is sourced as a shell script
Traffic on $interfaces_unprotect (just lo per default)
is trusted:
$iptables -A INPUT -i $iface -j ACCEPT
$rc_a is sourced as a shell script, or, in case $rc_a is a directory, all
files matching $rc_a/*.rc are sourced as shell scripts
ESTABLISHED and RELATED packets are ACCEPT-ed:
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED \
-j ACCEPT
$rc_b is sourced
$interfaces gets protected against spoofing: we don't allow anyone to
spoof non-routeable addresses. We block outgoing packets that don't have
our address as source: they are either spoofed or something is
misconfigured (NAT disabled, for instance). We want to be nice and don't
send out garbage.
$iptables -A INPUT -i $iface --source $no_route_ip \
-j DROP
We drop all incoming packets which don't have us as destination:
$iptables -A OUTPUT -o $iface --source ! "$ip" \
-j DROP
And we always allow outgoing connections:
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface \
-j ACCEPT
$rc_c is sourced
Allow traffic to offered services, from trusted sources:
$iptables -A INPUT -m conntrack --ctstate NEW \
-i $iface --protocol $proto --source "$source" \
--destination "$ip" --destination-port "$port" \
-j ACCEPT
$rc_d is sourced
Don't answer broadcast and multicast packets:
$iptables -A INPUT -i $iface --destination "$bcast" \
-j DROP
$rc_f is sourced
Explicitly allow a subset of the ICMP types. (We disallow all other
traffic later.)
$iptables -A INPUT --protocol icmp --icmp-type $type \
-j ACCEPT
$rc_g is sourced
Log packets (which make it till here)
$iptables -A INPUT -j LOG --log-level debug \
--log-prefix 'iptables: '
$rc_h is sourced
Reject all other packets
$iptables -A INPUT -j REJECT
$rc_i is sourced
USING uruk-save AS THE INITSCRIPT BACKEND
By default, uruk-save is not used by the uruk init script. You might want to
use it, though. The uruk-save script is faster and when using uruk-save,
your box won't be open while loading new rules. But beware: uruk-save is not
as robust as using uruk itself.
The script urukctl (and thus the uruk init script) will use uruk-save only if
asked to do so in /etc/default/uruk (or /etc/sysconfig/uruk). If
this file features
enable_uruk_save=true
uruk-save is used whenever appropriate.
See uruk-save(8) for more details.
DEFAULT POLICY
By default, uruk drops packets which have unknown RFC 1918 private network
addresses in their source or destination.
It rejects packets with source nor destination for one of our IPs.
Packets belonging to locally initiated sessions are allowed: we match state;
the local host can act as a client for any remote service.
By default, uruk drops all ICMP packets (except those for interfaces in
$interfaces_unprotect) with type other than
address-mask-reply
address-mask-request
destination-unreachable (this is a catch-all for a lot of types)
echo-request
echo-reply
parameter-problem (catch-all for ip-header-bad and required-option-missing)
timestamp-reply
timestamp-request
ttl-zero-during-transit
ttl-zero-during-reassembly
By default, the FORWARD chain is left untouched, so has policy ACCEPT. (This
won't do much harm, since packet forwarding is disabled by default in the Linux
kernel. However, if you don't mind being paranoid, you might want to add a
iptables --policy FORWARD REJECT
to your $rc_a uruk hook. See uruk-rc(5).)
By default, uruk logs all UDP and TCP packets which are blocked by the user
defined policies. Loglevel is debug, logprefix is "iptables:". See
also the notes on loglevel in uruk-rc(5).
Blocked TCP packets are answered with a tcp-reset.
WARNING
In order to keep the uruk script small and simple, the script does very little
error handling. It does not check the contents of the rc file in any way
before executing it. When your rc file contains bogus stuff, uruk will very
likely behave in unexpected ways. Caveat emptor.
ENVIRONMENT
You can override some defaults in the shell before executing the uruk script.
uruk honors the following variables:
"URUK_CONFIG" Full pathname of rc file; /etc/uruk/rc by default.
"URUK_IPTABLES" Full pathname of iptables executable.
/sbin/iptables by default. Overrides iptables.
"URUK_IP6TABLES" Full pathname of ip6tables executable, for
IPv6 support. Overrides ip6tables.
"URUK_INTERFACES_UNPROTECT" Default list of unprotected interfaces.
Overrides interfaces_unprotect. The default default is lo.
SEE ALSO
uruk-rc(5), uruk-save(8). The Uruk homepage is at
http://mdcc.cx/uruk/ .
iptables(8), iptables-save(8),
iptables-restore(8),
ip6tables(8), ip6tables-save(8),
ip6tables-restore(8), http://www.netfilter.org/
interfaces(5), http://packages.debian.org/ifupdown.
COPYRIGHT
Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org;
Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/;
Copyright (C) 2003-2013 Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
uruk-20160219/man/uruk.ps 0000644 0001750 0001750 00000064212 12201162772 012001 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.21
%%CreationDate: Fri Aug 9 14:52:10 2013
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.21 0
%%Pages: 6
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.21 0
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Courier
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F/F1 10.95/Times-Bold@0 SF -.219(NA)20 84
S(ME).219 E F0
(uruk \255 wrapper for Linux iptables, for managing \214re)100 96 Q -.1
(wa)-.25 G(ll rules).1 E F1(SYNOPSIS)20 112.8 Q/F2 10/Times-Bold@0 SF
(uruk)100 124.8 Q F1(DESCRIPTION)20 141.6 Q F2(uruk)100 153.6 Q F0 .393
(loads an)2.893 F/F3 10/Times-Italic@0 SF -.37(rc)2.893 G F0 .393
(\214le \(see)3.263 F F2(uruk-r)2.893 E(c\(5\))-.18 E F0 2.893(\)w)C
.393(hich de\214nes netw)-2.893 F .393(ork service access polic)-.1 F
1.692 -.65(y, a)-.15 H .392(nd in).65 F -.2(vo)-.4 G -.1(ke).2 G(s).1 E
F2(iptables\(8\))100 165.6 Q F0 6.064(to set up \214re)8.564 F -.1(wa)
-.25 G 6.064(ll rules implementing this polic).1 F 6.064(y. By def)-.15
F 6.065(ault the \214le)-.1 F/F4 10/Courier@0 SF(/etc/uruk/rc)100 177.6
Q F0 .626(is used; one can o)3.126 F -.15(ve)-.15 G .625
(rrule this by specifying another \214le in the UR).15 F(UK_CON-)-.4 E
1.096(FIG en)100 189.6 R 1.096(vironment v)-.4 F 1.096
(ariable. Under some circumstances, it')-.25 F 3.597(su)-.55 G 1.097
(seful to use another command for)-3.597 F 1.276
(iptables; this can be achie)100 201.6 R -.15(ve)-.25 G 3.776(db).15 G
3.776(ys)-3.776 G 1.276(etting the UR)-3.776 F(UK_IPT)-.4 E 1.276
(ABLES \(and/or UR)-.93 F(UK_IP6T)-.4 E(ABLES\))-.93 E(en)100 213.6 Q
(vironment v)-.4 E(ariables. See)-.25 E F2(uruk-r)2.5 E(c\(5\))-.18 E F0
(for details.)2.5 E F1 -.11(QU)20 230.4 S(ICK SETUP GUIDE).11 E F0 .627
(Uruk will)100 242.4 R F3(not)3.127 E F0 .627("just w)3.127 F .628
(ork" out of the box. It needs manual con\214guration.)-.1 F -.15(Fo)
5.628 G 3.128(rt).15 G .628(hose of you who)-3.128 F(don')100 254.4 Q
2.5(tl)-.18 G(ik)-2.5 E 2.5(er)-.1 G(eading lots of documentation:)-2.5
E F4 6(#c)106 278.4 S 6(p/)-6 G(usr/share/doc/uruk/examples/rc \\)-6 E
(/etc/uruk/rc)130 290.4 Q 6(#v)106 302.4 S 6(i/)-6 G(etc/uruk/rc)-6 E 6
(#u)106 314.4 S(rukctl start)-6 E F1(GETTING ST)20 343.2 Q(AR)-.986 E
(TED)-.438 E F0 .325(Once the)100 355.2 R F2(uruk)2.825 E F0 .325
(script is installed, you w)2.825 F .324(ant to go use it, of course. W)
-.1 F(e')-.8 E .324(ll gi)-.1 F .624 -.15(ve a d)-.25 H .324
(etailed descrip-).15 F(tion of what to do here.)100 367.2 Q .846
(First, create an)100 391.2 R F3 -.37(rc)3.346 G F0 .846(\214le. See)
3.716 F F2(uruk-r)3.346 E(c\(5\))-.18 E F0 .846(for info on ho)3.346 F
3.346(wt)-.25 G 3.346(od)-3.346 G 3.346(ot)-3.346 G .847
(his. Once this \214le is created and)-3.346 F .155
(installed \(this script looks in)100 403.2 R F4(/etc/uruk/rc)2.654 E F0
.154(by def)2.654 F .154(ault\), you')-.1 F .154(re ready to run)-.5 F
F2(uruk)2.654 E F0 2.654(.Y)C .154(ou might)-3.754 F -.1(wa)100 415.2 S
.849(nt to test your).1 F F3 -.37(rc)3.349 G F0 .849(\214le by running)
3.719 F F2(uruk)3.349 E F0 .849(in deb)3.349 F .85(ug mode, see)-.2 F F2
(uruk-r)3.35 E(c\(5\))-.18 E F0 5.85(.T)C .85(here are at least 3)-5.85
F -.1(wa)100 427.2 S(ys to load your).1 E F3 -.37(rc)2.5 G F0(\214le. W)
2.87 E(e')-.8 E(ll \214rst describe a lo)-.1 E 2.5(wl)-.25 G -2.15 -.25
(ev e)-2.5 H 2.5(lo).25 G(ne: using v)-2.5 E(anilla iptables.)-.25 E F2
-.92(Va)100 451.2 S(nilla iptables).92 E F0(After editing)100 463.2 Q F3
-.37(rc)2.5 G F0 2.5(,l).37 G(oad your rules lik)-2.5 E 2.5(et)-.1 G
(his. First \215ush your current rules:)-2.5 E F4 6(#i)106 487.2 S
(ptables -F)-6 E 6(#i)106 499.2 S(p6tables -F)-6 E F0(Then enable your)
100 523.2 Q F3 -.37(rc)2.5 G F0(rules)2.87 E F4 6(#u)106 547.2 S(ruk)-6
E F0 2.5(.I)100 571.2 S(nspect the rules by doing:)-2.5 E F4 6(#i)106
595.2 S(ptables -L)-6 E 6(#i)106 607.2 S(p6tables -L)-6 E F0 6.144(.I)
100 631.2 S 3.644(fy)-6.144 G 1.144(ou w)-3.644 F 1.144(ant to mak)-.1 F
3.644(et)-.1 G 1.144(hese changes survi)-3.644 F 1.444 -.15(ve a r)-.25
H 1.144(eboot, use the init script as shipped with this).15 F .425
(package. If you')100 643.2 R 2.925(dr)-.5 G .425(ather write your o)
-2.925 F .425(wn init script, the)-.25 F F2(iptables-r)2.925 E(estor)
-.18 E(e\(8\))-.18 E F0(and)2.925 E F2(iptables-sa)2.925 E -.1(ve)-.25 G
(\(8\)).1 E F0(commands from the iptables package might be helpful.)100
655.2 Q F2(Using the Uruk init script)100 679.2 Q F0 .106
(Assumed is the Uruk init script is installed as e)100 691.2 R .105
(xplained in the README \214le.)-.15 F(Optionally)5.105 E 2.605(,i)-.65
G(nstall)-2.605 E F4(/etc/default/uruk)100 703.2 Q F0(\(or)3.745 E F4
(/etc/sysconfig/uruk)3.745 E F0 3.745(\)a)C 1.245(nd tweak it. An e)
-3.745 F 1.245(xample \214le is in)-.15 F F4
(/usr/share/doc/uruk/examples/default)100 715.2 Q F0(\(Y)5.539 E 3.039
(ou might lik)-1.1 F 5.539(et)-.1 G 5.538(oe)-5.539 G 3.038
(nable support for)-5.538 F F2(uruk-sa)100 727.2 Q -.1(ve)-.25 G F0
(.\) No).1 E 2.5(wa)-.25 G(cti)-2.5 E -.25(va)-.25 G(te uruk by doing:)
.25 E(uruk 20130809)20 768 Q 2.5<39d0>142.34 G-2.5
E(1)198.17 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F/F1 10/Courier@0 SF 6(#u)106 84 S
(rukctl start)-6 E F0(No)100 108 Q 3.511(wy)-.25 G 1.011
(our pre-uruk iptables rules \(if an)-3.511 F 1.011(y\) are sa)-.15 F
-.15(ve)-.2 G 3.512(da).15 G 3.512(st)-3.512 G 1.012(he "inacti)-3.512 F
-.15(ve)-.25 G 3.512("r).15 G 3.512(uleset. While)-3.512 F -.15(exe)
3.512 G(cuting).15 E F1 1.06(urukctl start)100 120 R F0 3.56(,y)C 1.06
(our box is open during a short while.)-3.56 F 1.059(If you don')6.059 F
3.559(tl)-.18 G(ik)-3.559 E 3.559(et)-.1 G 1.059(his, read belo)-3.559 F
(w)-.25 E(about)100 132 Q/F2 10/Times-Bold@0 SF(uruk-sa)2.5 E -.1(ve)
-.25 G F0(.).1 E 7.8(When rebooting, e)100 156 R -.15(ve)-.25 G 7.8
(rything will be \214ne:).15 F F1(/etc/init.d/uruk)10.3 E F0 7.8
(stores state in)10.3 F F1(/var/lib/uruk/iptables)100 168 Q F0 2.5(,u)C
(sing iptables-sa)-2.5 E -.15(ve)-.2 G
(\(8\), which comes with Linux iptables.).15 E F2(Using Debian ifupdo)
100 192 Q(wn)-.1 E F0 1.193(In case you ha)100 204 R 1.493 -.15(ve j)-.2
H 1.193(ust one netw).15 F 1.193(ork interf)-.1 F 1.192
(ace which should get protected, you could use)-.1 F F2(inter)3.692 E(-)
-.37 E(faces\(5\))100 216 Q F0 .224(from the Debian ifupdo)2.724 F .224
(wn package instead of the init script. Suppose you')-.25 F 2.724(dl)-.5
G(ik)-2.724 E 2.724(et)-.1 G 2.724(op)-2.724 G(ro-)-2.724 E(tect)100 228
Q F1(ppp0)3.87 E F0 3.87(,a)C 1.37(nd w)-3.87 F 1.37(ould lik)-.1 F 3.87
(en)-.1 G 1.37(ot to interfere with traf)-3.87 F 1.37
(\214c on eth0: your other netw)-.25 F 1.37(ork interf)-.1 F(ace.)-.1 E
(First write an)100 240 Q/F3 10/Times-Italic@0 SF -.37(rc)2.5 G F0
(\214le. Be sure it features)2.87 E F1(interfaces_unprotect="lo eth0")
106 264 Q F0(Then run:)100 288 Q F1 6(#m)106 312 S
(kdir -p /var/lib/uruk/iptables)-6 E 6(#i)106 336 S(ptables -F)-6 E 6
(#i)106 360 S(ptables-save -c > /var/lib/uruk/iptables/down)-6 E 6(#u)
106 372 S(ruk)-6 E 6(#i)106 384 S
(ptables-save -c > /var/lib/uruk/iptables/up)-6 E F0(Add)100 408 Q F1
(pre-up iptables-restore < /var/lib/uruk/iptables/up)106 432 Q
(post-down iptables-restore < /var/lib/uruk/iptables/down)106 444 Q F0
(to your interf)100 468 Q(aces stanza, in your)-.1 E F1
(/etc/network/interfaces)2.5 E F0(.)2.5 E .438(Similar tricks might be \
possible on GNU/Linux systems from other distrib)100 492 R 2.939
(utions. The)-.2 F .439(author is)2.939 F(interested.)100 504 Q/F4 10.95
/Times-Bold@0 SF(LO)20 520.8 Q(ADING A NEW)-.438 E/F5 10.95
/Times-Italic@0 SF -.405(rc)2.738 G F4(FILE)3.143 E F0
(Need to change your rules?)100 532.8 Q F2(Using the Uruk init script)
100 556.8 Q F0(Do)100 568.8 Q F1 6(#v)106 592.8 S 6(i/)-6 G(etc/uruk/rc)
-6 E 6(#u)106 604.8 S(rukctl force-reload)-6 E F0 1.24(While e)100 628.8
R -.15(xe)-.15 G(cuting).15 E F1 1.24(urukctl force-reload)3.74 F F0
3.739(,y)C 1.239(our box is open during a short while. If you)-3.739 F
(don')100 640.8 Q 2.5(tl)-.18 G(ik)-2.5 E 2.5(et)-.1 G(his, read belo)
-2.5 E 2.5(wa)-.25 G(bout)-2.5 E F2(uruk-sa)2.5 E -.1(ve)-.25 G F0(.).1
E F4(THE GOR)20 657.6 Q 2.738(YD)-.383 G(ET)-2.738 E(AILS: uruk INTERN)
-.986 E(ALS)-.219 E F0(The)100 669.6 Q F2(uruk)2.52 E F0 .02(script w)
2.52 F .02(orks lik)-.1 F 2.52(e\()-.1 G .02(and looks lik)-2.52 F .02
(e\) the list of statements belo)-.1 F .02(w. Of course, tak)-.25 F 2.52
(eal)-.1 G .02(ook at)-2.52 F F1(/sbin/uruk)100 681.6 Q F0
(for the \214nal w)2.5 E(ord on the w)-.1 E(orkings.)-.1 E(1)100 705.6 Q
F3 -.37(rc)120 717.6 S F0(is sourced as a shell script)2.87 E(2)100
729.6 Q(uruk 20130809)20 768 Q 2.5<39d0>142.34 G
-2.5 E(2)198.17 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F -.35(Tr)120 84 S(af).35 E
(\214c on $interf)-.25 E(aces_unprotect \(just lo per def)-.1 E
(ault\) is trusted:)-.1 E/F1 10/Courier@0 SF
($iptables -A INPUT -i $iface -j ACCEPT)126 108 Q F0(3)100 132 Q 2.567
($rc_a is sourced as a shell script, or)120 144 R 5.066(,i)-.4 G 5.066
(nc)-5.066 G 2.566(ase $rc_a is a directory)-5.066 F 5.066(,a)-.65 G
2.566(ll \214les matching)-5.066 F
($rc_a/*.rc are sourced as shell scripts)120 156 Q(4)100 168 Q(EST)120
180 Q(ABLISHED and RELA)-.93 E(TED pack)-1.11 E(ets are A)-.1 E(CCEPT)
-.4 E(-ed:)-.92 E F1
($iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED \\)126
204 Q(-j ACCEPT)132 216 Q F0(5)100 240 Q($rc_b is sourced)120 252 Q(6)
100 264 Q($interf)120 276 Q .824(aces gets protected ag)-.1 F .824
(ainst spoo\214ng: we don')-.05 F 3.325(ta)-.18 G(llo)-3.325 E 3.325(wa)
-.25 G -.15(ny)-3.325 G .825(one to spoof non-routeable).15 F .314
(addresses. W)120 288 R 2.814(eb)-.8 G .314(lock outgoing pack)-2.814 F
.314(ets that don')-.1 F 2.814(th)-.18 G -2.25 -.2(av e)-2.814 H .313
(our address as source: the)3.014 F 2.813(ya)-.15 G .313(re either)
-2.813 F 1.164(spoofed or something is miscon\214gured \(N)120 300 R
3.385 -1.11(AT d)-.35 H 1.165(isabled, for instance\). W)1.11 F 3.665
(ew)-.8 G 1.165(ant to be nice)-3.765 F(and don')120 312 Q 2.5(ts)-.18 G
(end out g)-2.5 E(arbage.)-.05 E F1
($iptables -A INPUT -i $iface --source $no_route_ip \\)126 336 Q
(-j DROP)132 348 Q F0 1.6 -.8(We d)120 372 T(rop all incoming pack).8 E
(ets which don')-.1 E 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H
(us as destination:)2.7 E F1
($iptables -A OUTPUT -o $iface --source ! "$ip" \\)126 396 Q(-j DROP)132
408 Q F0(And we al)120 432 Q -.1(wa)-.1 G(ys allo).1 E 2.5(wo)-.25 G
(utgoing connections:)-2.5 E F1
($iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface \\)126 456 Q
(-j ACCEPT)132 468 Q F0(7)100 492 Q($rc_c is sourced)120 504 Q(8)100 516
Q(Allo)120 528 Q 2.5(wt)-.25 G(raf)-2.5 E(\214c to of)-.25 E
(fered services, from trusted sources:)-.25 E F1
($iptables -A INPUT -m conntrack --ctstate NEW \\)126 552 Q
(-i $iface --protocol $proto --source "$source" \\)132 564 Q
(--destination "$ip" --destination-port "$port" \\)132 576 Q(-j ACCEPT)
132 588 Q F0(9)100 612 Q($rc_d is sourced)120 624 Q(10)100 636 Q(Don')
120 648 Q 2.5(ta)-.18 G(nswer broadcast and multicast pack)-2.5 E(ets:)
-.1 E F1($iptables -A INPUT -i $iface --destination "$bcast" \\)126 672
Q(-j DROP)132 684 Q F0(11)100 708 Q($rc_f is sourced)120 720 Q
(uruk 20130809)20 768 Q 2.5<39d0>142.34 G-2.5 E(3)
198.17 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F(12)100 84 Q(Explicitly allo)120 96 Q
2.5(was)-.25 G(ubset of the ICMP types. \(W)-2.5 E 2.5(ed)-.8 G(isallo)
-2.5 E 2.5(wa)-.25 G(ll other traf)-2.5 E(\214c later.\))-.25 E/F1 10
/Courier@0 SF($iptables -A INPUT --protocol icmp --icmp-type $type \\)
126 120 Q(-j ACCEPT)132 132 Q F0(13)100 156 Q($rc_g is sourced)120 168 Q
(14)100 180 Q(Log pack)120 192 Q(ets \(which mak)-.1 E 2.5(ei)-.1 G 2.5
(tt)-2.5 G(ill here\))-2.5 E F1
($iptables -A INPUT -j LOG --log-level debug \\)126 216 Q
(--log-prefix 'iptables: ')132 228 Q F0(15)100 252 Q($rc_h is sourced)
120 264 Q(16)100 276 Q(Reject all other pack)120 288 Q(ets)-.1 E F1
($iptables -A INPUT -j REJECT)126 312 Q F0(17)100 336 Q
($rc_i is sourced)120 348 Q/F2 10.95/Times-Bold@0 SF(USING uruk-sa)20
364.8 Q .22 -.11(ve A)-.274 H 2.738(ST).11 G(HE INITSCRIPT B)-2.738 E
-.602(AC)-.329 G(KEND).602 E F0 .475(By def)100 376.8 R(ault,)-.1 E/F3
10/Times-Bold@0 SF(uruk-sa)2.975 E -.1(ve)-.25 G F0 .475
(is not used by the uruk init script. Y)3.075 F .474(ou might w)-1.1 F
.474(ant to use it, though. The)-.1 F F3(uruk-sa)100 388.8 Q -.1(ve)-.25
G F0 .032(script is f)2.632 F .032(aster and when using)-.1 F F3
(uruk-sa)2.532 E -.1(ve)-.25 G F0 2.532(,y).1 G .032(our box w)-2.532 F
(on')-.1 E 2.532(tb)-.18 G 2.532(eo)-2.532 G .032(pen while loading ne)
-2.532 F(w)-.25 E(rules. But be)100 400.8 Q -.1(wa)-.25 G(re:).1 E F3
(uruk-sa)2.5 E -.1(ve)-.25 G F0(is not as rob)2.6 E(ust as using)-.2 E
F3(uruk)2.5 E F0(itself.)2.5 E .964(The script)100 424.8 R F3(urukctl)
3.464 E F0 .964(\(and thus the uruk init script\) will use)3.464 F F3
(uruk-sa)3.464 E -.1(ve)-.25 G F0 .964(only if ask)3.564 F .964
(ed to do so in)-.1 F F1(/etc/default/uruk)100 436.8 Q F0(\(or)2.5 E F1
(/etc/sysconfig/uruk)2.5 E F0(\). If this \214le features)A F1
(enable_uruk_save=true)106 472.8 Q F3(uruk-sa)100 496.8 Q -.1(ve)-.25 G
F0(is used whene)2.6 E -.15(ve)-.25 G 2.5(ra).15 G 2.5(ppropriate. See)
-2.5 F F3(uruk-sa)2.5 E -.1(ve)-.25 G(\(8\)).1 E F0(for more details.)
2.5 E F2(DEF)20 513.6 Q -.548(AU)-.986 G 2.014 -1.007(LT P).548 H(OLICY)
1.007 E F0 1.196(By def)100 525.6 R(ault,)-.1 E F3(uruk)3.696 E F0 1.196
(drops pack)3.696 F 1.196(ets which ha)-.1 F 1.496 -.15(ve u)-.2 H(nkno)
.15 E 1.196(wn RFC 1918 pri)-.25 F -.25(va)-.25 G 1.196(te netw).25 F
1.197(ork addresses in)-.1 F(their source or destination.)100 537.6 Q
(It rejects pack)100 561.6 Q
(ets with source nor destination for one of our IPs.)-.1 E -.15(Pa)100
585.6 S(ck).15 E .144
(ets belonging to locally initiated sessions are allo)-.1 F .144
(wed: we match state; the local host can act)-.25 F(as a client for an)
100 597.6 Q 2.5(yr)-.15 G(emote service.)-2.5 E .834(By def)100 621.6 R
(ault,)-.1 E F3(uruk)3.334 E F0 .834(drops all ICMP pack)3.334 F .834
(ets \(e)-.1 F .834(xcept those for interf)-.15 F .835(aces in $interf)
-.1 F(aces_unprotect\))-.1 E(with type other than)100 633.6 Q<83>100
657.6 Q(address-mask-reply)120 669.6 Q<83>100 681.6 Q
(address-mask-request)120 693.6 Q<83>100 705.6 Q
(destination-unreachable \(this is a catch-all for a lot of types\))120
717.6 Q<83>100 729.6 Q(uruk 20130809)20 768 Q 2.5<39d0>142.34 G
-2.5 E(4)198.17 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F(echo-request)120 84 Q<83>100 96 Q
(echo-reply)120 108 Q<83>100 120 Q(parameter)120 132 Q
(-problem \(catch-all for ip-header)-.2 E
(-bad and required-option-missing\))-.2 E<83>100 144 Q(timestamp-reply)
120 156 Q<83>100 168 Q(timestamp-request)120 180 Q<83>100 192 Q
(ttl-zero-during-transit)120 204 Q<83>100 216 Q
(ttl-zero-during-reassembly)120 228 Q 1.658(By def)100 252 R 1.658
(ault, the FOR)-.1 F -1.2(WA)-.55 G 1.657
(RD chain is left untouched, so has polic)1.2 F 4.157(yA)-.15 G 1.657
(CCEPT. \(This w)-4.557 F(on')-.1 E 4.157(td)-.18 G(o)-4.157 E .412
(much harm, since pack)100 264 R .412(et forw)-.1 F .413
(arding is disabled by def)-.1 F .413(ault in the Linux k)-.1 F .413
(ernel. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.213 -.4(r, i).15 H 2.913(fy)
.4 G(ou)-2.913 E(don')100 276 Q 2.5(tm)-.18 G
(ind being paranoid, you might w)-2.5 E(ant to add a)-.1 E/F1 10
/Courier@0 SF(iptables --policy FORWARD REJECT)106 300 Q F0
(to your $rc_a uruk hook. See)100 324 Q/F2 10/Times-Bold@0 SF(uruk-r)2.5
E(c\(5\))-.18 E F0(.\))A .348(By def)100 348 R(ault,)-.1 E F2(uruk)2.848
E F0 .348(logs all UDP and TCP pack)2.848 F .347(ets which are block)-.1
F .347(ed by the user de\214ned policies.)-.1 F(Logle)100 360 Q -.15(ve)
-.25 G 2.5(li).15 G 2.5(sd)-2.5 G(eb)-2.5 E
(ug, logpre\214x is "iptables:". See also the notes on)-.2 E/F3 10
/Times-Italic@0 SF(lo)2.5 E(gle)-.1 E(vel)-.15 E F0(in)2.5 E F2(uruk-r)
2.5 E(c\(5\))-.18 E F0(.)A(Block)100 384 Q(ed TCP pack)-.1 E
(ets are answered with a tcp-reset.)-.1 E/F4 10.95/Times-Bold@0 SF
-1.314(WA)20 400.8 S(RNING)1.314 E F0 .994(In order to k)100 412.8 R
.994(eep the)-.1 F F2(uruk)3.494 E F0 .994
(script small and simple, the script does v)3.494 F .994
(ery little error handling. It)-.15 F .406
(does not check the contents of the)100 424.8 R F3 -.37(rc)2.905 G F0
.405(\214le in an)3.275 F 2.905(yw)-.15 G .405(ay before e)-3.005 F -.15
(xe)-.15 G .405(cuting it. When your).15 F F3 -.37(rc)2.905 G F0 .405
(\214le con-)3.275 F(tains bogus stuf)100 436.8 Q(f,)-.25 E F2(uruk)2.5
E F0(will v)2.5 E(ery lik)-.15 E(ely beha)-.1 E .3 -.15(ve i)-.2 H 2.5
(nu).15 G(ne)-2.5 E(xpected w)-.15 E(ays. Ca)-.1 E -.15(ve)-.2 G
(at emptor.).15 E F4(ENVIR)20 453.6 Q(ONMENT)-.329 E F0 -1.1(Yo)100
465.6 S 3.398(uc)1.1 G .898(an o)-3.398 F -.15(ve)-.15 G .898
(rride some def).15 F .898(aults in the shell before e)-.1 F -.15(xe)
-.15 G .898(cuting the uruk script.).15 F F2(uruk)5.898 E F0 .898
(honors the)3.398 F(follo)100 477.6 Q(wing v)-.25 E(ariables:)-.25 E<83>
100 501.6 Q("UR)120 513.6 Q(UK_CONFIG" Full pathname of)-.4 E F3 -.37
(rc)2.5 G F0(\214le;)2.87 E F1(/etc/uruk/rc)2.5 E F0(by def)2.5 E(ault.)
-.1 E<83>100 525.6 Q("UR)120 537.6 Q(UK_IPT)-.4 E 3.967
(ABLES" Full pathname of iptables e)-.93 F -.15(xe)-.15 G(cutable.).15 E
F1(/sbin/iptables)8.967 E F0(by)6.467 E(def)120 549.6 Q(ault. Ov)-.1 E
(errides)-.15 E F3(iptables)2.5 E F0(.)A<83>100 561.6 Q("UR)120 573.6 Q
(UK_IP6T)-.4 E .771(ABLES" Full pathname of ip6tables e)-.93 F -.15(xe)
-.15 G .771(cutable, for IPv6 support. Ov).15 F(errides)-.15 E F3
(ip6tables)120 585.6 Q F0(.)A<83>100 597.6 Q("UR)120 609.6 Q(UK_INTERF)
-.4 E -.4(AC)-.74 G(ES_UNPR).4 E -.4(OT)-.4 G 1.449(ECT" Def).4 F 1.448
(ault list of unprotected interf)-.1 F 3.948(aces. Ov)-.1 F(errides)-.15
E F3(interfaces_unpr)120 621.6 Q(otect)-.45 E F0 2.5(.T)C(he def)-2.5 E
(ault def)-.1 E(ault is)-.1 E F1(lo)2.5 E F0(.)A F4(SEE ALSO)20 638.4 Q
F2(uruk-r)100 650.4 Q(c\(5\))-.18 E F0(,)A F2(uruk-sa)2.5 E -.1(ve)-.25
G(\(8\)).1 E F0 2.5(.T)C(he Uruk homepage is at http://mdcc.cx/uruk/ .)
-2.5 E F2(iptables\(8\))100 674.4 Q F0(,)A F2(iptables-sa)4.652 E -.1
(ve)-.25 G(\(8\)).1 E F0(,)A F2(iptables-r)4.652 E(estor)-.18 E(e\(8\))
-.18 E F0(,)A F2(ip6tables\(8\))4.652 E F0(,)A F2(ip6tables-sa)4.652 E
-.1(ve)-.25 G(\(8\)).1 E F0(,)A F2(ip6tables-)4.652 E -.18(re)100 686.4
S(stor).18 E(e\(8\))-.18 E F0 2.5(,h)C(ttp://www.net\214lter.or)-2.5 E
(g/)-.18 E F2(interfaces\(5\))100 710.4 Q F0 2.5(,h)C
(ttp://packages.debian.or)-2.5 E(g/ifupdo)-.18 E(wn.)-.25 E
(uruk 20130809)20 768 Q 2.5<39d0>142.34 G-2.5 E(5)
198.17 E 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 136.515(uruk\(8\) SYSTEM)20 48 R(ADMINISTRA)2.5
E 139.015(TION uruk\(8\))-1.11 F/F1 10.95/Times-Bold@0 SF(COPYRIGHT)20
84 Q F0(Cop)100 96 Q 1.825(yright \(C\) 2003 Stichting LogReport F)-.1 F
1.825(oundation logreport@logreport.or)-.15 F 1.825(g; Cop)-.18 F 1.825
(yright \(C\))-.1 F .309(2003, 2004 T)100 108 R(ilb)-.35 E(ur)-.2 E
2.809(gU)-.18 G(ni)-2.809 E -.15(ve)-.25 G .309
(rsity http://www.uvt.nl/; Cop).15 F .309
(yright \(C\) 2003-2013 Joost v)-.1 F .309(an Baal-Ili\304)-.25 F
()100 120 Q 1.217(This program is free softw)100
144 R 1.217(are: you can redistrib)-.1 F 1.217
(ute it and/or modify it under the terms of the)-.2 F .466
(GNU General Public License as published by the Free Softw)100 156 R
.466(are F)-.1 F .466(oundation, either v)-.15 F .466(ersion 3 of)-.15 F
(the License, or \(at your option\) an)100 168 Q 2.5(yl)-.15 G(ater v)
-2.5 E(ersion.)-.15 E 2.087(This program is distrib)100 192 R 2.087
(uted in the hope that it will be useful, b)-.2 F 2.086
(ut WITHOUT ANY W)-.2 F(AR-)-1.2 E(RANTY)100 204 Q 4.226(;w)-.92 G 1.726
(ithout e)-4.226 F -.15(ve)-.25 G 4.226(nt).15 G 1.726(he implied w)
-4.226 F 1.726(arranty of MERCHANT)-.1 F 1.727(ABILITY or FITNESS FOR A)
-.93 F -.92(PA)100 216 S -.6(RT).92 G
(ICULAR PURPOSE. See the GNU General Public License for more details.).6
E -1.1(Yo)100 240 S 2.589(us)1.1 G .089(hould ha)-2.589 F .389 -.15
(ve r)-.2 H(ecei).15 E -.15(ve)-.25 G 2.589(dac).15 G(op)-2.589 E 2.589
(yo)-.1 G 2.589(ft)-2.589 G .089
(he GNU General Public License along with this program. If)-2.589 F
(not, see http://www.gnu.or)100 252 Q(g/licenses/.)-.18 E F1 -.548(AU)20
268.8 S(THOR).548 E F0(Joost v)100 280.8 Q
(an Baal-Ili\304 )-.25 E(uruk 20130809)20 768 Q
2.5<39d0>142.34 G-2.5 E(6)198.17 E 0 Cg EP
%%Trailer
end
%%EOF
uruk-20160219/man/uruk.txt 0000644 0001750 0001750 00000026124 12201162772 012176 0000000 0000000 uruk(8) SYSTEM ADMINISTRATION uruk(8)
NAME
uruk - wrapper for Linux iptables, for managing firewall rules
SYNOPSIS
uruk
DESCRIPTION
uruk loads an rc file (see uruk-rc(5)) which defines network service
access policy, and invokes iptables(8) to set up firewall rules imple-
menting this policy. By default the file /etc/uruk/rc is used; one can
overrule this by specifying another file in the URUK_CONFIG environment
variable. Under some circumstances, it's useful to use another command
for iptables; this can be achieved by setting the URUK_IPTABLES (and/or
URUK_IP6TABLES) environment variables. See uruk-rc(5) for details.
QUICK SETUP GUIDE
Uruk will not "just work" out of the box. It needs manual configuration.
For those of you who don't like reading lots of documentation:
# cp /usr/share/doc/uruk/examples/rc \
/etc/uruk/rc
# vi /etc/uruk/rc
# urukctl start
GETTING STARTED
Once the uruk script is installed, you want to go use it, of course.
We'll give a detailed description of what to do here.
First, create an rc file. See uruk-rc(5) for info on how to do this.
Once this file is created and installed (this script looks in
/etc/uruk/rc by default), you're ready to run uruk. You might want to
test your rc file by running uruk in debug mode, see uruk-rc(5). There
are at least 3 ways to load your rc file. We'll first describe a low
level one: using vanilla iptables.
Vanilla iptables
After editing rc, load your rules like this. First flush your current
rules:
# iptables -F
# ip6tables -F
Then enable your rc rules
# uruk
. Inspect the rules by doing:
# iptables -L
# ip6tables -L
. If you want to make these changes survive a reboot, use the init
script as shipped with this package. If you'd rather write your own init
script, the iptables-restore(8) and iptables-save(8) commands from the
iptables package might be helpful.
Using the Uruk init script
Assumed is the Uruk init script is installed as explained in the README
file. Optionally, install /etc/default/uruk (or /etc/sysconfig/uruk)
and tweak it. An example file is in /usr/share/doc/uruk/examples/default
(You might like to enable support for uruk-save.) Now activate uruk by
doing:
# urukctl start
Now your pre-uruk iptables rules (if any) are saved as the "inactive"
ruleset. While executing urukctl start, your box is open during a short
while. If you don't like this, read below about uruk-save.
When rebooting, everything will be fine: /etc/init.d/uruk stores state
in /var/lib/uruk/iptables, using iptables-save(8), which comes with
Linux iptables.
Using Debian ifupdown
In case you have just one network interface which should get protected,
you could use interfaces(5) from the Debian ifupdown package instead of
the init script. Suppose you'd like to protect ppp0, and would like not
to interfere with traffic on eth0: your other network interface. First
write an rc file. Be sure it features
interfaces_unprotect="lo eth0"
Then run:
# mkdir -p /var/lib/uruk/iptables
# iptables -F
# iptables-save -c > /var/lib/uruk/iptables/down
# uruk
# iptables-save -c > /var/lib/uruk/iptables/up
Add
pre-up iptables-restore < /var/lib/uruk/iptables/up
post-down iptables-restore < /var/lib/uruk/iptables/down
to your interfaces stanza, in your /etc/network/interfaces .
Similar tricks might be possible on GNU/Linux systems from other distri-
butions. The author is interested.
LOADING A NEW rc FILE
Need to change your rules?
Using the Uruk init script
Do
# vi /etc/uruk/rc
# urukctl force-reload
While executing urukctl force-reload, your box is open during a short
while. If you don't like this, read below about uruk-save.
THE GORY DETAILS: uruk INTERNALS
The uruk script works like (and looks like) the list of statements
below. Of course, take a look at /sbin/uruk for the final word on the
workings.
1
rc is sourced as a shell script
2
Traffic on $interfaces_unprotect (just lo per default) is trusted:
$iptables -A INPUT -i $iface -j ACCEPT
3
$rc_a is sourced as a shell script, or, in case $rc_a is a directory,
all files matching $rc_a/*.rc are sourced as shell scripts
4
ESTABLISHED and RELATED packets are ACCEPT-ed:
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED \
-j ACCEPT
5
$rc_b is sourced
6
$interfaces gets protected against spoofing: we don't allow anyone to
spoof non-routeable addresses. We block outgoing packets that don't
have our address as source: they are either spoofed or something is
misconfigured (NAT disabled, for instance). We want to be nice and
don't send out garbage.
$iptables -A INPUT -i $iface --source $no_route_ip \
-j DROP
We drop all incoming packets which don't have us as destination:
$iptables -A OUTPUT -o $iface --source ! "$ip" \
-j DROP
And we always allow outgoing connections:
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface \
-j ACCEPT
7
$rc_c is sourced
8
Allow traffic to offered services, from trusted sources:
$iptables -A INPUT -m conntrack --ctstate NEW \
-i $iface --protocol $proto --source "$source" \
--destination "$ip" --destination-port "$port" \
-j ACCEPT
9
$rc_d is sourced
10
Don't answer broadcast and multicast packets:
$iptables -A INPUT -i $iface --destination "$bcast" \
-j DROP
11
$rc_f is sourced
12
Explicitly allow a subset of the ICMP types. (We disallow all other
traffic later.)
$iptables -A INPUT --protocol icmp --icmp-type $type \
-j ACCEPT
13
$rc_g is sourced
14
Log packets (which make it till here)
$iptables -A INPUT -j LOG --log-level debug \
--log-prefix 'iptables: '
15
$rc_h is sourced
16
Reject all other packets
$iptables -A INPUT -j REJECT
17
$rc_i is sourced
USING uruk-save AS THE INITSCRIPT BACKEND
By default, uruk-save is not used by the uruk init script. You might
want to use it, though. The uruk-save script is faster and when using
uruk-save, your box won't be open while loading new rules. But beware:
uruk-save is not as robust as using uruk itself.
The script urukctl (and thus the uruk init script) will use uruk-save
only if asked to do so in /etc/default/uruk (or /etc/sysconfig/uruk). If
this file features
enable_uruk_save=true
uruk-save is used whenever appropriate. See uruk-save(8) for more
details.
DEFAULT POLICY
By default, uruk drops packets which have unknown RFC 1918 private net-
work addresses in their source or destination.
It rejects packets with source nor destination for one of our IPs.
Packets belonging to locally initiated sessions are allowed: we match
state; the local host can act as a client for any remote service.
By default, uruk drops all ICMP packets (except those for interfaces in
$interfaces_unprotect) with type other than
o
address-mask-reply
o
address-mask-request
o
destination-unreachable (this is a catch-all for a lot of types)
o
echo-request
o
echo-reply
o
parameter-problem (catch-all for ip-header-bad and required-option-
missing)
o
timestamp-reply
o
timestamp-request
o
ttl-zero-during-transit
o
ttl-zero-during-reassembly
By default, the FORWARD chain is left untouched, so has policy ACCEPT.
(This won't do much harm, since packet forwarding is disabled by default
in the Linux kernel. However, if you don't mind being paranoid, you
might want to add a
iptables --policy FORWARD REJECT
to your $rc_a uruk hook. See uruk-rc(5).)
By default, uruk logs all UDP and TCP packets which are blocked by the
user defined policies. Loglevel is debug, logprefix is "iptables:". See
also the notes on loglevel in uruk-rc(5).
Blocked TCP packets are answered with a tcp-reset.
WARNING
In order to keep the uruk script small and simple, the script does very
little error handling. It does not check the contents of the rc file in
any way before executing it. When your rc file contains bogus stuff,
uruk will very likely behave in unexpected ways. Caveat emptor.
ENVIRONMENT
You can override some defaults in the shell before executing the uruk
script. uruk honors the following variables:
o
"URUK_CONFIG" Full pathname of rc file; /etc/uruk/rc by default.
o
"URUK_IPTABLES" Full pathname of iptables executable. /sbin/iptables
by default. Overrides iptables.
o
"URUK_IP6TABLES" Full pathname of ip6tables executable, for IPv6 sup-
port. Overrides ip6tables.
o
"URUK_INTERFACES_UNPROTECT" Default list of unprotected interfaces.
Overrides interfaces_unprotect. The default default is lo.
SEE ALSO
uruk-rc(5), uruk-save(8). The Uruk homepage is at http://mdcc.cx/uruk/ .
iptables(8), iptables-save(8), iptables-restore(8), ip6tables(8),
ip6tables-save(8), ip6tables-restore(8), http://www.netfilter.org/
interfaces(5), http://packages.debian.org/ifupdown.
COPYRIGHT
Copyright (C) 2003 Stichting LogReport Foundation logreport@logre-
port.org; Copyright (C) 2003, 2004 Tilburg University
http://www.uvt.nl/; Copyright (C) 2003-2013 Joost van Baal-Ili
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABIL-
ITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ili
uruk 20130809 9 2013 uruk(8)
uruk-20160219/man/urukctl.html 0000644 0001750 0001750 00000031616 12201162773 013031 0000000 0000000
urukctl
9 авг 2013
urukctl
20130809
NAME
urukctl — uruk control script
SYNOPSIS
urukctl command [argument]
DESCRIPTION
urukctl is the user interface for the uruk system. It is used to create or
change saved iptables rulesets, to change the current loaded rulesets and to
report on uruk's status.
See uruk(8) for information on how to get started with the Uruk
system, and for a tutorial. This manpage gives just the details on urukctl.
The urukctl script calls uruk to process /etc/uruk/rc. (The uruk init script
calls urukctl.)
These 4 ruleset pairs (for both IPv4 and IPv6) exist in a system using uruk:
the ruleset as expressed in the uruk configuration /etc/uruk/rc,
the 2 saved rulesets in /var/lib/{iptables,ip6tables}/{active,inactive}
the ruleset as currently loaded in the running kernel
optional: more rulesets saved in /var/lib/{iptables,ip6tables}
arguments
urukctl should be called as either urukctl argument or
urukctl argument option. Possible values are:
If not yet done, save current iptables status in "inactive" ruleset.
(Re)build and load the "active" ruleset.
Save the current iptables status in given ruleset.
Create an "active" or "inactive" ruleset with sane defaults: "active"
will be based upon the uruk rc file. "inactive" will allow all traffic.
(Re)build and load the "active" ruleset, without temporarily clearing the
current iptables status.
(Re)build and load the "active" ruleset, in case uruk is running.
Load the "inactive" ruleset.
Perform stop-actions followed by start-actions.
Print the current status of the service: show which ruleset is loaded, and
wether uruk is "running".
Remove all rules and user-defined chains, set default policy to ACCEPT.
Remove all rules and user-defined chains, set default policy to DROP.
Flush all rules from the current iptables status.
configuration
urukctl uses the file /etc/default/uruk (on Debian, Ubuntu and related
systems) or /etc/sysconfig/uruk (on Red Hat, Fedora and related systems) for
configuration. Variables used in this file are:
wether to check for existence and sanity of uruk rc file; set to false if
you don't like this, e.g. when using the uruk initscript for managing saved
rulesets only (i.e. not for calling uruk or uruk-save).
set to false to disable IPv6 support. Set to $(enable-ipv6) to
dynamically decide wether to filter IPv6 traffic.
enable calling the unstable uruk-save script.
set to "false" to disable autosaving the active ruleset when going from
start to stop.
set to "false" to disable saving table counters with rulesets.
SEE ALSO
uruk(8), uruk-rc(5),
uruk-save(8). The Uruk homepage is at
http://mdcc.cx/uruk/ .
iptables(8), iptables-save(8),
iptables-restore(8),
ip6tables(8), ip6tables-save(8),
ip6tables-restore(8), http://www.netfilter.org/
interfaces(5), http://packages.debian.org/ifupdown.
COPYRIGHT
Copyright (C) 2013 Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ilić <joostvb-uruk@mdcc.cx>
uruk-20160219/man/urukctl.ps 0000644 0001750 0001750 00000033633 12201162773 012510 0000000 0000000 %!PS-Adobe-3.0
%%Creator: groff version 1.21
%%CreationDate: Fri Aug 9 14:52:11 2013
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.21 0
%%Pages: 3
%%PageOrder: Ascend
%%DocumentMedia: Default 595 842 0 () ()
%%Orientation: Portrait
%%EndComments
%%BeginDefaults
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
%%BeginResource: procset grops 1.21 0
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
currentpacking
true setpacking
}if
/grops 120 dict dup begin
/SC 32 def
/A/show load def
/B{0 SC 3 -1 roll widthshow}bind def
/C{0 exch ashow}bind def
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
/E{0 rmoveto show}bind def
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
/G{0 rmoveto 0 exch ashow}bind def
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/I{0 exch rmoveto show}bind def
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
/K{0 exch rmoveto 0 exch ashow}bind def
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/M{rmoveto show}bind def
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
/O{rmoveto 0 exch ashow}bind def
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/Q{moveto show}bind def
/R{moveto 0 SC 3 -1 roll widthshow}bind def
/S{moveto 0 exch ashow}bind def
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
/SF{
findfont exch
[exch dup 0 exch 0 exch neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/MF{
findfont
[5 2 roll
0 3 1 roll
neg 0 0]makefont
dup setfont
[exch/setfont cvx]cvx bind def
}bind def
/level0 0 def
/RES 0 def
/PL 0 def
/LS 0 def
/MANUAL{
statusdict begin/manualfeed true store end
}bind def
/PLG{
gsave newpath clippath pathbbox grestore
exch pop add exch pop
}bind def
/BP{
/level0 save def
1 setlinecap
1 setlinejoin
DEFS/BPhook known{DEFS begin BPhook end}if
72 RES div dup scale
LS{
90 rotate
}{
0 PL translate
}ifelse
1 -1 scale
}bind def
/EP{
level0 restore
showpage
}def
/DA{
newpath arcn stroke
}bind def
/SN{
transform
.25 sub exch .25 sub exch
round .25 add exch round .25 add exch
itransform
}bind def
/DL{
SN
moveto
SN
lineto stroke
}bind def
/DC{
newpath 0 360 arc closepath
}bind def
/TM matrix def
/DE{
TM currentmatrix pop
translate scale newpath 0 0 .5 0 360 arc closepath
TM setmatrix
}bind def
/RC/rcurveto load def
/RL/rlineto load def
/ST/stroke load def
/MT/moveto load def
/CL/closepath load def
/Fr{
setrgbcolor fill
}bind def
/setcmykcolor where{
pop
/Fk{
setcmykcolor fill
}bind def
}if
/Fg{
setgray fill
}bind def
/FL/fill load def
/LW/setlinewidth load def
/Cr/setrgbcolor load def
/setcmykcolor where{
pop
/Ck/setcmykcolor load def
}if
/Cg/setgray load def
/RE{
findfont
dup maxlength 1 index/FontName known not{1 add}if dict begin
{
1 index/FID ne
2 index/UniqueID ne
and
{def}{pop pop}ifelse
}forall
/Encoding exch def
dup/FontName exch def
currentdict end definefont pop
}bind def
/DEFS 0 def
/EBEGIN{
moveto
DEFS begin
}bind def
/EEND/end load def
/CNT 0 def
/level1 0 def
/PBEGIN{
/level1 save def
translate
div 3 1 roll div exch scale
neg exch neg exch translate
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[]0 setdash
/setstrokeadjust where{
pop
false setstrokeadjust
}if
/setoverprint where{
pop
false setoverprint
}if
newpath
/CNT countdictstack def
userdict begin
/showpage{}def
/setpagedevice{}def
mark
}bind def
/PEND{
cleartomark
countdictstack CNT sub{end}repeat
level1 restore
}bind def
end def
/setpacking where{
pop
setpacking
}if
%%EndResource
%%EndProlog
%%BeginSetup
%%BeginFeature: *PageSize Default
<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice
%%EndFeature
%%IncludeResource: font Times-Roman
%%IncludeResource: font Times-Bold
%%IncludeResource: font Times-Italic
%%IncludeResource: font Courier
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 126.515(urukctl\(8\) SYSTEM)20 48 R(ADMINISTRA)
2.5 E 129.015(TION urukctl\(8\))-1.11 F/F1 10.95/Times-Bold@0 SF -.219
(NA)20 84 S(ME).219 E F0(urukctl \255 uruk control script)100 96 Q F1
(SYNOPSIS)20 112.8 Q/F2 10/Times-Bold@0 SF(urukctl)100 124.8 Q/F3 10
/Times-Italic@0 SF(command)2.5 E F2([)2.5 E F3(ar)A(gument)-.37 E F2(])A
F1(DESCRIPTION)20 141.6 Q F2(urukctl)100 153.6 Q F0 1.057
(is the user interf)3.558 F 1.057
(ace for the uruk system. It is used to create or change sa)-.1 F -.15
(ve)-.2 G 3.557(di).15 G(ptables)-3.557 E
(rulesets, to change the current loaded rulesets and to report on uruk')
100 165.6 Q 2.5(ss)-.55 G(tatus.)-2.5 E(See)100 189.6 Q F2(uruk\(8\))
2.807 E F0 .307(for information on ho)2.807 F 2.807(wt)-.25 G 2.808(og)
-2.807 G .308(et started with the Uruk system, and for a tutorial. This)
-2.808 F(manpage gi)100 201.6 Q -.15(ve)-.25 G 2.5(sj).15 G
(ust the details on)-2.5 E F2(urukctl)2.5 E F0(.)A(The)100 225.6 Q F2
(urukctl)2.5 E F0(script calls)2.5 E F2(uruk)2.5 E F0
(to process /etc/uruk/rc. \(The uruk init script calls)2.5 E F2(urukctl)
2.5 E F0(.\))A(These 4 ruleset pairs \(for both IPv4 and IPv6\) e)100
249.6 Q(xist in a system using uruk:)-.15 E<83>100 273.6 Q
(the ruleset as e)120 285.6 Q
(xpressed in the uruk con\214guration /etc/uruk/rc,)-.15 E<83>100 297.6
Q 3.906(the 2 sa)120 309.6 R -.15(ve)-.2 G 6.406(dr).15 G 3.906
(ulesets in)-6.406 F/F4 10/Courier@0 SF
(/var/lib/{iptables,ip6tables}/{active,inac-)6.406 E(tive})120 321.6 Q
F0<83>100 333.6 Q(the ruleset as currently loaded in the running k)120
345.6 Q(ernel)-.1 E<83>100 357.6 Q(optional: more rulesets sa)120 369.6
Q -.15(ve)-.2 G 2.5(di).15 G(n)-2.5 E F4(/var/lib/{iptables,ip6tables})
2.5 E F2(ar)100 393.6 Q(guments)-.1 E(urukctl)100 405.6 Q F0 .466
(should be called as either)2.965 F F4(urukctl)2.966 E F3(ar)2.966 E
(gument)-.37 E F0(or)2.966 E F4(urukctl)2.966 E F3(ar)2.966 E .466
(gument option)-.37 F F0 2.966(.P)C(ossible)-2.966 E -.25(va)100 417.6 S
(lues are:).25 E F2(start)100 441.6 Q F0 1.35(If not yet done, sa)120
453.6 R 1.65 -.15(ve c)-.2 H 1.35(urrent iptables status in "inacti).15
F -.15(ve)-.25 G 3.85("r).15 G 3.85(uleset. \(Re\)b)-3.85 F 1.35
(uild and load the)-.2 F("acti)120 465.6 Q -.15(ve)-.25 G 2.5("r).15 G
(uleset.)-2.5 E F2(sa)100 489.6 Q -.1(ve)-.25 G F3(ruleset)2.6 E F0(Sa)
120 501.6 Q .3 -.15(ve t)-.2 H(he current iptables status in gi).15 E
-.15(ve)-.25 G 2.5(nr).15 G(uleset.)-2.5 E F2(cr)100 525.6 Q(eate)-.18 E
F0(<)2.5 E F4(active)A F0(|)A F4(inactive)A F0(>)A .706(Create an "acti)
120 537.6 R -.15(ve)-.25 G 3.206("o).15 G 3.206(r")-3.206 G(inacti)
-3.206 E -.15(ve)-.25 G 3.206("r).15 G .706(uleset with sane def)-3.206
F .707(aults: "acti)-.1 F -.15(ve)-.25 G 3.207("w).15 G .707
(ill be based upon the)-3.207 F(uruk rc \214le. "inacti)120 549.6 Q -.15
(ve)-.25 G 2.5("w).15 G(ill allo)-2.5 E 2.5(wa)-.25 G(ll traf)-2.5 E
(\214c.)-.25 E F2(load)100 573.6 Q F3(ruleset)2.5 E F0(Load a sa)120
585.6 Q -.15(ve)-.2 G 2.5(dr).15 G(uleset)-2.5 E F2 -.18(re)100 609.6 S
(load).18 E F0(\(Re\)b)120 621.6 Q 1.51(uild and load the "acti)-.2 F
-.15(ve)-.25 G 4.01("r).15 G 1.51
(uleset, without temporarily clearing the current iptables)-4.01 F
(status.)120 633.6 Q F2 -.25(fo)100 657.6 S -.18(rc).25 G(e-r).18 E
(eload)-.18 E F0(\(Re\)b)120 669.6 Q(uild and load the "acti)-.2 E -.15
(ve)-.25 G 2.5("r).15 G(uleset, in case uruk is running.)-2.5 E F2(stop)
100 693.6 Q F0(Load the "inacti)120 705.6 Q -.15(ve)-.25 G 2.5("r).15 G
(uleset.)-2.5 E F2 -.18(re)100 729.6 S(start).18 E F0(urukctl 20130809)
20 768 Q 2.5<39d0>132.34 G-2.5 E(1)198.17 E 0 Cg
EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 126.515(urukctl\(8\) SYSTEM)20 48 R(ADMINISTRA)
2.5 E 129.015(TION urukctl\(8\))-1.11 F(Perform stop-actions follo)120
84 Q(wed by start-actions.)-.25 E/F1 10/Times-Bold@0 SF(status)100 108 Q
F0 1.442(Print the current status of the service: sho)120 120 R 3.943
(ww)-.25 G 1.443(hich ruleset is loaded, and wether uruk is)-3.943 F
("running".)120 132 Q F1(clear)100 156 Q F0(Remo)120 168 Q .3 -.15(ve a)
-.15 H(ll rules and user).15 E(-de\214ned chains, set def)-.2 E
(ault polic)-.1 E 2.5(yt)-.15 G 2.5(oA)-2.5 G(CCEPT.)-2.9 E F1(halt)100
192 Q F0(Remo)120 204 Q .3 -.15(ve a)-.15 H(ll rules and user).15 E
(-de\214ned chains, set def)-.2 E(ault polic)-.1 E 2.5(yt)-.15 G 2.5(oD)
-2.5 G -.4(RO)-2.5 G(P.).4 E F1(\215ush)100 228 Q F0
(Flush all rules from the current iptables status.)120 240 Q F1
(con\214guration)100 264 Q(urukctl)100 276 Q F0 .904
(uses the \214le /etc/def)3.405 F .904(ault/uruk \(on Debian, Ub)-.1 F
.904(untu and related systems\) or /etc/syscon-)-.2 F .892(\214g/uruk \
\(on Red Hat, Fedora and related systems\) for con\214guration. V)100
288 R .892(ariables used in this \214le)-1.11 F(are:)100 300 Q
(enable_uruk_check)100 324 Q .894(wether to check for e)120 336 R .894
(xistence and sanity of uruk rc \214le; set to f)-.15 F .894
(alse if you don')-.1 F 3.393(tl)-.18 G(ik)-3.393 E 3.393(et)-.1 G(his,)
-3.393 E 1.433(e.g. when using the uruk initscript for managing sa)120
348 R -.15(ve)-.2 G 3.933(dr).15 G 1.433
(ulesets only \(i.e. not for calling)-3.933 F(uruk or uruk-sa)120 360 Q
-.15(ve)-.2 G(\).).15 E(enable_ipv6)100 384 Q 2.08(set to f)120 396 R
2.079(alse to disable IPv6 support. Set to)-.1 F/F2 10/Courier@0 SF
($\(enable-ipv6\))4.579 E F0 2.079(to dynamically decide)4.579 F
(wether to \214lter IPv6 traf)120 408 Q(\214c.)-.25 E(enable_uruk_sa)100
432 Q -.15(ve)-.2 G(enable calling the unstable uruk-sa)120 444 Q .3
-.15(ve s)-.2 H(cript.).15 E(enable_autosa)100 468 Q -.15(ve)-.2 G
(set to "f)120 480 Q(alse" to disable autosa)-.1 E(ving the acti)-.2 E
.3 -.15(ve r)-.25 H(uleset when going from start to stop.).15 E
(enable_sa)100 504 Q -.15(ve)-.2 G(_counters).15 E(set to "f)120 516 Q
(alse" to disable sa)-.1 E(ving table counters with rulesets.)-.2 E/F3
10.95/Times-Bold@0 SF(SEE ALSO)20 532.8 Q F1(uruk\(8\))100 544.8 Q F0(,)
A F1(uruk-r)2.5 E(c\(5\))-.18 E F0(,)A F1(uruk-sa)2.5 E -.1(ve)-.25 G
(\(8\)).1 E F0 2.5(.T)C(he Uruk homepage is at http://mdcc.cx/uruk/ .)
-2.5 E F1(iptables\(8\))100 568.8 Q F0(,)A F1(iptables-sa)4.652 E -.1
(ve)-.25 G(\(8\)).1 E F0(,)A F1(iptables-r)4.652 E(estor)-.18 E(e\(8\))
-.18 E F0(,)A F1(ip6tables\(8\))4.652 E F0(,)A F1(ip6tables-sa)4.652 E
-.1(ve)-.25 G(\(8\)).1 E F0(,)A F1(ip6tables-)4.652 E -.18(re)100 580.8
S(stor).18 E(e\(8\))-.18 E F0 2.5(,h)C(ttp://www.net\214lter.or)-2.5 E
(g/)-.18 E F1(interfaces\(5\))100 604.8 Q F0 2.5(,h)C
(ttp://packages.debian.or)-2.5 E(g/ifupdo)-.18 E(wn.)-.25 E F3
(COPYRIGHT)20 621.6 Q F0(Cop)100 633.6 Q(yright \(C\) 2013 Joost v)-.1 E
(an Baal-Ili\304 )-.25 E 1.217
(This program is free softw)100 657.6 R 1.217(are: you can redistrib)-.1
F 1.217(ute it and/or modify it under the terms of the)-.2 F .466
(GNU General Public License as published by the Free Softw)100 669.6 R
.466(are F)-.1 F .466(oundation, either v)-.15 F .466(ersion 3 of)-.15 F
(the License, or \(at your option\) an)100 681.6 Q 2.5(yl)-.15 G(ater v)
-2.5 E(ersion.)-.15 E 2.087(This program is distrib)100 705.6 R 2.087
(uted in the hope that it will be useful, b)-.2 F 2.086
(ut WITHOUT ANY W)-.2 F(AR-)-1.2 E(RANTY)100 717.6 Q 4.226(;w)-.92 G
1.726(ithout e)-4.226 F -.15(ve)-.25 G 4.226(nt).15 G 1.726
(he implied w)-4.226 F 1.726(arranty of MERCHANT)-.1 F 1.727
(ABILITY or FITNESS FOR A)-.93 F -.92(PA)100 729.6 S -.6(RT).92 G
(ICULAR PURPOSE. See the GNU General Public License for more details.).6
E(urukctl 20130809)20 768 Q 2.5<39d0>132.34 G-2.5
E(2)198.17 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 126.515(urukctl\(8\) SYSTEM)20 48 R(ADMINISTRA)
2.5 E 129.015(TION urukctl\(8\))-1.11 F -1.1(Yo)100 84 S 2.589(us)1.1 G
.089(hould ha)-2.589 F .389 -.15(ve r)-.2 H(ecei).15 E -.15(ve)-.25 G
2.589(dac).15 G(op)-2.589 E 2.589(yo)-.1 G 2.589(ft)-2.589 G .089
(he GNU General Public License along with this program. If)-2.589 F
(not, see http://www.gnu.or)100 96 Q(g/licenses/.)-.18 E/F1 10.95
/Times-Bold@0 SF -.548(AU)20 112.8 S(THOR).548 E F0(Joost v)100 124.8 Q
(an Baal-Ili\304 )-.25 E(urukctl 20130809)20 768 Q
2.5<39d0>132.34 G-2.5 E(3)198.17 E 0 Cg EP
%%Trailer
end
%%EOF
uruk-20160219/man/urukctl.txt 0000644 0001750 0001750 00000011000 12201162773 012665 0000000 0000000 urukctl(8) SYSTEM ADMINISTRATION urukctl(8)
NAME
urukctl - uruk control script
SYNOPSIS
urukctl command [argument]
DESCRIPTION
urukctl is the user interface for the uruk system. It is used to create
or change saved iptables rulesets, to change the current loaded rulesets
and to report on uruk's status.
See uruk(8) for information on how to get started with the Uruk system,
and for a tutorial. This manpage gives just the details on urukctl.
The urukctl script calls uruk to process /etc/uruk/rc. (The uruk init
script calls urukctl.)
These 4 ruleset pairs (for both IPv4 and IPv6) exist in a system using
uruk:
o
the ruleset as expressed in the uruk configuration /etc/uruk/rc,
o
the 2 saved rulesets in /var/lib/{iptables,ip6tables}/{active,inac-
tive}
o
the ruleset as currently loaded in the running kernel
o
optional: more rulesets saved in /var/lib/{iptables,ip6tables}
arguments
urukctl should be called as either urukctl argument or urukctl argument
option. Possible values are:
start
If not yet done, save current iptables status in "inactive" ruleset.
(Re)build and load the "active" ruleset.
save ruleset
Save the current iptables status in given ruleset.
create
Create an "active" or "inactive" ruleset with sane defaults: "active"
will be based upon the uruk rc file. "inactive" will allow all traf-
fic.
load ruleset
Load a saved ruleset
reload
(Re)build and load the "active" ruleset, without temporarily clearing
the current iptables status.
force-reload
(Re)build and load the "active" ruleset, in case uruk is running.
stop
Load the "inactive" ruleset.
restart
Perform stop-actions followed by start-actions.
status
Print the current status of the service: show which ruleset is loaded,
and wether uruk is "running".
clear
Remove all rules and user-defined chains, set default policy to
ACCEPT.
halt
Remove all rules and user-defined chains, set default policy to DROP.
flush
Flush all rules from the current iptables status.
configuration
urukctl uses the file /etc/default/uruk (on Debian, Ubuntu and related
systems) or /etc/sysconfig/uruk (on Red Hat, Fedora and related systems)
for configuration. Variables used in this file are:
enable_uruk_check
wether to check for existence and sanity of uruk rc file; set to false
if you don't like this, e.g. when using the uruk initscript for manag-
ing saved rulesets only (i.e. not for calling uruk or uruk-save).
enable_ipv6
set to false to disable IPv6 support. Set to $(enable-ipv6) to dynami-
cally decide wether to filter IPv6 traffic.
enable_uruk_save
enable calling the unstable uruk-save script.
enable_autosave
set to "false" to disable autosaving the active ruleset when going
from start to stop.
enable_save_counters
set to "false" to disable saving table counters with rulesets.
SEE ALSO
uruk(8), uruk-rc(5), uruk-save(8). The Uruk homepage is at
http://mdcc.cx/uruk/ .
iptables(8), iptables-save(8), iptables-restore(8), ip6tables(8),
ip6tables-save(8), ip6tables-restore(8), http://www.netfilter.org/
interfaces(5), http://packages.debian.org/ifupdown.
COPYRIGHT
Copyright (C) 2013 Joost van Baal-Ili
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABIL-
ITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
AUTHOR
Joost van Baal-Ili
urukctl 20130809 9 2013 urukctl(8)
uruk-20160219/man/uruk-rc.azm 0000644 0001750 0001750 00000026767 12476342754 012603 0000000 0000000 \: vim:syntax=tex
\: this file maintained at http://git.mdcc.cx/uruk.git
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{uruk-rc}
{html_title}{Uruk rc file}
{section}{5}
\man_share
}
\${html}{\"pud::man::maketoc"}
\sec{name}{NAME}
\NAME{uruk-rc}{uruk resource file, defining access policy}
\sec{synopsis}{SYNOPSIS}
\par{\tt{\rcpath}}
\sec{description}{DESCRIPTION}
\rc is a shell script snippet, sourced in \uruk by /bin/sh.
\par{\rc lists IP addresses, allowed to use services.}
\sec{examples}{EXAMPLES}
\cpar{default}{
The simplest valid \rc file is the empty file. This \rc file blocks all TCP
and UDP connection attempts to services on our host: this is the default
behaviour.
}
\cpar{simplest}{
The simplest \rc file which does allow traffic to our services looks like e.g.:
\verbatim{\
interfaces=eth0
ips_eth0=default
ip_eth0_default=192.168.26.27
net_eth0_default=192.168.0.0/16
ip6_eth0_default=2001:db8::1/64
net6_eth0_default=2001:db8::/32
services_eth0_default_tcp=local
ports_eth0_default_tcp_local="0:65535"
sources_eth0_default_tcp_local="0.0.0.0/0 ::/0"
services_eth0_default_udp=local
ports_eth0_default_udp_local="0:65535"
sources_eth0_default_udp_local="0.0.0.0/0"}
This \rc file allows all IPv4 and IPv6 UDP and TCP traffic from publicly routable IPs to
eth0's IP.
}
\cpar{realistic}{
If you'd like to block traffic on wlan0 and allow traffic to ssh on your
wired interface, and don't like to explicitly set your IPs in \rc:
}
\verbatim{\
# list of interfaces you'd like uruk to protect
interfaces=eth0 wlan0
# set variables ip{,6}_eth0_default and net{,6}_eth0_default
. /lib/uruk/init/autodetect-ips
# names for eth0's 2 IPv4 addresses
ips_eth0="default dhcp"
# allow access to our sshd on eth0's primary IP on tcp port 443
# from anywhere
services_eth0_default_tcp=ssh
ports_eth0_default_tcp_ssh=443
sources_eth0_default_tcp_ssh="0.0.0.0/0 ::/0"
# we get a static IPv4 via dhcp
ip_eth0_dhcp=10.0.0.3
net_eth0_dhcp=10./8
services_eth0_dhcp_tcp=http
ports_eth0_dhcp_tcp_http=http
sources_eth0_dhcp_tcp_http=$net_eth0_dhcp
# we leave services_wlan0_default_{tcp,udp} unset: don't allow any
# incoming connections on wlan0's default IP }
\cpar{autodetect-ips}{
The script autodetect-ips --as used in the previous example-- looks for files
/etc/sysconfig/network-scripts/ifcfg-* (commonly found at e.g. Red Hat and
Fedora systems) and /etc/network/interfaces (as found at e.g. Debian and Ubuntu
systems), and, for each interface \it{nic}, and each found IPv4 and IPv6
address and network, sets variables \v{ip_}\it{nic}\v{_default},
\v{ip6_}\it{nic}\v{_default}, \v{net_}\it{nic}\v{_default} and
\v{net6_}\it{nic}\v{_default} . Then it calls ip(8) and adds any other found
\it{nic}, \v{ip} and \v{net} triplets (for IPv4 and, for IPv6, only addresses
in scope "global").
} \par{
The script autodetect-ips is useful if you'd like to share your \rc file among
different hosts.
}
\cpar{another example}{
For an even more reasonable \rc file, look at the well-commented example \rc
file in \ttexpath.
}
\sec{IPv4 and IPv6}{IPv4 AND IPv6}
\par{You can mix IPv4 and IPv6-addresses in sources_*. E.g.:}
\verbatim{\
ips_eth0='default private'
ip_eth0_default=1.2.3.4
ip6_eth0_default=
services_eth0_default_tcp='mail local'
sources_eth0_default_tcp_mail='10.0.0.0/24 192.0.32.0/24 192.168.6.26'
sources_eth0_default_tcp_local='192.0.32.0/24 svejk.example.com 2001:db8::/32'
ports_eth0_default_tcp_mail=smtp
ports_eth0_default_tcp_local='ssh ftp'}
\par{If svejk.example.com has both an IPv4 PTR record in DNS, as well as
an IPv6 PTR record, connection attempts from svejk to the ssh and ftp
TCP ports are allowed, via both IPv4 and IPv6.}
\par{Uruk used to require variables sources6_* to be set to support ip6tables.
Since uruk version 20140319 (The Alfama Release), this is no longer needed;
setting sources_* suffices. To be precise, the semantics since uruk version
20140319 is: 1) If both sources_* and sources6_* are defined (even if they're
just empty), each is used for its respective address family. (This ensures
backwards compatibility.) 2) If sources6_* is undefined, sources_* is used for
both v4 and v6. 3) In either case, v4 literals in v6 context and v6 literals
in v4 context are silently (!) ignored.}
\sec{Hooks}{HOOKS}
Uruk offers hooks for inserting your own code between iptables invocations.
Examples will show the usefulness of these hooks.
\cpar{allowing broadcasts}{
In \rc, there is:
\verbatim{\
rc_b=$etcdir/bootp}
while the file \tt{bootp} reads
\verbatim{\
iptables \-A INPUT \-m state \-\-state NEW \-i eth0 \\
\-\-protocol udp \-\-destination-port bootps \-j ACCEPT
}
.
This enables one to add rules for packets with broadcast addresses in their
destination. (Uruk has no support for this in its regular \rc.)
}
\cpar{allowing non-matching returntraffic}{
In \rc there is:
\verbatim{\
rc_d=$etcdir/dns}
while the file \tt{dns} reads
\verbatim{\
for source in 10.5.0.27 10.56.0.40
do
$iptables -A INPUT -i eth0 --protocol udp \\
--source "$source" --source-port domain \\
--destination "$ip_eth0" \\
--destination-port 30000: -j ACCEPT
done}
This allows one to allow (return)traffic, disregarding the state. (Uruk has no
support for this in its regular \rc.)
}
\cpar{allowing NAT}{
In \rc there is:
\verbatim{\
rc_a=${etcdir}/nat}
while the file \tt{nat} reads
\verbatim{\
$iptables -t nat -A POSTROUTING \\
--out-interface eth0 -j SNAT \\
--to-source $ip_eth0}
This allows Network Address Translation. However, beware! Like all extensive
use of hooks, this will break the \uruk_save script. If you make sure your
active iptables rules are wiped, and invoke \uruk manually to load new rules,
you're safe. Using the init script with its default settings is safe too.
}
\cpar{allowing IPv6 tunneling}{
In \rc there is:
\verbatim{\
rc_b=${etcdir}/proto_41}
while the file \tt{proto_41} reads
\verbatim{\
$iptables -A INPUT -i ppp0 --protocol 41 --destination $ip_ppp0 -j ACCEPT}
This allows IP protocol 41, typically used for this kind of tunneling.
}
\cpar{allowing any traffic on an interface}{
In \rc there is:
\verbatim{\
interfaces_unprotect="lo eth2"}
This allows any traffic on \tt{eth2} (and on \tt{lo}, the default), including
any ICMP packets and packets from any source address.
}
\cpar{using multiple hooks at one entry point in the main uruk process}{
In case rc_a, rc_b, ... , or rc_i does not have a file as its value, but a
directory, all files matching "$rc_x"/*.rc will get sourced. This helps
configuration management in complex situations involving lots of uruk
configuration files for lots of hosts.
}
\par{
See the section "THE GORY DETAILS: uruk INTERNALS" in \sibref{uruk}{uruk(8)}
(or the \uruk source) to find out which hook (there are hooks rc_a, rc_b, ... ,
rc_i) to use.
}
\sec{Network interfaces with multiple IP addresses}{NETWORK INTERFACES WITH MULTIPLE IP ADDRESSES}
Uruk supports situations where a network interface has more than one IP address
attached. Variables \v{ips_}\it{nic} and \v{bcasts_}\it{nic} are used for
this.
\par{
If \v{ips_}\it{nic} is set, e.g. like
\verbatim{\
ips_eth0="ip0 ip1 ip2"}
we assume multiple (three in this example) IPs are assigned to \v{eth0}. If
this variable is not set only one IP is supported on \v{eth0}.
}
\par{
In multiple-IP mode, IP addresses are listed as e.g.
\verbatim{\
ip_eth0_ip0="137.56.247.16"}
(If you're used to the Linux ifconfig(8) output, you could use the name \v{ip}
for \v{eth0}, and \v{ip0} for \v{eth0:0}.)
The \it{ports}, \it{services} and \it{sources} variables look like
e.g.
\verbatim{\
services_eth0_ip2_tcp=local
ports_eth0_ip2_tcp_local=smtp
sources_eth0_ip2_tcp_local=$localnet}
and, similarly,
\verbatim{\
net_eth0_ip1=192.168.0.0/16}
Furthermore, for dropping broadcast packets, specify e.g.
\verbatim{\
bcasts_eth0="ip0 ip2" # yes, possibly a subset of ips_eth0
bcast_eth0_ip0="10.0.0.255"
bcast_eth0_ip2="10.0.255.255"}
}
As an additional feature, if you have multiple IP addresses that all need
to get the same rules, you can assign them to a single name:
\verbatim{\
ip_eth0_ip0="137.56.247.16 137.56.247.17 137.56.247.18"}
\sec{logging and debugging}{LOGGING AND DEBUGGING}
Uruk has support for logging network packets, and for debugging the uruk
script.
\cpar{Logging}{
By default, uruk logs denied packets. This is adjustable using the
\it{loglevel} variable. The settings are:
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{mark}
}
\item "zero": be silent; do not log any packet. \rc file features \v{loglevel=10}.
\item "low": log denied packets, which are targeted at one of our IPs.
\rc file features \v{loglevel=30}.
\item "medium": log denied non-broadcast packets. This is the default:
\it{loglevel} is unset or \rc file features \v{loglevel=50}.
\item "fascist": log all packets. \rc file features \v{loglevel=90}.
\end{itemize}
\: \item "zero": be silent; do not log any packet. \it{loglevel} is greater than
\: -1 and less than 20.
\:
\: \item "low": log denied packets, which are targeted at one of our IPs.
\: \it{loglevel} is greater than 19 and less than 40.
\:
\: \item "medium": log denied non-broadcast packets. This is the default:
\: \it{loglevel} is unset or \it{loglevel} is set and greater than 39 and less
\: than 60.
\:
\: \item "high": log all denied packets.
\:
\: \item "fascist": log all packets. \it{loglevel} is greater than 80 and less than 99.
\:
\: loglevel= 0 < 20 (suggest: 10) zero: be silent
\: 20 < 40 (suggest: 30) low: log denied packets, targeted at our IPs (wsl-mode)
\: 40 < 60 ( 50) medium: log denied non-broadcasts (default)
\: 60 < 80 ( 70) high: log denied packets
\: 80 < 99 ( 90) fascist: log all packets
}
\cpar{Debugging}{
To debug the \uruk script, invoke uruk as
\verbatim{\
sh -x /sbin/uruk}
this shows what is done, along with executing it. (Like an uruk '-v' option.)
}
\par{
If you'd rather prefer not to execute, but just watch what would've been done,
invoke uruk as
\verbatim{\
URUK_IPTABLES='echo iptables' URUK_IP6TABLES='echo ip6tables' uruk}
(Like an uruk '-n' option.) If you have this statement set, you can run \uruk
under a non-priviliged user account.
}
\par{
If you'd like to test a new \rc file before installing it, run something like:
\verbatim{\
URUK_CONFIG=/path/to/new/uruk/rc/file uruk}
}
\par{
Of course, all these tweaks can be combined.
}
\sec{variables}{VARIABLES}
The uruk script honors the following variables in \rc files:
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{mark}
}
\item "version" Uruk version compatibility of this \rc file
\item "loglevel"
\item "iptables" Full pathname of iptables executable.
\item "ip6tables" Full pathname of ip6tables executable.
\item "interfaces" List of network interfaces.
\end{itemize}
More variables are available. For now, you'll have to take a look at the
example \rc file in \ttexpath for more details.
\sec{environment variables}{ENVIRONMENT VARIABLES}
See \sibref{uruk}{uruk(8)} for a list of honored environment variables.
\sec{files}{FILES}
\tt{\rcpath}
\sec{see also}{SEE ALSO}
A well-commented example \rc file is in \ttexpath.
And see \sibref{uruk}{uruk(8)}, \sibref{uruk-save}{uruk-save(8)}.
\sec{copyright}{COPYRIGHT}
Copyright (C) 2005, 2007, 2008, 2010, 2011, 2012, 2013 \"man::author"
\gplheader
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
uruk-20160219/man/uruk-save.azm 0000644 0001750 0001750 00000004401 12200455502 013067 0000000 0000000 \: vim:syntax=tex
\: this file maintained at http://git.mdcc.cx/uruk.git
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{uruk-save}
{html_title}{uruk-save}
{section}{8}
\man_share
}
\${html}{\"pud::man::maketoc"}
\sec{name}{NAME}
\NAME{uruk-save}{save uruk rc configuration in iptables-save-style format}
\sec{synopsis}{SYNOPSIS}
\par{\uruk_save \bf{[}-6\bf{]}}
\sec{options}{OPTIONS}
\begin{itemize}
\item{-6} Don't save iptables rules but save
ip6tables rules, for IPv6 filtering.
\end{itemize}
\sec{description}{DESCRIPTION}
\uruk_save saves the IPv4 rules (for all of the filter, raw, mangle and nat
tables) in \ttrcpath in \bf{iptables-save(5)}-style format, without invoking
\bf{iptables(8)}. If the \bf{-6} option is given, the IPv6 rules (if any) in
\ttrcpath are saved, in \bf{ip6tables-save(5)}-style format. It prints output
to stdout; suggested invocation therefore is
\verbatim{\
# uruk-save > \statepath/iptables/active}
or
\verbatim{\
# uruk-save -6 > \statepath/ip6tables/active}
. This script is useful if you don't like the default behaviour of the uruk
init script, and would like it to load the current uruk rc file instead of the
current active file. Please note: generally you don't need to invoke this
script manually: the script \urukctl which comes with uruk is suitable for most
cases, it invokes \uruk_save if needed.
\sec{warning}{WARNING}
Just as \uruk, in order to keep the \uruk_save script small and simple, the
script does very little error handling. It does not check the contents of the
\rc file in any way before executing it. When your \rc file contains bogus
stuff, \uruk_save will very likely behave in unexpected ways. Caveat emptor.
\par{
Things will likely break if you do very fancy stuff in an \rc hook file. If
your \rc file is in verbose mode (i.e. it features \tt{set -x}) or in no-act
mode (i.e. it features a hardcoded \tt{iptables='echo iptables'}), \uruk_save
fails.
}
\sec{see also}{SEE ALSO}
\sibref{uruk}{uruk(8)}, \sibref{uruk-rc}{uruk-rc(5)} .
\sec{copyright}{COPYRIGHT}
Copyright (C) 2005, 2007, 2010, 2011, 2012, 2013 \"man::author"
\gplheader
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
uruk-20160219/man/uruk.azm 0000644 0001750 0001750 00000024771 12200455502 012147 0000000 0000000 \: vim:syntax=tex
\: this file maintained at http://git.mdcc.cx/uruk.git
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{uruk}
{html_title}{uruk}
{section}{8}
\man_share
}
\${html}{\"pud::man::maketoc"}
\sec{name}{NAME}
\NAME{uruk}{wrapper for Linux iptables, for managing firewall rules}
\sec{synopsis}{SYNOPSIS}
\uruk
\sec{description}{DESCRIPTION}
\uruk loads an \rc file (see \sibref{uruk-rc}{uruk-rc(5)}) which defines
network service access policy, and invokes \bf{iptables(8)} to set up firewall
rules implementing this policy. By default the file \ttrcpath is used; one can
overrule this by specifying another file in the URUK_CONFIG environment
variable. Under some circumstances, it's useful to use another command for
iptables; this can be achieved by setting the URUK_IPTABLES (and/or
URUK_IP6TABLES) environment variables. See \sibref{uruk-rc}{uruk-rc(5)} for
details.
\sec{quick setup guide}{QUICK SETUP GUIDE}
Uruk will \it{not} "just work" out of the box. It needs manual configuration.
For those of you who don't like reading lots of documentation:
\verbatim{\
# cp \expath \\
\rcpath
# vi \rcpath
# urukctl start}
\sec{getting started}{GETTING STARTED}
Once the \uruk script is installed, you want to go use it, of course. We'll
give a detailed description of what to do here.
\par{
First, create an \rc file. See \sibref{uruk-rc}{uruk-rc(5)} for info on how to
do this. Once this file is created and installed (this script looks in
\ttrcpath by default), you're ready to run \uruk. You might want to test your
\rc file by running \uruk in debug mode, see \sibref{uruk-rc}{uruk-rc(5)}.
There are at least 3 ways to load your \rc file. We'll first describe a low
level one: using vanilla iptables.
}
\cpar{Vanilla iptables}{
After editing \rc, load your rules like this. First flush your current rules:
\verbatim{\
# iptables -F
# ip6tables -F}
Then enable your \rc rules
\verbatim{\
# uruk}
. Inspect the rules by doing:
\verbatim{\
# iptables -L
# ip6tables -L}
.
If you want to make these changes survive a reboot, use the init script as
shipped with this package. If you'd rather write your own init script, the
\bf{iptables-restore(8)} and \bf{iptables-save(8)} commands from the iptables
package might be helpful.
}
\cpar{Using the Uruk init script}{
Assumed is the Uruk init script is installed as explained in the README file.
Optionally, install \tt{/etc/default/uruk} (or \tt{/etc/sysconfig/uruk}) and
tweak it. An example file is in \tt{\defpath} (You might like to enable
support for \uruk_save.) Now activate uruk by doing:
\verbatim{\
# urukctl start}
Now your pre-uruk iptables rules (if any) are saved as the "inactive" ruleset.
While executing \tt{urukctl start}, your box is open during a short while.
If you don't like this, read below about \uruk_save.
}
\par{
When rebooting, everything will be fine: \ttinitpath stores
state in \tt{\statepath/iptables}, using
iptables-save(8), which comes with Linux iptables.
}
\cpar{Using Debian ifupdown}{
In case you have just one network interface which should get protected, you
could use \bf{interfaces(5)} from the Debian ifupdown package instead of the
init script. Suppose you'd like to protect \tt{ppp0}, and would like not to
interfere with traffic on eth0: your other network interface.
First write an \rc file. Be sure it features
\verbatim{\
interfaces_unprotect="lo eth0"}
Then run:
\verbatim{\
# mkdir -p \statepath/iptables
# iptables -F
# iptables-save -c > \statepath/iptables/down
# uruk
# iptables-save -c > \statepath/iptables/up}
Add
\verbatim{\
pre-up iptables-restore < \statepath/iptables/up
post-down iptables-restore < \statepath/iptables/down}
to your interfaces stanza, in your \tt{/etc/network/interfaces} .
}
\par{
Similar tricks might be possible on GNU/Linux systems from other distributions.
The author is interested.
}
\sec{loading a new rc file}{LOADING A NEW \rc FILE}
Need to change your rules?
\cpar{Using the Uruk init script}{
Do
\verbatim{\
# vi \rcpath
# urukctl force-reload}
While executing \tt{urukctl force-reload}, your box is open during a short
while. If you don't like this, read below about \uruk_save.
}
\sec{the gory details uruk internals}{THE GORY DETAILS: uruk INTERNALS}
The \uruk script works like (and looks like) the list of statements below. Of
course, take a look at \tt{\sbinpath/uruk} for the final word on the workings.
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{arabic}
}
\item \rc is sourced as a shell script
\item Traffic on $interfaces_unprotect (just lo per default)
is trusted:
\verbatim{\
$iptables -A INPUT -i $iface -j ACCEPT}
\item $rc_a is sourced as a shell script, or, in case $rc_a is a directory, all
files matching $rc_a/*.rc are sourced as shell scripts
\item ESTABLISHED and RELATED packets are ACCEPT-ed:
\verbatim{\
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED \\
-j ACCEPT}
\item $rc_b is sourced
\item $interfaces gets protected against spoofing: we don't allow anyone to
spoof non-routeable addresses. We block outgoing packets that don't have
our address as source: they are either spoofed or something is
misconfigured (NAT disabled, for instance). We want to be nice and don't
send out garbage.
\verbatim{\
$iptables -A INPUT -i $iface --source $no_route_ip \\
-j DROP}
We drop all incoming packets which don't have us as destination:
\verbatim{\
$iptables -A OUTPUT -o $iface --source ! "$ip" \\
-j DROP}
And we always allow outgoing connections:
\verbatim{\
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface \\
-j ACCEPT}
\item $rc_c is sourced
\item Allow traffic to offered services, from trusted sources:
\verbatim{\
$iptables -A INPUT -m conntrack --ctstate NEW \\
-i $iface --protocol $proto --source "$source" \\
--destination "$ip" --destination-port "$port" \\
-j ACCEPT}
\item $rc_d is sourced
\item Don't answer broadcast and multicast packets:
\verbatim{\
$iptables -A INPUT -i $iface --destination "$bcast" \\
-j DROP}
\item $rc_f is sourced
\item Explicitly allow a subset of the ICMP types. (We disallow all other
traffic later.)
\verbatim{\
$iptables -A INPUT --protocol icmp --icmp-type $type \\
-j ACCEPT}
\item $rc_g is sourced
\item Log packets (which make it till here)
\verbatim{\
$iptables -A INPUT -j LOG --log-level debug \\
--log-prefix 'iptables: '}
\item $rc_h is sourced
\item Reject all other packets
\verbatim{\
$iptables -A INPUT -j REJECT}
\item $rc_i is sourced
\end{itemize}
\sec{using uruk-save as the initscript backend}{USING uruk-save AS THE INITSCRIPT BACKEND}
By default, \uruk_save is not used by the uruk init script. You might want to
use it, though. The \uruk_save script is faster and when using \uruk_save,
your box won't be open while loading new rules. But beware: \uruk_save is not
as robust as using \uruk itself.
\par{
The script \urukctl (and thus the uruk init script) will use \uruk_save only if
asked to do so in \tt{/etc/default/uruk} (or \tt{/etc/sysconfig/uruk}). If
this file features
\verbatim{\
enable_uruk_save=true}
\uruk_save is used whenever appropriate.
See \sibref{uruk-save}{uruk-save(8)} for more details.
}
\sec{policy}{DEFAULT POLICY}
By default, \uruk drops packets which have unknown RFC 1918 private network
addresses in their source or destination.
\par{
It rejects packets with source nor destination for one of our IPs.
} \par{
Packets belonging to locally initiated sessions are allowed: we match state;
the local host can act as a client for any remote service.
} \par{
By default, \uruk drops all ICMP packets (except those for interfaces in
$interfaces_unprotect) with type other than
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{mark}
}
\item address-mask-reply
\item address-mask-request
\item destination-unreachable (this is a catch-all for a lot of types)
\item echo-request
\item echo-reply
\item parameter-problem (catch-all for ip-header-bad and required-option-missing)
\item timestamp-reply
\item timestamp-request
\item ttl-zero-during-transit
\item ttl-zero-during-reassembly
\end{itemize}
} \par{
By default, the FORWARD chain is left untouched, so has policy ACCEPT. (This
won't do much harm, since packet forwarding is disabled by default in the Linux
kernel. However, if you don't mind being paranoid, you might want to add a
\verbatim{\
iptables --policy FORWARD REJECT}
to your $rc_a uruk hook. See \sibref{uruk-rc}{uruk-rc(5)}.)
} \par{
By default, \uruk logs all UDP and TCP packets which are blocked by the user
defined policies. Loglevel is debug, logprefix is "iptables:". See
also the notes on \it{loglevel} in \sibref{uruk-rc}{uruk-rc(5)}.
} \par{
Blocked TCP packets are answered with a tcp-reset.
}
\sec{warning}{WARNING}
In order to keep the \uruk script small and simple, the script does very little
error handling. It does not check the contents of the \rc file in any way
before executing it. When your \rc file contains bogus stuff, \uruk will very
likely behave in unexpected ways. Caveat emptor.
\sec{environment}{ENVIRONMENT}
You can override some defaults in the shell before executing the uruk script.
\uruk honors the following variables:
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{mark}
}
\item "URUK_CONFIG" Full pathname of \rc file; \ttrcpath by default.
\item "URUK_IPTABLES" Full pathname of iptables executable.
\tt{/sbin/iptables} by default. Overrides \it{iptables}.
\item "URUK_IP6TABLES" Full pathname of ip6tables executable, for
IPv6 support. Overrides \it{ip6tables}.
\item "URUK_INTERFACES_UNPROTECT" Default list of unprotected interfaces.
Overrides \it{interfaces_unprotect}. The default default is \v{lo}.
\end{itemize}
\sec{see also}{SEE ALSO}
\sibref{uruk-rc}{uruk-rc(5)}, \sibref{uruk-save}{uruk-save(8)}. The Uruk homepage is at
\httpref{http://mdcc.cx/uruk/} .
\par{
\bf{iptables(8)}, \bf{iptables-save(8)},
\bf{iptables-restore(8)},
\bf{ip6tables(8)}, \bf{ip6tables-save(8)},
\bf{ip6tables-restore(8)}, \httpref{http://www.netfilter.org/}
\: (no manpage online :( )
} \par{
\bf{interfaces(5)}, \httpref{http://packages.debian.org/ifupdown}.
}
\sec{copyright}{COPYRIGHT}
Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org;
Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/;
Copyright (C) 2003-2013 \"man::author"
\gplheader
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
uruk-20160219/man/urukctl.azm 0000644 0001750 0001750 00000010456 12200455502 012645 0000000 0000000 \: vim:syntax=tex
\: this file maintained at http://git.mdcc.cx/uruk.git
\: this is a manpage in zoem format. see http://micans.org/zoem/ and man_zmm(7)
\import{pud/man.zmm}
\import{./include.zmm}
\begin{pud::man}{
{name}{urukctl}
{html_title}{urukctl}
{section}{8}
\man_share
}
\${html}{\"pud::man::maketoc"}
\sec{name}{NAME}
\NAME{urukctl}{uruk control script}
\sec{synopsis}{SYNOPSIS}
\urukctl \it{command} \bf{[}\it{argument}\bf{]}
\sec{description}{DESCRIPTION}
\par{
\urukctl is the user interface for the uruk system. It is used to create or
change saved iptables rulesets, to change the current loaded rulesets and to
report on uruk's status.
} \par{
See \sibref{uruk}{uruk(8)} for information on how to get started with the Uruk
system, and for a tutorial. This manpage gives just the details on \urukctl.
} \par{
The \urukctl script calls \uruk to process \rcpath. (The uruk init script
calls \urukctl.)
} \par{
These 4 ruleset pairs (for both IPv4 and IPv6) exist in a system using uruk:
\begin{itemize}{
{contiguous}{1}
{compact}{1}
{type}{mark}
}
\item the ruleset as expressed in the uruk configuration \rcpath,
\item the 2 saved rulesets in \tt{/var/lib/{iptables,ip6tables}/{active,inactive}}
\item the ruleset as currently loaded in the running kernel
\item optional: more rulesets saved in \tt{/var/lib/{iptables,ip6tables}}
\end{itemize}
}
\cpar{arguments}{
\urukctl should be called as either \tt{urukctl} \it{argument} or
\tt{urukctl} \it{argument} \it{option}. Possible values are:
\'begin{itemize}{{interitem}{1}}
\item{\bf{start}}
\car{
If not yet done, save current iptables status in "inactive" ruleset.
(Re)build and load the "active" ruleset.
}
\item{\bf{save} \it{ruleset}}
\car{
Save the current iptables status in given ruleset.
}
\item{\bf{create} <\tt{active}|\tt{inactive}>}
\car{
Create an "active" or "inactive" ruleset with sane defaults: "active"
will be based upon the uruk rc file. "inactive" will allow all traffic.
}
\item{\bf{load} \it{ruleset}}
\car{
Load a saved ruleset
}
\item{\bf{reload}}
\car{
(Re)build and load the "active" ruleset, without temporarily clearing the
current iptables status.
}
\item{\bf{force-reload}}
\car{
(Re)build and load the "active" ruleset, in case uruk is running.
}
\item{\bf{stop}}
\car{
Load the "inactive" ruleset.
}
\item{\bf{restart}}
\car{
Perform stop-actions followed by start-actions.
}
\item{\bf{status}}
\car{
Print the current status of the service: show which ruleset is loaded, and
wether uruk is "running".
}
\item{\bf{clear}}
\car{
Remove all rules and user-defined chains, set default policy to ACCEPT.
}
\item{\bf{halt}}
\car{
Remove all rules and user-defined chains, set default policy to DROP.
}
\item{\bf{flush}}
\car{
Flush all rules from the current iptables status.
}
\'end{itemize}
}
\cpar{configuration}{
\urukctl uses the file /etc/default/uruk (on Debian, Ubuntu and related
systems) or /etc/sysconfig/uruk (on Red Hat, Fedora and related systems) for
configuration. Variables used in this file are:
\'begin{itemize}{{interitem}{1}}
\item{enable_uruk_check}
\car{wether to check for existence and sanity of uruk rc file; set to false if
you don't like this, e.g. when using the uruk initscript for managing saved
rulesets only (i.e. not for calling uruk or uruk-save).}
\item{enable_ipv6}
\car{set to false to disable IPv6 support. Set to \tt{$(enable-ipv6)} to
dynamically decide wether to filter IPv6 traffic.}
\item{enable_uruk_save}
\car{enable calling the unstable uruk-save script.}
\item{enable_autosave}
\car{set to "false" to disable autosaving the active ruleset when going from
start to stop.}
\item{enable_save_counters}
\car{set to "false" to disable saving table counters with rulesets.}
\'end{itemize}
}
\sec{see also}{SEE ALSO}
\sibref{uruk}{uruk(8)}, \sibref{uruk-rc}{uruk-rc(5)},
\sibref{uruk-save}{uruk-save(8)}. The Uruk homepage is at
\httpref{http://mdcc.cx/uruk/} .
\par{
\bf{iptables(8)}, \bf{iptables-save(8)},
\bf{iptables-restore(8)},
\bf{ip6tables(8)}, \bf{ip6tables-save(8)},
\bf{ip6tables-restore(8)}, \httpref{http://www.netfilter.org/}
\: (no manpage online :( )
} \par{
\bf{interfaces(5)}, \httpref{http://packages.debian.org/ifupdown}.
}
\sec{copyright}{COPYRIGHT}
Copyright (C) 2013 \"man::author"
\gplheader
\sec{author}{AUTHOR}
\"man::author"
\end{pud::man}
uruk-20160219/man/uruk.8 0000644 0001750 0001750 00000031221 12201162772 011520 0000000 0000000 .\" Copyright (c) 2013 Joost van Baal-Ilić
.TH "uruk" 8 "9 авг 2013" "uruk 20130809" "SYSTEM ADMINISTRATION "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
uruk \- wrapper for Linux iptables, for managing firewall rules
.SH SYNOPSIS
\fBuruk\fP
.SH DESCRIPTION
\fBuruk\fP loads an \fIrc\fP file (see \fBuruk-rc(5)\fP) which defines
network service access policy, and invokes \fBiptables(8)\fP to set up firewall
rules implementing this policy\&. By default the file \fC/etc/uruk/rc\fP is used; one can
overrule this by specifying another file in the URUK_CONFIG environment
variable\&. Under some circumstances, it\&'s useful to use another command for
iptables; this can be achieved by setting the URUK_IPTABLES (and/or
URUK_IP6TABLES) environment variables\&. See \fBuruk-rc(5)\fP for
details\&.
.SH QUICK SETUP GUIDE
Uruk will \fInot\fP "just work" out of the box\&. It needs manual configuration\&.
For those of you who don\&'t like reading lots of documentation:
.di ZV
.in 0
.nf \fC
# cp /usr/share/doc/uruk/examples/rc \e
/etc/uruk/rc
# vi /etc/uruk/rc
# urukctl start
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH GETTING STARTED
Once the \fBuruk\fP script is installed, you want to go use it, of course\&. We\&'ll
give a detailed description of what to do here\&.
First, create an \fIrc\fP file\&. See \fBuruk-rc(5)\fP for info on how to
do this\&. Once this file is created and installed (this script looks in
\fC/etc/uruk/rc\fP by default), you\&'re ready to run \fBuruk\fP\&. You might want to test your
\fIrc\fP file by running \fBuruk\fP in debug mode, see \fBuruk-rc(5)\fP\&.
There are at least 3 ways to load your \fIrc\fP file\&. We\&'ll first describe a low
level one: using vanilla iptables\&.
\fBVanilla iptables\fP
.br
After editing \fIrc\fP, load your rules like this\&. First flush your current rules:
.di ZV
.in 0
.nf \fC
# iptables -F
# ip6tables -F
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Then enable your \fIrc\fP rules
.di ZV
.in 0
.nf \fC
# uruk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&. Inspect the rules by doing:
.di ZV
.in 0
.nf \fC
# iptables -L
# ip6tables -L
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
If you want to make these changes survive a reboot, use the init script as
shipped with this package\&. If you\&'d rather write your own init script, the
\fBiptables-restore(8)\fP and \fBiptables-save(8)\fP commands from the iptables
package might be helpful\&.
\fBUsing the Uruk init script\fP
.br
Assumed is the Uruk init script is installed as explained in the README file\&.
Optionally, install \fC/etc/default/uruk\fP (or \fC/etc/sysconfig/uruk\fP) and
tweak it\&. An example file is in \fC/usr/share/doc/uruk/examples/default\fP (You might like to enable
support for \fBuruk-save\fP\&.) Now activate uruk by doing:
.di ZV
.in 0
.nf \fC
# urukctl start
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Now your pre-uruk iptables rules (if any) are saved as the "inactive" ruleset\&.
While executing \fCurukctl start\fP, your box is open during a short while\&.
If you don\&'t like this, read below about \fBuruk-save\fP\&.
When rebooting, everything will be fine: \fC/etc/init\&.d/uruk\fP stores
state in \fC/var/lib/uruk/iptables\fP, using
iptables-save(8), which comes with Linux iptables\&.
\fBUsing Debian ifupdown\fP
.br
In case you have just one network interface which should get protected, you
could use \fBinterfaces(5)\fP from the Debian ifupdown package instead of the
init script\&. Suppose you\&'d like to protect \fCppp0\fP, and would like not to
interfere with traffic on eth0: your other network interface\&.
First write an \fIrc\fP file\&. Be sure it features
.di ZV
.in 0
.nf \fC
interfaces_unprotect="lo eth0"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Then run:
.di ZV
.in 0
.nf \fC
# mkdir -p /var/lib/uruk/iptables
# iptables -F
# iptables-save -c > /var/lib/uruk/iptables/down
# uruk
# iptables-save -c > /var/lib/uruk/iptables/up
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Add
.di ZV
.in 0
.nf \fC
pre-up iptables-restore < /var/lib/uruk/iptables/up
post-down iptables-restore < /var/lib/uruk/iptables/down
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
to your interfaces stanza, in your \fC/etc/network/interfaces\fP \&.
Similar tricks might be possible on GNU/Linux systems from other distributions\&.
The author is interested\&.
.SH LOADING A NEW \fIrc\fP FILE
Need to change your rules?
\fBUsing the Uruk init script\fP
.br
Do
.di ZV
.in 0
.nf \fC
# vi /etc/uruk/rc
# urukctl force-reload
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
While executing \fCurukctl force-reload\fP, your box is open during a short
while\&. If you don\&'t like this, read below about \fBuruk-save\fP\&.
.SH THE GORY DETAILS: uruk INTERNALS
The \fBuruk\fP script works like (and looks like) the list of statements below\&. Of
course, take a look at \fC/sbin/uruk\fP for the final word on the workings\&.
.ZI 2m "1"
\&
.br
\fIrc\fP is sourced as a shell script
.in -2m
.ZI 2m "2"
\&
.br
Traffic on $interfaces_unprotect (just lo per default)
is trusted:
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -i $iface -j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "3"
\&
.br
$rc_a is sourced as a shell script, or, in case $rc_a is a directory, all
files matching $rc_a/*\&.rc are sourced as shell scripts
.in -2m
.ZI 2m "4"
\&
.br
ESTABLISHED and RELATED packets are ACCEPT-ed:
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED \e
-j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "5"
\&
.br
$rc_b is sourced
.in -2m
.ZI 2m "6"
\&
.br
$interfaces gets protected against spoofing: we don\&'t allow anyone to
spoof non-routeable addresses\&. We block outgoing packets that don\&'t have
our address as source: they are either spoofed or something is
misconfigured (NAT disabled, for instance)\&. We want to be nice and don\&'t
send out garbage\&.
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -i $iface --source $no_route_ip \e
-j DROP
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
We drop all incoming packets which don\&'t have us as destination:
.di ZV
.in 0
.nf \fC
$iptables -A OUTPUT -o $iface --source ! "$ip" \e
-j DROP
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
And we always allow outgoing connections:
.di ZV
.in 0
.nf \fC
$iptables -A OUTPUT -m conntrack --ctstate NEW -o $iface \e
-j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "7"
\&
.br
$rc_c is sourced
.in -2m
.ZI 2m "8"
\&
.br
Allow traffic to offered services, from trusted sources:
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -m conntrack --ctstate NEW \e
-i $iface --protocol $proto --source "$source" \e
--destination "$ip" --destination-port "$port" \e
-j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "9"
\&
.br
$rc_d is sourced
.in -2m
.ZI 2m "10"
\&
.br
Don\&'t answer broadcast and multicast packets:
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -i $iface --destination "$bcast" \e
-j DROP
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "11"
\&
.br
$rc_f is sourced
.in -2m
.ZI 2m "12"
\&
.br
Explicitly allow a subset of the ICMP types\&. (We disallow all other
traffic later\&.)
.di ZV
.in 0
.nf \fC
$iptables -A INPUT --protocol icmp --icmp-type $type \e
-j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "13"
\&
.br
$rc_g is sourced
.in -2m
.ZI 2m "14"
\&
.br
Log packets (which make it till here)
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -j LOG --log-level debug \e
--log-prefix \&'iptables: \&'
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "15"
\&
.br
$rc_h is sourced
.in -2m
.ZI 2m "16"
\&
.br
Reject all other packets
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -j REJECT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.in -2m
.ZI 2m "17"
\&
.br
$rc_i is sourced
.in -2m
.SH USING uruk-save AS THE INITSCRIPT BACKEND
By default, \fBuruk-save\fP is not used by the uruk init script\&. You might want to
use it, though\&. The \fBuruk-save\fP script is faster and when using \fBuruk-save\fP,
your box won\&'t be open while loading new rules\&. But beware: \fBuruk-save\fP is not
as robust as using \fBuruk\fP itself\&.
The script \fBurukctl\fP (and thus the uruk init script) will use \fBuruk-save\fP only if
asked to do so in \fC/etc/default/uruk\fP (or \fC/etc/sysconfig/uruk\fP)\&. If
this file features
.di ZV
.in 0
.nf \fC
enable_uruk_save=true
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBuruk-save\fP is used whenever appropriate\&.
See \fBuruk-save(8)\fP for more details\&.
.SH DEFAULT POLICY
By default, \fBuruk\fP drops packets which have unknown RFC 1918 private network
addresses in their source or destination\&.
It rejects packets with source nor destination for one of our IPs\&.
Packets belonging to locally initiated sessions are allowed: we match state;
the local host can act as a client for any remote service\&.
By default, \fBuruk\fP drops all ICMP packets (except those for interfaces in
$interfaces_unprotect) with type other than
.ZI 2m "\(bu"
\&
.br
address-mask-reply
.in -2m
.ZI 2m "\(bu"
\&
.br
address-mask-request
.in -2m
.ZI 2m "\(bu"
\&
.br
destination-unreachable (this is a catch-all for a lot of types)
.in -2m
.ZI 2m "\(bu"
\&
.br
echo-request
.in -2m
.ZI 2m "\(bu"
\&
.br
echo-reply
.in -2m
.ZI 2m "\(bu"
\&
.br
parameter-problem (catch-all for ip-header-bad and required-option-missing)
.in -2m
.ZI 2m "\(bu"
\&
.br
timestamp-reply
.in -2m
.ZI 2m "\(bu"
\&
.br
timestamp-request
.in -2m
.ZI 2m "\(bu"
\&
.br
ttl-zero-during-transit
.in -2m
.ZI 2m "\(bu"
\&
.br
ttl-zero-during-reassembly
.in -2m
By default, the FORWARD chain is left untouched, so has policy ACCEPT\&. (This
won\&'t do much harm, since packet forwarding is disabled by default in the Linux
kernel\&. However, if you don\&'t mind being paranoid, you might want to add a
.di ZV
.in 0
.nf \fC
iptables --policy FORWARD REJECT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
to your $rc_a uruk hook\&. See \fBuruk-rc(5)\fP\&.)
By default, \fBuruk\fP logs all UDP and TCP packets which are blocked by the user
defined policies\&. Loglevel is debug, logprefix is "iptables:"\&. See
also the notes on \fIloglevel\fP in \fBuruk-rc(5)\fP\&.
Blocked TCP packets are answered with a tcp-reset\&.
.SH WARNING
In order to keep the \fBuruk\fP script small and simple, the script does very little
error handling\&. It does not check the contents of the \fIrc\fP file in any way
before executing it\&. When your \fIrc\fP file contains bogus stuff, \fBuruk\fP will very
likely behave in unexpected ways\&. Caveat emptor\&.
.SH ENVIRONMENT
You can override some defaults in the shell before executing the uruk script\&.
\fBuruk\fP honors the following variables:
.ZI 2m "\(bu"
\&
.br
"URUK_CONFIG" Full pathname of \fIrc\fP file; \fC/etc/uruk/rc\fP by default\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"URUK_IPTABLES" Full pathname of iptables executable\&.
\fC/sbin/iptables\fP by default\&. Overrides \fIiptables\fP\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"URUK_IP6TABLES" Full pathname of ip6tables executable, for
IPv6 support\&. Overrides \fIip6tables\fP\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"URUK_INTERFACES_UNPROTECT" Default list of unprotected interfaces\&.
Overrides \fIinterfaces_unprotect\fP\&. The default default is \fClo\fP\&.
.in -2m
.SH SEE ALSO
\fBuruk-rc(5)\fP, \fBuruk-save(8)\fP\&. The Uruk homepage is at
http://mdcc\&.cx/uruk/ \&.
\fBiptables(8)\fP, \fBiptables-save(8)\fP,
\fBiptables-restore(8)\fP,
\fBip6tables(8)\fP, \fBip6tables-save(8)\fP,
\fBip6tables-restore(8)\fP, http://www\&.netfilter\&.org/
\fBinterfaces(5)\fP, http://packages\&.debian\&.org/ifupdown\&.
.SH COPYRIGHT
Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport\&.org;
Copyright (C) 2003, 2004 Tilburg University http://www\&.uvt\&.nl/;
Copyright (C) 2003-2013 Joost van Baal-Ilić
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version\&.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the
GNU General Public License for more details\&.
You should have received a copy of the GNU General Public License along
with this program\&. If not, see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
uruk-20160219/man/uruk-rc.5 0000644 0001750 0001750 00000031436 12535264244 012136 0000000 0000000 .\" Copyright (c) 2015 Joost van Baal-Ilić
.TH "uruk-rc" 5 "8 Jun 2015" "uruk-rc 20150608" "FILE FORMATS "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
uruk-rc \- uruk resource file, defining access policy
.SH SYNOPSIS
\fC/etc/uruk/rc\fP
.SH DESCRIPTION
\fIrc\fP is a shell script snippet, sourced in \fBuruk\fP by /bin/sh\&.
\fIrc\fP lists IP addresses, allowed to use services\&.
.SH EXAMPLES
\fBdefault\fP
.br
The simplest valid \fIrc\fP file is the empty file\&. This \fIrc\fP file blocks all TCP
and UDP connection attempts to services on our host: this is the default
behaviour\&.
\fBsimplest\fP
.br
The simplest \fIrc\fP file which does allow traffic to our services looks like e\&.g\&.:
.di ZV
.in 0
.nf \fC
interfaces=eth0
ips_eth0=default
ip_eth0_default=192\&.168\&.26\&.27
net_eth0_default=192\&.168\&.0\&.0/16
ip6_eth0_default=2001:db8::1/64
net6_eth0_default=2001:db8::/32
services_eth0_default_tcp=local
ports_eth0_default_tcp_local="0:65535"
sources_eth0_default_tcp_local="0\&.0\&.0\&.0/0 ::/0"
services_eth0_default_udp=local
ports_eth0_default_udp_local="0:65535"
sources_eth0_default_udp_local="0\&.0\&.0\&.0/0"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This \fIrc\fP file allows all IPv4 and IPv6 UDP and TCP traffic from publicly routable IPs to
eth0\&'s IP\&.
\fBrealistic\fP
.br
If you\&'d like to block traffic on wlan0 and allow traffic to ssh on your
wired interface, and don\&'t like to explicitly set your IPs in \fIrc\fP:
.di ZV
.in 0
.nf \fC
# list of interfaces you\&'d like uruk to protect
interfaces=eth0 wlan0
# set variables ip{,6}_eth0_default and net{,6}_eth0_default
\&. /lib/uruk/init/autodetect-ips
# names for eth0\&'s 2 IPv4 addresses
ips_eth0="default dhcp"
# allow access to our sshd on eth0\&'s primary IP on tcp port 443
# from anywhere
services_eth0_default_tcp=ssh
ports_eth0_default_tcp_ssh=443
sources_eth0_default_tcp_ssh="0\&.0\&.0\&.0/0 ::/0"
# we get a static IPv4 via dhcp
ip_eth0_dhcp=10\&.0\&.0\&.3
net_eth0_dhcp=10\&./8
services_eth0_dhcp_tcp=http
ports_eth0_dhcp_tcp_http=http
sources_eth0_dhcp_tcp_http=$net_eth0_dhcp
# we leave services_wlan0_default_{tcp,udp} unset: don\&'t allow any
# incoming connections on wlan0\&'s default IP
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\fBautodetect-ips\fP
.br
The script autodetect-ips --as used in the previous example-- looks for files
/etc/sysconfig/network-scripts/ifcfg-* (commonly found at e\&.g\&. Red Hat and
Fedora systems) and /etc/network/interfaces (as found at e\&.g\&. Debian and Ubuntu
systems), and, for each interface \fInic\fP, and each found IPv4 and IPv6
address and network, sets variables \fCip_\fP\fInic\fP\fC_default\fP,
\fCip6_\fP\fInic\fP\fC_default\fP, \fCnet_\fP\fInic\fP\fC_default\fP and
\fCnet6_\fP\fInic\fP\fC_default\fP \&. Then it calls ip(8) and adds any other found
\fInic\fP, \fCip\fP and \fCnet\fP triplets (for IPv4 and, for IPv6, only addresses
in scope "global")\&.
The script autodetect-ips is useful if you\&'d like to share your \fIrc\fP file among
different hosts\&.
\fBanother example\fP
.br
For an even more reasonable \fIrc\fP file, look at the well-commented example \fIrc\fP
file in \fC/usr/share/doc/uruk/examples/rc\fP\&.
.SH IPv4 AND IPv6
You can mix IPv4 and IPv6-addresses in sources_*\&. E\&.g\&.:
.di ZV
.in 0
.nf \fC
ips_eth0=\&'default private\&'
ip_eth0_default=1\&.2\&.3\&.4
ip6_eth0_default=
services_eth0_default_tcp=\&'mail local\&'
sources_eth0_default_tcp_mail=\&'10\&.0\&.0\&.0/24 192\&.0\&.32\&.0/24 192\&.168\&.6\&.26\&'
sources_eth0_default_tcp_local=\&'192\&.0\&.32\&.0/24 svejk\&.example\&.com 2001:db8::/32\&'
ports_eth0_default_tcp_mail=smtp
ports_eth0_default_tcp_local=\&'ssh ftp\&'
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
If svejk\&.example\&.com has both an IPv4 PTR record in DNS, as well as
an IPv6 PTR record, connection attempts from svejk to the ssh and ftp
TCP ports are allowed, via both IPv4 and IPv6\&.
Uruk used to require variables sources6_* to be set to support ip6tables\&.
Since uruk version 20140319 (The Alfama Release), this is no longer needed;
setting sources_* suffices\&. To be precise, the semantics since uruk version
20140319 is: 1) If both sources_* and sources6_* are defined (even if they\&'re
just empty), each is used for its respective address family\&. (This ensures
backwards compatibility\&.) 2) If sources6_* is undefined, sources_* is used for
both v4 and v6\&. 3) In either case, v4 literals in v6 context and v6 literals
in v4 context are silently (!) ignored\&.
.SH HOOKS
Uruk offers hooks for inserting your own code between iptables invocations\&.
Examples will show the usefulness of these hooks\&.
\fBallowing broadcasts\fP
.br
In \fIrc\fP, there is:
.di ZV
.in 0
.nf \fC
rc_b=$etcdir/bootp
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while the file \fCbootp\fP reads
.di ZV
.in 0
.nf \fC
iptables \-A INPUT \-m state \-\-state NEW \-i eth0 \e
\-\-protocol udp \-\-destination-port bootps \-j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&.
This enables one to add rules for packets with broadcast addresses in their
destination\&. (Uruk has no support for this in its regular \fIrc\fP\&.)
\fBallowing non-matching returntraffic\fP
.br
In \fIrc\fP there is:
.di ZV
.in 0
.nf \fC
rc_d=$etcdir/dns
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while the file \fCdns\fP reads
.di ZV
.in 0
.nf \fC
for source in 10\&.5\&.0\&.27 10\&.56\&.0\&.40
do
$iptables -A INPUT -i eth0 --protocol udp \e
--source "$source" --source-port domain \e
--destination "$ip_eth0" \e
--destination-port 30000: -j ACCEPT
done
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This allows one to allow (return)traffic, disregarding the state\&. (Uruk has no
support for this in its regular \fIrc\fP\&.)
\fBallowing NAT\fP
.br
In \fIrc\fP there is:
.di ZV
.in 0
.nf \fC
rc_a=${etcdir}/nat
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while the file \fCnat\fP reads
.di ZV
.in 0
.nf \fC
$iptables -t nat -A POSTROUTING \e
--out-interface eth0 -j SNAT \e
--to-source $ip_eth0
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This allows Network Address Translation\&. However, beware! Like all extensive
use of hooks, this will break the \fBuruk-save\fP script\&. If you make sure your
active iptables rules are wiped, and invoke \fBuruk\fP manually to load new rules,
you\&'re safe\&. Using the init script with its default settings is safe too\&.
\fBallowing IPv6 tunneling\fP
.br
In \fIrc\fP there is:
.di ZV
.in 0
.nf \fC
rc_b=${etcdir}/proto_41
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
while the file \fCproto_41\fP reads
.di ZV
.in 0
.nf \fC
$iptables -A INPUT -i ppp0 --protocol 41 --destination $ip_ppp0 -j ACCEPT
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This allows IP protocol 41, typically used for this kind of tunneling\&.
\fBallowing any traffic on an interface\fP
.br
In \fIrc\fP there is:
.di ZV
.in 0
.nf \fC
interfaces_unprotect="lo eth2"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
This allows any traffic on \fCeth2\fP (and on \fClo\fP, the default), including
any ICMP packets and packets from any source address\&.
\fBusing multiple hooks at one entry point in the main uruk process\fP
.br
In case rc_a, rc_b, \&.\&.\&. , or rc_i does not have a file as its value, but a
directory, all files matching "$rc_x"/*\&.rc will get sourced\&. This helps
configuration management in complex situations involving lots of uruk
configuration files for lots of hosts\&.
See the section "THE GORY DETAILS: uruk INTERNALS" in \fBuruk(8)\fP
(or the \fBuruk\fP source) to find out which hook (there are hooks rc_a, rc_b, \&.\&.\&. ,
rc_i) to use\&.
.SH NETWORK INTERFACES WITH MULTIPLE IP ADDRESSES
Uruk supports situations where a network interface has more than one IP address
attached\&. Variables \fCips_\fP\fInic\fP and \fCbcasts_\fP\fInic\fP are used for
this\&.
If \fCips_\fP\fInic\fP is set, e\&.g\&. like
.di ZV
.in 0
.nf \fC
ips_eth0="ip0 ip1 ip2"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
we assume multiple (three in this example) IPs are assigned to \fCeth0\fP\&. If
this variable is not set only one IP is supported on \fCeth0\fP\&.
In multiple-IP mode, IP addresses are listed as e\&.g\&.
.di ZV
.in 0
.nf \fC
ip_eth0_ip0="137\&.56\&.247\&.16"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
(If you\&'re used to the Linux ifconfig(8) output, you could use the name \fCip\fP
for \fCeth0\fP, and \fCip0\fP for \fCeth0:0\fP\&.)
The \fIports\fP, \fIservices\fP and \fIsources\fP variables look like
e\&.g\&.
.di ZV
.in 0
.nf \fC
services_eth0_ip2_tcp=local
ports_eth0_ip2_tcp_local=smtp
sources_eth0_ip2_tcp_local=$localnet
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
and, similarly,
.di ZV
.in 0
.nf \fC
net_eth0_ip1=192\&.168\&.0\&.0/16
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Furthermore, for dropping broadcast packets, specify e\&.g\&.
.di ZV
.in 0
.nf \fC
bcasts_eth0="ip0 ip2" # yes, possibly a subset of ips_eth0
bcast_eth0_ip0="10\&.0\&.0\&.255"
bcast_eth0_ip2="10\&.0\&.255\&.255"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
As an additional feature, if you have multiple IP addresses that all need
to get the same rules, you can assign them to a single name:
.di ZV
.in 0
.nf \fC
ip_eth0_ip0="137\&.56\&.247\&.16 137\&.56\&.247\&.17 137\&.56\&.247\&.18"
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
.SH LOGGING AND DEBUGGING
Uruk has support for logging network packets, and for debugging the uruk
script\&.
\fBLogging\fP
.br
By default, uruk logs denied packets\&. This is adjustable using the
\fIloglevel\fP variable\&. The settings are:
.ZI 2m "\(bu"
\&
.br
"zero": be silent; do not log any packet\&. \fIrc\fP file features \fCloglevel=10\fP\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"low": log denied packets, which are targeted at one of our IPs\&.
\fIrc\fP file features \fCloglevel=30\fP\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"medium": log denied non-broadcast packets\&. This is the default:
\fIloglevel\fP is unset or \fIrc\fP file features \fCloglevel=50\fP\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"fascist": log all packets\&. \fIrc\fP file features \fCloglevel=90\fP\&.
.in -2m
\fBDebugging\fP
.br
To debug the \fBuruk\fP script, invoke uruk as
.di ZV
.in 0
.nf \fC
sh -x /sbin/uruk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
this shows what is done, along with executing it\&. (Like an uruk \&'-v\&' option\&.)
If you\&'d rather prefer not to execute, but just watch what would\&'ve been done,
invoke uruk as
.di ZV
.in 0
.nf \fC
URUK_IPTABLES=\&'echo iptables\&' URUK_IP6TABLES=\&'echo ip6tables\&' uruk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
(Like an uruk \&'-n\&' option\&.) If you have this statement set, you can run \fBuruk\fP
under a non-priviliged user account\&.
If you\&'d like to test a new \fIrc\fP file before installing it, run something like:
.di ZV
.in 0
.nf \fC
URUK_CONFIG=/path/to/new/uruk/rc/file uruk
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
Of course, all these tweaks can be combined\&.
.SH VARIABLES
The uruk script honors the following variables in \fIrc\fP files:
.ZI 2m "\(bu"
\&
.br
"version" Uruk version compatibility of this \fIrc\fP file
.in -2m
.ZI 2m "\(bu"
\&
.br
"loglevel"
.in -2m
.ZI 2m "\(bu"
\&
.br
"iptables" Full pathname of iptables executable\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"ip6tables" Full pathname of ip6tables executable\&.
.in -2m
.ZI 2m "\(bu"
\&
.br
"interfaces" List of network interfaces\&.
.in -2m
More variables are available\&. For now, you\&'ll have to take a look at the
example \fIrc\fP file in \fC/usr/share/doc/uruk/examples/rc\fP for more details\&.
.SH ENVIRONMENT VARIABLES
See \fBuruk(8)\fP for a list of honored environment variables\&.
.SH FILES
\fC/etc/uruk/rc\fP
.SH SEE ALSO
A well-commented example \fIrc\fP file is in \fC/usr/share/doc/uruk/examples/rc\fP\&.
And see \fBuruk(8)\fP, \fBuruk-save(8)\fP\&.
.SH COPYRIGHT
Copyright (C) 2005, 2007, 2008, 2010, 2011, 2012, 2013 Joost van Baal-Ilić
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version\&.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the
GNU General Public License for more details\&.
You should have received a copy of the GNU General Public License along
with this program\&. If not, see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
uruk-20160219/man/uruk-save.8 0000644 0001750 0001750 00000006202 12201162772 012455 0000000 0000000 .\" Copyright (c) 2013 Joost van Baal-Ilić
.TH "uruk-save" 8 "9 авг 2013" "uruk-save 20130809" "SYSTEM ADMINISTRATION "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
uruk-save \- save uruk rc configuration in iptables-save-style format
.SH SYNOPSIS
\fBuruk-save\fP \fB[\fP-6\fB]\fP
.SH OPTIONS
.ZI 2m "-6"
\&
.br
Don\&'t save iptables rules but save
ip6tables rules, for IPv6 filtering\&.
.in -2m
.SH DESCRIPTION
\fBuruk-save\fP saves the IPv4 rules (for all of the filter, raw, mangle and nat
tables) in \fC/etc/uruk/rc\fP in \fBiptables-save(5)\fP-style format, without invoking
\fBiptables(8)\fP\&. If the \fB-6\fP option is given, the IPv6 rules (if any) in
\fC/etc/uruk/rc\fP are saved, in \fBip6tables-save(5)\fP-style format\&. It prints output
to stdout; suggested invocation therefore is
.di ZV
.in 0
.nf \fC
# uruk-save > /var/lib/uruk/iptables/active
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
or
.di ZV
.in 0
.nf \fC
# uruk-save -6 > /var/lib/uruk/ip6tables/active
.fi \fR
.in
.di
.ne \n(dnu
.nf \fC
.ZV
.fi \fR
\&. This script is useful if you don\&'t like the default behaviour of the uruk
init script, and would like it to load the current uruk rc file instead of the
current active file\&. Please note: generally you don\&'t need to invoke this
script manually: the script \fBurukctl\fP which comes with uruk is suitable for most
cases, it invokes \fBuruk-save\fP if needed\&.
.SH WARNING
Just as \fBuruk\fP, in order to keep the \fBuruk-save\fP script small and simple, the
script does very little error handling\&. It does not check the contents of the
\fIrc\fP file in any way before executing it\&. When your \fIrc\fP file contains bogus
stuff, \fBuruk-save\fP will very likely behave in unexpected ways\&. Caveat emptor\&.
Things will likely break if you do very fancy stuff in an \fIrc\fP hook file\&. If
your \fIrc\fP file is in verbose mode (i\&.e\&. it features \fCset -x\fP) or in no-act
mode (i\&.e\&. it features a hardcoded \fCiptables=\&'echo iptables\&'\fP), \fBuruk-save\fP
fails\&.
.SH SEE ALSO
\fBuruk(8)\fP, \fBuruk-rc(5)\fP \&.
.SH COPYRIGHT
Copyright (C) 2005, 2007, 2010, 2011, 2012, 2013 Joost van Baal-Ilić
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version\&.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the
GNU General Public License for more details\&.
You should have received a copy of the GNU General Public License along
with this program\&. If not, see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
uruk-20160219/man/urukctl.8 0000644 0001750 0001750 00000012110 12201162773 012220 0000000 0000000 .\" Copyright (c) 2013 Joost van Baal-Ilić
.TH "urukctl" 8 "9 авг 2013" "urukctl 20130809" "SYSTEM ADMINISTRATION "
.po 2m
.de ZI
.\" Zoem Indent/Itemize macro I.
.br
'in +\\$1
.nr xa 0
.nr xa -\\$1
.nr xb \\$1
.nr xb -\\w'\\$2'
\h'|\\n(xau'\\$2\h'\\n(xbu'\\
..
.de ZJ
.br
.\" Zoem Indent/Itemize macro II.
'in +\\$1
'in +\\$2
.nr xa 0
.nr xa -\\$2
.nr xa -\\w'\\$3'
.nr xb \\$2
\h'|\\n(xau'\\$3\h'\\n(xbu'\\
..
.if n .ll -2m
.am SH
.ie n .in 4m
.el .in 8m
..
.SH NAME
urukctl \- uruk control script
.SH SYNOPSIS
\fBurukctl\fP \fIcommand\fP \fB[\fP\fIargument\fP\fB]\fP
.SH DESCRIPTION
\fBurukctl\fP is the user interface for the uruk system\&. It is used to create or
change saved iptables rulesets, to change the current loaded rulesets and to
report on uruk\&'s status\&.
See \fBuruk(8)\fP for information on how to get started with the Uruk
system, and for a tutorial\&. This manpage gives just the details on \fBurukctl\fP\&.
The \fBurukctl\fP script calls \fBuruk\fP to process /etc/uruk/rc\&. (The uruk init script
calls \fBurukctl\fP\&.)
These 4 ruleset pairs (for both IPv4 and IPv6) exist in a system using uruk:
.ZI 2m "\(bu"
\&
.br
the ruleset as expressed in the uruk configuration /etc/uruk/rc,
.in -2m
.ZI 2m "\(bu"
\&
.br
the 2 saved rulesets in \fC/var/lib/{iptables,ip6tables}/{active,inactive}\fP
.in -2m
.ZI 2m "\(bu"
\&
.br
the ruleset as currently loaded in the running kernel
.in -2m
.ZI 2m "\(bu"
\&
.br
optional: more rulesets saved in \fC/var/lib/{iptables,ip6tables}\fP
.in -2m
\fBarguments\fP
.br
\fBurukctl\fP should be called as either \fCurukctl\fP \fIargument\fP or
\fCurukctl\fP \fIargument\fP \fIoption\fP\&. Possible values are:
.ZI 2m "\fBstart\fP"
\&
.br
If not yet done, save current iptables status in "inactive" ruleset\&.
(Re)build and load the "active" ruleset\&.
.in -2m
.ZI 2m "\fBsave\fP \fIruleset\fP"
\&
.br
Save the current iptables status in given ruleset\&.
.in -2m
.ZI 2m "\fBcreate\fP <\fCactive\fP|\fCinactive\fP>"
\&
.br
Create an "active" or "inactive" ruleset with sane defaults: "active"
will be based upon the uruk rc file\&. "inactive" will allow all traffic\&.
.in -2m
.ZI 2m "\fBload\fP \fIruleset\fP"
\&
.br
Load a saved ruleset
.in -2m
.ZI 2m "\fBreload\fP"
\&
.br
(Re)build and load the "active" ruleset, without temporarily clearing the
current iptables status\&.
.in -2m
.ZI 2m "\fBforce-reload\fP"
\&
.br
(Re)build and load the "active" ruleset, in case uruk is running\&.
.in -2m
.ZI 2m "\fBstop\fP"
\&
.br
Load the "inactive" ruleset\&.
.in -2m
.ZI 2m "\fBrestart\fP"
\&
.br
Perform stop-actions followed by start-actions\&.
.in -2m
.ZI 2m "\fBstatus\fP"
\&
.br
Print the current status of the service: show which ruleset is loaded, and
wether uruk is "running"\&.
.in -2m
.ZI 2m "\fBclear\fP"
\&
.br
Remove all rules and user-defined chains, set default policy to ACCEPT\&.
.in -2m
.ZI 2m "\fBhalt\fP"
\&
.br
Remove all rules and user-defined chains, set default policy to DROP\&.
.in -2m
.ZI 2m "\fBflush\fP"
\&
.br
Flush all rules from the current iptables status\&.
.in -2m
\fBconfiguration\fP
.br
\fBurukctl\fP uses the file /etc/default/uruk (on Debian, Ubuntu and related
systems) or /etc/sysconfig/uruk (on Red Hat, Fedora and related systems) for
configuration\&. Variables used in this file are:
.ZI 2m "enable_uruk_check"
\&
.br
wether to check for existence and sanity of uruk rc file; set to false if
you don\&'t like this, e\&.g\&. when using the uruk initscript for managing saved
rulesets only (i\&.e\&. not for calling uruk or uruk-save)\&.
.in -2m
.ZI 2m "enable_ipv6"
\&
.br
set to false to disable IPv6 support\&. Set to \fC$(enable-ipv6)\fP to
dynamically decide wether to filter IPv6 traffic\&.
.in -2m
.ZI 2m "enable_uruk_save"
\&
.br
enable calling the unstable uruk-save script\&.
.in -2m
.ZI 2m "enable_autosave"
\&
.br
set to "false" to disable autosaving the active ruleset when going from
start to stop\&.
.in -2m
.ZI 2m "enable_save_counters"
\&
.br
set to "false" to disable saving table counters with rulesets\&.
.in -2m
.SH SEE ALSO
\fBuruk(8)\fP, \fBuruk-rc(5)\fP,
\fBuruk-save(8)\fP\&. The Uruk homepage is at
http://mdcc\&.cx/uruk/ \&.
\fBiptables(8)\fP, \fBiptables-save(8)\fP,
\fBiptables-restore(8)\fP,
\fBip6tables(8)\fP, \fBip6tables-save(8)\fP,
\fBip6tables-restore(8)\fP, http://www\&.netfilter\&.org/
\fBinterfaces(5)\fP, http://packages\&.debian\&.org/ifupdown\&.
.SH COPYRIGHT
Copyright (C) 2013 Joost van Baal-Ilić
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version\&.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&. See the
GNU General Public License for more details\&.
You should have received a copy of the GNU General Public License along
with this program\&. If not, see http://www\&.gnu\&.org/licenses/\&.
.SH AUTHOR
Joost van Baal-Ilić
uruk-20160219/doc/ 0000755 0001750 0001750 00000000000 12661613117 010520 5 0000000 0000000 uruk-20160219/doc/Makefile.am 0000644 0001750 0001750 00000001077 11712513436 012500 0000000 0000000 ## Process this file with automake to produce Makefile.in
## this file maintained at http://git.mdcc.cx/uruk.git
## Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
## Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
## Copyright (C) 2003, 2004, 2005 Joost van Baal
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
exampledir = $(datadir)/doc/@PACKAGE_TARNAME@/examples
example_DATA = rc default rfc4890-icmpv6-firewall.sh
EXTRA_DIST = $(example_DATA)
uruk-20160219/doc/Makefile.in 0000644 0001750 0001750 00000031567 12661613101 012512 0000000 0000000 # Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# This script is free software; you can distribute it and/or modify it
# under the terms of the GNU GPL. See the file COPYING.
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(exampledir)"
DATA = $(example_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
exampledir = $(datadir)/doc/@PACKAGE_TARNAME@/examples
example_DATA = rc default rfc4890-icmpv6-firewall.sh
EXTRA_DIST = $(example_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-exampleDATA: $(example_DATA)
@$(NORMAL_INSTALL)
@list='$(example_DATA)'; test -n "$(exampledir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(exampledir)'"; \
$(MKDIR_P) "$(DESTDIR)$(exampledir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(exampledir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(exampledir)" || exit $$?; \
done
uninstall-exampleDATA:
@$(NORMAL_UNINSTALL)
@list='$(example_DATA)'; test -n "$(exampledir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(exampledir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(exampledir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-exampleDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-exampleDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exampleDATA \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags-am uninstall uninstall-am \
uninstall-exampleDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
uruk-20160219/doc/rc 0000644 0001750 0001750 00000011447 12476342646 011010 0000000 0000000 # this file maintained at http://git.mdcc.cx/uruk.git
# Sample Uruk rc file
# Copyright (C) 2003 Stichting LogReport Foundation logreport@logreport.org
# Copyright (C) 2003, 2004 Tilburg University http://www.uvt.nl/
# Copyright (C) 2003, 2004, 2005, 2010 Joost van Baal
# Copyright (C) 2012, 2013, 2014 Joost van Baal-Ilić
#
# This file is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# This file is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
#
# You should have received a copy of the GNU GPL along with this file, see
# e.g. the file named COPYING. If not, see .
##########
# preamble
##########
# Uruk version compatibility of this rc file
# (actually, likely works with version=20071030 too)
version=20140319
# Log denied packets, which are targetted at one of our IPs. Do not log
# blocked broadcasts.
loglevel=30
###############################
# define our network interfaces
###############################
# List of network interfaces. lo should not be in this list (see below). For
# every interface , variables ip_, bcast_ and net_ should be
# defined.
interfaces="eth0 eth1"
# List of network interfaces we want uruk to leave alone: all traffic on these
# interfaces will be trusted and accepted. By default, interfaces_unprotect=lo
#
interfaces_unprotect="lo sit0 eth3"
###############################################
# assign IPs and networks to network interfaces
###############################################
# this helper sets ip_ and net_
. /lib/uruk/init/autodetect-ips
# alternatively, explicitly list adresses manually, by setting ip_,
# ip6_, net_ and net6_, like this:
ips_eth0=default
# For each interface in interfaces, ip_ and net_ should be
# defined
ip_eth0_default=10.56.0.201
# Supply IPv6 addresses like this:
ip6_eth0_default=2006:488:1a9b::4a54:e8ff:fe2b:f25c # (aka 2006:488:1a9b:0:4a54:e8ff:fe2b:f25c)
# NB: /sbin/ip6tables (as shipped with e.g. iptables 1.4.8-2) understands
# both full and abbreviated IPv6 names.
ips_eth1="default local"
ip_eth1_default=192.168.0.4
ip_eth1_local=10.0.0.1
# To which network does this interface belong? Should be one of
# 0.0.0.0/0 (aka 0/0) 10.0.0.0/8 (aka 10./8) 172.16.0.0/12 (aka 172.16./12)
# 192.168.0.0/16 (aka 192.168./16) . Used to decide wether a
# packet for this interface is spoofed, and therefore should get dropped.
# NB: /sbin/iptables (as shipped with e.g. iptables 1.4.8-2) understands
# full names only.
net_eth0_default=0.0.0.0/0
net_eth1_default=192.168.0.0/16
net_eth1_local=10.0.0.0/8
# Subset of named IPs per interface, which should drop broadcast and multicast packets
bcasts_eth1="local"
bcast_eth1_local="10.255.255.255"
# For each interface in interfaces_nocast, bcast_ should be defined
bcast_eth0_default=10.56.255.255
#########################################
# optionally, define some shell variables
#########################################
# You can define any shell variable, and reference it later on
localnet="10.56.0.0/16"
all4=0.0.0.0/0
#####################################################
# finally, define allowed services, sources and ports
#####################################################
# For each interface, and for both tcp and udp, symbolic names of (sets of)
# services could be defined, in variables services__{tcp,udp}.
services_eth0_default_tcp="mail local public"
# For every servicesetname , every interface , and tcp and/or udp, a
# list of allowed source addresses should be defined in a variable
# sources__{tcp,udp}_ . Furthermore a list of ports should be defined
# in a variable ports__{tcp,udp}_ .
# A valid source is 192.168.6.26, another valid source is 192.168.6.0/24.
# One can add DNS domainnames like gandalf.example.com too: iptables will
# perform a DNS lookup
# Supply IPv6 addresses like e.g. this:
# "::/0" # aka 0000:0000:0000:0000:0000:0000:0000:0000/0
sources_eth0_default_tcp_mail="10.0.0.0/24 192.0.32.0/24 192.168.6.26"
sources_eth0_default_tcp_local="$localnet gandalf.example.com"
sources_eth0_default_tcp_public="$all4 ::/0"
# Symbolic port names are fine.
ports_eth0_default_tcp_mail=smtp
ports_eth0_default_tcp_local="ssh ftp"
ports_eth0_default_tcp_public=www
services_eth0_default_udp="syslog local"
sources_eth0_default_udp_syslog="10.56.0.10/32 2001:db8::/32"
sources_eth0_default_udp_local=$localnet
ports_eth0_default_udp_syslog="syslog"
# Port ranges are allowed too
ports_eth0_default_udp_local="ntp 605:608 853:876"
uruk-20160219/doc/default 0000644 0001750 0001750 00000001573 12661605702 012016 0000000 0000000 # this file maintained at http://git.mdcc.cx/uruk.git
#
# configuration for urukctl(8) as called by /etc/init.d/uruk. Install in
# /etc/default/uruk (Debian) or /etc/sysconfig/uruk (Red Hat)
# Some helpers are installed in /lib/uruk/init
# /sbin might be lacking from PATH when running as non-root
PATH=/lib/uruk/init:/sbin:$PATH
# enable_uruk_check - wether to check for existence and sanity of uruk rc
# file
## enable_uruk_check=false
# enable_ipv6 - set to false to disable IPv6 support.
## enable_ipv6=false
enable_ipv6=$(enable-ipv6)
# enable calling the unstable uruk-save script
## enable_uruk_save=false
enable_uruk_save=true
# set enable_autosave to "false" to disable autosaving the active ruleset
# when going from start to stop
## enable_autosave=false
#
# set enable_save_counters to "false" to disable saving table counters with
# rulesets
## enable_save_counters=false
uruk-20160219/doc/rfc4890-icmpv6-firewall.sh 0000644 0001750 0001750 00000030061 11712513436 015077 0000000 0000000 #!/bin/bash
# Copyright (c) 2006, Suresh Krishnan. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# - Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# - Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Message-ID: <4EE7D463.3030907@ericsson.com>
# Date: Tue, 13 Dec 2011 17:40:35 -0500
# From: Suresh Krishnan
# To: Joost van Baal-Ilić
# Subject: Re: script for icmpv6 firewall rules, rfc 4890, software license
# References: <20111213132226.GY10269@dijkstra.uvt.nl>
#
# Hi Joost,
# I release the example script to configure icmpv6 firewall rules as
# published in rfc 4890 under the 2-clause BSD license.
#
# Thanks
# Suresh
# rfc4890-icmpv6-firewall.sh - Example Script to Configure ICMPv6 Firewall Rules
#
# This is an example script to implement most of the rules suggested in RFC 4890
# when using the Netfilter packet filtering system for Linux. The script is
# targeted at a simple enterprise site that may or may not support Mobile IPv6.
# Set of prefixes on the trusted ("inner") side of the firewall
export INNER_PREFIXES="2001:DB8:85::/60"
# Set of hosts providing services so that they can be made pingable
export PINGABLE_HOSTS="2001:DB8:85::/64"
# Configuration option: Change this to 1 if errors allowed only for
# existing sessions
export STATE_ENABLED=0
# Configuration option: Change this to 1 if messages to/from link
# local addresses should be filtered.
# Do not use this if the firewall is a bridge.
# Optional for firewalls that are routers.
export FILTER_LINK_LOCAL_ADDRS=0
# Configuration option: Change this to 0 if the site does not support
# Mobile IPv6 Home Agents - see Appendix A.14
export HOME_AGENTS_PRESENT=1
# Configuration option: Change this to 0 if the site does not support
# Mobile IPv6 mobile nodes being present on the site -
# see Appendix A.14
export MOBILE_NODES_PRESENT=1
ip6tables -N icmpv6-filter
ip6tables -A FORWARD -p icmpv6 -j icmpv6-filter
# Match scope of src and dest else deny
# This capability is not provided for in base ip6tables functionality
# An extension (agr) exists which may support it.
#@TODO@
# ECHO REQUESTS AND RESPONSES
# ===========================
# Allow outbound echo requests from prefixes which belong to the site
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type echo-request -j ACCEPT
done
# Allow inbound echo requests towards only predetermined hosts
for pingable_host in $PINGABLE_HOSTS
do
ip6tables -A icmpv6-filter -p icmpv6 -d $pingable_host \
--icmpv6-type echo-request -j ACCEPT
done
if [ "$STATE_ENABLED" -eq "1" ]
then
# Allow incoming and outgoing echo reply messages
# only for existing sessions
ip6tables -A icmpv6-filter -m state -p icmpv6 \
--state ESTABLISHED,RELATED --icmpv6-type \
echo-reply -j ACCEPT
else
# Allow both incoming and outgoing echo replies
for pingable_host in $PINGABLE_HOSTS
do
# Outgoing echo replies from pingable hosts
ip6tables -A icmpv6-filter -p icmpv6 -s $pingable_host \
--icmpv6-type echo-reply -j ACCEPT
done
# Incoming echo replies to prefixes which belong to the site
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type echo-reply -j ACCEPT
done
fi
# Deny icmps to/from link local addresses
# If the firewall is a router:
# These rules should be redundant as routers should not forward
# link local addresses but to be sure...
# DO NOT ENABLE these rules if the firewall is a bridge
if [ "$FILTER_LINK_LOCAL_ADDRS" -eq "1" ]
then
ip6tables -A icmpv6-filter -p icmpv6 -s fe80::/10 -j DROP
fi
# Drop echo replies which have a multicast address as a
# destination
ip6tables -A icmpv6-filter -p icmpv6 -d ff00::/8 \
--icmpv6-type echo-reply -j DROP
# DESTINATION UNREACHABLE ERROR MESSAGES
# ======================================
if [ "$STATE_ENABLED" -eq "1" ]
then
# Allow incoming destination unreachable messages
# only for existing sessions
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -m state -p icmpv6 \
-d $inner_prefix \
--state ESTABLISHED,RELATED --icmpv6-type \
destination-unreachable -j ACCEPT
done
else
# Allow incoming destination unreachable messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type destination-unreachable -j ACCEPT
done
fi
# Allow outgoing destination unreachable messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type destination-unreachable -j ACCEPT
done
# PACKET TOO BIG ERROR MESSAGES
# =============================
if [ "$STATE_ENABLED" -eq "1" ]
then
# Allow incoming Packet Too Big messages
# only for existing sessions
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -m state -p icmpv6 \
-d $inner_prefix \
--state ESTABLISHED,RELATED \
--icmpv6-type packet-too-big \
-j ACCEPT
done
else
# Allow incoming Packet Too Big messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type packet-too-big -j ACCEPT
done
fi
# Allow outgoing Packet Too Big messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type packet-too-big -j ACCEPT
done
# TIME EXCEEDED ERROR MESSAGES
# ============================
if [ "$STATE_ENABLED" -eq "1" ]
then
# Allow incoming time exceeded code 0 messages
# only for existing sessions
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -m state -p icmpv6 \
-d $inner_prefix \
--state ESTABLISHED,RELATED --icmpv6-type packet-too-big \
-j ACCEPT
done
else
# Allow incoming time exceeded code 0 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type ttl-zero-during-transit -j ACCEPT
done
fi
#@POLICY@
# Allow incoming time exceeded code 1 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type ttl-zero-during-reassembly -j ACCEPT
done
# Allow outgoing time exceeded code 0 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type ttl-zero-during-transit -j ACCEPT
done
#@POLICY@
# Allow outgoing time exceeded code 1 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type ttl-zero-during-reassembly -j ACCEPT
done
# PARAMETER PROBLEM ERROR MESSAGES
# ================================
if [ "$STATE_ENABLED" -eq "1" ]
then
# Allow incoming parameter problem code 1 and 2 messages
# for an existing session
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -m state -p icmpv6 \
-d $inner_prefix \
--state ESTABLISHED,RELATED --icmpv6-type \
unknown-header-type \
-j ACCEPT
ip6tables -A icmpv6-filter -m state -p icmpv6 \
-d $inner_prefix \
--state ESTABLISHED,RELATED \
--icmpv6-type unknown-option \
-j ACCEPT
done
fi
# Allow outgoing parameter problem code 1 and code 2 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type unknown-header-type -j ACCEPT
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type unknown-option -j ACCEPT
done
#@POLICY@
# Allow incoming and outgoing parameter
# problem code 0 messages
for inner_prefix in $INNER_PREFIXES
do
ip6tables -A icmpv6-filter -p icmpv6 \
--icmpv6-type bad-header \
-j ACCEPT
done
# NEIGHBOR DISCOVERY MESSAGES
# ===========================
# Drop NS/NA messages both incoming and outgoing
ip6tables -A icmpv6-filter -p icmpv6 \
--icmpv6-type neighbor-solicitation -j DROP
ip6tables -A icmpv6-filter -p icmpv6 \
--icmpv6-type neighbor-advertisement -j DROP
# Drop RS/RA messages both incoming and outgoing
ip6tables -A icmpv6-filter -p icmpv6 \
--icmpv6-type router-solicitation -j DROP
ip6tables -A icmpv6-filter -p icmpv6 \
--icmpv6-type router-advertisement -j DROP
# Drop Redirect messages both incoming and outgoing
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type redirect -j DROP
# MLD MESSAGES
# ============
# Drop incoming and outgoing
# Multicast Listener queries (MLDv1 and MLDv2)
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 130 -j DROP
# Drop incoming and outgoing Multicast Listener reports (MLDv1)
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 131 -j DROP
# Drop incoming and outgoing Multicast Listener Done messages (MLDv1)
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 132 -j DROP
# Drop incoming and outgoing Multicast Listener reports (MLDv2)
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 143 -j DROP
# ROUTER RENUMBERING MESSAGES
# ===========================
# Drop router renumbering messages
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 138 -j DROP
# NODE INFORMATION QUERIES
# ========================
# Drop node information queries (139) and replies (140)
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 139 -j DROP
ip6tables -A icmpv6-filter -p icmpv6 --icmpv6-type 140 -j DROP
# MOBILE IPv6 MESSAGES
# ====================
# If there are mobile ipv6 home agents present on the
# trusted side allow
if [ "$HOME_AGENTS_PRESENT" -eq "1" ]
then
for inner_prefix in $INNER_PREFIXES
do
#incoming Home Agent address discovery request
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type 144 -j ACCEPT
#outgoing Home Agent address discovery reply
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type 145 -j ACCEPT
#incoming Mobile prefix solicitation
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type 146 -j ACCEPT
#outgoing Mobile prefix advertisement
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type 147 -j ACCEPT
done
fi
# If there are roaming mobile nodes present on the
# trusted side allow
if [ "$MOBILE_NODES_PRESENT" -eq "1" ]
then
for inner_prefix in $INNER_PREFIXES
do
#outgoing Home Agent address discovery request
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type 144 -j ACCEPT
#incoming Home Agent address discovery reply
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type 145 -j ACCEPT
#outgoing Mobile prefix solicitation
ip6tables -A icmpv6-filter -p icmpv6 -s $inner_prefix \
--icmpv6-type 146 -j ACCEPT
#incoming Mobile prefix advertisement
ip6tables -A icmpv6-filter -p icmpv6 -d $inner_prefix \
--icmpv6-type 147 -j ACCEPT
done
fi
# DROP EVERYTHING ELSE
# ====================
ip6tables -A icmpv6-filter -p icmpv6 -j DROP
uruk-20160219/contrib/ 0000755 0001750 0001750 00000000000 12661613117 011413 5 0000000 0000000 uruk-20160219/contrib/Makefile.am 0000644 0001750 0001750 00000000730 11712513436 013366 0000000 0000000 ## Process this file with automake to produce Makefile.in
## this file maintained at http://git.mdcc.cx/uruk.git
## Copyright (C) 2007 Joost van Baal
##
## This script is free software; you can distribute it and/or modify it
## under the terms of the GNU GPL. See the file COPYING.
contribdir = $(datadir)/doc/@PACKAGE_TARNAME@/contrib
contrib_DATA = fw_2007-10.xsd fw2dot.xsl fw2urukrc.xsl \
fw_firewall_2007-10.xsd README sample.xml
EXTRA_DIST = $(contrib_DATA)
uruk-20160219/contrib/Makefile.in 0000644 0001750 0001750 00000031472 12661613101 013400 0000000 0000000 # Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = contrib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/VERSION.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(contribdir)"
DATA = $(contrib_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(srcdir)/Makefile.in README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
contribdir = $(datadir)/doc/@PACKAGE_TARNAME@/contrib
contrib_DATA = fw_2007-10.xsd fw2dot.xsl fw2urukrc.xsl \
fw_firewall_2007-10.xsd README sample.xml
EXTRA_DIST = $(contrib_DATA)
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu contrib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-contribDATA: $(contrib_DATA)
@$(NORMAL_INSTALL)
@list='$(contrib_DATA)'; test -n "$(contribdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(contribdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(contribdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(contribdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(contribdir)" || exit $$?; \
done
uninstall-contribDATA:
@$(NORMAL_UNINSTALL)
@list='$(contrib_DATA)'; test -n "$(contribdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(contribdir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
for dir in "$(DESTDIR)$(contribdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-contribDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-contribDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-contribDATA \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags-am uninstall uninstall-am \
uninstall-contribDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
uruk-20160219/contrib/README 0000644 0001750 0001750 00000003615 11712513436 012217 0000000 0000000
The files here include an XML configuration schema for a firewall and software
to transform this XML configuration into an Uruk configuration file. See
http://www.mokolo.org/fwxml/introduction.html for more details.
The rest of this README is in Dutch.
Fred wrote me:
Date: Fri, 21 Sep 2007 16:19:39 +0200
From: Fred Vos
To: Joost van Baal
Subject: XML voor uruk
Message-ID: <20070921141939.GQ29157@africa.uvt.nl>
% xsltproc uruk2dot.xsl uruk.xml > firewall.dot
% dot -Tpng -o firewall.png firewall.dot
dot is shipped with graphviz.
and:
Date: Sun, 30 Sep 2007 20:05:01 +0200
From: Fred Vos
To: Joost van Baal
Subject: Re: XML voor uruk
Message-ID: <20070930180501.GD6032@africa.uvt.nl>
[...]
sample.xml is een voorbeeld van een firewall beschrijving. Deze bevat
alles behalve de uruk specifieke zaken. Zie daarvoor verderop.
De *.xsd files kun je gebruiken om een firewall.xml file (bijvoorbeeld
sample.xml) te testen op validiteit. Ze komen van mijn site, maar een
'gebruiker' kan ze het beste lokaal hebben. Probeer bijvoorbeeld
xmllint of een andere tool voor dat doel. Voor xmllint:
% xmllint --schema /path/to/fw_firewall_2007-10.xsd /path/to/firewall.xml
xmllint zit dacht ik in package libxml2-utils.
Bestand fw_2007-10.xsd wordt geinclude door fw_firewall_2007-10.xsd en
dient in dezelfde directory te staan.
fw2urukrc.xsl is een conversiescript dat het firewall specifieke deel
van de rc maakt. Converteer de firewall met een xslt processor,
bijvoorbeeld xsltproc. Voor xsltproc:
% xsltproc /path/to/fw2urukrc.xsl /path/to/firewall.xml
Dit stuurt de tekst naar stdout. Te redirecten naar een bestand, uiteraard.
xsltproc zit in een package met dezelfde naam.
Maken van een rc file:
Ik denk aan het volgende: Zet de uruk specifieke dingen in 'uruk.conf'
en de firewall in 'firewall.xml'. Dan iets als:
% cp uruk.conf rc
% echo >> rc
% xsltproc /path/to/fw2urukrc.xsl firewall.xml >> rc
[...]
uruk-20160219/contrib/fw_2007-10.xsd 0000644 0001750 0001750 00000022250 11712513436 013355 0000000 0000000
Allows a named source access to a named service.
An external interface. The name is the real name of the interface.
A reference to a named network.
A network is a named ip-address or ip-range.
A port number can either be a positive integer, like '22' for ssh or '80' for www, but also a name of a service, like 'ssh' or 'sunrpc'. If a service name is used, the system must be able to translate the string into a positive integer.
See http://en.wikipedia.org/wiki/TCP_and_UDP_port for information on ports.
A service is a named collection of ports, related to a service. A port can, for this setup, be a member in more than one service, but usually this is not the case. Usually there's one port associated with a single service. To distinguish this named service from services as used to represent ports, please start the name with an upper case character, for instance 'WWW' for the service and 'www' for the port or 'Telnet' for the service and 'telnet' for port 23. For service 'WWW' you could associate both ports 80 ('www') and 443 ('https').
A named collection of networks.
uruk-20160219/contrib/fw2dot.xsl 0000644 0001750 0001750 00000010777 11712513436 013303 0000000 0000000
digraph firewall {
rankdir=LR;
graph [bgcolor=transparent];
node [shape=ellipse style=filled fontname=Arial fontsize=12]; /* default */
edge [arrowhead=none]; /* default */
subgraph cluster_0 {
label="Ports";
node [color=green];
port_ [label=""];
}
subgraph cluster_1 {
label="Services";
node [color=yellow];
service_ [label=""];
}
subgraph cluster_2 {
label="Sources";
node [color=orange];
source_ [label=""];
}
subgraph cluster_3 {
label="Networks";
node [shape=record color=lightblue];
network_ [label="|{}"];
}
port_
->
service_
;
service_
->
source_
[taillabel=
headlabel=
];
source_
->
network_
;
}