#
# spec file for package CASA (Version 1.5.0)
#
# Copyright (c) 2005 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://www.suse.de/feedback/
#

# norootforbuild
# neededforbuild  gnome-filesystem mono

BuildRequires: aaa_base acl attr bash bind-utils bison bzip2 coreutils cpio cpp cracklib cvs cyrus-sasl db devs diffutils e2fsprogs file filesystem fillup findutils flex gawk gdbm-devel glibc glibc-devel glibc-locale gpm grep groff gzip info insserv kbd less libacl libattr libgcc libselinux libstdc++ libxcrypt m4 make man mktemp module-init-tools ncurses ncurses-devel net-tools netcfg openldap2-client openssl pam pam-modules patch permissions popt procinfo procps psmisc pwdutils rcs readline sed strace syslogd sysvinit tar tcpd texinfo timezone unzip util-linux vim zlib zlib-devel autoconf automake binutils gcc gdbm gettext gnome-filesystem libtool perl rpm

Name:         CASA
URL:          http://www.novell.com/products
%define prefix /opt/novell
License:      Commercial, Other License(s), see package
Group:        Productivity/Other
Autoreqprov:  on
Version:      1.5.0
Release:      0
Summary:      Novell Common Authentication Service Adapter (CASA)
Source:       %{name}-%{version}.tar.bz2
BuildRoot:    %{_tmppath}/%{name}-%{version}-build
Requires:     mono >= 1.1.8
ExclusiveArch: %ix86 x86_64
NoSource:     0

%description
NOVELL Common Authentication Service Adapter (CASA).

%package devel
Summary:      Include Files and Libraries mandatory for Development.
Group:        Productivity/Other
Requires:     CASA = %{version}-%{release}
Provides:     CASA-devel

%description devel 
This package contains all necessary include files and libraries needed
to develop applications that require these.

%prep
%setup -q

%ifarch x86_64
%define binsource bin64
%define libsource lib64
%else
%define binsource bin
%define libsource lib
%endif


%build
mk-cai-all

mkdir -p %{buildroot}%{prefix}
mkdir %{buildroot}%{prefix}/CASA
#mkdir %{buildroot}%{prefix}/%{_lib}
mkdir %{buildroot}%{prefix}/CASA/%{_lib}
#mkdir %{buildroot}%{prefix}/bin
mkdir %{buildroot}%{prefix}/CASA/bin
#mkdir %{buildroot}%{prefix}/include
mkdir %{buildroot}%{prefix}/CASA/include
mkdir %{buildroot}%{prefix}/CASA/images
mkdir -p %{buildroot}/%{_lib}/security

install -m 755 %{_lib}/lux/ndbg/libmicasa.so.%version %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/libad_gk.so.%version %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/libkwallets_rw.so.%version %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/libjmicasa.so.%version %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.miCASAWrapper.dll %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.Common.dll %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.A-D.dll %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.CASAPolicy.dll %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.DataEngines.GnomeKeyring.dll %{buildroot}%{prefix}/CASA/%{_lib}
install -m 755 %{_lib}/lux/ndbg/Novell.CASA.DataEngines.KWallet.dll %{buildroot}%{prefix}/CASA/%{_lib}

install -m 755 %{binsource}/lux/ndbg/micasad.exe %{buildroot}%{prefix}/CASA/%{binsource}
install -m 755 %{binsource}/lux/ndbg/CASATrayApp.exe %{buildroot}%{prefix}/CASA/%{binsource}
install -m 755 %{binsource}/lux/ndbg/CASAManager.exe %{buildroot}%{prefix}/CASA/%{binsource}
install -m 755 c_gui/CASAManager.sh %{buildroot}%{prefix}/CASA/%{binsource}
cp -f c_gui/images/* %{buildroot}%{prefix}/CASA/images
install -m 755 c_micasad/startup/micasad %{buildroot}%{prefix}/CASA/%{binsource}
install -m 755 c_micasad/startup/micasad.sh %{buildroot}%{prefix}/CASA/%{binsource}

install -m 755 %{_lib}/lux/ndbg/pam_micasa.so %{buildroot}/%{_lib}/security
cp -f include/micasa.h %{buildroot}%{prefix}/CASA/include/
cp -f include/micasa_mgmd.h %{buildroot}%{prefix}/CASA/include/

%install
install -d %{buildroot}%{prefix}/%{_lib}
install -d %{buildroot}%{prefix}/bin
install -d %{buildroot}%{prefix}/include
install -d %{buildroot}%{prefix}/CASA/%{_lib}
install -d %{buildroot}%{prefix}/CASA/bin
install -d %{buildroot}%{prefix}/CASA/doc
install -d %{buildroot}%{prefix}/CASA/include
install -d %{buildroot}%{prefix}/CASA/images
install -d %{buildroot}/%{_lib}/security


#install -m 644 %{buildroot}%{prefix}/%libsource/miCASA.jar %{buildroot}%{prefix}/CASA/%{_lib}
#install -m 644 doc/CASA_Admin_Guide.pdf %{buildroot}%{prefix}/CASA/doc
#install -m 644 doc/miCASA_API_Guide.pdf %{buildroot}%{prefix}/CASA/doc
#install -m 644 doc/README.txt %{buildroot}%{prefix}/CASA/doc

ln -s ../CASA/bin/micasad.exe %{buildroot}%{prefix}/bin/micasad.exe
ln -s ../CASA/bin/micasad.sh %{buildroot}%{prefix}/bin/micasad.sh
ln -s ../CASA/bin/micasad %{buildroot}%{prefix}/bin/micasad
ln -s ../CASA/bin/CASAManager.exe %{buildroot}%{prefix}/bin/CASAManager.exe
ln -s ../CASA/bin/CASAManager.sh %{buildroot}%{prefix}/bin/CASAManager.sh
ln -s ../CASA/bin/CASATrayApp.exe %{buildroot}%{prefix}/bin/CASATrayApp.exe

ln -s libmicasa.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libmicasa.so
ln -s libmicasa.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libmicasa.so.1
ln -s libjmicasa.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libjmicasa.so
ln -s libjmicasa.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libjmicasa.so.1
#ln -s miCASA.jar %{buildroot}%{prefix}/CASA/%{_lib}/jmiCASA.jar

ln -s ../CASA/%{_lib}/libmicasa.so %{buildroot}%{prefix}/%{_lib}/libmicasa.so
ln -s ../CASA/%{_lib}/libmicasa.so.1 %{buildroot}%{prefix}/%{_lib}/libmicasa.so.1
ln -s ../CASA/%{_lib}/libjmicasa.so %{buildroot}%{prefix}/%{_lib}/libjmicasa.so
ln -s ../CASA/%{_lib}/libjmicasa.so.1 %{buildroot}%{prefix}/%{_lib}/libjmicasa.so.1
#ln -s ../CASA/%{_lib}/miCASA.jar %{buildroot}%{prefix}/%{_lib}/jmiCASA.jar
ln -s ../CASA/%{_lib}/Novell.CASA.miCASAWrapper.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.miCASAWrapper.dll
ln -s ../CASA/%{_lib}/Novell.CASA.Common.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.Common.dll
ln -s ../CASA/%{_lib}/Novell.CASA.CASAPolicy.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.CASAPolicy.dll
ln -s ../CASA/%{_lib}/Novell.CASA.A-D.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.A-D.dll
ln -s ../CASA/%{_lib}/Novell.CASA.DataEngines.GnomeKeyring.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.DataEngines.GnomeKeyring.dll
ln -s ../CASA/%{_lib}/Novell.CASA.DataEngines.KWallet.dll %{buildroot}%{prefix}/%{_lib}/Novell.CASA.DataEngines.KWallet.dll

ln -s libkwallets_rw.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libkwallets_rw.so
ln -s libkwallets_rw.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libkwallets_rw.so.1
ln -s libad_gk.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libad_gk.so
ln -s libad_gk.so.%{version} %{buildroot}%{prefix}/CASA/%{_lib}/libad_gk.so.1

ln -s ../CASA/include/micasa.h %{buildroot}%{prefix}/include/micasa.h
ln -s ../CASA/include/micasa_mgmd.h %{buildroot}%{prefix}/include/micasa_mgmd.h

mkdir -p %{buildroot}/etc/init.d
cp %{buildroot}%{prefix}/CASA/bin/micasad %{buildroot}/etc/init.d

%ifarch x86_64
echo "/opt/novell/CASA/lib64/" >> /etc/ld.so.conf
/sbin/ldconfig
%else
echo "/opt/novell/CASA/lib/" >> /etc/ld.so.conf
/sbin/ldconfig
%endif


%post
        insserv /etc/init.d/micasad	
        perl -e '
        my @fileList = ("/etc/pam.d/xdm", "/etc/pam.d/gdm", "/etc/pam.d/kdm", "/etc/pam.d/login", "/etc/pam.d/sshd");
        for (my $j = 0; $j <= $#fileList; $j++) 
        {
            my $filename = $fileList [$j];
            if (-e $filename)
            {
                print "Adding PAM module to $filename\n";
                my $auth_line_to_be_inserted = "auth        required        pam_micasa.so";
                my $session_line_to_be_inserted = "session        required        pam_micasa.so";
                open (FILE, "<$filename") || die ("Cannot open file reading");
                my @data = <FILE>;

                close (FILE);

                my $auth_index = 0;
                my $session_index = 0;
                for (my $i = 0; $i <= $#data; $i++) 
                {
                    my $line = $data [$i];
                    if ($line =~ /^auth.*/) 
                    {
                        $auth_index = $i;
                    }
                    if ($line =~ /^session.*/) 
                    {
                        $session_index = $i;
                    }
                }

                open (FILE, ">$filename") || die ("Cannot open file for writing");
                for (my $i = 0; $i <= $#data; $i++) 
                {
                    print FILE $data [$i];
                    if ($i == $auth_index) 
                    {
                        print FILE $auth_line_to_be_inserted."\n";
                    }
                    if ($i == $session_index) 
                    {
                        print FILE $session_line_to_be_inserted."\n";
                    }
                }
            }
        }
        '

%preun

perl -e '

    my @fileList = ("/etc/pam.d/xdm", "/etc/pam.d/gdm", "/etc/pam.d/kdm", "/etc/pam.d/login", "/etc/pam.d/sshd" );
    for (my $j = 0; $j <= $#fileList; $j++)
    {
        my $filename = $fileList [$j];
        if (-e $filename)
        {
            print "Removing PAM module from $filename\n";
            open (FILE, "<$filename") || die ("Cannot open file reading");

            my @data = <FILE>;

            close (FILE);

            open (FILE, ">$filename") || die ("Cannot open file for writing");
            for (my $i = 0; $i <= $#data; $i++)
            {
                my $line = $data [$i];
                if ($line =~ /pam_micasa.so/) 
                {
                }
                else
                {
                    print FILE $data [$i];
                } 
            }
            close (FILE);
        }
    }
    '
insserv -r /etc/init.d/micasad


%clean
#rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%dir %{prefix}
%dir %{prefix}/CASA
%dir %{prefix}/%{_lib}
%dir %{prefix}/%{_lib}/*
%dir %{prefix}/CASA/%{_lib}
%dir %{prefix}/CASA/%{_lib}/*
%dir %{prefix}/bin
%dir %{prefix}/bin/*
%dir %{prefix}/CASA/bin
%dir %{prefix}/CASA/bin/*
%dir %{prefix}/CASA/doc
%dir %{prefix}/CASA/images
%dir %{prefix}/CASA/images/*

/etc/init.d/micasad
/%{_lib}/security/pam_micasa.so

%files devel 
%defattr(-,root,root)
%{prefix}/include
%{prefix}/CASA/include
%{prefix}/CASA/%{_lib}/*.so
#%{prefix}/CASA/doc/miCASA_API_Guide.pdf


%changelog -n CASA