projects/aports·blob master · refs

417 lines · 11.8 KiB

1# Contributor: Vladyslav Frolov <[email protected]>
2# Contributor: Łukasz Jendrysik <[email protected]>
3# Contributor: Jakub Jirutka <[email protected]>
4# Maintainer: Leonardo Arena <[email protected]>
5pkgname=freeradius
6pkgver=3.0.27
7pkgrel=4
8pkgdesc="RADIUS (Remote Authentication Dial-In User Service) server"
9url="https://freeradius.org/"
10arch="all"
11license="GPL-2.0-or-later"
12depends="$pkgname-lib=$pkgver-r$pkgrel"
13makedepends="
14 autoconf
15 automake
16 bash
17 curl-dev
18 gdbm-dev
19 hiredis-dev
20 json-c-dev
21 krb5-dev
22 libpcap-dev
23 libpq-dev
24 libtool
25 linux-headers
26 linux-pam-dev
27 mariadb-connector-c-dev
28 net-snmp-tools
29 openldap-dev
30 openssl-dev>3
31 perl-dev
32 python3-dev
33 readline-dev
34 sqlite-dev
35 talloc-dev
36 unixodbc-dev
37 "
38pkggroups="radius"
39pkgusers="radius"
40install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
41subpackages="
42 $pkgname-dbg
43 $pkgname-doc
44 $pkgname-static
45 $pkgname-dev
46 $pkgname-eap
47 $pkgname-ldap
48 $pkgname-dhcp
49 $pkgname-lib
50 $pkgname-mssql
51 $pkgname-mysql
52 $pkgname-sql
53 $pkgname-perl
54 $pkgname-postgresql
55 $pkgname-python3
56 $pkgname-sqlite
57 $pkgname-unixodbc
58 $pkgname-pam
59 $pkgname-krb5
60 $pkgname-rest
61 $pkgname-redis
62 $pkgname-checkrad
63 $pkgname-utils
64 $pkgname-openrc
65 "
66provides="freeradius3=$pkgver-r$pkgrel"
67source="https://github.com/FreeRADIUS/freeradius-server/releases/download/release_${pkgver//./_}/freeradius-server-$pkgver.tar.gz
68 $pkgname.logrotated
69 radiusd.confd
70 radiusd.initd
71 setup-freeradius.in
72 print-var.mk
73 radacct-rotate
74 radacct-rotate.conf
75 radacct-rotate.crond
76
77 musl-fix-headers.patch
78 fix-scopeid.patch
79 default-config.patch
80 remove-eap-from-default-mods.patch
81 readme-setup-script.patch
82 dont-install-test-tools.patch
83 python-3.14.patch
84 "
85builddir="$srcdir/$pkgname-server-$pkgver"
86options="!check"
87
88# secfixes:
89# 3.0.27-r0:
90# - CVE-2024-3596
91# 3.0.19-r3:
92# - CVE-2019-10143
93# 3.0.19-r0:
94# - CVE-2019-11234
95# - CVE-2019-11235
96
97_radconfdir="etc/raddb"
98_radmodsdir="$_radconfdir/mods-available"
99_radlibdir="usr/lib/freeradius"
100_radmodsconfdir="$_radconfdir/mods-config"
101ldpath="$_radlibdir"
102
103prepare() {
104 default_prepare
105
106 local default_mods
107 default_mods=$(make -f "$srcdir"/print-var.mk -f raddb/all.mk \
108 print-DEFAULT_MODULES 2>/dev/null)
109 sed "s|@@DEFAULT_MODULES@@|$default_mods|" \
110 "$srcdir"/setup-freeradius.in > setup-freeradius
111}
112
113build() {
114 # freeradius requries json.h to be in a dir called 'json'. We fool
115 # the configure script with a symlink pointing to proper location.
116 ln -s /usr/include/json-c json
117
118 ./configure \
119 --build=$CBUILD \
120 --host=$CHOST \
121 --prefix=/usr \
122 --sysconfdir=/etc \
123 --mandir=/usr/share/man \
124 --infodir=/usr/share/info \
125 --localstatedir=/var \
126 --datarootdir=/usr/share \
127 --libdir="/$_radlibdir" \
128 --with-logdir=/var/log/radius \
129 --with-radacctdir=/var/log/radius/radacct \
130 --with-system-libtool \
131 --with-system-libltdl \
132 --with-shared-libs \
133 --with-udpfromto \
134 --with-rlm_sql_sqlite \
135 --with-rlm_sql_postgresql \
136 --with-rlm_sql_mysql \
137 --with-rlm_krb5 \
138 --with-rlm_rest \
139 --with-rlm_redis \
140 --with-rlm_rediswho \
141 --with-modules="rlm_python3" \
142 --without-rlm_cache_memcached \
143 --without-rlm_eap_tnc \
144 --without-rlm_eap_ikev2 \
145 --without-rlm_python \
146 --without-rlm_sql_freetds \
147 --without-rlm_sql_iodbc \
148 --without-rlm_sql_oracle \
149 --without-rlm_yubikey \
150 --without-rlm_ykclient \
151 --with-jsonc-include-dir="$PWD"
152
153 make -j1 LDFLAGS="$LDFLAGS -lssl"
154}
155
156package() {
157 install -d -m0750 -o root -g radius \
158 "$pkgdir"/$_radconfdir
159
160 install -d -m0750 -o radius -g radius \
161 "$pkgdir"/var/cache/radiusd \
162 "$pkgdir"/var/lib/radiusd \
163 "$pkgdir"/var/log/radius \
164 "$pkgdir"/var/log/radius/radacct
165
166 PACKAGE=yes make -j1 R="$pkgdir" install
167
168 chown -R root:radius "$pkgdir"/etc/raddb/*
169
170 # Ensure that files generated by Makefile or bootstrap scripts are
171 # readable by the radiusd daemin.
172 chmod 2750 "$pkgdir"/etc/raddb/certs
173
174 install -m755 -D "$srcdir"/radiusd.initd "$pkgdir"/etc/init.d/radiusd
175 install -m644 -D "$srcdir"/radiusd.confd "$pkgdir"/etc/conf.d/radiusd
176 install -m644 -D "$srcdir"/$pkgname.logrotated "$pkgdir"/etc/logrotate.d/$pkgname
177 install -m755 -D setup-freeradius "$pkgdir"/usr/sbin/setup-freeradius
178
179 install -m755 -D "$srcdir"/radacct-rotate -t "$pkgdir"/usr/bin/
180 install -m644 -D "$srcdir"/radacct-rotate.conf -t "$pkgdir"/etc/raddb/
181 install -m755 -D "$srcdir"/radacct-rotate.crond "$pkgdir"/etc/periodic/daily/radacct-rotate
182
183 # Install misses to create this
184 mkdir -p "$pkgdir"/$_radmodsconfdir/sql/ippool-dhcp/postgresql
185
186 # Default modules are enabled by post-install script.
187 # The reason for this is that when we include these symlinks
188 # in the package, the user basically cannot permanently disable any
189 # default module by removing the symlink because apk will install them
190 # back on every upgrade of the package.
191 rm -f "$pkgdir"/$_radconfdir/mods-enabled/*
192
193 # Remove unneeded and unused stuff (e.g. for disabled modules).
194
195 rm -f "$pkgdir"/usr/sbin/rc.radiusd
196 rm -f "$pkgdir"/$_radlibdir/rlm_test.so
197 rm -f "$pkgdir"/$_radconfdir/experimental.conf
198
199 # https://github.com/FreeRADIUS/freeradius-server/issues/1734#issuecomment-247848277
200 rm -f "$pkgdir"/usr/bin/dhcpclient
201 rm -f "$pkgdir"/usr/share/man/man1/dhcpclient.1*
202
203 cd "$pkgdir"/$_radmodsdir
204 rm -f couchbase python unbound yubikey
205
206 cd "$pkgdir"/$_radmodsconfdir
207 rm -rf sql/*/mongo
208 rm -rf sql/*/oracle
209 rm -rf unbound
210
211 cd "$pkgdir"/$_radconfdir/sites-available
212 rm -f ./*.orig
213}
214
215eap() {
216 pkgdesc="EAP module for FreeRADIUS server"
217 depends="freeradius=$pkgver-r$pkgrel"
218 provides="freeradius3-eap=$pkgver-r$pkgrel"
219
220 amove $_radlibdir/rlm_eap*.so $_radlibdir/libfreeradius-eap.so
221 amove usr/bin/radeapclient
222
223 amove $_radmodsdir/eap $_radmodsdir/inner-eap
224 amove $_radconfdir/sites-available/check-eap-tls
225 _enable_mod eap
226}
227
228ldap() {
229 pkgdesc="LDAP module for FreeRADIUS server"
230 depends="freeradius=$pkgver-r$pkgrel"
231 provides="freeradius3-ldap=$pkgver-r$pkgrel"
232
233 amove $_radlibdir/rlm_ldap*
234 amove $_radmodsdir/ldap
235 _enable_mod ldap
236}
237
238krb5() {
239 pkgdesc="Kerberos module for FreeRADIUS server"
240 depends="freeradius=$pkgver-r$pkgrel"
241 provides="freeradius3-krb5=$pkgver-r$pkgrel"
242
243 amove $_radlibdir/rlm_krb5*
244 amove $_radmodsdir/krb5
245 _enable_mod krb5
246}
247
248dhcp() {
249 pkgdesc="DHCP module for FreeRADIUS server"
250 depends="freeradius=$pkgver-r$pkgrel"
251
252 amove $_radlibdir/*_dhcp.so $_radlibdir/libfreeradius-dhcp.so
253 amove $_radmodsdir/dhcp
254 amove $_radconfdir/sites-available/dhcp
255 _enable_mod dhcp
256}
257
258lib() {
259 pkgdesc="Freeradius shared libraries"
260 depends=""
261
262 amove $_radlibdir/libfreeradius-*.so
263 amove usr/share/freeradius/*
264}
265
266sql() {
267 pkgdesc="SQL module for FreeRADIUS server"
268 depends="freeradius=$pkgver-r$pkgrel"
269 provides="freeradius3-sql=$pkgver-r$pkgrel"
270
271 local lib; for lib in sql sqlippool sql_null sqlcounter; do
272 amove $_radlibdir/rlm_$lib.so
273 done
274
275 amove $_radconfdir/sites-available/buffered-sql
276 amove $_radmodsdir/*sql*
277 _enable_mod sql
278}
279
280mysql() {
281 pkgdesc="MySQL module for FreeRADIUS server"
282 depends="freeradius-sql=$pkgver-r$pkgrel"
283 provides="freeradius3-mysql=$pkgver-r$pkgrel"
284
285 _mvdb mysql
286 amove $_radmodsconfdir/sql/*/ndb
287}
288
289mssql() {
290 pkgdesc="MSSQL module for FreeRADIUS server"
291 depends="freeradius-sql=$pkgver-r$pkgrel"
292 provides="freeradius3-mssql=$pkgver-r$pkgrel"
293
294 amove $_radmodsconfdir/sql/main/mssql
295}
296
297perl() {
298 pkgdesc="Perl module for FreeRADIUS server"
299 depends="freeradius=$pkgver-r$pkgrel perl"
300 provides="freeradius3-perl=$pkgver-r$pkgrel"
301
302 amove $_radlibdir/rlm_perl*
303 amove $_radconfdir/mods-available/perl
304 amove $_radmodsconfdir/perl
305 _enable_mod perl
306}
307
308checkrad() {
309 pkgdesc="Check if a user is (still) logged in on a certain port"
310 depends="perl perl-net-telnet perl-snmp-session net-snmp-tools"
311
312 amove usr/sbin/checkrad
313}
314
315postgresql() {
316 pkgdesc="PostgreSQL module for FreeRADIUS server"
317 depends="freeradius-sql=$pkgver-r$pkgrel"
318 provides="freeradius3-postgresql=$pkgver-r$pkgrel"
319
320 _mvdb postgresql
321}
322
323python3() {
324 depends="freeradius=$pkgver-r$pkgrel"
325 pkgdesc="Python 3 module for FreeRADIUS server"
326
327 amove $_radlibdir/rlm_python*
328 amove $_radmodsdir/python3
329 amove $_radmodsconfdir/python3
330 _enable_mod python3
331}
332
333sqlite() {
334 pkgdesc="SQLite module for FreeRADIUS server"
335 depends="freeradius-sql=$pkgver-r$pkgrel"
336 provides="freeradius3-sqlite=$pkgver-r$pkgrel"
337
338 _mvdb sqlite
339}
340
341unixodbc() {
342 pkgdesc="ODBC module for FreeRADIUS server"
343 depends="freeradius=$pkgver-r$pkgrel"
344 provides="freeradius3-unixodbc=$pkgver-r$pkgrel"
345
346 amove $_radlibdir/rlm_sql_unixodbc.so
347}
348
349pam() {
350 pkgdesc="PAM module for FreeRADIUS server"
351 depends="freeradius=$pkgver-r$pkgrel"
352 provides="freeradius3-pam=$pkgver-r$pkgrel"
353
354 amove $_radlibdir/rlm_pam*
355 amove $_radmodsdir/pam
356 _enable_mod pam
357}
358
359rest() {
360 pkgdesc="REST module for FreeRADIUS server"
361 depends="freeradius=$pkgver-r$pkgrel"
362
363 amove $_radlibdir/rlm_rest*
364 amove $_radmodsdir/rest
365 _enable_mod rest
366}
367
368redis() {
369 pkgdesc="Redis modules for FreeRADIUS server"
370 depends="freeradius=$pkgver-r$pkgrel"
371
372 amove $_radlibdir/rlm_redis*
373 amove $_radmodsdir/redis*
374 _enable_mod redis
375}
376
377utils() {
378 pkgdesc="FreeRADIUS utilities"
379 # provides/replaces for backward compatibility
380 provides="freeradius-radclient=$pkgver-r$pkgrel
381 freeradius3-radclient=$pkgver-r$pkgrel"
382 replaces="freeradius-radclient"
383
384 amove usr/bin/*
385
386 mkdir -p "$pkgdir"/usr/bin
387 mv "$subpkgdir"/usr/bin/radacct-rotate "$pkgdir"/usr/bin/
388}
389
390_mvdb() {
391 amove $_radmodsconfdir/sql/*/$1
392 amove $_radlibdir/rlm_sql_$1.so
393}
394
395_enable_mod() {
396 mkdir -p "$subpkgdir"/$_radconfdir/mods-enabled
397 ln -s ../mods-available/$1 "$subpkgdir"/$_radconfdir/mods-enabled/$1
398}
399
400sha512sums="
4012b11fb9cbdc60bcd882239c72e1cd9fe0415595c4d4e780a43109c33a73c52a150eb0930c0674c9a027f04cecd5731f3d02956be81a5c0737b886af14fc98d9e freeradius-server-3.0.27.tar.gz
40252ecccd479bb22c80d5cc298d9d1c12bd2d1a9d80e1265ba032201f3942370910fa78f3bb429031d91bc89712fa2127f16cd68814489cbc99d174fbf5789875f freeradius.logrotated
403bb3df1fa2c9ed95514ae090e0f6619c4e3280f424c4351bc79f5254bf1a327fa7d27e5fe3add5ab8d9e5ba3792c9553bd9a0481fe9c5bc34945ce46627ef2638 radiusd.confd
4045a8579f06e905117c67f87f0833d0760e81e64f97de7672ecee45775733fae05763edb91c472e313bf58523c713f86815e47cc39c841f4c141aa59a5930113c6 radiusd.initd
4059f6a4f76fd06e81cfcfe4536f1f8be494634b07e548a6f7e651e5501aded24b030ed7d57dbdc867ae0eb39ee4a090234c4122a89bed84c13733c77de36b9c2cf setup-freeradius.in
4065f940e200aa39b2fbbfaf5b24f2ad99869fa75bb7e2008876940ea96cb9dbc7f2b27dd1672aa56cdb5243faabdcbc38875594dd8792af965987183c0aa2aefd1 print-var.mk
4074fbd774618d41a28a5874fd5bd96ccf6ab5ea38e4a97b1671bd51f6d07476985629dabc0a7300b3287bd223c62496c930bc555bb617739d6383afd5d55c97501 radacct-rotate
4082cecaae9bf9dd88f7c4344f2b08977c46d4831e733b82adcf6cf9553c1a77363dac9f1784f9eb9cf93d46c3da10a10d548a1071cdb0cd49e1319a62b7d5a357b radacct-rotate.conf
40952c477b4d13009bc3776ed889feeb4b1ea8d85bb97b0031b1d2d4c04e6466fcb4e9a16e556e861e7ec56acb54624bea39d73d44802535aa39d3dc84580d95775 radacct-rotate.crond
410c49e5eec7497fccde5fd09dba1ea9b846e57bc88015bd81640aa531fb5c9b449f37136f42c85fe1d7940c5963aed664b85da28442b388c9fb8cc27873df03b2d musl-fix-headers.patch
41141d478c0e40ff82fc36232964037c1ab8ffca9fdbb7dca02ed49319906e751c133b5d7bc7773c645cec6d9d39d1de69cba25e8d59afa8d6662563dd17f35f234 fix-scopeid.patch
412caf85ffb96e08ad8314fe72aac052948b2461f94bb21e20ea34925534ee1ef682284457318d50df813ba167a8cb4b520c5a0f38d86de21cd56e8391f299a5dd6 default-config.patch
4135fba0394073cd32a0cd80dea0c27e4474cd44c7d52fdf4e1dafb98025ffa3439bbab6112e091ca5e548713d071c026b280b1f205e8e51e57e4fda4bb6336b020 remove-eap-from-default-mods.patch
41455e179d5e6b31d289c2da7f907e494a6a6f5900483fdff8d3bb25ee15a583b8705942eca1f0d5390e91376966e66e457dce9b2cf1a1f61c8eac6d8fb825404dd readme-setup-script.patch
415908c4408ab6538ddd96577e47d5e509b19e227e144655eaa0fd7569ddadbe5b2298e6599b8370847b3bcb5e788067b163b0cb66e1b3afa4d83dc3f724e058674 dont-install-test-tools.patch
416efa2e20f91fda8f206c555eb84225aad6095a21ca9559397e265f01db6e8ccc74a40cde5b6b95b17ca9070ac08393ba0b3985c172d7ac7673517f17cd646b9aa python-3.14.patch
417"