| 1 | # Contributor: Vladyslav Frolov <[email protected]> |
| 2 | # Contributor: Łukasz Jendrysik <[email protected]> |
| 3 | # Contributor: Jakub Jirutka <[email protected]> |
| 4 | # Maintainer: Leonardo Arena <[email protected]> |
| 5 | pkgname=freeradius |
| 6 | pkgver=3.0.27 |
| 7 | pkgrel=4 |
| 8 | pkgdesc="RADIUS (Remote Authentication Dial-In User Service) server" |
| 9 | url="https://freeradius.org/" |
| 10 | arch="all" |
| 11 | license="GPL-2.0-or-later" |
| 12 | depends="$pkgname-lib=$pkgver-r$pkgrel" |
| 13 | makedepends=" |
| 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 | " |
| 38 | pkggroups="radius" |
| 39 | pkgusers="radius" |
| 40 | install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade" |
| 41 | subpackages=" |
| 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 | " |
| 66 | provides="freeradius3=$pkgver-r$pkgrel" |
| 67 | source="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 | " |
| 85 | builddir="$srcdir/$pkgname-server-$pkgver" |
| 86 | options="!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" |
| 101 | ldpath="$_radlibdir" |
| 102 | |
| 103 | prepare() { |
| 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 | |
| 113 | build() { |
| 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 | |
| 156 | package() { |
| 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 | |
| 215 | eap() { |
| 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 | |
| 228 | ldap() { |
| 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 | |
| 238 | krb5() { |
| 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 | |
| 248 | dhcp() { |
| 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 | |
| 258 | lib() { |
| 259 | pkgdesc="Freeradius shared libraries" |
| 260 | depends="" |
| 261 | |
| 262 | amove $_radlibdir/libfreeradius-*.so |
| 263 | amove usr/share/freeradius/* |
| 264 | } |
| 265 | |
| 266 | sql() { |
| 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 | |
| 280 | mysql() { |
| 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 | |
| 289 | mssql() { |
| 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 | |
| 297 | perl() { |
| 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 | |
| 308 | checkrad() { |
| 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 | |
| 315 | postgresql() { |
| 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 | |
| 323 | python3() { |
| 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 | |
| 333 | sqlite() { |
| 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 | |
| 341 | unixodbc() { |
| 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 | |
| 349 | pam() { |
| 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 | |
| 359 | rest() { |
| 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 | |
| 368 | redis() { |
| 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 | |
| 377 | utils() { |
| 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 | |
| 400 | sha512sums=" |
| 401 | 2b11fb9cbdc60bcd882239c72e1cd9fe0415595c4d4e780a43109c33a73c52a150eb0930c0674c9a027f04cecd5731f3d02956be81a5c0737b886af14fc98d9e freeradius-server-3.0.27.tar.gz |
| 402 | 52ecccd479bb22c80d5cc298d9d1c12bd2d1a9d80e1265ba032201f3942370910fa78f3bb429031d91bc89712fa2127f16cd68814489cbc99d174fbf5789875f freeradius.logrotated |
| 403 | bb3df1fa2c9ed95514ae090e0f6619c4e3280f424c4351bc79f5254bf1a327fa7d27e5fe3add5ab8d9e5ba3792c9553bd9a0481fe9c5bc34945ce46627ef2638 radiusd.confd |
| 404 | 5a8579f06e905117c67f87f0833d0760e81e64f97de7672ecee45775733fae05763edb91c472e313bf58523c713f86815e47cc39c841f4c141aa59a5930113c6 radiusd.initd |
| 405 | 9f6a4f76fd06e81cfcfe4536f1f8be494634b07e548a6f7e651e5501aded24b030ed7d57dbdc867ae0eb39ee4a090234c4122a89bed84c13733c77de36b9c2cf setup-freeradius.in |
| 406 | 5f940e200aa39b2fbbfaf5b24f2ad99869fa75bb7e2008876940ea96cb9dbc7f2b27dd1672aa56cdb5243faabdcbc38875594dd8792af965987183c0aa2aefd1 print-var.mk |
| 407 | 4fbd774618d41a28a5874fd5bd96ccf6ab5ea38e4a97b1671bd51f6d07476985629dabc0a7300b3287bd223c62496c930bc555bb617739d6383afd5d55c97501 radacct-rotate |
| 408 | 2cecaae9bf9dd88f7c4344f2b08977c46d4831e733b82adcf6cf9553c1a77363dac9f1784f9eb9cf93d46c3da10a10d548a1071cdb0cd49e1319a62b7d5a357b radacct-rotate.conf |
| 409 | 52c477b4d13009bc3776ed889feeb4b1ea8d85bb97b0031b1d2d4c04e6466fcb4e9a16e556e861e7ec56acb54624bea39d73d44802535aa39d3dc84580d95775 radacct-rotate.crond |
| 410 | c49e5eec7497fccde5fd09dba1ea9b846e57bc88015bd81640aa531fb5c9b449f37136f42c85fe1d7940c5963aed664b85da28442b388c9fb8cc27873df03b2d musl-fix-headers.patch |
| 411 | 41d478c0e40ff82fc36232964037c1ab8ffca9fdbb7dca02ed49319906e751c133b5d7bc7773c645cec6d9d39d1de69cba25e8d59afa8d6662563dd17f35f234 fix-scopeid.patch |
| 412 | caf85ffb96e08ad8314fe72aac052948b2461f94bb21e20ea34925534ee1ef682284457318d50df813ba167a8cb4b520c5a0f38d86de21cd56e8391f299a5dd6 default-config.patch |
| 413 | 5fba0394073cd32a0cd80dea0c27e4474cd44c7d52fdf4e1dafb98025ffa3439bbab6112e091ca5e548713d071c026b280b1f205e8e51e57e4fda4bb6336b020 remove-eap-from-default-mods.patch |
| 414 | 55e179d5e6b31d289c2da7f907e494a6a6f5900483fdff8d3bb25ee15a583b8705942eca1f0d5390e91376966e66e457dce9b2cf1a1f61c8eac6d8fb825404dd readme-setup-script.patch |
| 415 | 908c4408ab6538ddd96577e47d5e509b19e227e144655eaa0fd7569ddadbe5b2298e6599b8370847b3bcb5e788067b163b0cb66e1b3afa4d83dc3f724e058674 dont-install-test-tools.patch |
| 416 | efa2e20f91fda8f206c555eb84225aad6095a21ca9559397e265f01db6e8ccc74a40cde5b6b95b17ca9070ac08393ba0b3985c172d7ac7673517f17cd646b9aa python-3.14.patch |
| 417 | " |