# Contributor: Vladyslav Frolov <frolvlad@gmail.com>
# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
setvar pkgname = 'freeradius'
setvar _realname = 'freeradius'
setvar pkgver = '3.0.15'
setvar pkgrel = '2'
setvar pkgdesc = ""RADIUS (Remote Authentication Dial-In User Service) server""
setvar url = ""http://freeradius.org/""
setvar arch = ""all""
setvar license = ""GPL""
setvar depends = """"
setvar makedepends = ""libressl-dev mariadb-dev postgresql-dev gdbm-dev readline-dev
	bash libtool autoconf automake perl-dev python2-dev openldap-dev krb5-dev
	unixodbc-dev linux-pam-dev sqlite-dev talloc-dev libpcap-dev
	linux-headers curl-dev hiredis-dev json-c-dev net-snmp-tools""
setvar pkggroups = ""radius""
setvar pkgusers = ""radius""
setvar install = ""$pkgname.pre-install""
setvar subpackages = ""$pkgname-dbg $pkgname-doc $pkgname-dev $pkgname-ldap $pkgname-lib
	$pkgname-mssql $pkgname-mysql $pkgname-sql $pkgname-perl
	$pkgname-postgresql $pkgname-python $pkgname-radclient $pkgname-sqlite
	$pkgname-unixodbc $pkgname-pam $pkgname-eap $pkgname-krb5
	$pkgname-rest $pkgname-redis $pkgname-checkrad""
setvar provides = ""freeradius3=$pkgver-r$pkgrel""
setvar source = ""ftp://ftp.freeradius.org/pub/freeradius/$_realname-server-$pkgver.tar.gz
	$pkgname.confd
	$pkgname.initd

	musl-fix-headers.patch
	fix-scopeid.patch
	freeradius-313-default-config.patch
	""

setvar builddir = ""$srcdir"/$_realname-server-$pkgver"

setvar radconfdir = ""/etc/raddb""
setvar radmodsdir = ""$radconfdir/mods-available""
setvar radlibdir = ""/usr/lib/freeradius""
setvar radmodsconfdir = ""$radconfdir/mods-config""
setvar ldpath = "$radlibdir"

proc prepare {
	default_prepare
	update_config_sub
	# remove certs generation
	# rm -rf raddb/certs
}

proc build {
	cd $builddir
	# freeradius requries json.h to be in a dir called 'json'. We fool
	# the configure script with a symlink pointing to proper location.
	ln -s /usr/include/json-c json

	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--localstatedir=/var \
		--datarootdir=/usr/share \
		--libdir="$radlibdir" \
		--with-logdir=/var/log/radius \
		--with-radacctdir=/var/log/radius/radacct \
		--with-system-libtool \
		--with-system-libltdl \
		--with-shared-libs \
		--with-udpfromto \
		--with-rlm_sql_sqlite \
		--with-rlm_sql_postgresql \
		--with-rlm_sql_mysql \
		--with-rlm_krb5 \
		--with-rlm_rest \
		--with-rlm_redis \
		--with-rlm_rediswho \
		--without-rlm_eap_tnc \
		--without-rlm_eap_ikev2 \
		--without-rlm_sql_iodbc \
		--without-rlm_sql_oracle \
		--without-rlm_yubikey \
		--without-rlm_ykclient \
		--with-jsonc-include-dir="$PWD"

	make -j1 LDFLAGS="$LDFLAGS -lssl"
}

proc package {
	cd $builddir
	install -d -m0750 -o root -g radius \
		"${pkgdir}"${radconfdir}
	install -d -m0750 -o radius -g radius \
		"$pkgdir"/var/run/radius
	install -d -m0750 -o radius -g radius \
		"$pkgdir"/var/log/radius
	install -d -m0750 -o radius -g radius \
		"$pkgdir"/var/log/radius/radacct'

	PACKAGE=yes' make -j1 R="$pkgdir" install
	chown -R root:radius "$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 misses to create this
	mkdir -p "${pkgdir}"${radmodsconfdir}/sql/ippool-dhcp/postgresql
}

proc _mvdb {
	for dir in ippool-dhcp ippool counter main cui {
		mkdir -p "${subpkgdir}"${radmodsconfdir}/sql/$dir
		mv "${pkgdir}"${radmodsconfdir}/sql/$dir/$1 \
		 "${subpkgdir}"${radmodsconfdir}/sql/$dir
	}
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_sql_${1}.so "${subpkgdir}"${radlibdir}
}

proc eap {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-eap=$pkgver-r$pkgrel""
	setvar pkgdesc = ""EAP module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir} "$subpkgdir"/usr/bin
	mv "${pkgdir}"${radlibdir}/rlm_eap*.so "${subpkgdir}"${radlibdir}
	mv "$pkgdir"/usr/bin/radeapclient "$subpkgdir"/usr/bin
	mkdir -p "${subpkgdir}"${radmodsdir} "$subpkgdir"$radconfdir/mods-enabled
	mv "${pkgdir}"${radmodsdir}/eap "${subpkgdir}"${radmodsdir}
	mv "$pkgdir"$radconfdir/mods-enabled/eap \
		"$subpkgdir"$radconfdir/mods-enabled/

	mkdir -p "${subpkgdir}"${radconfdir}
	mv "${pkgdir}"${radconfdir}/certs "${subpkgdir}"${radconfdir}
}

proc ldap {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-ldap=$pkgver-r$pkgrel""
	setvar pkgdesc = ""LDAP module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_ldap* "${subpkgdir}"${radlibdir}
}

proc krb5 {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-krb5=$pkgver-r$pkgrel""
	setvar pkgdesc = ""Kerberos module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_krb5* "${subpkgdir}"${radlibdir}
}

proc lib {
	setvar depends = """"
	setvar pkgdesc = ""Freeradius shared libraries""
	mkdir -p "${subpkgdir}"${radlibdir} "${subpkgdir}"${radconfdir} \
	 "$subpkgdir"/usr/share/freeradius
	mv "${pkgdir}"${radlibdir}/libfreeradius-*.so \
	 "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"/usr/share/freeradius/* \
	 "${subpkgdir}"/usr/share/freeradius
}

proc sql {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-sql=$pkgver-r$pkgrel""
	setvar pkgdesc = ""SQL module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	for lib in sql sqlippool sql_null sqlcounter {
		mv "${pkgdir}"${radlibdir}/rlm_${lib}.so \
			"${subpkgdir}"${radlibdir}
	}
	mkdir -p "${subpkgdir}"${radconfdir}/sites-available
	mv "${pkgdir}"${radconfdir}/sites-available/buffered-sql \
	 "${subpkgdir}"${radconfdir}/sites-available
	mkdir -p "${subpkgdir}"${radmodsdir}
	mv "${pkgdir}"${radmodsdir}/*sql* "${subpkgdir}"${radmodsdir}
}

proc mysql {
	setvar depends = ""freeradius-sql=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-mysql=$pkgver-r$pkgrel""
	setvar pkgdesc = ""MySQL module for FreeRADIUS server""
	_mvdb mysql
}

proc mssql {
	setvar depends = ""freeradius-sql=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-mssql=$pkgver-r$pkgrel""
	setvar pkgdesc = ""MSSQL module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radmodsconfdir}/sql/main
	mv "${pkgdir}"${radmodsconfdir}/sql/main/mssql \
	 "${subpkgdir}"${radmodsconfdir}/sql/main
}

proc perl {
	setvar depends = ""freeradius=$pkgver-r$pkgrel perl""
	setvar provides = ""freeradius3-perl=$pkgver-r$pkgrel""
	setvar pkgdesc = ""Perl module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_perl* "${subpkgdir}"${radlibdir}
	mkdir -p "${subpkgdir}"${radconfdir}/mods-available
	mv "${pkgdir}"${radconfdir}/mods-available/perl \
		"${subpkgdir}"${radconfdir}/mods-available/perl
}

proc checkrad {
	setvar depends = ""perl perl-net-telnet perl-snmp-session net-snmp-tools""
	setvar pkgdesc = ""Check if a user is (still) logged in on a certain port""
	mkdir -p "$subpkgdir"/usr/sbin
	mv "$pkgdir"/usr/sbin/checkrad "$subpkgdir"/usr/sbin/checkrad
}

proc postgresql {
	setvar depends = ""freeradius-sql=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-postgresql=$pkgver-r$pkgrel""
	setvar pkgdesc = ""PostgreSQL module for FreeRADIUS server""
	_mvdb postgresql
}

proc python {
	setvar depends = ""freeradius=$pkgver-r$pkgrel python2""
	setvar provides = ""freeradius3-python=$pkgver-r$pkgrel""
	setvar pkgdesc = ""Python module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_python* "${subpkgdir}"${radlibdir}
	for dir in $radmodsdir $radmodsconfdir {
		mkdir -p "${subpkgdir}"$dir
		mv "${pkgdir}"$dir/python "${subpkgdir}"$dir
	}
}

proc radclient {
	setvar depends = """"
	setvar provides = ""freeradius3-radclient=$pkgver-r$pkgrel""
	setvar pkgdesc = ""Client for FreeRADIUS server""
	mkdir -p "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/radclient "$subpkgdir"/usr/bin/radclient
}

proc sqlite {
	setvar depends = ""freeradius-sql=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-sqlite=$pkgver-r$pkgrel""
	setvar pkgdesc = ""SQLite module for FreeRADIUS server""
	_mvdb sqlite
}

proc unixodbc {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-unixodbc=$pkgver-r$pkgrel""
	setvar pkgdesc = ""ODBC module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_sql_unixodbc.so \
		"${subpkgdir}"${radlibdir}
}

proc pam {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar provides = ""freeradius3-pam=$pkgver-r$pkgrel""
	setvar pkgdesc = ""PAM module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_pam* "${subpkgdir}"${radlibdir}
}

proc rest {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar pkgdesc = ""REST module for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_rest* "${subpkgdir}"${radlibdir}
}

proc redis {
	setvar depends = ""freeradius=$pkgver-r$pkgrel""
	setvar pkgdesc = ""Redis modules for FreeRADIUS server""
	mkdir -p "${subpkgdir}"${radlibdir}
	mv "${pkgdir}"${radlibdir}/rlm_redis* "${subpkgdir}"${radlibdir}
}

setvar sha512sums = ""9b92045b445032bde9d421499fdc0f6a08d602c501730c31a8d3974b21cc5c12c78abb024ed62a176c7aa7fe260fe1d19386aaf558e0fecfcd3a0ba7aa47499c  freeradius-server-3.0.15.tar.gz
e248159c0a44f722e405c51c8015d9ad672e42ad0d38ca28f8a051ff911aa4d3e630b9bd4543e9d610940bc4ae50c022594e219ce341b36abe85c572acad418b  freeradius.confd
ba3c424d4eabb147c7aa3e31575a87ddb26b6a792d2a8714e73d8763e07854326a03a83991a7420246ca06bf0b93d0a6f23ec198f5e48647f9d25b40067e852a  freeradius.initd
c49e5eec7497fccde5fd09dba1ea9b846e57bc88015bd81640aa531fb5c9b449f37136f42c85fe1d7940c5963aed664b85da28442b388c9fb8cc27873df03b2d  musl-fix-headers.patch
41d478c0e40ff82fc36232964037c1ab8ffca9fdbb7dca02ed49319906e751c133b5d7bc7773c645cec6d9d39d1de69cba25e8d59afa8d6662563dd17f35f234  fix-scopeid.patch
666e15a3c3e5b98ff8c3168de85b341606af5e2790af379ddec46464e9d7de14a715876a34ba1eb7fa47ddead23f7134128d591db32309db0e4acbdb6f21ef5e  freeradius-313-default-config.patch""