TCP/HTTP proxy and load balancer for high availability environments
CentOS Sources
2019-02-05 e85275f8cb6f60b7eed232f77731dd7891f9068c
commit | author | age
281870 1 %{?scl:%scl_package haproxy}
CS 2 %{!?scl:%global pkg_name %{name}}
3
4 %define haproxy_user    haproxy
5 %define haproxy_group   %{haproxy_user}
6 %define haproxy_home    %{_root_localstatedir}/lib/haproxy
7 %define haproxy_confdir %{_sysconfdir}/haproxy
8 %define haproxy_datadir %{_datadir}/haproxy
9
10 %global _hardened_build 1
11
12 %if 0%{!?scl:1}
13 %global _root_sbindir %{_sbindir}
14 %global _root_sysconfdir %{_sysconfdir}
15 %global _root_localstatedir %{_localstatedir}
16 %endif
17
18 Name:           %{?scl_prefix}haproxy
19 Version:        1.8.4
e85275 20 Release:        4%{?dist}
281870 21 Summary:        TCP/HTTP proxy and load balancer for high availability environments
CS 22
23 Group:          System Environment/Daemons
24 License:        GPLv2+
25
26 URL:            http://www.haproxy.org/
27 Source0:        http://www.haproxy.org/download/1.8/src/%{pkg_name}-%{version}.tar.gz
28 Source1:        %{pkg_name}.service
29 Source2:        %{pkg_name}.cfg
30 Source3:        %{pkg_name}.logrotate
31 Source4:        %{pkg_name}.sysconfig
32 Source5:        halog.1
66a23a 33
CS 34 Patch1: 0001-BUG-CRITICAL-h2-fix-incorrect-frame-length-check.patch
7d625a 35 Patch2: 0002-BUG-CRITICAL-hpack-fix-improper-sign-check-header-index.patch
e85275 36 Patch3: 0003-BUG-CRITICAL-fix-handling-priority-flag-HTTP2-decoder.patch
281870 37
CS 38 BuildRequires:  pcre-devel
39 BuildRequires:  zlib-devel
40 BuildRequires:  openssl-devel
41 BuildRequires:  systemd-units
42 BuildRequires:  systemd-devel
43 %if 0%{!?scl:1}
44 BuildRequires:  scl-utils-build
45 %endif
46
47 %{?scl:Requires: %scl_runtime}
48
49 Requires(pre):      shadow-utils
50 Requires(post):     systemd
51 Requires(preun):    systemd
52 Requires(postun):   systemd
53
54 %description
55 HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
56 availability environments. Indeed, it can:
57  - route HTTP requests depending on statically assigned cookies
58  - spread load among several servers while assuring server persistence
59    through the use of HTTP cookies
60  - switch to backup servers in the event a main server fails
61  - accept connections to special ports dedicated to service monitoring
62  - stop accepting connections without breaking existing ones
63  - add, modify, and delete HTTP headers in both directions
64  - block requests matching particular patterns
65  - report detailed status to authenticated users from a URI
66    intercepted by the application
67
68 %if 0%{?scl:1}
69 %scl_syspaths_package -d
70 %endif
71
72 %prep
73 %setup -q -n %{pkg_name}-%{version}
66a23a 74 %patch1 -p1
7d625a 75 %patch2 -p1
e85275 76 %patch3 -p1
281870 77
CS 78 %build
79 regparm_opts=
80 %ifarch %ix86 x86_64
81 regparm_opts="USE_REGPARM=1"
82 %endif
83
84 %{__make} %{?_smp_mflags} CPU="generic" TARGET="linux2628" USE_OPENSSL=1 USE_PCRE=1 USE_ZLIB=1 ${regparm_opts} ADDINC="%{optflags}" USE_LINUX_TPROXY=1 ADDLIB="%{__global_ldflags}" USE_SYSTEMD=1
85
86 pushd contrib/halog
87 %{__make} halog OPTIMIZE="%{optflags}"
88 popd
89
90 pushd contrib/iprange
91 %{__make} iprange OPTIMIZE="%{optflags}"
92 popd
93
94 %install
95 %{__make} install-bin DESTDIR=%{buildroot} PREFIX=%{_prefix} TARGET="linux2628"
96 %{__make} install-man DESTDIR=%{buildroot} PREFIX=%{_prefix}
97
98 %{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
99 %{__install} -p -D -m 0644 %{SOURCE2} %{buildroot}%{haproxy_confdir}/%{pkg_name}.cfg
100 %{__install} -p -D -m 0644 %{SOURCE3} %{buildroot}%{_root_sysconfdir}/logrotate.d/%{name}
101 %{__install} -p -D -m 0644 %{SOURCE4} %{buildroot}%{_root_sysconfdir}/sysconfig/%{name}
102 %{__install} -p -D -m 0644 %{SOURCE5} %{buildroot}%{_mandir}/man1/halog.1
103 %{__install} -d -m 0755 %{buildroot}%{haproxy_home}
104 %if 0%{?scl:1}
105 %{__install} -d -m 0755 %{buildroot}%{_localstatedir}/lib/%{pkg_name}
106 %endif
107 %{__install} -d -m 0755 %{buildroot}%{haproxy_datadir}
108 %{__install} -d -m 0755 %{buildroot}%{_bindir}
109 %{__install} -p -m 0755 ./contrib/halog/halog %{buildroot}%{_bindir}/halog
110 %{__install} -p -m 0755 ./contrib/iprange/iprange %{buildroot}%{_bindir}/iprange
111 %{__install} -p -m 0644 ./examples/errorfiles/* %{buildroot}%{haproxy_datadir}
112
113 for httpfile in $(find ./examples/errorfiles/ -type f)
114 do
115     %{__install} -p -m 0644 $httpfile %{buildroot}%{haproxy_datadir}
116 done
117
118 %{__rm} -rf ./examples/errorfiles/
119
120 find ./examples/* -type f ! -name "*.cfg" -exec %{__rm} -f "{}" \;
121
122 for textfile in $(find ./ -type f -name "*.txt" -o -name README)
123 do
124     %{__mv} $textfile $textfile.old
125     iconv --from-code ISO8859-1 --to-code UTF-8 --output $textfile $textfile.old
126     %{__rm} -f $textfile.old
127 done
128
129 # scl paths fixes
130 %if 0%{?scl:1}
131 sed -i \
132     -e 's|%{_root_sysconfdir}/sysconfig/%{pkg_name}|%{_root_sysconfdir}/sysconfig/%{name}|g' \
133     -e 's|%{_root_sbindir}|%{_sbindir}|g' \
134     -e 's|/run/%{pkg_name}.pid|/run/%{name}.pid|g' \
135     -e 's|%{_root_sysconfdir}/haproxy|%{haproxy_confdir}|g' \
136     %{buildroot}%{_unitdir}/%{name}.service
137
138 sed -i \
139     -e 's|%{_root_localstatedir}/log|%{_localstatedir}/log|g' \
140     -e 's|%{_root_localstatedir}/lib/%{pkg_name}|%{_localstatedir}/lib/%{pkg_name}|g' \
141     -e 's|/run/%{pkg_name}|/run/%{name}|g' \
142     %{buildroot}%{haproxy_confdir}/%{pkg_name}.cfg
143
144 sed -i \
145     -e 's|%{_root_localstatedir}/log|%{_localstatedir}/log|g' \
146     %{buildroot}%{_root_sysconfdir}/logrotate.d/%{name}
147
148 %scl_syspaths_install_wrapper -n haproxy -m link %{haproxy_confdir}/%{pkg_name}.cfg %{_root_sysconfdir}/haproxy/%{pkg_name}.cfg
149 %scl_syspaths_install_wrapper -n haproxy -m link %{_unitdir}/%{name}.service %{_unitdir}/%{pkg_name}.service
150
151 %endif
152
153 %pre
154 getent group %{haproxy_group} >/dev/null || groupadd -f -g 188 -r %{haproxy_group}
155 if ! getent passwd %{haproxy_user} >/dev/null ; then
156     if ! getent passwd 188 >/dev/null ; then
157         useradd -r -u 188 -g %{haproxy_group} -d %{haproxy_home} -s /sbin/nologin -c "haproxy" %{haproxy_user}
158     else
159         useradd -r -g %{haproxy_group} -d %{haproxy_home} -s /sbin/nologin -c "haproxy" %{haproxy_user}
160     fi
161 fi
162
163 %post
164 %systemd_post %{name}.service
165 %if 0%{?scl:1}
166 semanage fcontext -d "%{_unitdir}/%{name}.service" >/dev/null 2>&1 || :
167 semanage fcontext -a -e "%{_unitdir}/%{pkg_name}.service" "%{_unitdir}/%{name}.service" >/dev/null 2>&1 || :
168 semanage fcontext -a -e /var/run/%{pkg_name}.sock /var/run/%{name}.sock
169 semanage fcontext -a -e /var/run/%{pkg_name}.stat /var/run/%{name}.stat
170 selinuxenabled && load_policy || :
171 restorecon -R "%{?_scl_root}/" >/dev/null 2>&1 || :
172 restorecon -R "%{_sysconfdir}" >/dev/null 2>&1 || :
173 restorecon -R "%{_localstatedir}" >/dev/null 2>&1 || :
174 restorecon "%{_unitdir}/%{name}.service" >/dev/null 2>&1 || :
175 %endif
176
177 %preun
178 %systemd_preun %{name}.service
179
180 %postun
181 %systemd_postun_with_restart %{name}.service
182
183 %files
184 %defattr(-,root,root,-)
185 %doc doc/* examples/
186 %doc CHANGELOG LICENSE README ROADMAP VERSION
187 %dir %{haproxy_confdir}
188 %dir %{haproxy_datadir}
189 %{haproxy_datadir}/*
190 %config(noreplace) %{haproxy_confdir}/%{pkg_name}.cfg
191 %config(noreplace) %{_root_sysconfdir}/logrotate.d/%{name}
192 %config(noreplace) %{_root_sysconfdir}/sysconfig/%{name}
193 %{_unitdir}/%{name}.service
194 %{_sbindir}/%{pkg_name}
195 %{_bindir}/halog
196 %{_bindir}/iprange
197 %{_mandir}/man1/*
198 %attr(-,%{haproxy_user},%{haproxy_group}) %dir %{haproxy_home}
199 %if 0%{?scl:1}
200 %attr(-,%{haproxy_user},%{haproxy_group}) %dir %{_localstatedir}/lib/%{pkg_name}
201 %endif
202
203 %if 0%{?scl:1}
204 %scl_syspaths_files -n %{pkg_name}
205 %endif
206
207 %changelog
e85275 208 * Mon Jan 14 2019 Ryan O'Hara <rohara@redhat.com> - 1.8.4-4
CS 209 - Fix handling of priority flag in HTTP2 decoder (#1663083)
210
7d625a 211 * Wed Sep 19 2018 Ryan O'Hara <rohara@redhat.com> - 1.8.4-3
e85275 212 - Fix improper sign check on the header index value (#1630503)
7d625a 213
66a23a 214 * Tue May 01 2018 Ryan O'Hara <rohara@redhat.com> - 1.8.4-2
CS 215 - Fix incorrect HTTP/2 frame length check (#1569808)
216
281870 217 * Thu Nov 30 2017 Ryan O'Hara <rohara@redhat.com> - 1.8.4-1
CS 218 - Initial packaging (#1536138)