## START: Set by rpmautospec ## (rpmautospec version 0.8.4) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 6; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec # disable tests until perl-conf-libconfig is in Fedora %global with_tests 0 Name: sslh Version: 2.3.1 Release: %autorelease Summary: Applicative protocol(SSL/SSH) multiplexer License: GPL-2.0-only URL: https://github.com/yrutschle/sslh Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz ExcludeArch: %{ix86} BuildRequires: make BuildRequires: gcc BuildRequires: pkgconfig(libconfig) BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libpcre2-8) BuildRequires: pkgconfig(libbsd) BuildRequires: libev-devel BuildRequires: systemd-rpm-macros BuildRequires: perl(Pod::Man) %if %{with_tests} # Required for %%check BuildRequires: perl(IO::Socket::INET6) BuildRequires: perl(Test::More) BuildRequires: perl(Conf::Libconfig) BuildRequires: valgrind BuildRequires: psmisc %endif %description sslh accepts connections on specified ports, and forwards them further based on tests performed on the first data packet sent by the remote client. Probes for HTTP, SSL, SSH, OpenVPN, tinc, XMPP are implemented, and any other protocol that can be tested using a regular expression, can be recognized. A typical use case is to allow serving several services on port 443 (e.g. to connect to ssh from inside a corporate firewall, which almost never block port 443) while still serving HTTPS on that port. Hence sslh acts as a protocol multiplexer, or a switchboard. Its name comes from its original function to serve SSH and HTTPS on the same port. %prep %autosetup -p1 # Create a sysusers.d config file cat >sslh.sysusers.conf <version.h %configure %make_build USESYSTEMD=1 # Convert ChangeLog to UTF-8 iconv --from=ISO-8859-1 --to=UTF-8 ChangeLog > ChangeLog.conv && \ touch -r ChangeLog ChangeLog.conv && \ mv ChangeLog.conv ChangeLog %install mkdir -p %{buildroot}%{_sbindir} mkdir -p %{buildroot}%{_sysconfdir}/sysconfig mkdir -p %{buildroot}%{_sysconfdir}/%{name} mkdir -p %{buildroot}%{_mandir}/man8 mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{_systemdgeneratordir} install -p -m 0755 sslh-fork %{buildroot}%{_sbindir}/%{name} install -p -m 0755 sslh-select %{buildroot}%{_sbindir}/%{name}-select install -p -m 0755 sslh-ev %{buildroot}%{_sbindir}/%{name}-ev install -p -m 0755 systemd-sslh-generator %{buildroot}%{_systemdgeneratordir}/systemd-sslh-generator # Install configuration install -p -m 0644 basic.cfg %{buildroot}%{_sysconfdir}/%{name}/%{name}.cfg # Replace "nobody" with "sslh" in the default configuration sed -i 's/user: "nobody";/user: "sslh";/g' %{buildroot}%{_sysconfdir}/%{name}/%{name}.cfg # Install man page and set up redirects for the alternative engines install -p -m 0644 sslh.8.gz %{buildroot}%{_mandir}/man8/ echo ".so man8/sslh.8" > %{buildroot}%{_mandir}/man8/sslh-select.8 echo ".so man8/sslh.8" > %{buildroot}%{_mandir}/man8/sslh-ev.8 # Install systemd service and socket units cat > %{buildroot}%{_unitdir}/%{name}.service << 'EOF' [Unit] Description=SSL/SSH multiplexer After=network.target Documentation=man:sslh(8) [Service] EnvironmentFile=%{_sysconfdir}/sysconfig/%{name} ExecStart=%{_sbindir}/%{name} --foreground $DAEMON_OPTS KillMode=process #Hardening PrivateTmp=true CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_NET_BIND_SERVICE CAP_NET_ADMIN ProtectSystem=full ProtectHome=true PrivateDevices=true [Install] WantedBy=multi-user.target EOF cat > %{buildroot}%{_unitdir}/%{name}.socket << 'EOF' [Unit] Description=Socket support for sslh Before=sslh.service [Socket] FreeBind=true [Install] WantedBy=sockets.target EOF # Install systemd template units cat > %{buildroot}%{_unitdir}/%{name}@.service << 'EOF' [Unit] Description=SSL/SSH multiplexer for %I After=network.target Documentation=man:sslh(8) [Service] EnvironmentFile=%{_sysconfdir}/sysconfig/%{name} ExecStart=%{_sbindir}/%{name} -F%{_sysconfdir}/%{name}/%I.cfg --foreground $DAEMON_OPTS KillMode=process #Hardening PrivateTmp=true CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_NET_BIND_SERVICE CAP_NET_ADMIN ProtectSystem=full ProtectHome=true PrivateDevices=true [Install] WantedBy=multi-user.target EOF cat > %{buildroot}%{_unitdir}/%{name}-select@.service << 'EOF' [Unit] Description=SSL/SSH multiplexer (select engine) for %I After=network.target Documentation=man:sslh(8) [Service] EnvironmentFile=%{_sysconfdir}/sysconfig/%{name} ExecStart=%{_sbindir}/%{name}-select -F%{_sysconfdir}/%{name}/%I.cfg --foreground $DAEMON_OPTS KillMode=process #Hardening PrivateTmp=true CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_NET_BIND_SERVICE CAP_NET_ADMIN ProtectSystem=full ProtectHome=true PrivateDevices=true [Install] WantedBy=multi-user.target EOF cat > %{buildroot}%{_sysconfdir}/sysconfig/%{name} << 'EOF' # # The options passed to the sslh binary can be provided here # Defaults to passing the configuration file to the daemon # DAEMON_OPTS="-F%{_sysconfdir}/%{name}/%{name}.cfg" EOF install -m0644 -D sslh.sysusers.conf %{buildroot}%{_sysusersdir}/sslh.conf %check %if %{with_tests} # Use right ip6 localhost for Fedora sed -i 's/ip6-localhost/localhost6/g' t # Build the binaries with gcc coverage enabled %make_build test %endif %post %systemd_post sslh.service %preun %systemd_preun sslh.service %postun %systemd_postun_with_restart sslh.service %files %doc README.md ChangeLog example.cfg %license COPYING %{_mandir}/man8/%{name}.8* %{_mandir}/man8/%{name}-select.8* %{_mandir}/man8/%{name}-ev.8* %{_sbindir}/%{name} %{_sbindir}/%{name}-select %{_sbindir}/%{name}-ev %{_unitdir}/%{name}.service %{_unitdir}/%{name}.socket %{_unitdir}/%{name}@.service %{_unitdir}/%{name}-select@.service %{_systemdgeneratordir}/systemd-sslh-generator %dir %{_sysconfdir}/%{name} %config(noreplace) %{_sysconfdir}/%{name}/%{name}.cfg %config(noreplace) %{_sysconfdir}/sysconfig/%{name} %{_sysusersdir}/sslh.conf %changelog ## START: Generated by rpmautospec * Mon Jul 20 2026 Filipe Rosset - 2.3.1-6 - drop ix86 support * Fri Jul 17 2026 Fedora Release Engineering - 2.3.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild * Sun Jun 21 2026 Filipe Rosset - 2.3.1-4 - opt-in to packit for rawhide [skip changelog] * Sun Jun 21 2026 Filipe Rosset - 2.3.1-3 - simplify .gitignore file [skip changelog] * Sun Jun 21 2026 Filipe Rosset - 2.3.1-1 - rebuilt for version 2.3.1 fixes rhbz#1856025 rhbz#2454296 rhbz#2128374 - modernized packaging, enabled generator, templates, and libev support * Sat Jan 17 2026 Fedora Release Engineering - 1.21c-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild * Wed Dec 17 2025 Tom Callaway - 1.21c-14 - rebuild for new libconfig * Fri Jul 25 2025 Fedora Release Engineering - 1.21c-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild * Tue Feb 11 2025 Zbigniew Jędrzejewski-Szmek - 1.21c-12 - Add sysusers.d config file to allow rpm to create users/groups automatically * Sun Jan 19 2025 Fedora Release Engineering - 1.21c-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild * Mon Jul 29 2024 Miroslav Suchý - 1.21c-10 - convert license to SPDX * Sat Jul 20 2024 Fedora Release Engineering - 1.21c-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Sat Jan 27 2024 Fedora Release Engineering - 1.21c-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sat Jul 22 2023 Fedora Release Engineering - 1.21c-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Sat Jan 21 2023 Fedora Release Engineering - 1.21c-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Sat Jul 23 2022 Fedora Release Engineering - 1.21c-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Sat Jan 22 2022 Fedora Release Engineering - 1.21c-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Jul 23 2021 Fedora Release Engineering - 1.21c-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.21c-2 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. * Mon Feb 08 2021 Alex Perez - 1.21c-1 - Update to 1.21c * Wed Jan 27 2021 Fedora Release Engineering - 1.20-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Wed Jul 29 2020 Fedora Release Engineering - 1.20-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Fri Jan 31 2020 Fedora Release Engineering - 1.20-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Mon Aug 12 2019 James Hogarth - 1.20-1 - Update to 1.20 upstream * Sat Jul 27 2019 Fedora Release Engineering - 1.19c-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Sun Feb 03 2019 Fedora Release Engineering - 1.19c-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Fri Jan 25 2019 Petr Pisar - 1.19c-4 - Rebuild against patched libpcreposix library (bug #1667614) * Sat Jul 14 2018 Fedora Release Engineering - 1.19c-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Wed May 09 2018 James Hogarth - 1.19c-2 - Fix wrong path bz#1574831 * Wed Apr 18 2018 James Hogarth - 1.19c-1 - Update to 1.19c upstream * Fri Feb 09 2018 Igor Gnatenko - 1.18-6 - Escape macros in %%changelog * Thu Nov 30 2017 James Hogarth - 1.18-5 - Remove dependency on libwrap for F28+ as per accepted change * Thu Aug 03 2017 Fedora Release Engineering - 1.18-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Thu Jul 27 2017 Fedora Release Engineering - 1.18-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Sat Feb 11 2017 Fedora Release Engineering - 1.18-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Wed Mar 30 2016 James Hogarth - 1.18-1 - Update to 1.18 upstream - Add systemd socket template - Add %%check to rpm spec * Fri Feb 05 2016 Fedora Release Engineering - 1.17-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Thu Sep 17 2015 James Hogarth - 1.17-4 - Bug in systemd unit with incorrect variable usage BZ#1264140 * Mon Jul 20 2015 James Hogarth - 1.17-3 - Make sslh.cfg argument overrideable from sysconfig BZ#1221320 * Fri Jun 19 2015 Fedora Release Engineering - 1.17-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Wed Mar 18 2015 James Hogarth - 1.17-1 - Initial packaging of sslh 1.17 ## END: Generated by rpmautospec