Remove old test version. Change init script for working with user-defined user/group...
authorAlin Năstac <mrness@gentoo.org>
Sun, 16 Oct 2005 08:47:36 +0000 (08:47 +0000)
committerAlin Năstac <mrness@gentoo.org>
Sun, 16 Oct 2005 08:47:36 +0000 (08:47 +0000)
Package-Manager: portage-2.0.51.22-r3

net-dialup/freeradius/ChangeLog
net-dialup/freeradius/Manifest
net-dialup/freeradius/files/digest-freeradius-1.0.4 [deleted file]
net-dialup/freeradius/files/digest-freeradius-1.0.5-r1 [new file with mode: 0644]
net-dialup/freeradius/files/freeradius-1.0.4-whole-archive-gentoo.patch [deleted file]
net-dialup/freeradius/files/freeradius-1.0.5-user-password-ha1.patch [new file with mode: 0644]
net-dialup/freeradius/files/radius.init
net-dialup/freeradius/freeradius-1.0.5-r1.ebuild [moved from net-dialup/freeradius/freeradius-1.0.4.ebuild with 87% similarity]

index a44a5f2057ace88d1fc1248c0af9bbfe95ae5499..bc823673417cf7c546532de96050c74cb3dc1e62 100644 (file)
@@ -1,6 +1,16 @@
 # ChangeLog for net-dialup/freeradius
 # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/ChangeLog,v 1.39 2005/10/13 05:06:01 mrness Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/ChangeLog,v 1.40 2005/10/16 08:47:36 mrness Exp $
+
+*freeradius-1.0.5-r1 (16 Oct 2005)
+
+  16 Oct 2005; Alin Nastac <mrness@gentoo.org>
+  -files/freeradius-1.0.4-whole-archive-gentoo.patch,
+  +files/freeradius-1.0.5-user-password-ha1.patch, files/radius.init,
+  -freeradius-1.0.4.ebuild, +freeradius-1.0.5-r1.ebuild:
+  Remove old test version. Change init script for working with user-defined
+  user/group (#108866). Add support for hashed User-Password under control of
+  the frxp useflag (#109003).
 
   04 Oct 2005; Alin Nastac <mrness@gentoo.org>
   -files/freeradius-1.0.2-sql-escape.patch,
index 7da1f212a3e038a41e9348c458cb5547ab9222d9..9380ee918f47ad0888832e10809de34f5c6aa010 100644 (file)
@@ -1,20 +1,20 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-MD5 f055029dafa93f7ab0755613209bb8fd freeradius-1.0.4.ebuild 3752
+MD5 8327f26c30dacedb0a3ac51af7e93228 freeradius-1.0.5-r1.ebuild 4057
 MD5 0e071e8f111351294241c694bdbf5b93 freeradius-1.0.5.ebuild 3760
-MD5 884c386132a0eac5f125e631d752a2da ChangeLog 6182
+MD5 d38e0e1790fb85ae0bf786c3c14697cc ChangeLog 6631
 MD5 1542bf76e28581e9d6bcfdc75e46f33d metadata.xml 252
-MD5 6b0efd384f551fab6b82794e91dbb4d5 files/freeradius-1.0.4-whole-archive-gentoo.patch 1728
 MD5 fc6693f3df5a0694610110287a28568a files/radius.conf 129
-MD5 67947827b3450296502c3160cda1fca0 files/radius.init 1170
+MD5 458420b883ec7022d9e3b4e349b92990 files/radius.init 1650
+MD5 2d8c394126e7b211f44d26a4ff420f7d files/digest-freeradius-1.0.5-r1 69
 MD5 6509371cc5a50915f90a413dc54b2c10 files/freeradius-1.0.5-whole-archive-gentoo.patch 1728
-MD5 9351bc95733a1a1a2535bb4e27927014 files/digest-freeradius-1.0.4 69
 MD5 2d8c394126e7b211f44d26a4ff420f7d files/digest-freeradius-1.0.5 69
+MD5 c1ccec77b79020a074dcd62ee622c9c4 files/freeradius-1.0.5-user-password-ha1.patch 2269
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.1 (GNU/Linux)
 
-iD8DBQFDTetMNSP4Vda7IdsRAtO3AJ9vQFcI0CmLfTVi0EYgOi/HStnGMgCfSFSj
-fdK5TbqRdEGkLxWBsDSIMLE=
-=XrGE
+iD8DBQFDUhPBNSP4Vda7IdsRAqnEAJ40AavjFtq/aZpdErFYSjw3vaZu9wCfWhob
+2GpaBruPhraMVZ4S7PHNBvo=
+=NOnm
 -----END PGP SIGNATURE-----
diff --git a/net-dialup/freeradius/files/digest-freeradius-1.0.4 b/net-dialup/freeradius/files/digest-freeradius-1.0.4
deleted file mode 100644 (file)
index c062c01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-MD5 edb5c3af6fabeff7b8e1131b6fa33e24 freeradius-1.0.4.tar.gz 2209057
diff --git a/net-dialup/freeradius/files/digest-freeradius-1.0.5-r1 b/net-dialup/freeradius/files/digest-freeradius-1.0.5-r1
new file mode 100644 (file)
index 0000000..00bf51d
--- /dev/null
@@ -0,0 +1 @@
+MD5 00d06fc31e3b8279f6456d25401c81cb freeradius-1.0.5.tar.gz 2294225
diff --git a/net-dialup/freeradius/files/freeradius-1.0.4-whole-archive-gentoo.patch b/net-dialup/freeradius/files/freeradius-1.0.4-whole-archive-gentoo.patch
deleted file mode 100644 (file)
index a91911b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-diff -Nru freeradius-1.0.2.orig/aclocal.m4 freeradius-1.0.2/aclocal.m4
---- freeradius-1.0.2.orig/aclocal.m4   2005-02-13 03:03:20.000000000 +0200
-+++ freeradius-1.0.2/aclocal.m4        2005-03-02 08:37:42.301666608 +0200
-@@ -1421,7 +1421,7 @@
-     *)
-       # ancient GNU ld didn't support --whole-archive et. al.
-       if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
--      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+      whole_archive_flag_spec="$wlarc"'--no-whole-archive'
-       else
-       whole_archive_flag_spec=
-       fi
-diff -Nru freeradius-1.0.2.orig/configure freeradius-1.0.2/configure
---- freeradius-1.0.2.orig/configure    2005-03-02 08:32:15.000000000 +0200
-+++ freeradius-1.0.2/configure 2005-03-02 08:37:58.710172136 +0200
-@@ -3511,7 +3511,7 @@
-     *)
-       # ancient GNU ld didn't support --whole-archive et. al.
-       if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
--      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+      whole_archive_flag_spec="$wlarc"'--no-whole-archive'
-       else
-       whole_archive_flag_spec=
-       fi
-diff -Nru freeradius-1.0.2.orig/ltconfig freeradius-1.0.2/ltconfig
---- freeradius-1.0.2.orig/ltconfig     2003-06-24 14:03:39.000000000 +0300
-+++ freeradius-1.0.2/ltconfig  2005-03-02 08:38:21.478710792 +0200
-@@ -1246,7 +1246,7 @@
-     *)
-       # ancient GNU ld didn't support --whole-archive et. al.
-       if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
--        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-+        whole_archive_flag_spec="$wlarc"'--no-whole-archive'
-       else
-         whole_archive_flag_spec=
-       fi
diff --git a/net-dialup/freeradius/files/freeradius-1.0.5-user-password-ha1.patch b/net-dialup/freeradius/files/freeradius-1.0.5-user-password-ha1.patch
new file mode 100644 (file)
index 0000000..c3ef885
--- /dev/null
@@ -0,0 +1,85 @@
+diff -aurN freeradius-1.0.5/src/modules/rlm_digest/rlm_digest.c freeradius-1.0.5-new/src/modules/rlm_digest/rlm_digest.c
+--- freeradius-1.0.5/src/modules/rlm_digest/rlm_digest.c       2004-05-15 16:57:41.000000000 +0200
++++ freeradius-1.0.5-new/src/modules/rlm_digest/rlm_digest.c   2005-10-09 02:06:06.000000000 +0200
+@@ -35,6 +35,42 @@
+ 
+ static const char rcsid[] = "$Id: freeradius-1.0.5-user-password-ha1.patch,v 1.1 2005/10/16 08:47:36 mrness Exp $";
+ 
++typedef struct {
++      int           enc_mode;
++} digest_instance;
++
++static CONF_PARSER module_config[] = {
++  {"enc_mode", PW_TYPE_BOOLEAN, offsetof(digest_instance,enc_mode), NULL, "no"},
++  {NULL, -1, 0, NULL, NULL}
++};
++
++static int
++digest_instantiate(CONF_SECTION * conf, void **instance)
++{
++      digest_instance  *inst;
++
++      inst = rad_malloc(sizeof *inst);
++      if (!inst) {
++              return -1;
++      }
++      memset(inst, 0, sizeof(*inst));
++
++      if (cf_section_parse(conf, inst, module_config) < 0) {
++              free(inst);
++              return -1;
++      }
++#ifndef NDEBUG
++      if (inst->enc_mode) {
++        DEBUG("Encrypting mode set. User-Password field must contain H(A1)");
++      }
++#endif
++      *instance = inst;
++
++
++      return 0;
++
++}
++
+ static int digest_authorize(void *instance, REQUEST *request)
+ {
+       VALUE_PAIR *vp;
+@@ -188,6 +224,7 @@
+       uint8_t hash[16];       /* MD5 output */
+       VALUE_PAIR *vp;
+       VALUE_PAIR *qop, *nonce;
++      digest_instance *inst = instance;
+ 
+       /*
+        *      We require access to the plain-text password.
+@@ -347,6 +384,21 @@
+        */
+       librad_md5_calc(&hash[0], &a1[0], a1_len);
+ 
++      /*
++       *     If enc_mode is on, User-Password must contain
++       *     H(A1) itself. Overwrite hash then.
++       */
++      if (inst->enc_mode) {
++        DEBUG("User-Password must contain H(A1) , e.g H(username:realm:password)");
++        vp = pairfind(request->config_items, PW_PASSWORD);
++        if (!vp) {
++          DEBUG("ERROR: No User-Password: Cannot perform Digest authentication");
++          return RLM_MODULE_INVALID;
++        }
++        
++        hex2bin(&hash[0], &vp->strvalue[0]);
++      }
++
+       for (i = 0; i < 16; i++) {
+               sprintf(&kd[i * 2], "%02x", hash[i]);
+       }
+@@ -491,7 +543,7 @@
+       "DIGEST",
+       0,                              /* type */
+       NULL,                           /* initialization */
+-      NULL,                           /* instantiation */
++      digest_instantiate,                             /* instantiation */
+       {
+               digest_authenticate,    /* authentication */
+               digest_authorize,       /* authorization */
index b8e69350c459796aa016fe59bfd1c007ac42f4ac..2caafc372f73e35861fda7a0bf99be904ac30803 100644 (file)
@@ -18,21 +18,26 @@ checkconfig() {
                return 1
        fi
 
-       if [ -z "`grep radiusd /etc/passwd`" ] || [ -z "`grep radiusd /etc/group`" ]; then
-               eerror "radiusd user missing!"
+       RADIUSD_USER=`grep '^ *user *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3`
+       RADIUSD_GROUP=`grep '^ *group *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3`
+       if [ -n "${RADIUSD_USER}" ] && ! getent passwd ${RADIUSD_USER} > /dev/null ; then
+               eerror "${RADIUSD_USER} user missing!"
                return 1
        fi
-
-       if [ ! -f radius.log ]; then
-               touch radius.log && chown radiusd:radiusd radius.log \
-                       || return 1
+       if [ -n "${RADIUSD_GROUP}" ] && ! getent group ${RADIUSD_GROUP} > /dev/null ; then
+               eerror "${RADIUSD_GROUP} group missing!"
+               return 1
        fi
-       
-       return 0
+
+       #radius.log is created before privileges drop; we need to set proper permissions on it
+       [ -f radius.log ] || touch radius.log || return 1
+
+       chown -R "${RADIUSD_USER:-root}:${RADIUSD_GROUP:-root}" . && \
+               chmod -R u+rwX,g+rX . || return 1
 }
 
 start() {
-       cd /var/log/radius #set the location of log files
+       cd /var/log/radius #set the location of log files, including startup.log created by check-radiusd-config
        # Comment out the following line to get faster startups
        checkconfig || return 1
 
similarity index 87%
rename from net-dialup/freeradius/freeradius-1.0.4.ebuild
rename to net-dialup/freeradius/freeradius-1.0.5-r1.ebuild
index 027a4f401f26a8a01fb7d68d6feaebb8a33e77a2..ccf34df656397ad67d2310bd6d64ab39919f3420 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2005 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/freeradius-1.0.4.ebuild,v 1.4 2005/10/13 05:06:01 mrness Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/freeradius/freeradius-1.0.5-r1.ebuild,v 1.1 2005/10/16 08:47:36 mrness Exp $
 
 inherit eutils
 
@@ -8,7 +8,7 @@ DESCRIPTION="highly configurable free RADIUS server"
 SRC_URI="ftp://ftp.freeradius.org/pub/radius/${P}.tar.gz"
 HOMEPAGE="http://www.freeradius.org/"
 
-KEYWORDS="~x86 ~amd64 ~ppc ~sparc"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
 LICENSE="GPL-2"
 SLOT="0"
 IUSE="edirectory frascend frnothreads frxp kerberos ldap mysql pam postgres snmp ssl udpfromto"
@@ -32,23 +32,29 @@ pkg_setup() {
        if use edirectory && ! use ldap ; then
                eerror "Cannot add integration with Novell's eDirectory without having LDAP support!"
                eerror "Either you select ldap USE flag or remove edirectory"
-               die
+               die "edirectory needs ldap"
        fi
        enewgroup radiusd
        enewuser radiusd -1 -1 /var/log/radius radiusd
 }
 
 src_unpack() {
-       unpack ${P}.tar.gz
-       cd ${S}
+       unpack ${A}
 
        epatch ${FILESDIR}/${P}-whole-archive-gentoo.patch
-
-       export WANT_AUTOCONF=2.1
-       autoconf
+       if use frxp; then
+               #(bug #109003) This patch allows you to store the hash value of the 
+               #username:realm:password string instead of the clear text password.
+               #It can be found here :
+               #       http://bugs.freeradius.org/show_bug.cgi?id=287
+               epatch ${FILESDIR}/${P}-user-password-ha1.patch
+       fi
 }
 
 src_compile() {
+#      export WANT_AUTOCONF=2.1
+       autoconf
+
        local myconf=" \
                `use_with snmp` \
                `use_with frascend ascend-binary` \
@@ -99,7 +105,7 @@ src_install() {
        dodir /etc/raddb
        diropts -m0750 -o radiusd -g radiusd
        dodir /var/log/radius
-       dodir /var/log/radius/radacct
+       keepdir /var/log/radius/radacct
        dodir /var/run/radiusd
        diropts