%define  dotests 1

Name:           mod_auth_gssapi
Version:        1.6.3
Release:        2
Summary:        A GSSAPI Authentication module for Apache

License:        MIT
URL:            https://github.com/gssapi/mod_auth_gssapi
Source0:        https://github.com/gssapi/%{name}/releases/download/v%{version}/%name-%{version}.tar.gz
Source1:	%{name}.conf
Source2:	%{name}.conf_64
Patch0: 	mod_auth_gssapi-1.6.3-hardcode-krb5-libs.patch
BuildRequires:  httpd-devel >= 2.4.46, krb5-devel >= 1.18.3
BuildRequires:  bison >= 3.5.1, flex >= 2.6.4
BuildRequires:  git >= 2.20.4
Requires:       krb5-libs >= 1.18.3
Requires: 	libgcc >= 10.3.0
Requires:	httpd >= 2.4.54

Provides:      %{name} = %{version}-%{release}

%define _libdir64 %{_libdir}64

%description
The mod_auth_gssapi module is an authentication service that implements the
SPNEGO based HTTP Authentication protocol defined in RFC4559.

%prep
%setup -q -n %{name}-%{version}
%patch0

export PATH=/opt/freeware/bin:$PATH

rm -rf   /tmp/%{name}-%{version}-32bit
cp -pr . /tmp/%{name}-%{version}-32bit
rm -fr *
mv       /tmp/%{name}-%{version}-32bit 32bit
cp -pr 32bit 64bit

%build

# OpenSSL's header and library dependencies.
export OPENSSL_LIBS="-L/usr/lib -lcrypto -lssl"
export OPENSSL_CFLAGS="-I/usr/include/openssl"

# build on 64bit mode
cd 64bit
export OBJECT_MODE=64
export CC="gcc -maix64 -O2"
export LDFLAGS="-L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib64:/opt/freeware/lib:/usr/lib:/lib"
export APXS=/opt/freeware/bin/apxs_64
export KRB5_CONFIG=/opt/freeware/bin/krb5-config_64
export APACHE="/opt/freeware/sbin/httpd_64"
export PKG_CONFIG_PATH=""
./configure \
    --prefix=%{_prefix} \
    --bindir=%{_prefix}/bin \
    --libdir=%{_libdir64} 
gmake %{?_smp_mflags}

if [ "%{dotests}" == 1 ]
then
    (gmake -k check || true)
fi


# build on 32bit mode
cd ../32bit
export OBJECT_MODE=32
export CC="gcc -maix32 -O2 -D_LARGE_FILES"
export LDFLAGS="-L/opt/freeware/lib -Wl,-blibpath:/opt/freeware/lib:/usr/lib:/lib -Wl,-bmaxdata:0x80000000"
export APXS=/opt/freeware/bin/apxs
export KRB5_CONFIG=/opt/freeware/bin/krb5-config_32
export APACHE="/opt/freeware/sbin/httpd"
./configure \
    --prefix=%{_prefix} \
    --bindir=%{_prefix}/bin \
    --libdir=%{_libdir} 
gmake %{?_smp_mflags}

if [ "%{dotests}" == 1 ]
then
    (gmake -k check || true)
fi


%install
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}

# install on 64bit mode
cd 64bit
export OBJECT_MODE=64
mkdir -p ${RPM_BUILD_ROOT}%{_libdir64}/httpd/modules
cp src/.libs/mod_auth_gssapi.so ${RPM_BUILD_ROOT}%{_libdir64}/httpd/modules/mod_auth_gssapi.so
chmod 0755 ${RPM_BUILD_ROOT}%{_libdir64}/httpd/modules/mod_auth_gssapi.so

# Apache configuration for the module
#echo "LoadModule auth_gssapi_module modules/mod_auth_gssapi.so" > auth_gssapi.conf_64
#mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra
#install -m 644 auth_gssapi.conf_64 ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra

mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra
cp %{SOURCE2} ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf_64
chmod 0644 ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf_64


# install on 32bit mode
cd ../32bit
export OBJECT_MODE=32
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/httpd/modules
cp src/.libs/mod_auth_gssapi.so ${RPM_BUILD_ROOT}%{_libdir}/httpd/modules/mod_auth_gssapi.so
chmod 0755 ${RPM_BUILD_ROOT}%{_libdir}/httpd/modules/mod_auth_gssapi.so

# Apache configuration for the module
#echo "LoadModule auth_gssapi_module modules/mod_auth_gssapi.so" > auth_gssapi.conf
#mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra
#install -m 644 auth_gssapi.conf ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra

cp %{SOURCE1} ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf
chmod 0644 ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf

%post
cat %{_sysconfdir}/httpd/conf/httpd.conf | \
  grep -v "# auth_gssapi settings" | \
  grep -v "Include conf/extra/auth_gssapi.conf" \
  > %{_sysconfdir}/httpd/conf/tmp_httpd.conf
mv -f %{_sysconfdir}/httpd/conf/tmp_httpd.conf %{_sysconfdir}/httpd/conf/httpd.conf
cat %{_sysconfdir}/httpd/conf/httpd.conf_64 | \
  grep -v "# auth_gssapi settings" | \
  grep -v "Include conf/extra/auth_gssapi.conf_64" \
  > %{_sysconfdir}/httpd/conf/tmp_httpd.conf_64
mv -f %{_sysconfdir}/httpd/conf/tmp_httpd.conf_64 %{_sysconfdir}/httpd/conf/httpd.conf_64

echo "# auth_gssapi settings" >> %{_sysconfdir}/httpd/conf/httpd.conf
echo "Include conf/extra/auth_gssapi.conf" >> %{_sysconfdir}/httpd/conf/httpd.conf
echo "# auth_gssapi settings" >> %{_sysconfdir}/httpd/conf/httpd.conf_64
echo "Include conf/extra/auth_gssapi.conf_64" >> %{_sysconfdir}/httpd/conf/httpd.conf_64
echo "Please restart your web server using: '/opt/freeware/sbin/apachectl restart'"


%postun
if [ "$1" = 0 ]; then
    cat %{_sysconfdir}/httpd/conf/httpd.conf | \
      grep -v "# auth_gssapi settings" | \
      grep -v "Include conf/extra/auth_gssapi.conf" \
      > %{_sysconfdir}/httpd/conf/tmp_httpd.conf
    mv -f %{_sysconfdir}/httpd/conf/tmp_httpd.conf %{_sysconfdir}/httpd/conf/httpd.conf
    cat %{_sysconfdir}/httpd/conf/httpd.conf_64 | \
      grep -v "# auth_gssapi settings" | \
      grep -v "Include conf/extra/auth_gssapi.conf_64" \
      > %{_sysconfdir}/httpd/conf/tmp_httpd.conf_64
    mv -f %{_sysconfdir}/httpd/conf/tmp_httpd.conf_64 %{_sysconfdir}/httpd/conf/httpd.conf_64

    echo "Please restart your web server using: '/opt/freeware/sbin/apachectl restart'"
fi


%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}


%files
%defattr(-,root,system)
%doc
%doc 32bit/README 32bit/COPYING
%config(noreplace) %{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf
%config(noreplace) %{_sysconfdir}/httpd/conf/extra/auth_gssapi.conf_64
%{_libdir}/httpd/modules/*.so
%{_libdir64}/httpd/modules/*.so


%changelog
* Mon Jan 30 2023 Reshma V Kumar <reskumar@in.ibm.com> - 1.6.3-2
- Rebuild with openssl 1.1.1

* Thu May 27 2021 Rishita Saha <risaha16@in.ibm.com> - 1.6.3-1
- Initial port to AIX Toolbox

* Tue Mar 16 2021 Robbie Harwood <rharwood@redhat.com> - 1.6.3-3
- Build dep adjustments; no Fedora code changes

* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Wed Aug 05 2020 Robbie Harwood <rharwood@redhat.com> - 1.6.3-1
- New upstream release (1.6.3)

* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Mon Apr 27 2020 Robbie Harwood <rharwood@redhat.com> - 1.6.2-1
- New upstream release (1.6.2)
- Resolves: #1828142

* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Mon Mar 18 2019 Robbie Harwood <rharwood@redhat.com> - 1.6.1-6
- Test suite fixes for virtualenv and clang

* Tue Feb 19 2019 Robbie Harwood <rharwood@redhat.com> - 1.6.1-5
- Fix integer sizes used with ap_set_flag_slot()
- Resolves: #1678872

* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild

* Thu Jan 03 2019 Robbie Harwood <rharwood@redhat.com> - 1.6.1-3
- Fix tests to work with python3

* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Mon Apr 23 2018 Robbie Harwood <rharwood@redhat.com> - 1.6.1-1
- Release 1.6.1
- Resolves: #1570271

* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Mon Nov 06 2017 Robbie Harwood <rharwood@redhat.com> - 1.6.0-1
- Release 1.6.0

* Fri Oct 27 2017 Robbie Harwood <rharwood@redhat.com> - 1.5.1-6
- Document gssapi-no-negotiate

* Tue Oct 03 2017 Robbie Harwood <rharwood@redhat.com> - 1.5.1-5
- Handle extra large NSS entries
- Resolves: #1498175

* Mon Oct 02 2017 Robbie Harwood <rharwood@redhat.com> - 1.5.1-4
- Allow admins to selectively suppress negotiation
- Migrate to autosetup

* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild

* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Thu Mar  9 2017 Simo Sorce <simo@redhat.com> - 1.5.1-1
- Korabl-Sputnik 4 launch (1.5.1)

* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Mon Jan 16 2017 Simo Sorce <simo@redhat.com> - 1.5.0-1
- Last listoff of Space Shuttle Columbia release (1.5.0)

* Mon Nov 14 2016 Joe Orton <jorton@redhat.com> - 1.4.1-2
- rebuild for new OpenSSL

* Mon Aug 15 2016 Robbie Harwood <rharwood@redhat.com> 1.4.1-1
- Mishka & Chizhik fly on a rocket release (1.4.1)
- Fix bogus changelog date

* Fri Jun 17 2016 Simo Sorce <simo@redhat.com> 1.4.0-1
- Lunar Reconnaissance Orbiter (2009) release (1.4.0)

* Mon Feb 22 2016 Simo Sorce <simo@redhat.com> 1.3.2-1
- NEAR Shoemaker launch (1996) release (1.3.2)

* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Thu Sep  3 2015 Simo Sorce <simo@redhat.com> 1.3.1-1
- Viking 2 landing (1976) release (1.3.1)

* Tue Jul  7 2015 Simo Sorce <simo@redhat.com> 1.3.0-2
- Fix annoying incorrect behavior with simple configuration where
  GssapiAllowedMech is not used.

* Sat Jul  4 2015 Simo Sorce <simo@redhat.com> 1.3.0-1
- US Independence Day Release

* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Tue Apr 21 2015 Simo Sorce <simo@redhat.com> 1.2.0-1
- New minor release 1.2.0
- Adds delegation support on Basic Auth
- Response fix, send last auth token on successful auth

* Tue Mar 31 2015 Simo Sorce <simo@redhat.com> 1.1.0-3
- Fix some authentication issues

* Thu Mar 26 2015 Simo Sorce <simo@redhat.com> 1.1.0-2
- Fix saving delegated credentials for SPNs

* Thu Mar 12 2015 Simo Sorce <simo@redhat.com> 1.1.0-1
- New minor release 1.1.0
- New feature: Basic Auth support
- Improvements: Better crypto for sesison cookies

* Sat Nov  8 2014 Simo Sorce <simo@redhat.com> 1.0.4-1
- Patch release 1.0.4
- logging initialization fixes
- additional build fixes

* Sat Oct 11 2014 Simo Sorce <simo@redhat.com> 1.0.3-1
- Patch release 1.0.3
- fixes some build issues on various distros

* Wed Aug 27 2014 Simo Sorce <simo@redhat.com> 1.0.2-1
- Adds documntation to README
- fixes bad bug that crippled configuration

* Thu Aug 14 2014 Simo Sorce <simo@redhat.com> 1.0.1-1
- Patch release 1.0.1

* Mon Aug  4 2014 Simo Sorce <simo@redhat.com> 1.0.0-1
- First release
