OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src openpkg-web openpkg$ Date: 24-Oct-2003 17:36:03
Branch: HEAD Handle: 2003102416360002
Added files:
openpkg-re/vcheck vc.tacacs
openpkg-src/tacacs fsl.tacacs rc.tacacs tacacs.patch
tacacs.patch.radius tacacs.spec
Modified files:
openpkg-web news.txt
Log:
new package: tacacs 4.4b2 (TACACS+ Server)
Summary:
Revision Changes Path
1.1 +11 -0 openpkg-re/vcheck/vc.tacacs
1.1 +16 -0 openpkg-src/tacacs/fsl.tacacs
1.1 +54 -0 openpkg-src/tacacs/rc.tacacs
1.1 +70 -0 openpkg-src/tacacs/tacacs.patch
1.1 +309 -0 openpkg-src/tacacs/tacacs.patch.radius
1.1 +226 -0 openpkg-src/tacacs/tacacs.spec
1.7157 +1 -0 openpkg-web/news.txt
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-re/vcheck/vc.tacacs
============================================================================
$ cvs diff -u -r0 -r1.1 vc.tacacs
--- /dev/null 2003-10-24 17:36:00.000000000 +0200
+++ vc.tacacs 2003-10-24 17:36:01.000000000 +0200
@@ -0,0 +1,11 @@
+config = {
+}
+
+prog tacacs = {
+ disabled
+ comment = "rse: no real chance for tracking AFAIK"
+ version = 4.4beta2
+ url =
http://www.networkforums.net/modules.php?name=Downloads&d_op=viewdownload&cid=1
+ regex = .+
+}
+
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/tacacs/fsl.tacacs
============================================================================
$ cvs diff -u -r0 -r1.1 fsl.tacacs
--- /dev/null 2003-10-24 17:36:03.000000000 +0200
+++ fsl.tacacs 2003-10-24 17:36:03.000000000 +0200
@@ -0,0 +1,16 @@
+##
+## fsl.tacacs -- OSSP fsl configuration
+##
+
+ident (tac_plus)/.+ q{
+ prefix(
+ prefix="%b %d %H:%M:%S %N <%L> $1[%P]: "
+ )
+ -> {
+ debug: file(
+ path="@l_prefix@/var/tacacs/tacacs.log",
+ perm=0644
+ )
+ }
+};
+
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/tacacs/rc.tacacs
============================================================================
$ cvs diff -u -r0 -r1.1 rc.tacacs
--- /dev/null 2003-10-24 17:36:03.000000000 +0200
+++ rc.tacacs 2003-10-24 17:36:03.000000000 +0200
@@ -0,0 +1,54 @@
[EMAIL PROTECTED]@/lib/openpkg/bash @l_prefix@/etc/rc
+##
+## rc.tacacs -- Run-Commands
+##
+
+%config
+ tacacs_enable="$openpkg_rc_def"
+ tacacs_log_prolog="true"
+ tacacs_log_epilog="true"
+ tacacs_log_numfiles="10"
+ tacacs_log_minsize="1M"
+ tacacs_log_complevel="9"
+
+%common
+ tacacs_pidfile="@l_prefix@/var/tacacs/tac_plus.pid"
+ tacacsr_signal () {
+ [ -f $tacacs_pidfile ] && kill -$1 `cat $tacacs_pidfile`
+ }
+
+%status -u @l_susr@ -o
+ tacacs_usable="unknown"
+ tacacs_active="no"
+ rcService tacacs enable yes && \
+ tacacs_signal 0 && tacacs_active="yes"
+ echo "tacacs_enable=\"$tacacs_enable\""
+ echo "tacacs_usable=\"$tacacs_usable\""
+ echo "tacacs_active=\"$tacacs_active\""
+
+%start -p 100 -u @l_susr@
+ rcService tacacs enable yes || exit 0
+ rcService tacacs active yes && exit 0
+ @l_prefix@/sbin/tac_plus
+
+%stop -p 100 -u @l_susr@
+ rcService tacacs enable yes || exit 0
+ rcService tacacs active no && exit 0
+ tacacs_signal TERM
+ sleep 2
+ rm -f $tacacs_pidfile >/dev/null 2>&1 || true
+
+%restart -p 100 -u @l_susr@
+ rcService tacacs enable yes || exit 0
+ rcService tacacs active no && exit 0
+ rc tacacs stop start
+
+%daily
+ rcService tacacs enable yes || exit 0
+ shtool rotate -f \
+ -n ${tacacs_log_numfiles} -s ${tacacs_log_minsize} -d \
+ -z ${tacacs_log_complevel} -m 644 -o @l_susr@ -g @l_mgrp@ \
+ -P "${tacacs_log_prolog}" \
+ -E "${tacacs_log_epilog} && rc tacacs restart" \
+ @l_prefix@/var/tacacs/tacacs.log
+
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/tacacs/tacacs.patch
============================================================================
$ cvs diff -u -r0 -r1.1 tacacs.patch
--- /dev/null 2003-10-24 17:36:03.000000000 +0200
+++ tacacs.patch 2003-10-24 17:36:03.000000000 +0200
@@ -0,0 +1,70 @@
+Index: configure
+--- configure.orig 2003-09-21 05:00:43.000000000 +0200
++++ configure 2003-10-24 17:28:20.000000000 +0200
+@@ -1241,7 +1241,7 @@
+
+
+ case $host_os in
+- *linux-gnu)
++ *linux*)
+ cat >> confdefs.h <<\EOF
+ #define LINUX 1
+ EOF
+@@ -1257,7 +1257,7 @@
+ EOF
+
+ ;;
+- *freebsd)
++ *freebsd*)
+ cat >> confdefs.h <<\EOF
+ #define FREEBSD 1
+ EOF
+@@ -2886,8 +2886,8 @@
+ fi
+
+
+- ac_safe=`echo "PGSQL_INCLUDE_DIR/libpq-fe.h" | sed 'y%./+-%__p_%'`
+-echo $ac_n "checking for PGSQL_INCLUDE_DIR/libpq-fe.h""... $ac_c" 1>&6
++ ac_safe=`echo "$PGSQL_INCLUDE_DIR/libpq-fe.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for $PGSQL_INCLUDE_DIR/libpq-fe.h""... $ac_c" 1>&6
+ echo "configure:2892: checking for PGSQL_INCLUDE_DIR/libpq-fe.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -2895,7 +2895,7 @@
+ cat > conftest.$ac_ext <<EOF
+ #line 2897 "configure"
+ #include "confdefs.h"
+-#include <PGSQL_INCLUDE_DIR/libpq-fe.h>
++#include <$PGSQL_INCLUDE_DIR/libpq-fe.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ { (eval echo configure:2902: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+Index: skey_fn.c
+--- skey_fn.c.orig 2002-10-08 22:49:51.000000000 +0200
++++ skey_fn.c 2003-10-24 17:28:20.000000000 +0200
+@@ -17,6 +17,8 @@
+ FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
++#include "config.h"
++
+ #ifdef SKEY
+ #include "tac_plus.h"
+ #include "expire.h"
+Index: db_pgsql.c
+--- db_pgsql.c.orig 2003-09-20 06:05:54.000000000 +0200
++++ db_pgsql.c 2003-10-24 17:28:20.000000000 +0200
+@@ -1,3 +1,5 @@
++#include "config.h"
++#include "tac_plus.h"
+ #if defined(DB_PGSQL) && defined(USE_DB)
+
+ /*
+@@ -11,7 +13,6 @@
+
+ */
+
+-#include "tac_plus.h"
+ #include <stdio.h>
+ #include <libpq-fe.h>
+ #include "db.h"
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/tacacs/tacacs.patch.radius
============================================================================
$ cvs diff -u -r0 -r1.1 tacacs.patch.radius
--- /dev/null 2003-10-24 17:36:03.000000000 +0200
+++ tacacs.patch.radius 2003-10-24 17:36:03.000000000 +0200
@@ -0,0 +1,309 @@
+This patch adds RADIUS authentication support, allowing the
+TACACS+ server to authenticate against a RADIUS server. It is
+derived from an original "TACACS to RADIUS" patch from Martin
+Mersberger <[EMAIL PROTECTED]> which can be found under
+http://www.portal-to-web.de/tacacs/. It was cleaned up and ported to the
+latest TACACS+ 4.4b1 version by Ralf S. Engelschal <[EMAIL PROTECTED]>
+for inclusion into the OpenPKG "tacacs" package.
+
+Index: config.c
+--- config.c.orig 2003-04-08 03:37:02.000000000 +0200
++++ config.c 2003-10-24 17:01:35.000000000 +0200
+@@ -77,6 +77,7 @@
+ pam <pam_service> | *** if USE_PAM defined
+ db <string> | *** if USE_DB
defined
+ ldap <string> | *** if USE_LDAP defined
++ radius <string> | *** if USE_RADIUS defined
+ nopassword
+
+ *<login_spec> for host and default only allow external lists
+@@ -89,6 +90,7 @@
+ pam <pam_service> | *** if USE_PAM defined
+ db <string> | *** if USE_DB defined
+ ldap <string> | *** if USE_LDAP
defined
++ radius <string> | *** if USE_RADIUS
defined
+ login *** use the same method
as the login
+
+ *** Added acct_spec 6/12/02 JRM
+@@ -964,6 +966,9 @@
+ #ifdef USE_PAM
+ case S_pam:
+ #endif
++#ifdef USE_RADIUS
++ case S_radius:
++#endif
+ sym_get(0);
+ authen_default = tac_strdup(sym_buf);
+ break;
+@@ -1431,6 +1436,9 @@
+ #ifdef USE_PAM
+ case S_pam:
+ #endif /* USE_PAM */
++#ifdef USE_RADIUS
++ case S_radius:
++#endif
+ sym_get(0);
+ host->login = tac_strdup(sym_buf);
+ break;
+@@ -1494,6 +1502,9 @@
+ #ifdef USE_PAM
+ case S_pam:
+ #endif /* USE_PAM */
++#ifdef USE_RADIUS
++ case S_radius:
++#endif
+ sym_get(0);
+ host->enable = tac_strdup(sym_buf);
+ break;
+@@ -1743,6 +1754,9 @@
+ #ifdef USE_PAM
+ case S_pam:
+ #endif /* USE_PAM */
++#ifdef USE_RADIUS
++ case S_radius:
++#endif
+ sym_get(0);
+ user->login = tac_strdup(sym_buf);
+ break;
+@@ -1830,6 +1844,9 @@
+ #ifdef USE_PAM
+ case S_pam:
+ #endif /* USE_PAM */
++#ifdef USE_RADIUS
++ case S_radius:
++#endif
+ sym_get(0);
+ user->enable = tac_strdup(sym_buf);
+ break;
+Index: parse.c
+--- parse.c.orig 2003-03-03 15:30:26.000000000 +0100
++++ parse.c 2003-10-24 17:03:51.000000000 +0200
+@@ -101,6 +101,9 @@
+ #ifdef USE_LDAP
+ declare ("ldap", S_ldap);
+ #endif
++#ifdef USE_RADIUS
++ declare("radius", S_radius);
++#endif
+ declare("member", S_member);
+ declare("message", S_message);
+ declare("name", S_name);
+@@ -301,5 +304,9 @@
+ return("enable_deny");
+ case S_unix:
+ return("unix");
++#ifdef USE_RADIUS
++ case S_radius:
++ return ("radius");
++#endif /*USE_PAM */
+ }
+ }
+Index: parse.h
+--- parse.h.orig 2003-03-03 15:28:07.000000000 +0100
++++ parse.h 2003-10-24 17:02:26.000000000 +0200
+@@ -108,3 +108,6 @@
+ #define S_unix 62
+ #define S_motd 63
+ #define S_accesslog 64
++#ifdef USE_RADIUS
++#define S_radius 65
++#endif
+Index: pwlib.c
+--- pwlib.c.orig 2003-04-01 00:13:10.000000000 +0200
++++ pwlib.c 2003-10-24 17:06:25.000000000 +0200
+@@ -37,6 +37,10 @@
+ #include "ldap.h"
+ #endif /* LDAP */
+
++#ifdef USE_RADIUS
++#include "radius.h"
++#endif
++
+ /* Generic password verification routines for des, file and cleartext
+ passwords */
+
+@@ -47,7 +51,6 @@
+ static int
+ unix_verify(char *user, char *supplied_passwd, struct authen_data *data);
+
+-
+ void
+ set_expiration_status(exp_date, data)
+ char *exp_date;
+@@ -301,6 +304,17 @@
+
+ #endif /* USE_PAM */
+
++#ifdef USE_RADIUS
++ case S_radius:
++ if (radius_verify(name, passwd, cfg_login) == 1) {
++ data->status = TAC_PLUS_AUTHEN_STATUS_FAIL;
++ } else {
++ data->status = TAC_PLUS_AUTHEN_STATUS_PASS;
++ exp_date = NULL; /* no expire check for RADIUS */
++ }
++ break;
++#endif
++
+ case S_des:
+ /* try to verify this des password */
+ if (!des_verify(passwd, cfg_login)) {
+Index: radius.h
+--- radius.h.orig 2003-10-24 16:58:03.000000000 +0200
++++ radius.h 2003-10-24 16:58:03.000000000 +0200
+@@ -0,0 +1,6 @@
++#ifndef __RADIUS_H__
++#define __RADIUS_H__
++
++extern radius_verify(char *, char *, char *);
++
++#endif /* __RADIUS_H__ */
+Index: Makefile.in
+--- Makefile.in.orig 2003-04-11 04:30:25.000000000 +0200
++++ Makefile.in 2003-10-24 17:16:45.000000000 +0200
+@@ -158,7 +158,7 @@
+ # $(use_o) has to be BEFORE $(conf_LDADD)! (for library dependencies)
+ tac_plus_LDADD = $(use_o) $(conf_LDADD)
+ tac_plus_DEPENDENCIES = $(use_o)
+-use = @COND_USE@
++use = @COND_USE@ radius.c
+ use_o = $(filter %.o,$(use:.c=.o))
+
+ cond_USE_DB = db.c db.h db_author.c
+@@ -166,6 +166,7 @@
+ cond_DB_NULL = db_null.c
+ cond_DB_PGSQL = db_pgsql.c
+ cond_USE_LDAP = ldap.c
++cond_USE_RADIUS = radius.c
+ cond_MAXSESS = maxsess.c
+ cond_MSCHAP = md4.c md4.h
+ cond_SKEY = skey_fn.c
+@@ -181,6 +182,7 @@
+ $(cond_DB_NULL) \
+ $(cond_DB_PGSQL) \
+ $(cond_USE_LDAP) \
++ $(cond_USE_RADIUS) \
+ $(cond_MAXSESS) \
+ $(cond_MSCHAP) \
+ $(cond_SKEY) \
+Index: radius.c
+--- radius.c.orig 2003-10-24 16:58:03.000000000 +0200
++++ radius.c 2003-10-24 17:19:49.000000000 +0200
+@@ -0,0 +1,117 @@
++/*
++ * Verify that this user/password is valid per a RADIUS server database
++ * Return 1 if verified, 0 otherwise.
++ *
++ * Format of connection string:
++ * <radius key server1>,<radius server1>,<radius key server2>,<radius
server2>,
++ * ... ,<radius key server9>,<radius server9>
++ *
++ * Author:
++ * Martin Mersberger <[EMAIL PROTECTED]>
++ * http://www.portal-to-web.de/tacacs
++ *
++ * Dependencies:
++ * You need to get the Juniper Networks libradius
++ * (included in FreeBSD >= 4.x)
++ *
++ * License:
++ * tac_radius is free software; you can redistribute it
++ * and/or modify it under the terms of the BSD License
++ */
++
++#include "config.h"
++
++#if defined(USE_RADIUS)
++
++#include <stdio.h>
++#include <string.h>
++
++#include "tac_plus.h"
++#include "radius.h"
++
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++#include "radlib.h"
++
++int radius_verify(char *user, char *users_passwd, char *str_conn)
++{
++ struct rad_handle *rh;
++ struct in_addr addr;
++ int res;
++ char *token, *cp;
++ char *server[10];
++ char *key[10];
++ int i, j;
++ char l_err[200];
++ int err;
++
++ /* open the radius handle */
++ if ((rh = rad_auth_open()) == NULL ) {
++ report(LOG_ERR,"Can't open rad_open");
++ return 1;
++ }
++
++ /* split the line from the config file into pairs with radiusserver and radius
key */
++ cp = strdup(str_conn);
++ i = 0;
++ while ((token = strsep(&cp,",")) != NULL) {
++ if ((i % 2) == 0) { /* 0,2,4,... are the radius keys */
++ key[i] = (char *)malloc(sizeof(token) + sizeof(char)); /* get some mem
*/
++ sprintf(key[i], "%s\0", token); /* add the value gotten into a array
*/
++ } else {
++ server[i-1] = (char *)malloc(sizeof(token) + sizeof(char)); /*
1,3,5... are the radius hosts */
++ sprintf(server[i-1], "%s\0", token); /* malloc and add to array */
++ }
++ i++;
++ }
++
++ /* for each server and key pair gotten from the config file, do a
rad_add_server */
++ for (j = 0; j < i; j = j + 2) {
++ report(LOG_INFO, "verify_radius: before ldap_init: radiusserver = %s,
radiuskey = %s", server[j],key[j]);
++ if ((rad_add_server(rh,server[j], 0, key[j], 2, 2)) != 0) {
++ report (LOG_ERR, "Error in rad_add_server for %s", server[j]);
++ return (1);
++ }
++ }
++
++ /* create a radius request for ACCESS */
++ if ((rad_create_request(rh ,RAD_ACCESS_REQUEST)) != 0) {
++ report (LOG_ERR, "Error in rad_create_request");
++ return (1);
++ }
++
++ /* prepare the radius request
++ * 1. make a in_addr from the requesting peer ip address
++ * 2. put in username
++ * 3. put in password
++ * 4. insert the in_addr into the rad_request
++ * 5. set the RAD_CONNECT_INFO to "via tacacs+"
++ */
++ inet_aton(session.peer, &addr);
++ rad_put_string(rh, RAD_USER_NAME, user);
++ rad_put_string(rh, RAD_USER_PASSWORD, users_passwd);
++ rad_put_addr(rh, RAD_NAS_IP_ADDRESS,addr);
++ rad_put_string(rh, RAD_CONNECT_INFO," via TACACS+ server");
++
++ /* some debug messages before sending the radius request */
++#if 0
++ report(LOG_INFO, "verify_radius: before rad_send: user = %s, passwd = %s",
user, "********");
++ report(LOG_INFO, "verify_radius: before rad_send: peer %s", session.peer);
++#endif
++
++ /* send the radius request and hope, that libradius does a good job */
++ res = rad_send_request(rh);
++
++ /* is the user authenticated? if yes, return 0, else 1 */
++ if (res == RAD_ACCESS_ACCEPT ) {
++ report(LOG_INFO, "Request accepted\n");
++ return 0;
++ } else {
++ report(LOG_INFO, "Request denied %i\n",res);
++ return 1;
++ }
++}
++
++#endif /* RADIUS */
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/tacacs/tacacs.spec
============================================================================
$ cvs diff -u -r0 -r1.1 tacacs.spec
--- /dev/null 2003-10-24 17:36:03.000000000 +0200
+++ tacacs.spec 2003-10-24 17:36:03.000000000 +0200
@@ -0,0 +1,226 @@
+##
+## tacacs.spec -- OpenPKG RPM Specification
+## Copyright (c) 2000-2003 The OpenPKG Project <http://www.openpkg.org/>
+## Copyright (c) 2000-2003 Ralf S. Engelschall <[EMAIL PROTECTED]>
+## Copyright (c) 2000-2003 Cable & Wireless <http://www.cw.com/>
+##
+## 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 version
+%define V_dist 4.4beta2
+%define V_opkg 4.4b2
+
+# package information
+Name: tacacs
+Summary: TACACS+ Server
+URL: http://www.networkforums.net/
+Vendor: Cisco et al.
+Packager: The OpenPKG Project
+Distribution: OpenPKG [EVAL]
+Group: Network
+License: BSD
+Version: %{V_opkg}
+Release: 20031024
+
+# package options
+%option with_fsl yes
+%option with_pam no
+%option with_skey no
+%option with_mysql no
+%option with_pgsql no
+%option with_radius no
+
+# list of sources
+Source0: http://www.networkforums.net/downloads/tac_plus-%{V_dist}.tar.gz
+Source1: rc.tacacs
+Source2: fsl.tacacs
+Patch0: tacacs.patch
+Patch1: tacacs.patch.radius
+
+# build information
+Prefix: %{l_prefix}
+BuildRoot: %{l_buildroot}
+BuildPreReq: OpenPKG, openpkg >= 20030103
+PreReq: OpenPKG, openpkg >= 20030103
+%if "%{with_fsl}" == "yes"
+BuildPreReq: fsl >= 1.2.0
+PreReq: fsl >= 1.2.0
+%endif
+%if "%{with_pam}" == "yes"
+BuildPreReq: PAM
+PreReq: PAM
+%endif
+%if "%{with_skey}" == "yes"
+BuildPreReq: skey
+PreReq: skey
+%endif
+%if "%{with_mysql}" == "yes"
+BuildPreReq: mysql
+PreReq: mysql
+%endif
+%if "%{with_pgsql}" == "yes"
+BuildPreReq: postgresql, openssl
+PreReq: postgresql, openssl
+%endif
+%if "%{with_radius}" == "yes"
+BuildPreReq: libradius
+PreReq: libradius
+%endif
+AutoReq: no
+AutoReqProv: no
+
+%description
+ This is a TACACS+ authentication server, derived from the original
+ Cisco TACACS+ server implementation.
+
+%prep
+ %setup -q -n tac_plus-%{V_dist}
+ %patch -p0 -P 0
+ %patch -p0 -P 1
+
+%build
+ # configure package
+ export CC="%{l_cc}"
+ export CFLAGS="%{l_cflags -O}"
+ export CPPFLAGS="%{l_cppflags}"
+ export LDFLAGS="%{l_ldflags}"
+ export LIBS=""
+%if "%{with_fsl}" == "yes"
+ LDFLAGS="$LDFLAGS %{l_fsl_ldflags}"
+ LIBS="$LIBS %{l_fsl_libs}"
+%endif
+%if "%{with_pam}" == "yes"
+ CFLAGS="$CFLAGS -I`%{l_prefix}/etc/rc --query pam_incdir`"
+ LDFLAGS="$LDFLAGS -L`%{l_prefix}/etc/rc --query pam_libdir`"
+%endif
+%if "%{with_pgsql}" == "yes"
+ LIBS="$LIBS -lssl -lcrypto"
+%endif
+%if "%{with_radius}" == "yes"
+ CFLAGS="$CFLAGS -DUSE_RADIUS"
+ LIBS="$LIBS -lradius"
+%endif
+ ./configure \
+ --prefix=%{l_prefix} \
+%if "%{with_pam}" == "yes"
+ --with-pam \
+%else
+ --without-pam \
+%endif
+%if "%{with_skey}" == "yes"
+ --with-skey=%{l_prefix}/lib/libskey.a \
+%else
+ --without-skey \
+%endif
+%if "%{with_mysql}" == "yes" || "%{with_pgsql}" == "yes"
+ --with-db \
+%else
+ --without-db \
+%endif
+%if "%{with_mysql}" == "yes"
+ --with-mysql \
+ --with-mysql-prefix=%{l_prefix} \
+%else
+ --without-mysql \
+%endif
+%if "%{with_pgsql}" == "yes"
+ --with-pgsql \
+ --with-pgsql-prefix=%{l_prefix} \
+ --with-pgsql-include-dir=%{l_prefix}/include/postgresql \
+ --with-pgsql-lib-dir=%{l_prefix}/lib \
+%else
+ --without-pgsql \
+%endif
+ --with-tacplus_pid=%{l_prefix}/var/tacacs/tac_plus.pid
+
+ # build package
+ %{l_make} %{l_mflags -O}
+
+%install
+ # install package
+ rm -rf $RPM_BUILD_ROOT
+ %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
+
+ # post-adjust installation
+ mv $RPM_BUILD_ROOT%{l_prefix}/bin/generate_passwd \
+ $RPM_BUILD_ROOT%{l_prefix}/bin/tacas_generate_passwd
+ mv $RPM_BUILD_ROOT%{l_prefix}/etc/tacacs/sample-tac_plus.cfg \
+ $RPM_BUILD_ROOT%{l_prefix}/etc/tacacs/tac_plus.cfg
+ strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
+
+%if "%{with_mysql}" == "yes" || "%{with_pgsql}" == "yes"
+ # install SQL database schema
+ %{l_shtool} mkdir -f -p -m 755 \
+ $RPM_BUILD_ROOT%{l_prefix}/share/tacacs
+ %{l_shtool} install -c -m 644 \
+ tac_plus.sql $RPM_BUILD_ROOT%{l_prefix}/share/tacacs/
+%endif
+
+ # create pidfile and logfile directory
+ %{l_shtool} mkdir -f -p -m 755 \
+ $RPM_BUILD_ROOT%{l_prefix}/var/tacacs
+
+ # install run-command script
+ %{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} \
+ %{SOURCE rc.tacacs} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
+
+ # install OSSP fsl configuration
+ %{l_shtool} mkdir -f -p -m 755 \
+ $RPM_BUILD_ROOT%{l_prefix}/etc/fsl
+ %{l_shtool} install -c -m 644 %{l_value -s -a} \
+ %{SOURCE fsl.tacacs} \
+ $RPM_BUILD_ROOT%{l_prefix}/etc/fsl/
+
+ # determine installation files
+ %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
+ %{l_files_std} \
+ '%config %{l_prefix}/etc/tacacs/tac_plus.cfg' \
+ '%not %dir %{l_prefix}/etc/fsl'
+
+%files -f files
+
+%clean
+ rm -rf $RPM_BUILD_ROOT
+
+%post
+%if "%{with_pam}" == "yes"
+ # add PAM configuration entry
+ if [ $1 -eq 1 ]; then
+ $RPM_INSTALL_PREFIX/sbin/pamtool --add --smart --name=tac_plus
+ fi
+%endif
+ # after upgrade, restart service
+ [ $1 -eq 2 ] || exit 0
+ eval `%{l_rc} tacacs status 2>/dev/null`
+ [ ".$tacacs_active" = .yes ] && %{l_rc} tacacs restart
+ exit 0
+
+%preun
+ [ $1 -eq 0 ] || exit 0
+ # before erase, stop service
+ %{l_rc} tacacs stop 2>/dev/null
+%if "%{with_pam}" == "yes"
+ # remove PAM configuration entry
+ $RPM_INSTALL_PREFIX/sbin/pamtool --remove --smart --name=tac_plus
+%endif
+ exit 0
+
@@ .
patch -p0 <<'@@ .'
Index: openpkg-web/news.txt
============================================================================
$ cvs diff -u -r1.7156 -r1.7157 news.txt
--- openpkg-web/news.txt 24 Oct 2003 14:33:51 -0000 1.7156
+++ openpkg-web/news.txt 24 Oct 2003 15:36:01 -0000 1.7157
@@ -1,3 +1,4 @@
+24-Oct-2003: New package: P<tacacs-4.4b2-20031024>
24-Oct-2003: Upgraded package: P<ecartis-1.0.0.20030814-20031024>
24-Oct-2003: New package: P<nedit-5.3-20031024>
24-Oct-2003: New package: P<ecartis-1.0.0.20030814-20031024>
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]