aboutsummaryrefslogtreecommitdiffstats
path: root/main/freeradius
diff options
context:
space:
mode:
Diffstat (limited to 'main/freeradius')
-rw-r--r--main/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch33
-rw-r--r--main/freeradius/APKBUILD146
-rw-r--r--main/freeradius/freeradius-2.1.6-nothreads.patch13
-rw-r--r--main/freeradius/freeradius-2.1.7-pkglibdir.patch63
-rw-r--r--main/freeradius/freeradius.confd5
-rw-r--r--main/freeradius/freeradius.initd70
-rw-r--r--main/freeradius/freeradius.pre-install6
7 files changed, 336 insertions, 0 deletions
diff --git a/main/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch b/main/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch
new file mode 100644
index 0000000000..e76571a21c
--- /dev/null
+++ b/main/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch
@@ -0,0 +1,33 @@
+From 51cb058c6a9472585622582d16e01c5540627c25 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 13 Oct 2009 12:53:38 +0000
+Subject: [PATCH] Fix detection of TLS for uClibc
+
+On uClibc the configure script will wrongly detect that TLS is
+available. This happends becuase the variable val in the test program
+is optimized away and missing during link time.
+
+This patch make sure that the variable val is not optimized away so
+configure correctly will detect that TLS is missing on uClibc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ acinclude.m4 | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 6025474..100e5b0 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -382,7 +382,7 @@ m4_pushdef([AC_OUTPUT],
+ AC_DEFUN([FR_TLS],
+ [
+ AC_MSG_CHECKING(for TLS)
+- AC_RUN_IFELSE([AC_LANG_SOURCE([[ static __thread int val; int main() { return 0; } ]])],[have_tls=yes],[have_tls=no],[have_tls=no ])
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ static __thread int val; int main(int argc, char *argv[]) { return val = argc; } ]])],[have_tls=yes],[have_tls=no],[have_tls=no ])
+ AC_MSG_RESULT($have_tls)
+ if test "$have_tls" = "yes"; then
+ AC_DEFINE([HAVE_THREAD_TLS],[1],[Define if the compiler supports __thread])
+--
+1.6.4.4
+
diff --git a/main/freeradius/APKBUILD b/main/freeradius/APKBUILD
new file mode 100644
index 0000000000..272b0219be
--- /dev/null
+++ b/main/freeradius/APKBUILD
@@ -0,0 +1,146 @@
+# Contributor:
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname=freeradius
+pkgver=2.1.10
+pkgrel=13
+pkgdesc="RADIUS (Remote Authentication Dial-In User Service) server"
+url="http://freeradius.org/"
+license="GPL"
+depends=
+makedepends="openssl-dev pth-dev mysql-dev postgresql-dev gdbm-dev readline-dev
+ bash libtool autoconf automake perl-dev python-dev openldap-dev unixodbc-dev"
+pkggroups="radiusd"
+pkgusers="radiusd"
+install="freeradius.pre-install"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-ldap $pkgname-mssql \
+ $pkgname-mysql $pkgname-oracle $pkgname-perl $pkgname-postgresql \
+ $pkgname-python $pkgname-unixodbc"
+source="ftp://ftp.freeradius.org/pub/freeradius/$pkgname-server-$pkgver.tar.gz
+ freeradius.confd
+ freeradius.initd
+ "
+
+_builddir="$srcdir"/$pkgname-server-$pkgver
+
+prepare() {
+ cd "$_builddir"
+# for i in ../*.patch; do
+# msg "Applying $i"
+# patch -p1 -i $i || return 1
+# done
+
+ # we dont have libnsl
+ sed -i 's/-lnsl //g' configure || return 1
+ sed -i 's/nsl, //g' configure.in || return 1
+
+ # Fix compilation with heimdal >= 1.3.1
+ sed -i 's/ -DKRB5_DEPRECATED//' src/modules/rlm_krb5/Makefile.in || return 1
+
+ # Fix default config
+ sed -i 's%run_dir = .*%run_dir = \$\{localstatedir\}/run/radius%' \
+ raddb/radiusd.conf.in || return 1
+
+ aclocal && ./autogen.sh || return 1
+}
+
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --libdir=/usr/lib/freeradius \
+ --disable-static \
+ --enable-shared \
+ --disable-ltdl-install \
+ --with-system-libltdl \
+ --with-system-libtool \
+ --with-udpfromto \
+ || return 1
+
+ # workaround parallel build issue
+ make -j1 || return 1
+}
+
+package() {
+ cd "$_builddir"
+ install -d -m0750 -o root -g radiusd "$pkgdir"/etc/raddb
+ install -d -m0770 -o root -g radiusd "$pkgdir"/var/run/radius
+ install -d -m0750 -o root -g radiusd "$pkgdir"/var/log/radius
+ install -d -m0750 -o root -g radiusd "$pkgdir"/var/log/radius/radacct
+
+ make -j1 R="$pkgdir" install
+ sed -i -e 's:^#user *= *nobody:user = radiusd:;s:^#group *= *nobody:group = radiusd:' \
+ "$pkgdir"/etc/raddb/radiusd.conf
+ chown -R root:radiusd "$pkgdir"/etc/raddb/*
+ rm -f "$pkgdir/usr/sbin/rc.radiusd"
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/radiusd
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/radiusd
+ install -m644 -D scripts/logrotate.freeradius "$pkgdir"/etc/lorotate.d/$pkgname
+}
+
+ldap() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/etc/raddb
+ mv $pkgdir/etc/raddb/ldap.attrmap $subpkgdir/etc/raddb
+ mkdir -p $subpkgdir/etc/raddb/modules
+ mv $pkgdir/etc/raddb/modules/ldap $subpkgdir/etc/raddb/modules
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_ldap* $subpkgdir/usr/lib/freeradius
+}
+
+mysql() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/etc/raddb/sql
+ mv $pkgdir/etc/raddb/sql/mysql $subpkgdir/etc/raddb/sql
+ mv $pkgdir/etc/raddb/sql/ndb $subpkgdir/etc/raddb/sql
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_sql_mysql* $subpkgdir/usr/lib/freeradius
+}
+
+mssql() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/etc/raddb/sql
+ mv $pkgdir/etc/raddb/sql/mssql $subpkgdir/etc/raddb/sql
+}
+
+oracle() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/etc/raddb/sql
+ mv $pkgdir/etc/raddb/sql/oracle $subpkgdir/etc/raddb/sql
+}
+
+perl() {
+ depends="freeradius perl"
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_perl* $subpkgdir/usr/lib/freeradius
+ mkdir -p $subpkgdir/usr/bin
+ mv $pkgdir/usr/sbin/checkrad $subpkgdir/usr/bin/checkrad
+ mkdir -p $subpkgdir/etc/raddb/modules
+ mv $pkgdir/etc/raddb/modules/perl $subpkgdir/etc/raddb/modules/perl
+}
+
+postgresql() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/etc/raddb/sql
+ mv $pkgdir/etc/raddb/sql/postgresql $subpkgdir/etc/raddb/sql
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_sql_postgresql* $subpkgdir/usr/lib/freeradius
+}
+
+python() {
+ depends="freeradius python"
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_python* $subpkgdir/usr/lib/freeradius
+}
+
+unixodbc() {
+ depends="freeradius"
+ mkdir -p $subpkgdir/usr/lib/freeradius
+ mv $pkgdir/usr/lib/freeradius/rlm_sql_unixodbc* $subpkgdir/usr/lib/freeradius
+}
+
+md5sums="e552704fc1b46d51176e575afa96dcc6 freeradius-server-2.1.10.tar.gz
+fc6693f3df5a0694610110287a28568a freeradius.confd
+6cd5d02575f514a51d741dba3f7c70d2 freeradius.initd"
diff --git a/main/freeradius/freeradius-2.1.6-nothreads.patch b/main/freeradius/freeradius-2.1.6-nothreads.patch
new file mode 100644
index 0000000000..41a41c8d6e
--- /dev/null
+++ b/main/freeradius/freeradius-2.1.6-nothreads.patch
@@ -0,0 +1,13 @@
+diff -Nru freeradius-server-2.1.6.orig/src/main/event.c freeradius-server-2.1.6/src/main/event.c
+--- freeradius-server-2.1.6.orig/src/main/event.c 2009-05-18 13:13:55.000000000 +0200
++++ freeradius-server-2.1.6/src/main/event.c 2009-09-05 07:52:42.000000000 +0200
+@@ -1667,7 +1667,9 @@
+ */
+ request->num_proxied_requests = 1;
+ request->num_proxied_responses = 0;
++#ifdef HAVE_PTHREAD_H
+ request->child_pid = NO_SUCH_CHILD_PID;
++#endif
+
+ update_event_timestamp(request->proxy, request->proxy_when.tv_sec);
+
diff --git a/main/freeradius/freeradius-2.1.7-pkglibdir.patch b/main/freeradius/freeradius-2.1.7-pkglibdir.patch
new file mode 100644
index 0000000000..d5767fbd02
--- /dev/null
+++ b/main/freeradius/freeradius-2.1.7-pkglibdir.patch
@@ -0,0 +1,63 @@
+diff -ru freeradius-server-2.1.7.orig/Make.inc.in freeradius-server-2.1.7/Make.inc.in
+--- freeradius-server-2.1.7.orig/Make.inc.in 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/Make.inc.in 2009-10-09 08:39:15.000000000 +0000
+@@ -10,6 +10,7 @@
+ sysconfdir = @sysconfdir@
+ localstatedir = @localstatedir@
+ libdir = @libdir@
++pkglibdir = @libdir@/freeradius
+ bindir = @bindir@
+ sbindir = @sbindir@
+ docdir = @docdir@
+diff -ru freeradius-server-2.1.7.orig/raddb/radiusd.conf.in freeradius-server-2.1.7/raddb/radiusd.conf.in
+--- freeradius-server-2.1.7.orig/raddb/radiusd.conf.in 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/raddb/radiusd.conf.in 2009-10-09 08:39:15.000000000 +0000
+@@ -103,7 +103,7 @@
+ # make
+ # make install
+ #
+-libdir = @libdir@
++libdir = @libdir@/freeradius
+
+ # pidfile: Where to place the PID of the RADIUS server.
+ #
+diff -ru freeradius-server-2.1.7.orig/src/modules/Makefile freeradius-server-2.1.7/src/modules/Makefile
+--- freeradius-server-2.1.7.orig/src/modules/Makefile 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/src/modules/Makefile 2009-10-09 08:39:15.000000000 +0000
+@@ -12,7 +12,7 @@
+ @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
+
+ install:
+- $(INSTALL) -d -m 755 $(R)$(libdir)
++ $(INSTALL) -d -m 755 $(R)$(pkglibdir)
+ @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
+
+ clean:
+diff -ru freeradius-server-2.1.7.orig/src/modules/rules.mak freeradius-server-2.1.7/src/modules/rules.mak
+--- freeradius-server-2.1.7.orig/src/modules/rules.mak 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/src/modules/rules.mak 2009-10-09 08:40:56.000000000 +0000
+@@ -123,7 +123,7 @@
+ $(TARGET).la: $(LT_OBJS)
+ $(LIBTOOL) --mode=link $(CC) -release $(RADIUSD_VERSION) \
+ -module $(LINK_MODE) $(LDFLAGS) $(RLM_LDFLAGS) -o $@ \
+- -rpath $(libdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS)
++ -rpath $(pkglibdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS)
+
+ #######################################################################
+ #
+@@ -164,13 +164,13 @@
+ # Do any module-specific installation.
+ #
+ # If there isn't a TARGET defined, then don't do anything.
+-# Otherwise, install the libraries into $(libdir)
++# Otherwise, install the libraries into $(pkglibdir)
+ #
+ install:
+ @[ "x$(RLM_INSTALL)" = "x" ] || $(MAKE) $(MFLAGS) $(RLM_INSTALL)
+ if [ "x$(TARGET)" != "x" ]; then \
+ $(LIBTOOL) --mode=install $(INSTALL) -c \
+- $(TARGET).la $(R)$(libdir)/$(TARGET).la || exit $$?; \
++ $(TARGET).la $(R)$(pkglibdir)/$(TARGET).la || exit $$?; \
+ rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; \
+ ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la || exit $$?; \
+ fi
diff --git a/main/freeradius/freeradius.confd b/main/freeradius/freeradius.confd
new file mode 100644
index 0000000000..9811289ba4
--- /dev/null
+++ b/main/freeradius/freeradius.confd
@@ -0,0 +1,5 @@
+# Config file for /etc/init.d/radiusd
+
+# see man pages for radiusd run `radiusd -h`
+# for valid cmdline options
+#RADIUSD_OPTS=""
diff --git a/main/freeradius/freeradius.initd b/main/freeradius/freeradius.initd
new file mode 100644
index 0000000000..2386a9fcc4
--- /dev/null
+++ b/main/freeradius/freeradius.initd
@@ -0,0 +1,70 @@
+#!/sbin/runscript
+
+opts="${opts} reload"
+
+depend() {
+ need net
+ after firewall
+ use dns
+}
+
+checkconfig() {
+ #set the location of log files, including startup.log created by check-radiusd-config
+ if ! cd /var/log/radius ; then
+ eerror "Failed to change current directory to /var/log/radius"
+ return 1
+ fi
+
+ if [ ! -d /var/run/radiusd ] && ! mkdir /var/run/radiusd ; then
+ eerror "Failed to create /var/run/radiusd"
+ return 1
+ fi
+
+ if [ ! -f /etc/raddb/radiusd.conf ] ; then
+ eerror "No /etc/raddb/radiusd.conf file exists!"
+ return 1
+ fi
+
+ if [ "`/usr/sbin/radiusd -C >/dev/null 2>&1; echo $?`" != "0" ] ; then
+ eerror "Config not ok! (try /usr/sbin/radiusd -C )"
+ return 1
+ fi
+
+ 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 [ -n "${RADIUSD_GROUP}" ] && ! getent group ${RADIUSD_GROUP} > /dev/null ; then
+ eerror "${RADIUSD_GROUP} group missing!"
+ return 1
+ fi
+
+ #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}" . /var/run/radiusd && \
+ chmod -R u+rwX,g+rX . /var/run/radiusd || return 1
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting radiusd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/radiusd -- ${RADIUSD_OPTS} >/dev/null
+ eend $?
+}
+
+stop () {
+ ebegin "Stopping radiusd"
+ start-stop-daemon --stop --quiet --pidfile=/var/run/radiusd/radiusd.pid
+ eend $?
+}
+
+reload () {
+ ebegin "Reloading radiusd"
+ kill -HUP `</var/run/radiusd/radiusd.pid`
+ eend $?
+}
+
diff --git a/main/freeradius/freeradius.pre-install b/main/freeradius/freeradius.pre-install
new file mode 100644
index 0000000000..04c48bb3fe
--- /dev/null
+++ b/main/freeradius/freeradius.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup radiusd 2>/dev/null
+adduser -S -G radiusd -h /var/log/radius -s /bin/false -D radiusd 2>/dev/null
+exit 0
+