# HG changeset patch # User Michael Schloh von Bennewitz # Date 1344199921 -7200 # Node ID 332ec562ab2e70e8616a259df576444913c30b43 # Parent 1a3c5950a05067d677e7b99c720f926bb6463d4b Import package vendor original specs for necessary manipulations. diff -r 1a3c5950a050 -r 332ec562ab2e pam/pam.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pam/pam.spec Sun Aug 05 22:52:01 2012 +0200 @@ -0,0 +1,165 @@ +## +## pam.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2011 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## 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. +## + +# package information +Name: pam +Summary: Information Resource for PAM +URL: - +Vendor: The OpenPKG Project +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: BASE +Group: Meta +License: PD +Version: 0 +Release: 20110219 + +# list of sources +Source0: pamtool +Source1: rc.pam + +# build information +BuildPreReq: OpenPKG, openpkg >= 20100101 +PreReq: OpenPKG, openpkg >= 20100101 +Provides: PAM + +%description + This is the information resource package for PAM. + +%track + +%prep + +%build + +%install + + pam_cfgloc="" + pam_modpfx="" + pam_incdir="" + pam_libdir="" + + # search for configuration location + for cfgloc in \ + /etc/pam.d \ + /etc/pam.conf \ + ; do + if [ -f $cfgloc -o -d $cfgloc ]; then + pam_cfgloc="$cfgloc" + break + fi + done + + # search for module prefix + if [ -d $pam_cfgloc ]; then + mod=`cat $pam_cfgloc/* 2>/dev/null | grep -i '^#*[ ]*other' | head -1 | awk '{ print $3; }'` + elif [ -f $pam_cfgloc ]; then + mod=`cat $pam_cfgloc 2>/dev/null | grep -i '^#*[ ]*other' | head -1 | awk '{ print $4; }'` + else + mod="" + fi + case $mod in + pam_* ) pam_modpfx="" ;; + /*/pam_* ) pam_modpfx=`echo $mod | sed 's;^\(/.*/\)pam_[^/]*$;\1;'` ;; + esac + + # search for include directory + for incdir in \ + /usr/include \ + /usr/local/include \ + /opt/include \ + ; do + if [ -f "$incdir/security/pam_appl.h" ]; then + pam_incdir="$incdir" + break + fi + done + + # search for library directory + for libdir in \ + /lib \ + /usr/lib \ + /usr/local/lib \ + /opt/lib \ + ; do + for ext in a so sl so.0; do + if [ -f "$libdir/libpam.$ext" ]; then + pam_libdir="$libdir" + break + fi + done + if [ ".$pam_libdir" != . ]; then + break + fi + done + + # make sure everything was found + if [ ".$pam_cfgloc" = . ] ||\ + [ ".$pam_incdir" = . ] ||\ + [ ".$pam_libdir" = . ]; then + set +x + ( echo "************************************************************" + echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" + echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" + echo "**" + echo "** We found out:" + echo "** PAM Config Location: \"${pam_cfgloc}\"" + echo "** PAM Module Prefix: \"${pam_modpfx}\"" + echo "** PAM Include Directory: \"${pam_incdir}\"" + echo "** PAM Library Directory: \"${pam_libdir}\"" + echo "**" + echo "** Unfortunately, some information is missing here." + echo "**" + echo "** Be sure to have all system PAM components installed" + echo "** in standard locations before building this package!" + echo "**" + echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" + echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" + echo "************************************************************" + ) | %{l_rpmtool} msg -b -t error + exit 1 + fi + + # install PAM tool + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/sbin + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + -e 's;@l_platform@;%{l_platform -t};g' \ + %{SOURCE pamtool} $RPM_BUILD_ROOT%{l_prefix}/sbin/ + + # install rc file + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + -e "s;@pam_cfgloc@;${pam_cfgloc};g" \ + -e "s;@pam_modpfx@;${pam_modpfx};g" \ + -e "s;@pam_incdir@;${pam_incdir};g" \ + -e "s;@pam_libdir@;${pam_libdir};g" \ + %{SOURCE rc.pam} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean + diff -r 1a3c5950a050 -r 332ec562ab2e pam/pamtool --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pam/pamtool Sun Aug 05 22:52:01 2012 +0200 @@ -0,0 +1,201 @@ +#!/bin/sh +## +## pamtool -- OpenPKG PAM Auxiliary Tool +## Copyright (c) 2000-2007 OpenPKG Foundation e.V. +## Copyright (c) 2000-2007 Ralf S. Engelschall +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## 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. +## + +# program name, version and date +progname="pamtool" +progvers="0.9.0" +progdate="11-Mar-2002" + +# the OpenPKG instance information +l_prefix="@l_prefix@" +l_platform="@l_platform@" + +# default parameters +verbose=no +help=no +add=no +remove=no +smart=no +name="" +id="" + +# iterate over argument line +while [ $# -gt 0 ]; do + opt=$1 + case $opt in + -*=*) arg=`echo "$opt" | sed 's/^[-_a-zA-Z0-9]*=//'` ;; + *) arg='' ;; + esac + case $opt in + -v|--verbose ) verbose=yes ;; + -h|--help ) help=yes ;; + -a|--add ) add=yes ;; + -r|--remove ) remove=yes ;; + -s|--smart ) smart=yes ;; + --name=* ) name=$arg ;; + --id=* ) id=$arg ;; + -* ) help="Invalid option \`$opt'"; break ;; + * ) break ;; + esac + shift +done +if [ ".$help" = .yes ]; then + echo "$progname --add|--remove --name=NAME [--smart] [--id=ID]"; + exit 0 +fi +if [ ".$add" = .no -a ".$remove" = .no ]; then + echo "$progname:ERROR: either option -a/--add or -r/--remove have to be specified" 1>&2 + exit 1 +fi +if [ ".$add" = .yes -a ".$remove" = .yes ]; then + echo "$progname:ERROR: option -a/--add and -r/--remove cannot be specified in parallel" 1>&2 + exit 1 +fi +if [ ".$name" = . ]; then + echo "$progname:ERROR: option --name has to be specified" 1>&2 + exit 1 +fi +if [ ".$id" = . ]; then + id="$l_prefix:$name" +fi + + +# find a reasonable temporary location +if [ ".$TMPDIR" != . ]; then + tmpdir="$TMPDIR" +elif [ ".$TEMPDIR" != . ]; then + tmpdir="$TEMPDIR" +else + tmpdir="/tmp" +fi +tmpfile="$tmpdir/pamtool.$$.tmp" + +# determine PAM information from OpenPKG configuration +if [ ! -f "$l_prefix/etc/rc" ]; then + echo "$progname:$ERROR: OpenPKG run-command facility not found under $l_prefix" 1>&2 + exit 1 +fi +pam_enable=`$l_prefix/bin/openpkg rc --query pam_enable` +pam_cfgloc=`$l_prefix/bin/openpkg rc --query pam_cfgloc` +pam_modpfx=`$l_prefix/bin/openpkg rc --query pam_modpfx` + +# perform operation +if [ ! -f "$l_prefix/lib/openpkg/rpmtool" ]; then + echo "$progname:$ERROR: OpenPKG rpmtool not found under $l_prefix/sbin/" 1>&2 + exit 1 +fi +rpmtool_config="$l_prefix/lib/openpkg/rpmtool config" +if [ ".$smart" = .yes ]; then + rpmtool_config="$rpmtool_config -s" +fi +if [ ".$add" = .yes ]; then + # + # add a PAM entry + # + + # determine platform specific PAM entries + ( case "$l_platform" in + *-freebsd* ) + echo "auth sufficient ${pam_modpfx}pam_opie.so no_warn no_fake_prompts" + echo "auth requisite ${pam_modpfx}pam_opieaccess.so no_warn allow_local" + echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" + echo "account required ${pam_modpfx}pam_unix.so" + echo "password required ${pam_modpfx}pam_permit.so" + echo "session required ${pam_modpfx}pam_permit.so" + ;; + *-linux* ) + echo "auth required ${pam_modpfx}pam_unix_auth.so shadow nodelay" + echo "auth required ${pam_modpfx}pam_nologin.so" + echo "account required ${pam_modpfx}pam_unix_acct.so" + echo "password required ${pam_modpfx}pam_unix_passwd.so shadow nullok use_authtok" + echo "session required ${pam_modpfx}pam_unix_session.so" + echo "session required ${pam_modpfx}pam_limits.so" + ;; + *-sunos* ) + echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" + echo "account required ${pam_modpfx}pam_unix.so" + echo "password required ${pam_modpfx}pam_unix.so" + echo "session required ${pam_modpfx}pam_unix.so" + ;; + *-aix* ) + echo "auth required ${pam_modpfx}pam_aix try_first_pass" + echo "account required ${pam_modpfx}pam_aix" + echo "password required ${pam_modpfx}pam_aix" + echo "session required ${pam_modpfx}pam_aix" + ;; + * ) + echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" + echo "account required ${pam_modpfx}pam_unix.so" + echo "password required ${pam_modpfx}pam_unix.so" + echo "session required ${pam_modpfx}pam_unix.so" + ;; + esac + ) >$tmpfile + + # add application name prefix if using combined configuration + if [ -f $pam_cfgloc ]; then + sed -e "s;^;$name ;" <$tmpfile >$tmpfile.n + mv $tmpfile.n $tmpfile + fi + + # create entry + if [ -f $pam_cfgloc ]; then + if [ ".$verbose" = .yes ]; then + echo "++ adding entry to $pam_cfgloc" + fi + $rpmtool_config -a -i $id $pam_cfgloc <$tmpfile || exit $? + elif [ -d $pam_cfgloc ]; then + if [ ".$verbose" = .yes ]; then + echo "++ adding entry to $pam_cfgloc/$name" + fi + $rpmtool_config -a -i $id $pam_cfgloc/$name <$tmpfile || exit $? + fi + +elif [ ".$remove" = .yes ]; then + # + # remove a PAM entry + # + + # remove entry + if [ -f $pam_cfgloc ]; then + if [ ".$verbose" = .yes ]; then + echo "++ removing entry from $pam_cfgloc" + fi + $rpmtool_config -r -i $id $pam_cfgloc || exit $? + elif [ -d $pam_cfgloc ]; then + if [ ".$verbose" = .yes ]; then + echo "++ removing entry from $pam_cfgloc/$name" + fi + $rpmtool_config -r -i $id $pam_cfgloc/$name || exit $? + if [ ! -s $pam_cfgloc/$name ]; then + rm -f $pam_cfgloc/$name >/dev/null 2>&1 || true + fi + fi +fi + +# cleanup +rm -f $tmpfile +exit 0 + diff -r 1a3c5950a050 -r 332ec562ab2e pam/rc.pam --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pam/rc.pam Sun Aug 05 22:52:01 2012 +0200 @@ -0,0 +1,19 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.pam -- Run-Commands +## + +%config + pam_enable="$openpkg_rc_def" + pam_cfgloc='@pam_cfgloc@' + pam_modpfx='@pam_modpfx@' + pam_incdir='@pam_incdir@' + pam_libdir='@pam_libdir@' + +%info -o + echo "PAM Enabled: ${pam_enable}" + echo "PAM Config Location: ${pam_cfgloc}" + echo "PAM Module Prefix: ${pam_modpfx}" + echo "PAM Include Directory: ${pam_incdir}" + echo "PAM Library Directory: ${pam_libdir}" +