packaging/rpm/ferron-template-fips.spec
Rama develop-3.x · réplica de lectura del repositorio original.
Name: ferron3-fips
Version: $VERSION
Release: 1%{?dist}
Summary: A fast, modern web server built for production debugging (with FIPS-certified cryptography).
License: MIT
URL: https://ferron.sh
Requires: glibc >= 2.31
Requires: ca-certificates
Requires(post): systemd
Requires(pre): shadow-utils
Requires(postun): systemd
Conflicts: ferron
Conflicts: ferron-lts
Conflicts: ferron3
Provides: webserver
%description
A fast, modern web server built for production debugging.
%global debug_package %{nil}
%prep
%build
# No build commands necessary, since binaries are precompiled
%install
mkdir -p %{buildroot}/usr/sbin
mkdir -p %{buildroot}/usr/lib/systemd/system
mkdir -p %{buildroot}/usr/share/ferron/wwwroot
mkdir -p %{buildroot}/var/log/ferron
mkdir -p %{buildroot}/var/lib/ferron
mkdir -p %{buildroot}/run/ferron
mkdir -p %{buildroot}/etc/ferron
install -m 0755 data/usr/sbin/ferron %{buildroot}/usr/sbin/ferron
install -m 0755 data/usr/sbin/ferron-fmt %{buildroot}/usr/sbin/ferron-fmt
install -m 0755 data/usr/sbin/ferron-kdl2ferron %{buildroot}/usr/sbin/ferron-kdl2ferron
install -m 0755 data/usr/sbin/ferron-passwd %{buildroot}/usr/sbin/ferron-passwd
install -m 0755 data/usr/sbin/ferron-precompress %{buildroot}/usr/sbin/ferron-precompress
install -m 0755 data/usr/sbin/ferron-serve %{buildroot}/usr/sbin/ferron-serve
install -m 0644 data/etc/ferron/ferron.conf %{buildroot}/etc/ferron/ferron.conf
install -m 0644 data/usr/lib/systemd/system/ferron.service %{buildroot}/usr/lib/systemd/system/ferron.service
cp -r data/usr/share/ferron/wwwroot %{buildroot}/usr/share/ferron/
%pre
if ! id ferron &>/dev/null; then
useradd -r -d /var/lib/ferron -s /sbin/nologin ferron
fi
%post
if [ $1 -eq 1 ]; then
# Initial installation
mkdir -p /var/www/ferron
if [ ! -e /var/www/ferron/index.html ]; then
cp -r /usr/share/ferron/wwwroot/* /var/www/ferron/
fi
chown -R ferron:ferron /var/log/ferron /var/lib/ferron /var/www/ferron /run/ferron
find /var/www/ferron -type f -exec chmod 644 {} \;
find /var/www/ferron -type d -exec chmod 755 {} \;
find /var/log/ferron -type f -exec chmod 644 {} \;
find /var/log/ferron -type d -exec chmod 755 {} \;
find /run/ferron -type f -exec chmod 644 {} \;
find /run/ferron -type d -exec chmod 755 {} \;
if type selinuxenabled >/dev/null 2>&1 && selinuxenabled; then
if type setsebool >/dev/null 2>&1; then
# ACME and reverse proxy (taken from Caddy's RPM spec)
setsebool -P httpd_can_network_connect on
fi
if type semanage >/dev/null 2>&1; then
semanage fcontext -a -t httpd_exec_t "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -m -t httpd_exec_t "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -a -t httpd_exec_t "/usr/bin/ferron" 2>/dev/null || semanage fcontext -m -t httpd_exec_t "/usr/bin/ferron" || :
semanage fcontext -a -t httpd_config_t "/etc/ferron/ferron.conf" 2>/dev/null || semanage fcontext -m -t httpd_config_t "/etc/ferron/ferron.conf" || :
semanage fcontext -a -t httpd_sys_content_t "/var/www/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_sys_content_t "/var/www/ferron(/.*)?" || :
semanage fcontext -a -t httpd_log_t "/var/log/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_log_t "/var/log/ferron(/.*)?" || :
semanage fcontext -a -t httpd_var_lib_t "/var/lib/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_var_lib_t "/var/lib/ferron(/.*)?" || :
semanage fcontext -a -t httpd_var_run_t "/run/ferron(/.*)?" 2>/dev/null || semanage fcontext -m -t httpd_var_run_t "/run/ferron(/.*)?" || :
fi
if type restorecon >/dev/null 2>&1; then
restorecon -r /usr/sbin/ferron{,-*} /etc/ferron/ferron.conf /var/www/ferron /var/log/ferron /var/lib/ferron || :
fi
if type semanage >/dev/null 2>&1; then
# QUIC (taken from Caddy's RPM spec)
semanage port -a -t http_port_t -p udp 80 2>/dev/null || semanage port -m -t http_port_t -p udp 80 || :
semanage port -a -t http_port_t -p udp 443 2>/dev/null || semanage port -m -t http_port_t -p udp 443 || :
fi
fi
fi
# systemd macros aren't used, so that the RPM package can be built on Debian-based systems
if [ $1 -eq 1 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
# Initial installation
/usr/lib/systemd/systemd-update-helper install-system-units ferron.service || :
fi
%preun
if [ $1 -eq 0 ] && [ -x "/usr/lib/systemd/systemd-update-helper" ]; then
# Package removal, not upgrade
/usr/lib/systemd/systemd-update-helper remove-system-units ferron.service || :
fi
%postun
if [ $1 -eq 0 ]; then
if type selinuxenabled >/dev/null 2>&1 && selinuxenabled; then
if type setsebool >/dev/null 2>&1; then
# ACME and reverse proxy (taken from Caddy's RPM spec)
setsebool -P httpd_can_network_connect off
fi
if type semanage >/dev/null 2>&1; then
semanage fcontext -d "/usr/sbin/ferron" 2>/dev/null || semanage fcontext -d "/usr/bin/ferron" || :
semanage fcontext -d "/etc/ferron/ferron.conf" || :
semanage fcontext -d "/var/www/ferron(/.*)?" || :
semanage fcontext -d "/var/log/ferron(/.*)?" || :
semanage fcontext -d "/var/lib/ferron(/.*)?" || :
semanage fcontext -d "/run/ferron(/.*)?" || :
fi
if type restorecon >/dev/null 2>&1; then
restorecon -r /usr/sbin/ferron{,-*} /etc/ferron/ferron.conf /var/www/ferron /var/log/ferron /var/lib/ferron /run/ferron || :
fi
if type semanage >/dev/null 2>&1; then
# QUIC (taken from Caddy's RPM spec)
semanage port -d -t http_port_t -p udp 80 || :
semanage port -d -t http_port_t -p udp 443 || :
fi
fi
fi
%files
%defattr(-,root,root,-)
/usr/sbin/ferron
/usr/sbin/ferron-fmt
/usr/sbin/ferron-kdl2ferron
/usr/sbin/ferron-passwd
/usr/sbin/ferron-precompress
/usr/sbin/ferron-serve
/usr/lib/systemd/system/ferron.service
/usr/share/ferron/wwwroot
%dir /var/log/ferron
%dir /var/lib/ferron
%dir /run/ferron
%ghost /var/www/ferron
%config(noreplace) /etc/ferron/ferron.conf