CGSI-gSOAP-1.3.8/0000755000000000000000000000000012562602654011665 5ustar rootrootCGSI-gSOAP-1.3.8/readme.html0000644000000000000000000000236312562602635014013 0ustar rootroot CGSI-gSOAP

CGSI-gSOAP

Description

Client and server side library to secure gSOAP using the Globus Security Infrastructure.

License

CGSI-gSOAP is licensed under the Apache 2 License. See LICENSE for details.

Release Notes

See RELEASE-NOTES for a detailed changelog.

Contact

You can notify bugs or ask for feature requests via

Tracker
https://its.cern.ch/jira/browse/DMC/component/14238
Mailing list
dmc-support@cern.ch
CGSI-gSOAP-1.3.8/packaging/0000755000000000000000000000000012562602635013610 5ustar rootrootCGSI-gSOAP-1.3.8/packaging/Makefile0000644000000000000000000000434612562602635015257 0ustar rootrootNAME=CGSI-gSOAP DEB_NAME=cgsi-gsoap SPEC=rpm/$(NAME).spec VERSION=${shell grep '^Version:' $(SPEC) | awk '{print $$2}' } # Leave blank. To be overriden by CI tools. RELEASE= CWD=${shell pwd} RPMBUILD=/tmp/rpmbuild SRPMS=$(CWD) RPMS=$(CWD)/out MOCK_CHROOT=epel-6-cernonly-x86_64 MOCK_FLAGS=--verbose RPMDEFINES_SRC=--define='_topdir $(RPMBUILD)' \ --define='_sourcedir $(CWD)' \ --define='_builddir %{_topdir}/BUILD' \ --define='_srcrpmdir $(SRPMS)' \ --define='_rpmdir $(RPMS)' \ --define "_source_filedigest_algorithm md5" RPMDEFINES_BIN=--define='_topdir $(RPMBUILD)' \ --define='_sourcedir %{_topdir}/SOURCES' \ --define='_builddir %{_topdir}/BUILD' \ --define='_srcrpmdir $(SRPMS).' \ --define='_rpmdir $(RPMS)' \ --define "_binary_filedigest_algorithm md5" PBUILDER_FLAGS= PBUILDER_TMP="/tmp/" all: srpm clean: rm -fv *.tar.gz rm -fv *.rpm rm -fv *.log rm -rfv out rm -rfv "$(RPMBUILD)" rm -fv *.gz rm -fv *.dsc dist: clean tar vczf "$(NAME)-$(VERSION).tar.gz" --exclude="packaging" --exclude-vcs --exclude="*.pyc" --transform="s,^,$(NAME)-$(VERSION)/," .. $(RPMBUILD): mkdir -p "$(RPMBUILD)" override_release: $(SPEC) $(if $(RELEASE), sed -i "s/Release:.*/Release: $(RELEASE)%{?dist}/g" "$(SPEC)") srpm: dist $(SPEC) $(RPMBUILD) override_release /usr/bin/rpmbuild --nodeps -bs $(RPMDEFINES_SRC) $(SPEC) rpm: srpm /usr/bin/rpmbuild --rebuild $(RPMDEFINES_BIN) $(NAME)-$(VERSION)-*.src.rpm mock: srpm /usr/bin/mock $(MOCK_FLAGS) -r $(MOCK_CHROOT) $(NAME)-$(VERSION)-*.src.rpm deb-src: dist rm -rf "$(PBUILDER_TMP)/$(NAME)-$(VERSION)" tar xzf "$(NAME)-$(VERSION).tar.gz" -C "$(PBUILDER_TMP)" mv "$(PBUILDER_TMP)/$(NAME)-$(VERSION)" "$(PBUILDER_TMP)/$(DEB_NAME)-$(VERSION)" cp -rv debian "$(PBUILDER_TMP)/$(DEB_NAME)-$(VERSION)" $(if $(RELEASE), sed -ri "s/($(DEB_NAME) )\((([0-9]+\.)+[0-9]+)-[0-9]+\)/\\1(\\2-$(RELEASE))/g" "$(PBUILDER_TMP)/$(DEB_NAME)-$(VERSION)/debian/changelog") cp -f "$(NAME)-$(VERSION).tar.gz" "$(PBUILDER_TMP)/$(DEB_NAME)_$(VERSION).orig.tar.gz" cd "$(PBUILDER_TMP)/$(DEB_NAME)-$(VERSION)"; \ debuild -us -uc -S cp -f $(PBUILDER_TMP)/$(DEB_NAME)_$(VERSION)*.gz . cp -f $(PBUILDER_TMP)/$(DEB_NAME)_$(VERSION)*.dsc . deb: deb-src pbuilder build $(PBUILDER_FLAGS) $(DEB_NAME)_$(VERSION)*.dsc CGSI-gSOAP-1.3.8/packaging/debian/0000755000000000000000000000000012562602635015032 5ustar rootrootCGSI-gSOAP-1.3.8/packaging/debian/control0000644000000000000000000000264212562602635016441 0ustar rootrootSource: cgsi-gsoap Priority: optional Maintainer: Mattias Ellert Build-Depends: debhelper, autotools-dev, libglobus-gss-assist-dev, libglobus-gssapi-gsi-dev, gsoap, voms-dev, doxygen, pkg-config Standards-Version: 3.9.6 Section: libs Vcs-Browser: http://svn.nordugrid.org/trac/packaging/browser/debian/cgsi-gsoap Vcs-Svn: http://svn.nordugrid.org/repos/packaging/debian/cgsi-gsoap Package: libcgsi-gsoap1 Provides: cgsi-gsoap1 Replaces: cgsi-gsoap1 (<< 1.3.3.1-1) Conflicts: cgsi-gsoap1 (<< 1.3.3.1-1) Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${gsoap:Depends} Description: GSI plugin for gSOAP This is a GSI plugin for gSOAP. It uses the globus GSI libraries to implement GSI secure authentication and encryption on top of gSOAP. Package: libcgsi-gsoap-dev Provides: cgsi-gsoap-dev Replaces: cgsi-gsoap-dev (<< 1.3.3.1-1) Conflicts: cgsi-gsoap-dev (<< 1.3.3.1-1) Section: libdevel Architecture: any Depends: libcgsi-gsoap1 (= ${binary:Version}), ${misc:Depends}, gsoap Description: GSI plugin for gSOAP - development files This package provides the header files for programming with the cgsi-gsoap plugins. Package: libcgsi-gsoap-dbg Section: debug Architecture: any Priority: extra Depends: libcgsi-gsoap1 (= ${binary:Version}), ${misc:Depends} Description: GSI plugin for gSOAP - debug symbols This package provides the debug symbols for the libcgsi-gsoap1 package. CGSI-gSOAP-1.3.8/packaging/debian/libcgsi-gsoap-dev.install0000644000000000000000000000070312562602635021721 0ustar rootrootdebian/tmp/usr/include/cgsi_plugin.h debian/tmp/usr/lib/libcgsi_plugin.a debian/tmp/usr/lib/libcgsi_plugin.so debian/tmp/usr/lib/libcgsi_plugin_cpp.a debian/tmp/usr/lib/libcgsi_plugin_cpp.so debian/tmp/usr/lib/libcgsi_plugin_voms.a debian/tmp/usr/lib/libcgsi_plugin_voms.so debian/tmp/usr/lib/libcgsi_plugin_voms_cpp.a debian/tmp/usr/lib/libcgsi_plugin_voms_cpp.so debian/tmp/usr/share/man/man3/cgsi_plugin.h.3 debian/tmp/usr/share/doc/cgsi-gsoap-dev CGSI-gSOAP-1.3.8/packaging/debian/changelog0000644000000000000000000000574512562602635016717 0ustar rootrootcgsi-gsoap (1.3.8-1) unstable; urgency=medium * Update to version 1.3.8 -- Alejandro Alvarez Ayllon Wed, 12 Aug 2015 09:32:00 +0100 cgsi-gsoap (1.3.7-1) unstable; urgency=medium * Update to version 1.3.7 * Add dbg package -- Mattias Ellert Sat, 08 Nov 2014 16:46:32 +0100 cgsi-gsoap (1.3.6-1) unstable; urgency=medium * Update to version 1.3.6 * Add @brief description to header file - fixes manpage (Closes: #630033) -- Mattias Ellert Fri, 27 Jun 2014 16:45:06 +0200 cgsi-gsoap (1.3.5-3) unstable; urgency=low * Adapt to multi-arch Globus installation -- Mattias Ellert Sun, 01 Dec 2013 04:49:07 +0100 cgsi-gsoap (1.3.5-2) unstable; urgency=low * Rebuild for new gsoap * Remove DM-Upload-Allowed from debian/control -- Mattias Ellert Wed, 15 May 2013 16:59:13 +0200 cgsi-gsoap (1.3.5-1) unstable; urgency=low * Update to version 1.3.5 (EMI 2 version) -- Mattias Ellert Fri, 25 May 2012 13:28:37 +0200 cgsi-gsoap (1.3.4.2-4) unstable; urgency=low * Properly use default LDFLAGS -- Mattias Ellert Wed, 07 Dec 2011 21:49:27 +0100 cgsi-gsoap (1.3.4.2-3) unstable; urgency=low * Convert copyright file to dep5 format * Fix old Vcs links in debian/control file -- Mattias Ellert Tue, 08 Nov 2011 06:33:17 +0100 cgsi-gsoap (1.3.4.2-2) unstable; urgency=low * Use dpkg's build flags * Add versioned gsoap dependencies to the binary packages -- Mattias Ellert Wed, 02 Nov 2011 10:39:21 +0100 cgsi-gsoap (1.3.4.2-1) unstable; urgency=low * Update to version 1.3.4.2. * Build against new gsoap (Closes: #636878). * Build against new voms. -- Mattias Ellert Thu, 01 Sep 2011 21:06:28 +0200 cgsi-gsoap (1.3.4.0-1) unstable; urgency=low * Update to version 1.3.4.0. * Convert to source format 3.0. -- Mattias Ellert Mon, 20 Dec 2010 18:59:30 +0100 cgsi-gsoap (1.3.3.2-1) unstable; urgency=low * Update to version 1.3.3.2 (Closes: #515226). * Change copyright file to reflect upstream license change. * Drop the patches - all applied upstream. -- Mattias Ellert Wed, 23 Sep 2009 18:03:11 +0200 cgsi-gsoap (1.3.3.1-1) UNRELEASED; urgency=low * Update to version 1.3.3.1. -- Mattias Ellert Mon, 17 Aug 2009 13:10:34 +0200 cgsi-gsoap (1.3.2.2-3) UNRELEASED; urgency=low * Changing deprecated Source:Version to binary:Version as requested by ftpmasters. * Overriding lintian warning about non-matching soname with package name. -- Steffen Moeller Mon, 30 Mar 2009 00:02:00 +0200 cgsi-gsoap (1.3.2.2-2) UNRELEASED; urgency=low * Initial package uploaded. -- Mattias Ellert Tue, 20 Jan 2009 00:57:22 +0100 CGSI-gSOAP-1.3.8/packaging/debian/libcgsi-gsoap-dev.doc-base0000644000000000000000000000041412562602635021727 0ustar rootrootDocument: cgsi-gsoap Title: Debian CGSI-gSOAP Manual Author: EGEE Collaboration Abstract: This manual describes what cgsi-gsoap is Section: Programming Format: HTML Index: /usr/share/doc/cgsi-gsoap-dev/html/index.html Files: /usr/share/doc/cgsi-gsoap-dev/html/*.html CGSI-gSOAP-1.3.8/packaging/debian/libcgsi-gsoap1.install0000644000000000000000000000025612562602635021231 0ustar rootrootdebian/tmp/usr/lib/libcgsi_plugin.so.* debian/tmp/usr/lib/libcgsi_plugin_cpp.so.* debian/tmp/usr/lib/libcgsi_plugin_voms.so.* debian/tmp/usr/lib/libcgsi_plugin_voms_cpp.so.* CGSI-gSOAP-1.3.8/packaging/debian/docs0000644000000000000000000000001612562602635015702 0ustar rootrootRELEASE-NOTES CGSI-gSOAP-1.3.8/packaging/debian/copyright0000644000000000000000000000265312562602635016773 0ustar rootrootFormat: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: CGSI-gSOAP Upstream-Contact: Ben Couturier CERN, IT/ADC, ben.couturier@cern.ch Akos Frohner CERN, IT/GD, akos.frohner@cern.ch Source: Downloaded from cvs: glite.cvs.cern.ch See the get-orig-source rule in debian/rules for details Files: * Copyright: Copyright (c) Members of the EGEE Collaboration. 2004-2012. See http://www.eu-egee.org/partners/ for details on the copyright holders. License: Apache-2.0 Files: src/globus_gsi_gss_constants.h src/globus_i_gsi_credential.h src/gssapi_openssl.h Copyright: Copyright 1999-2006 University of Chicago License: Apache-2.0 Files: debian/* Copyright: 2008-2013, Mattias Ellert License: Apache-2.0 License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. . On Debian systems the full text of the Apache-2.0 license can be found in the /usr/share/common-licenses/Apache-2.0 file. CGSI-gSOAP-1.3.8/packaging/debian/compat0000644000000000000000000000000212562602635016230 0ustar rootroot5 CGSI-gSOAP-1.3.8/packaging/debian/rules0000755000000000000000000000734012562602635016116 0ustar rootroot#!/usr/bin/make -f # -*- makefile -*- DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) -include /usr/share/dpkg/buildflags.mk INSTALLDIR = $(CURDIR)/debian/tmp _prefix = /usr _datadir = $(_prefix)/share _docdir = $(_datadir)/doc configure: configure-stamp configure-stamp: dh_testdir [ ! -r src/Makefile.save ] && cp -p src/Makefile src/Makefile.save || : # Fix bad permissions find . '(' -name '*.h' -o -name '*.c' -o -name '*.cpp' -o \ -name '*.cc' ')' -exec chmod 644 {} ';' chmod 644 LICENSE RELEASE-NOTES # Remove -L/usr/lib and -L/usr/lib64 since they may cause problems sed -e 's!-L$$([A-Z_]*)/lib!!' \ -e 's!-L$$([A-Z_]*)/$$(LIBDIR)!!' -i src/Makefile # Remove gsoap version from library names sed -e 's!$$(GSOAP_VERSION)!!g' -i src/Makefile touch $@ build: build-indep build-arch build-indep: build-stamp build-arch: build-stamp build-stamp: configure-stamp dh_testdir . ./VERSION && \ cd src && \ $(MAKE) CFLAGS="$(CFLAGS) $(CPPFLAGS) -fPIC -I. `pkg-config --cflags gsoap`" \ GLOBUS_INCLUDE="-I/usr/include/globus -I/usr/lib/globus/include -I/usr/include/$(DEB_HOST_MULTIARCH)/globus" \ SHLIBLDFLAGS="$(LDFLAGS) -shared" \ USE_VOMS=yes WITH_EMI=yes WITH_CPP_LIBS=yes \ LIBDIR=lib VERSION=$$VERSION all doc touch $@ clean: dh_testdir dh_testroot . ./VERSION && \ cd src && \ $(MAKE) CFLAGS="$(CFLAGS) $(CPPFLAGS) -fPIC -I. `pkg-config --cflags gsoap`" \ GLOBUS_INCLUDE="-I/usr/include/globus -I/usr/lib/globus/include -I/usr/include/$(DEB_HOST_MULTIARCH)/globus" \ SHLIBLDFLAGS="$(LDFLAGS) -shared" \ USE_VOMS=yes WITH_EMI=yes WITH_CPP_LIBS=yes \ LIBDIR=lib VERSION=$$VERSION clean rm -rf src/html rm -rf src/man rm -f src/doxygen_sqlite3.db rm -rf src/*.a rm -rf src/*.so [ -r src/Makefile.save ] && mv src/Makefile.save src/Makefile || : rm -f build-stamp configure-stamp dh_clean install: build-stamp dh_testdir dh_testroot dh_prep # Yes, the makefile uses RPM_BUILD_ROOT instead of the normal DESTDIR . ./VERSION && \ cd src && \ $(MAKE) CFLAGS="$(CFLAGS) $(CPPFLAGS) -fPIC -I. `pkg-config --cflags gsoap`" \ GLOBUS_INCLUDE="-I/usr/include/globus -I/usr/lib/globus/include -I/usr/include/$(DEB_HOST_MULTIARCH)/globus" \ SHLIBLDFLAGS="$(LDFLAGS) -shared" \ USE_VOMS=yes WITH_EMI=yes WITH_CPP_LIBS=yes \ LIBDIR=lib VERSION=$$VERSION \ RPM_BUILD_ROOT=$(INSTALLDIR) install install.man mv $(INSTALLDIR)$(_docdir)/CGSI $(INSTALLDIR)$(_docdir)/cgsi-gsoap-dev binary-indep: binary-arch: install dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_install --fail-missing dh_installman dh_lintian dh_link dh_strip --dbg-package=libcgsi-gsoap-dbg dh_compress dh_fixperms dh_makeshlibs dh_installdeb dh_shlibdeps -l debian/libcgsi-gsoap1/usr/lib if [ -r /usr/lib/$(DEB_HOST_MULTIARCH)/libgsoap.so ] ; then \ GSOAPLIB=`readlink /usr/lib/$(DEB_HOST_MULTIARCH)/libgsoap.so` ; else \ GSOAPLIB=`readlink /usr/lib/libgsoap.so` ; fi && \ GSOAPPKG=`dpkg -S $$GSOAPLIB | sed 's/:.*//'` && \ echo "gsoap:Depends=$$GSOAPPKG" >> debian/libcgsi-gsoap1.substvars dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch VERSION=1.3.7 VERSTAG=1_3_7 get-orig-source: if [ -r ../cgsi-gsoap_$(VERSION).orig.tar.gz ] ; then \ echo "cgsi-gsoap_$(VERSION).orig.tar.gz is already existing." ; \ else \ echo "Fetching upstream svn version" ; \ svn export http://svn.cern.ch/guest/lcgutil/cgsi-gsoap/tags/cgsi-gsoap_R_$(VERSTAG) cgsi-gsoap-$(VERSION) ; \ echo "Packing it up." ; \ tar -z -c -f ../cgsi-gsoap_$(VERSION).orig.tar.gz \ cgsi-gsoap-$(VERSION) ; \ echo "Cleaning up." ; \ rm -rf cgsi-gsoap-$(VERSION) ; \ fi .Phony: binary binary-arch binary-indep build build-arch build-indep clean configure get-orig-source install CGSI-gSOAP-1.3.8/packaging/debian/libcgsi-gsoap1.lintian-overrides0000644000000000000000000000054512562602635023222 0ustar rootroot# The names of the packages is a mixture between Debian's principles and # the gathering of files in groups that Upstream has historically # determined. The naming should not be changed and the package not be # split. libcgsi-gsoap1 binary: package-name-doesnt-match-sonames libcgsi-plugin1 libcgsi-plugin-cpp1 libcgsi-plugin-voms1 libcgsi-plugin-voms-cpp1 CGSI-gSOAP-1.3.8/packaging/rpm/0000755000000000000000000000000012562602635014406 5ustar rootrootCGSI-gSOAP-1.3.8/packaging/rpm/CGSI-gSOAP.spec0000644000000000000000000001112412562602635016715 0ustar rootrootName: CGSI-gSOAP Version: 1.3.8 Release: 1%{?dist} Summary: GSI plugin for gSOAP Group: System Environment/Libraries License: ASL 2.0 URL: http://glite.web.cern.ch/glite/ # The source tarfile is created from a subversion checkout: # svn co http://svnweb.cern.ch/guest/lcgutil/cgsi-gsoap/tags/cgsi-gsoap_R_1_3_4_2 CGSI-gSOAP-1.3.4.2 # tar --exclude .svn -z -c -f CGSI-gSOAP-1.3.4.2.tar.gz CGSI-gSOAP-1.3.4.2 Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: globus-gss-assist-devel%{?_isa} BuildRequires: globus-gssapi-gsi-devel%{?_isa} BuildRequires: gsoap-devel%{?_isa} BuildRequires: voms-devel%{?_isa} BuildRequires: doxygen %description This is a GSI plugin for gSOAP. It uses the globus GSI libraries to implement GSI secure authentication and encryption on top of gSOAP. %package devel Summary: GSI plugin for gSOAP - development files Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gsoap-devel %description devel This package provides the header files for programming with the cgsi-gsoap plugins. %prep %setup -q # Fix bad permissions (which otherwise end up in the debuginfo package) find . '(' -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.cc' ')' \ -exec chmod 644 {} ';' chmod 644 LICENSE RELEASE-NOTES # Remove -L/usr/lib and -L/usr/lib64 since they may cause problems sed -e 's!-L$([A-Z_]*)/lib!!' \ -e 's!-L$([A-Z_]*)/$(LIBDIR)!!' -i src/Makefile # Remove gsoap version from library names sed -e 's!$(GSOAP_VERSION)!!g' -i src/Makefile %build . ./VERSION cd src make CFLAGS="%optflags -fPIC -I. `pkg-config --cflags gsoap`" \ USE_VOMS=yes WITH_EMI=yes WITH_CPP_LIBS=yes \ LIBDIR=%{_lib} VERSION=$VERSION all doc %install rm -rf $RPM_BUILD_ROOT . ./VERSION cd src make CFLAGS="%optflags -fPIC -I. `pkg-config --cflags gsoap`" \ USE_VOMS=yes WITH_EMI=yes WITH_CPP_LIBS=yes \ LIBDIR=%{_lib} VERSION=$VERSION install install.man mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-devel-%{version} mv $RPM_BUILD_ROOT%{_datadir}/doc/CGSI \ $RPM_BUILD_ROOT%{_docdir}/%{name}-devel-%{version} rm $RPM_BUILD_ROOT%{_libdir}/*.a %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root,-) %{_libdir}/libcgsi_plugin.so.* %{_libdir}/libcgsi_plugin_cpp.so.* %{_libdir}/libcgsi_plugin_voms.so.* %{_libdir}/libcgsi_plugin_voms_cpp.so.* %doc LICENSE RELEASE-NOTES README readme.html %files devel %defattr(-,root,root,-) %{_includedir}/cgsi_plugin.h %{_libdir}/libcgsi_plugin.so %{_libdir}/libcgsi_plugin_cpp.so %{_libdir}/libcgsi_plugin_voms.so %{_libdir}/libcgsi_plugin_voms_cpp.so %doc %{_docdir}/%{name}-devel-%{version} %doc %{_mandir}/man*/* %changelog * Wed Jun 25 2014 Alejandro Alvarez - 1.3.6-1 - Up for new upstream release * Mon Apr 02 2012 Ricardo Rocha - 1.3.5-1 - Up for new upstream release * Thu Sep 01 2011 Mattias Ellert - 1.3.4.2-2 - Use gsoap cflags from pkg-config * Mon Jun 20 2011 Mattias Ellert - 1.3.4.2-1 - Update to version 1.3.4.2 * Mon Feb 07 2011 Fedora Release Engineering - 1.3.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Mon Dec 20 2010 Mattias Ellert - 1.3.4.0-1 - Update to version 1.3.4.0 * Thu Nov 12 2009 Mattias Ellert - 1.3.3.2-2.20090920cvs - Use cvs checkout date in release tag - Drop Provides/Obsoletes for the old package name since it was never in Fedora * Wed Sep 23 2009 Mattias Ellert - 1.3.3.2-1 - Update to version 1.3.3.2 - Drop the patch - all issues fixed upstream - Change License tag to Apache 2.0 * Fri Aug 14 2009 Mattias Ellert - 1.3.3.1-1 - Update to version 1.3.3.1 * Tue Jun 30 2009 Anders Wäänänen - 1.3.2.2-4 - Fix docdir handling * Wed Jan 14 2009 Mattias Ellert - 1.3.2.2-3 - Rebuild against distribution Globus * Wed Nov 19 2008 Anders Wäänänen - 1.3.2.2-2 - Update patch to use $(CPP) instead of ld (2 places) * Sun Oct 26 2008 Mattias Ellert - 1.3.2.2-1 - Update to version 1.3.2.2 * Fri Jan 11 2008 Mattias Ellert - 1.2.1.2-1 - Update to version 1.2.1.2 * Tue Jul 24 2007 Mattias Ellert - 1.1.17.2-2 - Rebuild against newer globus and voms * Wed May 9 2007 Mattias Ellert - 1.1.17.2-1 - Initial build CGSI-gSOAP-1.3.8/.gitmodules0000644000000000000000000000012612562602635014040 0ustar rootroot[submodule "cmake"] path = cmake url = https://gitlab.cern.ch/dmc/cmake-modules.git CGSI-gSOAP-1.3.8/solaris/0000755000000000000000000000000012562602635013340 5ustar rootrootCGSI-gSOAP-1.3.8/solaris/Makefile0000644000000000000000000000400512562602635014777 0ustar rootroot# # Copyright (c) Members of the EGEE Collaboration. 2006-2010. # See http://public.eu-egee.org/partners/ for details on # the copyright holders. # For license conditions see the license file or # http://www.apache.org/licenses/LICENSE-2.0 # # Authors: # Jean-Philippe Baud # default: all ifndef VERSION include ../VERSION endif ifndef RELEASE_SUFFIX RELEASE_SUFFIX=sol10-x86 endif VPACKAGE=CGSI-gSOAP27-$(VERSION) VPACKAGE_TAR=$(VPACKAGE).tar.gz all: CGSI-gSOAP27 mkdir -p ../RPMS cp build-*/RPMS/*-sol10-x86 ../RPMS/ CGSI-gSOAP27: build-pkg cd build-pkg/BUILD; \ rm -rf $(VPACKAGE); \ gtar -xzf ../SOURCES/$(VPACKAGE_TAR) BUILD_ROOT=$(PWD)/build-pkg/BUILD/$(VPACKAGE)-root; \ LD_LIBRARY_PATH=$(GLOBUS_LOCATION)/lib:$(LD_LIBRARY_PATH); export LD_LIBRARY_PATH; \ (cd build-pkg/BUILD/$(VPACKAGE); \ ./configure ${EXTRA_CONFIGURE_OPTIONS}; \ gmake; \ gmake install PREFIX=$$BUILD_ROOT; \ gmake install.man PREFIX=$$BUILD_ROOT); \ pkgmk -o -b$$BUILD_ROOT -f prototype.dev -v $(VERSION); \ pkgmk -o -b$$BUILD_ROOT -f prototype.nonvoms -v $(VERSION) VERSION=$(VERSION); \ pkgmk -o -b$$BUILD_ROOT -f prototype.voms -v $(VERSION) VERSION=$(VERSION) pkgtrans -o -s /var/spool/pkg $(PWD)/build-pkg/RPMS/CGSI-gSOAP27-dev-$(VERSION)-$(RELEASE_SUFFIX) CGSI-gSOAP27-dev pkgtrans -o -s /var/spool/pkg $(PWD)/build-pkg/RPMS/CGSI-gSOAP27-$(VERSION)-$(RELEASE_SUFFIX) CGSI-gSOAP27 pkgtrans -o -s /var/spool/pkg $(PWD)/build-pkg/RPMS/CGSI-gSOAP27-voms-$(VERSION)-$(RELEASE_SUFFIX) CGSI-gSOAP27-voms build-pkg: $(VPACKAGE_TAR) mkdir -p build-pkg mkdir -p build-pkg/BUILD mkdir -p build-pkg/RPMS mkdir -p build-pkg/SOURCES cp $(VPACKAGE_TAR) build-pkg/SOURCES $(VPACKAGE_TAR): cd ..; \ rm -rf $(VPACKAGE); \ mkdir -p $(VPACKAGE); \ cp -rp configure RELEASE-NOTES VERSION src $(VPACKAGE)/; \ find $(VPACKAGE)/ -name .svn -exec rm -rf {} \;; \ gtar -czf $(VPACKAGE_TAR) $(VPACKAGE); \ rm -rf $(VPACKAGE) mv ../$(VPACKAGE_TAR) . clean: rm -rf $(VPACKAGE_TAR) build-pkg distclean: rm -rf ../RPMS CGSI-gSOAP-1.3.8/solaris/prototype.nonvoms0000644000000000000000000000031012562602635017020 0ustar rootrooti pkginfo=pkginfo.nonvoms i depend=depend.nonvoms !plugin=libcgsi_plugin_gsoap_2.7.so.$VERSION d none lib 0755 root bin s none lib/libcgsi_plugin_gsoap_2.7.so=$plugin f none lib/$plugin 0755 root bin CGSI-gSOAP-1.3.8/solaris/pkginfo.nonvoms0000644000000000000000000000024312562602635016415 0ustar rootrootPKG="CGSI-gSOAP27" NAME="GSI plugin for gSOAP 2.7 (shared libraries without VOMS support)" ARCH="i386" VERSION="x.x.x" CATEGORY="application" BASEDIR="/opt/glite" CGSI-gSOAP-1.3.8/solaris/prototype.voms0000644000000000000000000000061012562602635016310 0ustar rootrooti pkginfo=pkginfo.voms i depend=depend.voms !plugin=libcgsi_plugin_voms_gsoap_2.7_gcc32dbg.so.$VERSION !pluginthr=libcgsi_plugin_voms_gsoap_2.7_gcc32dbgpthr.so.$VERSION d none lib 0755 root bin s none lib/libcgsi_plugin_voms_gsoap_2.7_gcc32dbg.so=$plugin f none lib/$plugin 0755 root bin s none lib/libcgsi_plugin_voms_gsoap_2.7_gcc32dbgpthr.so=$pluginthr f none lib/$pluginthr 0755 root bin CGSI-gSOAP-1.3.8/solaris/pkginfo.dev0000644000000000000000000000023212562602635015472 0ustar rootrootPKG="CGSI-gSOAP27-dev" NAME="GSI plugin for gSOAP 2.7 (headers and archive libs)" ARCH="i386" VERSION="x.x.x" CATEGORY="application" BASEDIR="/opt/glite" CGSI-gSOAP-1.3.8/solaris/depend.dev0000644000000000000000000000016212562602635015276 0ustar rootrootP VOMS-api-c VOMS API (C wrapper libraries) P VDT-globus-essentials VDT globus essentials (CLIs and shared libs) CGSI-gSOAP-1.3.8/solaris/pkginfo.voms0000644000000000000000000000024512562602635015704 0ustar rootrootPKG="CGSI-gSOAP27-voms" NAME="GSI plugin for gSOAP 2.7 (shared libraries with VOMS support)" ARCH="i386" VERSION="x.x.x" CATEGORY="application" BASEDIR="/opt/glite" CGSI-gSOAP-1.3.8/solaris/depend.nonvoms0000644000000000000000000000010612562602635016215 0ustar rootrootP VDT-globus-essentials VDT globus essentials (CLIs and shared libs) CGSI-gSOAP-1.3.8/solaris/prototype.dev0000644000000000000000000000065312562602635016111 0ustar rootrooti pkginfo=pkginfo.dev i depend=depend.dev d none include 0755 root bin ! default 0644 root bin f none include/cgsi_plugin.h d none lib 0755 root bin f none lib/libcgsi_plugin_gsoap_2.7.a f none lib/libcgsi_plugin_voms_gsoap_2.7_gcc32dbg.a f none lib/libcgsi_plugin_voms_gsoap_2.7_gcc32dbgpthr.a d none share 0755 root bin d none share/man 0755 root bin d none share/man/man3 0755 root bin f none share/man/man3/cgsi_plugin.h.3 CGSI-gSOAP-1.3.8/solaris/depend.voms0000644000000000000000000000016212562602635015504 0ustar rootrootP VOMS-api-c VOMS API (C wrapper libraries) P VDT-globus-essentials VDT globus essentials (CLIs and shared libs) CGSI-gSOAP-1.3.8/src/0000755000000000000000000000000012562602635012453 5ustar rootrootCGSI-gSOAP-1.3.8/src/Makefile0000755000000000000000000002317412562602635014125 0ustar rootroot## # $Id$ ## ifeq ($(SRCDIR), $(EMPTY)) SRCDIR=. else VPATH=.:$(SRCDIR) endif ################################################################################ ## implicit rule flags ## SHELL = /bin/sh CC = gcc CPP = g++ CFLAGS = -Wall -g -fPIC LDFLAGS = RANLIB = ranlib SHLIBLDFLAGS = -shared SHLIBREQLIBS = -lc # gSOAP 2.7.10 has introduced a virtual destructor, which inserts # a pointer to the VMT at the beginning of the 'soap' structure, # making the C and C++ versions of the code binary incompatible, # so we need to build C++ flavour of the libraries as well: #WITH_CPP_LIBS = yes ################################################################################ ## project flags ## ifeq ($(GLOBUS_LOCATION), $(EMPTY)) ifeq ($(WITH_EMI), $(EMPTY)) GLOBUS_LOCATION=/opt/globus else GLOBUS_LOCATION=/usr endif endif ifeq ($(GLOBUS_FLAVOUR), $(EMPTY)) GLOBUS_FLAVOUR = gcc32dbg endif GLOBUS_FLAVOUR_PTHR=$(GLOBUS_FLAVOUR)pthr ifeq ($(GSOAP_LOCATION), $(EMPTY)) ifeq ($(WITH_EMI), $(EMPTY)) GSOAP_LOCATION=/usr/local else GSOAP_LOCATION=/usr endif endif GSOAP_INCLUDE=-I$(GSOAP_LOCATION)/include ifeq ($(GSOAP_VERSION), $(EMPTY)) GSOAP_VERSION=_gsoap_2.7 endif LIBFILES =libcgsi_plugin$(GSOAP_VERSION).a SHLIBFILES =libcgsi_plugin$(GSOAP_VERSION).so ifneq ($(WITH_CPP_LIBS), $(EMPTY)) LIBFILES +=libcgsi_plugin$(GSOAP_VERSION)_cpp.a SHLIBFILES +=libcgsi_plugin$(GSOAP_VERSION)_cpp.so endif ifneq ($(WITH_EMI), $(EMPTY)) GLOBUS_INCLUDE = -I$(GLOBUS_LOCATION)/include/globus -I$(GLOBUS_LOCATION)/$(LIBDIR)/globus/include GLOBUS_LIBS = -L$(GLOBUS_LOCATION)/$(LIBDIR) -lglobus_gssapi_gsi -lglobus_gss_assist ifneq ($(USE_VOMS), $(EMPTY)) LIBFILES +=libcgsi_plugin_voms$(GSOAP_VERSION).a SHLIBFILES +=libcgsi_plugin_voms$(GSOAP_VERSION).so ifneq ($(WITH_CPP_LIBS), $(EMPTY)) LIBFILES +=libcgsi_plugin_voms$(GSOAP_VERSION)_cpp.a SHLIBFILES +=libcgsi_plugin_voms$(GSOAP_VERSION)_cpp.so endif endif else GLOBUS_INCLUDE = -I$(GLOBUS_LOCATION)/include/$(GLOBUS_FLAVOUR) GLOBUS_LIBS = -L$(GLOBUS_LOCATION)/lib -lglobus_gssapi_gsi_$(GLOBUS_FLAVOUR) \ -lglobus_gss_assist_$(GLOBUS_FLAVOUR) GLOBUS_INCLUDE_PTHR = -I$(GLOBUS_LOCATION)/include/$(GLOBUS_FLAVOUR_PTHR) GLOBUS_LIBS_PTHR = -L$(GLOBUS_LOCATION)/lib -lglobus_gssapi_gsi_$(GLOBUS_FLAVOUR_PTHR) \ -lglobus_gss_assist_$(GLOBUS_FLAVOUR_PTHR) ifneq ($(USE_VOMS), $(EMPTY)) LIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR).a LIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR).a SHLIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR).so SHLIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR).so ifneq ($(WITH_CPP_LIBS), $(EMPTY)) LIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR)_cpp.a LIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR)_cpp.a SHLIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR)_cpp.so SHLIBFILES += libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR)_cpp.so endif endif endif # major version number for shared library names VMAJOR=$(shell echo $(VERSION) | cut -f1 -d.) # initial settings CFLAGS += -I. -I$(SRCDIR) $(GSOAP_INCLUDE) ifeq ($(VOMS_LOCATION), $(EMPTY)) ifeq ($(WITH_EMI), $(EMPTY)) VOMS_LOCATION=/opt/glite else VOMS_LOCATION=/usr endif endif ifeq ($(LIBDIR), $(EMPTY)) LIBDIR=lib endif ifneq ($(USE_VOMS), $(EMPTY)) ifneq ($(WITH_EMI), $(EMPTY)) VOMS_FLAGS = -DUSE_VOMS -I$(VOMS_LOCATION)/include/voms VOMS_LIBS=-L$(VOMS_LOCATION)/$(LIBDIR) -lvomsapi else VOMS_FLAGS = -DUSE_VOMS -I$(VOMS_LOCATION)/include/glite/security/voms VOMS_LIBS=-L$(VOMS_LOCATION)/$(LIBDIR) -lvomsapi_$(GLOBUS_FLAVOUR) VOMS_FLAGS_PTHR = -DUSE_VOMS -I$(VOMS_LOCATION)/include/glite/security/voms VOMS_LIBS_PTHR=-L$(VOMS_LOCATION)/$(LIBDIR) -lvomsapi_$(GLOBUS_FLAVOUR_PTHR) endif endif #CFLAGS += $(VOMS_FLAGS) #LDLIBS += $(VOMS_LIBS) # NO ! the libs should not be added at link time so that the #users of CGSI_GSOAP can choose the ones they need to use #SHLIBREQLIBS += $(LDLIBS) ################################################################################ ## compilation targets ## .PHONY: all all: $(LIBFILES) $(SHLIBFILES) # dependencies cgsi_plugin.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CC) $(CFLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin$(GSOAP_VERSION).a: cgsi_plugin.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin$(GSOAP_VERSION).so: cgsi_plugin.o $(CC) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) ifneq ($(WITH_CPP_LIBS), $(EMPTY)) cgsi_plugin_cpp.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CPP) $(CFLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin$(GSOAP_VERSION)_cpp.a: cgsi_plugin_cpp.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin$(GSOAP_VERSION)_cpp.so: cgsi_plugin_cpp.o $(CPP) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) endif ifneq ($(USE_VOMS), $(EMPTY)) cgsi_plugin_voms.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CC) $(CFLAGS) $(VOMS_FLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION).a: cgsi_plugin_voms.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION).so: cgsi_plugin_voms.o $(CC) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) $(VOMS_LIBS) cgsi_plugin_voms_$(GLOBUS_FLAVOUR).o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CC) $(CFLAGS) $(VOMS_FLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR).a: cgsi_plugin_voms_$(GLOBUS_FLAVOUR).o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR).so: cgsi_plugin_voms_$(GLOBUS_FLAVOUR).o $(CC) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) $(VOMS_LIBS) cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR).o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CC) $(CFLAGS) $(VOMS_FLAGS_PTHR) $(GLOBUS_INCLUDE_PTHR) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR).a: cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR).o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR).so: cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR).o $(CC) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS_PTHR) $(VOMS_LIBS_PTHR) ifneq ($(WITH_CPP_LIBS), $(EMPTY)) cgsi_plugin_voms_cpp.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CPP) $(CFLAGS) $(VOMS_FLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION)_cpp.a: cgsi_plugin_voms_cpp.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION)_cpp.so: cgsi_plugin_voms_cpp.o $(CPP) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) $(VOMS_LIBS) cgsi_plugin_voms_$(GLOBUS_FLAVOUR)_cpp.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CPP) $(CFLAGS) $(VOMS_FLAGS) $(GLOBUS_INCLUDE) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR)_cpp.a: cgsi_plugin_voms_$(GLOBUS_FLAVOUR)_cpp.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR)_cpp.so: cgsi_plugin_voms_$(GLOBUS_FLAVOUR)_cpp.o $(CPP) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS) $(VOMS_LIBS) cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR)_cpp.o: cgsi_plugin.c cgsi_plugin.h cgsi_plugin_int.h $(CPP) $(CFLAGS) $(VOMS_FLAGS_PTHR) $(GLOBUS_INCLUDE_PTHR) -c -o $@ $< libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR)_cpp.a: cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR)_cpp.o $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR_PTHR)_cpp.so: cgsi_plugin_voms_$(GLOBUS_FLAVOUR_PTHR)_cpp.o $(CPP) $(SHLIBLDFLAGS) -Wl,-soname,$@.$(VMAJOR) -o $@ $? $(SHLIBREQLIBS) $(GLOBUS_LIBS_PTHR) $(VOMS_LIBS) endif endif doc: doxygenConfig SRCDIR=$(SRCDIR) VERSION=$(VERSION) doxygen $< ############################################### ## THIS IS STANDARD Makefile BELOW THIS LINE ## ############################################### ################################################################################ # Usage example: make install PREFIX=/usr/local # installation directories defaults are generic unix PPREFIX=/usr PREFIX =$(RPM_BUILD_ROOT)$(PPREFIX)# could be /usr/local but you may not have perms INCDIR =include BINDIR =bin MANDIR =share DOCDIR =share/doc/CGSI$(GSOAP_VERSION) INCFILES =cgsi_plugin.h INSTALL_FLAGS = # install targets ifneq ($(USE_VOMS), $(EMPTY)) installtargets = installinc installlib installbin installman installdoc installshlib installshlibvoms installshlibvomspthr else installtargets = installinc installlib installbin installman installdoc installshlib endif .PHONY: uninstall install $(installtargets) install: $(INCFILES) $(LIBFILES) $(SHLIBFILES) install -d $(PREFIX)/$(INCDIR) for i in $(INCFILES); do cp $(SRCDIR)/$$i $(PREFIX)/$(INCDIR); done install -d $(PREFIX)/$(LIBDIR) for l in $(LIBFILES); do cp $$l $(PREFIX)/$(LIBDIR)/$$l; done for l in $(SHLIBFILES); do \ cp $$l $(PREFIX)/$(LIBDIR)/$$l.$(VERSION); \ (cd $(PREFIX)/$(LIBDIR); ln -sf $$l.$(VERSION) $$l); \ (cd $(PREFIX)/$(LIBDIR); ln -sf $$l.$(VERSION) $$l.$(VMAJOR)); \ done install.man: doc mkdir -p $(PREFIX)/share cp -r man $(PREFIX)/share/ mkdir -p $(PREFIX)/$(DOCDIR) cp -r html $(PREFIX)/$(DOCDIR)/ ################################################################################ ## clean up ## .PHONY: clean clean: # files vars are specified in install -$(RM) *.o $(LIBFILES) $(SHLIBFILES) ################################################################################ ## help ## OK now I am going really over the top here :) .PHONY: help help: @echo -e "\n" \ "\ttarget\t| description \n" \ "\t================================================================\n" \ "\tall\t| Makes the gsoap binaries.\n" \ "\t\t|\n" \ CGSI-gSOAP-1.3.8/src/gssapi_openssl.h0000755000000000000000000001302612562602635015662 0ustar rootroot#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL /** * Copyright 1999-2006 University of Chicago * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @file gssapi_openssl.h * @author Sam Lang, Sam Meder * * $RCSfile: gssapi_openssl.h,v $ * $Revision: 1.2 $ * $Date: 2005/11/17 08:15:20 $ */ #endif #ifndef _GSSAPI_OPENSSL_H #define _GSSAPI_OPENSSL_H #if defined(WIN32) # include "windows.h" #endif #include "gssapi.h" #include "globus_gsi_gss_constants.h" #include "globus_common.h" #include "globus_gsi_callback.h" #include "globus_gsi_proxy.h" #include "globus_gsi_credential.h" #include #include #include #include #include #include #include #include #define GLOBUS_I_GSI_GSSAPI_IMPL_VERSION 1 #define GSS_I_CTX_INITIALIZED 1 #define GSS_I_DISALLOW_ENCRYPTION 2 #define GSS_I_PROTECTION_FAIL_ON_CONTEXT_EXPIRATION 4 #define GSS_I_APPLICATION_WILL_HANDLE_EXTENSIONS 8 #define GSS_C_QOP_GLOBUS_GSSAPI_OPENSSL_BIG 1 /* * we need to distinguish between a token * created by us using get_mic vs one using * the SSL application data * We use this in wrap and unwrap * Future versions of SSL may use this * * Our wrapped buffer (integrity only) has * * byte type[1] = SSL3_RT_GSSAPI_OPENSSL * byte version_major[1] = 0x03 * byte version_minor[1] = 0 * byte mic_length[2] = 2 byte length of following mic * * byte mic_seq[8] = 8 byte sequence number * byte mic_data_length[4] = 4 byte length of data * byte hash[*] = the hash of variable length * * byte data[*] = the data being wrapped. */ #define SSL3_RT_GSSAPI_OPENSSL 26 /* These conversions macros are taken from SSL */ #define L2N(LONG_VAL, CHAR_ARRAY) \ { \ char * _char_array_ = CHAR_ARRAY; \ *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 24) & 0xff); \ *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 16) & 0xff); \ *(_char_array_++) = (unsigned char) (((LONG_VAL) >> 8) & 0xff); \ *(_char_array_++) = (unsigned char) (((LONG_VAL)) & 0xff); \ } #define N2L(CHAR_ARRAY, LONG_VAL) \ { \ char * _char_array_ = CHAR_ARRAY; \ (LONG_VAL) = ((unsigned long) (*(_char_array_++))) << 24; \ (LONG_VAL) |= ((unsigned long) (*(_char_array_++))) << 16; \ (LONG_VAL) |= ((unsigned long) (*(_char_array_++))) << 8; \ (LONG_VAL) |= ((unsigned long) (*(_char_array_++))); \ } #define N2S(CHAR_ARRAY, SHORT) \ { \ char * _char_array_ = CHAR_ARRAY; \ (SHORT) = ((unsigned int) (*(_char_array_++))) << 8; \ (SHORT) |= ((unsigned int) (*(_char_array_++))); \ } #define S2N(SHORT, CHAR_ARRAY) \ { \ char * _char_array_ = CHAR_ARRAY; \ *(_char_array_++) = (unsigned char) (((SHORT) >> 8) & 0xff); \ *(_char_array_++) = (unsigned char) ((SHORT) & 0xff); \ } /* Compare OIDs */ #define g_OID_equal(o1, o2) \ (((o1) == (o2)) || \ ((o1) && (o2) && \ ((o1)->length == (o2)->length) && \ (memcmp((o1)->elements,(o2)->elements,(int) (o1)->length) == 0))) typedef struct gss_name_desc_struct { /* gss_buffer_desc name_buffer ; */ gss_OID name_oid; X509_NAME * x509n; STACK * group; ASN1_BIT_STRING * group_types; } gss_name_desc; typedef struct gss_cred_id_desc_struct { globus_gsi_cred_handle_t cred_handle; gss_name_desc * globusid; gss_cred_usage_t cred_usage; SSL_CTX * ssl_context; } gss_cred_id_desc; typedef struct gss_ctx_id_desc_struct { globus_mutex_t mutex; globus_gsi_callback_data_t callback_data; gss_cred_id_desc * peer_cred_handle; gss_cred_id_desc * cred_handle; gss_cred_id_desc * deleg_cred_handle; globus_gsi_proxy_handle_t proxy_handle; OM_uint32 ret_flags; OM_uint32 req_flags; OM_uint32 ctx_flags; int cred_obtained; SSL * gss_ssl; BIO * gss_rbio; BIO * gss_wbio; BIO * gss_sslbio; gss_con_st_t gss_state; int locally_initiated; gss_delegation_state_t delegation_state; } gss_ctx_id_desc; extern const gss_OID_desc * const gss_mech_globus_gssapi_openssl; extern const gss_OID_desc * const gss_proxycertinfo_extension; extern globus_thread_once_t once_control; #endif /* _GSSAPI_OPENSSL_H */ CGSI-gSOAP-1.3.8/src/globus_gsi_gss_constants.h0000755000000000000000000001103112562602635017730 0ustar rootroot#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL /** * Copyright 1999-2006 University of Chicago * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @file globus_gsi_gssapi_constants.h * @author Sam Lang, Sam Meder * * $RCSfile: globus_gsi_gss_constants.h,v $ * $Revision: 1.2 $ * $Date: 2005/11/17 08:15:19 $ */ #endif #ifndef _GLOBUS_GSI_GSSAPI_CONSTANTS_H_ #define _GLOBUS_GSI_GSSAPI_CONSTANTS_H_ extern char * globus_l_gsi_gssapi_error_strings[]; /** * @defgroup globus_gsi_gssapi_constants GSI GSS-API Constants */ /** * @name Error Codes * @ingroup globus_gsi_gssapi_constants */ typedef enum { GLOBUS_GSI_GSSAPI_ERROR_HANDSHAKE = 0, GLOBUS_GSI_GSSAPI_ERROR_NO_GLOBUSID = 1, GLOBUS_GSI_GSSAPI_ERROR_PROCESS_CERT = 2, GLOBUS_GSI_GSSAPI_ERROR_MUTUAL_AUTH = 3, GLOBUS_GSI_GSSAPI_ERROR_WRAP_BIO = 4, GLOBUS_GSI_GSSAPI_ERROR_PROXY_VIOLATION = 5, GLOBUS_GSI_GSSAPI_ERROR_PROXY_NOT_RECEIVED = 6, GLOBUS_GSI_GSSAPI_ERROR_BAD_ARGUMENT = 7, GLOBUS_GSI_GSSAPI_ERROR_IMPEXP_BIO_SSL = 8, GLOBUS_GSI_GSSAPI_ERROR_IMPEXP_NO_CIPHER = 9, GLOBUS_GSI_GSSAPI_ERROR_IMPEXP_BAD_LEN = 10, GLOBUS_GSI_GSSAPI_ERROR_WITH_GSS_CREDENTIAL = 11, GLOBUS_GSI_GSSAPI_ERROR_EXPORT_FAIL = 12, GLOBUS_GSI_GSSAPI_ERROR_IMPORT_FAIL = 13, GLOBUS_GSI_GSSAPI_ERROR_READ_BIO = 14, GLOBUS_GSI_GSSAPI_ERROR_WRITE_BIO = 15, GLOBUS_GSI_GSSAPI_ERROR_WITH_GSS_CONTEXT = 16, GLOBUS_GSI_GSSAPI_ERROR_UNEXPECTED_FORMAT = 17, GLOBUS_GSI_GSSAPI_ERROR_WITH_GSI_PROXY = 18, GLOBUS_GSI_GSSAPI_ERROR_WITH_CALLBACK_DATA = 19, GLOBUS_GSI_GSSAPI_ERROR_BAD_DATE = 20, GLOBUS_GSI_GSSAPI_ERROR_BAD_MECH = 21, GLOBUS_GSI_GSSAPI_ERROR_ADD_EXT = 22, GLOBUS_GSI_GSSAPI_ERROR_REMOTE_CERT_VERIFY_FAILED = 23, GLOBUS_GSI_GSSAPI_ERROR_OUT_OF_MEMORY = 24, GLOBUS_GSI_GSSAPI_ERROR_BAD_NAME = 25, GLOBUS_GSI_GSSAPI_ERROR_UNORDERED_CHAIN = 26, GLOBUS_GSI_GSSAPI_ERROR_WITH_GSI_CREDENTIAL = 27, GLOBUS_GSI_GSSAPI_ERROR_WITH_OPENSSL = 28, GLOBUS_GSI_GSSAPI_ERROR_TOKEN_FAIL = 29, GLOBUS_GSI_GSSAPI_ERROR_WITH_DELEGATION = 30, GLOBUS_GSI_GSSAPI_ERROR_WITH_OID = 31, GLOBUS_GSI_GSSAPI_ERROR_EXPIRED_CREDENTIAL = 32, GLOBUS_GSI_GSSAPI_ERROR_WITH_MIC = 33, GLOBUS_GSI_GSSAPI_ERROR_ENCRYPTING_MESSAGE = 34, GLOBUS_GSI_GSSAPI_ERROR_WITH_BUFFER = 35, GLOBUS_GSI_GSSAPI_ERROR_GETTING_PEER_CRED = 36, GLOBUS_GSI_GSSAPI_ERROR_UNKNOWN_OPTION = 37, GLOBUS_GSI_GSSAPI_ERROR_CREATING_ERROR_OBJ = 38, GLOBUS_GSI_GSSAPI_ERROR_LAST = 39 } globus_gsi_gssapi_error_t; #define GLOBUS_GSI_GSSAPI_ERROR_BASE 100 #define GLOBUS_GSI_GSSAPI_ERROR_MINOR_STATUS(_ERROR_VALUE_) \ _ERROR_VALUE_ + GLOBUS_GSI_GSSAPI_ERROR_BASE /** * @name Cred Export/Import Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_IMPEXP_OPAQUE_FORM = 0, GSS_IMPEXP_MECH_SPECIFIC = 1 } gss_impexp_cred_type_t; /* @} */ /** * @name Connection State Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_CON_ST_HANDSHAKE = 0, GSS_CON_ST_FLAGS, GSS_CON_ST_REQ, GSS_CON_ST_CERT, GSS_CON_ST_DONE } gss_con_st_t; /* @} */ /** * @name Delegation State Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_DELEGATION_START, GSS_DELEGATION_DONE, GSS_DELEGATION_COMPLETE_CRED, GSS_DELEGATION_SIGN_CERT } gss_delegation_state_t; /* @} */ /** * @name Compare Name Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_NAMES_NOT_EQUAL = 0, GSS_NAMES_EQUAL = 1 } gss_names_equal_t; /* @} */ /** * @name Context Established State Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_CTX_FULLY_ESTABLISHED = 1, GSS_CTX_TOKEN_EXPECTED_FROM_PEER = 0 } gss_ctx_state_t; /* @} */ /** * @name Confidentiality State Type * @ingroup globus_gsi_gssapi_constants */ /* @{ */ typedef enum { GSS_CONFIDENTIALITY = 1, GSS_INTEGRITY_ONLY = 0 } gss_conf_state_t; /* @} */ #define GSS_SSL_MESSAGE_DIGEST_PADDING 12 #define GSS_SSL3_WRITE_SEQUENCE_SIZE 8 #endif CGSI-gSOAP-1.3.8/src/doxygenConfig.footer.html0000644000000000000000000000013312562602635017436 0ustar rootrootCopyright © 2004-2009 EU-EGEE CGSI-gSOAP-1.3.8/src/cgsi_plugin_int.h0000755000000000000000000000471712562602635016015 0ustar rootroot/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** cgsi_plugin_int.h - Header file for the GSI gSOAP plugin * * @file cgsi_plugin_int.h * @author Ben Couturier CERN, IT/ADC * * This is a GSI plugin for gSOAP. It uses the globus GSI libraries to implement * GSI secure authentification and encryption on top of gSOAP. * The globus GSI bundle is necessary for the plugin to compile and run. * */ #include #include #include #define CGSI_TRACE "CGSI_TRACE" #define CGSI_TRACEFILE "CGSI_TRACEFILE" #define CLIENT_PLUGIN_ID "CGSI_PLUGIN_CLIENT_1.0" /* plugin identification */ #define SERVER_PLUGIN_ID "CGSI_PLUGIN_SERVER_1.0" /* plugin identification */ #define CGSI_PLUGIN "CGSI-gSOAP" #define CGSI_MAXNAMELEN 512 struct cgsi_plugin_data { int context_established; gss_cred_id_t credential_handle; gss_ctx_id_t context_handle; int socket_fd; int (*fsend)(struct soap*, const char*, size_t); size_t (*frecv)(struct soap*, char*, size_t); int (*fopen)(struct soap*, const char*, const char*, int); int (*fclose)(struct soap*); char client_name[CGSI_MAXNAMELEN]; char server_name[CGSI_MAXNAMELEN]; char username[CGSI_MAXNAMELEN]; char user_ca[CGSI_MAXNAMELEN]; int nb_iter; int disable_hostname_check; int context_flags; int trace_mode; char trace_file[CGSI_MAXNAMELEN]; gss_cred_id_t deleg_credential_handle; int deleg_cred_set; gss_buffer_t buffered_in; /* API-defined credentials */ char* x509_cert; char* x509_key; /* Pointers to VOMS data */ char *voname; char **fqan; int nbfqan; int disable_mapping; int disable_voms_check; int allow_only_self; int had_send_error; void *deleg_credential_token; size_t deleg_credential_token_len; int start_new_line; }; CGSI-gSOAP-1.3.8/src/cgsi_plugin.h0000755000000000000000000002230012562602635015127 0ustar rootroot/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** cgsi_plugin.h - Header file for the GSI gSOAP plugin * * @file cgsi_plugin.h * @brief Header file for the GSI gSOAP plugin * @author Ben Couturier CERN, IT/ADC * * This is a GSI plugin for gSOAP. It uses the globus GSI libraries to implement * GSI secure authentification and encryption on top of gSOAP. * The globus GSI bundle is necessary for the plugin to compile and run. * */ #include #ifdef __cplusplus extern "C" { #endif /** * Options that can be specified when initializing the * cgsi_plugin (in the arg parameter): */ /** The program acts as a client. */ #define CGSI_OPT_CLIENT 0x1 /** The program acts as a server. */ #define CGSI_OPT_SERVER 0x2 /** Initiate delegation over the HTTPG protocol. */ #define CGSI_OPT_DELEG_FLAG 0x4 /** Using pure SSL protocol, for compatibility. */ #define CGSI_OPT_SSL_COMPATIBLE 0x8 /** Disable comparing the server's host name with its certificate's CN. */ #define CGSI_OPT_DISABLE_NAME_CHECK 0x10 /** Keep alive the HTTP connection. */ #define CGSI_OPT_KEEP_ALIVE 0x20 /** Disable DN->userid mapping via gridmap-file. */ #define CGSI_OPT_DISABLE_MAPPING 0x40 /** Disable connect time VOMS parsing for better error handling * via an explicit call to retrieve_voms_creds() */ #define CGSI_OPT_DISABLE_VOMS_CHECK 0x80 /** Allow client and server to only connect together when * they have the same identity */ #define CGSI_OPT_ALLOW_ONLY_SELF 0x100 /** * Helper function to create the gsoap object and * the cgsi_plugin at the same time. * This function assumes that a client plugin is specified, * to create a server plugin, use the CGSI_OPT_SERVER option. * * @param soap The soap structure for the request * @param cgsi_options The parameters for the plugin creation * (bitwise or of the different options). * * @return 0 if successful, -1 otherwise */ int soap_cgsi_init(struct soap *soap, int cgsi_options); /** * Generic contructor for the cgsi_plugin * * @param soap The soap structure for the request * @param plugin Pointer to the plugin data structure * @param arg The parameters for the plugin creation * * @return 0 if successful, -1 otherwise */ int cgsi_plugin(struct soap *soap, struct soap_plugin *plugin, void *arg); /** * Client contructor for the cgsi_plugin * * @param soap The soap structure for the request * @param plugin Pointer to the plugin data structure * @param arg The parameters for the plugin creation (CGSI_OPT_CLIENT assumed) * * @return 0 if successful, -1 otherwise */ int client_cgsi_plugin(struct soap *soap, struct soap_plugin *plugin, void *arg); /** * Server contructor for the cgsi_plugin * * @param soap The soap structure for the request * @param plugin Pointer to the plugin data structure * @param arg The parameters for the plugin creation (CGSI_OPT_SERVER assumed) * * @return 0 if successful, -1 otherwise */ int server_cgsi_plugin(struct soap *soap, struct soap_plugin *plugin, void *arg); /** * Checks whether the security context has been established properly * * @param soap The soap structure for the request * * @return 1 if context established, 0 otherwise */ int is_context_established(struct soap *soap); /** * Gets the Distinguished name (DN) of the client * * @param soap The soap structure for the request * @param dn Pointer to a buffer where the DN is to be written * @param dnlen The length of the buffer * * @return 0 if successful, -1 otherwise */ int get_client_dn(struct soap *soap, char *dn, size_t dnlen); /** * Gets the username (DN) of the client * * @param soap The soap structure for the request * @param username Pointer to a buffer where the username is to be written * @param dnlen The length of the buffer * * @return 0 if successful, -1 otherwise */ int get_client_username(struct soap *soap, char *username, size_t dnlen); /** * Make the delegated credential available as a token in memory. * The soap structure retains ownership of the memory. The user should * not free the pointer returned by this function, nor use it after the soap * object becomes invalid. * * @param soap The soap structure that is the target of the request * @param buffer Pointer to a void pointer which will be set to reference the credential token. * @param length Pointer to a length that will be set to the size of the credential token * * @return 0 if successful, -1 otherwise */ int get_delegated_credentials(struct soap *soap, void **buffer, size_t *length); /** * Export the delegated credentials (if available) to a file * * @param soap The soap structure for the request * @param filename Name of the file where the credentials are to be written * * @return 0 if successful, -1 otherwise */ int export_delegated_credentials(struct soap *soap, char *filename); /** * Checks whether the client delegated credentials to the server * * @param soap The soap structure for the request * * @return 1 if there are some delegated credentials, 0 otherwise */ int has_delegated_credentials(struct soap *soap); /** * Sets the env variable for GSI to use the proxy in the specified filename * * @param soap The soap structure for the request * @param filename Name of the file where credentials are stored * * @return 0 if successful, -1 otherwise */ int set_default_proxy_file(struct soap *soap, char *filename); /** * Clears the env variable used by GSI to specify the proxy filename * * @param unlink_file Set to 1 if you want to destroy the credential file as well * */ void clear_default_proxy_file(int unlink_file); /** * Parses the optional VOMS extension of the peer certificate. * It has to be called before get_client_voname() and get_client_roles()! * * @param soap The soap structure for the request * * @return 0 if successful, -1 otherwise * SOAP Fault structure contains the detailed description. */ int retrieve_voms_creds(struct soap *soap); int retrieve_userca_and_voms_creds(struct soap *soap); /** * Returns the client CA * * @param soap The soap structure for the request * * @return The client CA is allocated in the soap structure (DON'T free), * NULL otherwise */ char *get_client_ca(struct soap *soap); /** * Returns the client VO name if it was provided in the certificate * * @param soap The soap structure for the request * * @return The client voname is malloced in the soap structure (DON'T free), * NULL otherwise */ char *get_client_voname(struct soap *soap); /** * Returns the client VO roles if they were provided in the certificate * * @param soap The soap structure for the request * * @param nbfqans The number of returned Fully Qualified Attribute Names * * @return The client roles are malloced in the soap structure (DON'T free), * NULL otherwise */ char ** get_client_roles(struct soap *soap, int* nbfqans); /** * Adjust CGSI-plugin's behaviour by setting one or more flags. If a * flag is not present in args then that flag is unaffected by this * operation. If a flag is currently set then attempting to set it * will have no effect. * * @param soap The soap structure from gSOAP * * @param is_server 0 if client, 1 if server * * @param flags Bitwise OR of the flags to be set. * * @return 0 on success, -1 on error. */ int cgsi_plugin_set_flags(struct soap *soap, int is_server, int flags); /** * Adjust CGSI-plugin's behaviour by clearing one or more flags. If a * flag is not present in args then it is unaffected by this * operation. If a flag is currently cleared then attempting to clear * it will have no effect. * * @param soap The soap structure from gSOAP * * @param is_server 0 if client, 1 if server * * @param flags Bitwise OR of the flags to be cleared. * * @return 0 on success, -1 on error. */ int cgsi_plugin_clr_flags(struct soap *soap, int is_server, int flags); /** * Discover the current set of flags that are in effect. * * @param soap The soap structure from gSOAP * * @param is_server 0 if client, 1 if server * * @return the set of flags or -1 on error */ int cgsi_plugin_get_flags(struct soap *soap, int is_server); /** * Set credentials without using environment variables * * @param soap The soap structure for the request * @param is_server 0 if client, 1 if server * @param x509_cert The certificate. If it is a proxy, you only need to specify this one * @param x509_key The key. Will be ignored if x509_cert is NULL! * * @return 0 on success, -1 on error. */ int cgsi_plugin_set_credentials(struct soap *soap, int is_server, const char* x509_cert, const char* x509_key); #ifdef __cplusplus } #endif CGSI-gSOAP-1.3.8/src/cgsi_plugin.c0000755000000000000000000025174412562602635015142 0ustar rootroot/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Id$ */ /** cgsi_plugin.c - GSI plugin for gSOAP * * @file cgsi_plugin.c * @author Ben Couturier CERN, IT/ADC * @author Akos Frohner CERN, IT/GD * * This is a GSI plugin for gSOAP. It uses the globus GSI libraries to implement * GSI secure authentification and encryption on top of gSOAP. * The globus GSI bundle is necessary for the plugin to compile and run. * */ #include #include #include #include "cgsi_plugin_int.h" #include #include "gssapi_openssl.h" #include "globus_gsi_credential.h" #if defined(USE_VOMS) #ifdef __cplusplus extern "C" { #endif #include #ifdef __cplusplus } #endif #endif #define BUFSIZE 1024 #define TBUFSIZE 256 static const char *client_plugin_id = CLIENT_PLUGIN_ID; static const char *server_plugin_id = SERVER_PLUGIN_ID; static int server_cgsi_plugin_init(struct soap *soap, struct cgsi_plugin_data *data); static int server_cgsi_plugin_send(struct soap *soap, const char *buf, size_t len); static size_t server_cgsi_plugin_recv(struct soap *soap, char *buf, size_t len); static int server_cgsi_plugin_accept(struct soap *soap); static int server_cgsi_plugin_close(struct soap *soap); static int server_cgsi_map_dn(struct soap *soap); static int client_cgsi_plugin_init(struct soap *soap, struct cgsi_plugin_data *data); static int client_cgsi_plugin_open(struct soap *soap, const char *endpoint, const char *hostname, int port); static int client_cgsi_plugin_send(struct soap *soap, const char *buf, size_t len); static size_t client_cgsi_plugin_recv(struct soap *soap, char *buf, size_t len); static int client_cgsi_plugin_close(struct soap *soap); static int cgsi_plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); static void cgsi_plugin_delete(struct soap *soap, struct soap_plugin *p); static int cgsi_plugin_send(struct soap *soap, const char *buf, size_t len, const char *plugin_id); static size_t cgsi_plugin_recv(struct soap *soap, char *buf, size_t len, const char *plugin_id); static int cgsi_plugin_close(struct soap *soap, const char *plugin_id); int cgsi_plugin_send_token(void *arg, void *token, size_t token_length); int cgsi_plugin_recv_token(void *arg, void **token, size_t *token_length); void cgsi_plugin_print_token(struct cgsi_plugin_data *data, char *token, int length); static void cgsi_gssapi_err(struct soap *soap, const char *msg, OM_uint32 maj_stat, OM_uint32 min_stat); static void cgsi_err(struct soap *soap, const char *msg); static int cgsi_display_status_1(const char *m, OM_uint32 code, int type, char *buf, int buflen); static int cgsi_parse_opts(struct cgsi_plugin_data *p, void *arg, int isclient); static struct cgsi_plugin_data* get_plugin(struct soap *soap); static int setup_trace(struct cgsi_plugin_data *data); static int trace(struct cgsi_plugin_data *data, const char *tracestr); static int trace_str(struct cgsi_plugin_data *data, const char *msg, int len); static void cgsi_plugin_globus_modules(int activate); static int is_loopback(struct sockaddr *); static void free_conn_state(struct cgsi_plugin_data *data); static gss_buffer_t buffer_create(gss_buffer_t buf, size_t offset); static gss_buffer_t buffer_free(gss_buffer_t buf); static gss_buffer_t buffer_consume_upto(gss_buffer_t buf, size_t offset); static gss_buffer_t buffer_copy_from(gss_buffer_t dest, gss_buffer_t src, size_t offset); /******************************************************************************/ /* Plugin constructor */ /* Defaults to client in case nothing is specified */ /******************************************************************************/ int cgsi_plugin(struct soap *soap, struct soap_plugin *p, void *arg) { int opts; if (arg == NULL) { return client_cgsi_plugin(soap, p, NULL); } opts = *((int *)arg); if (opts & CGSI_OPT_SERVER) { return server_cgsi_plugin(soap, p, arg); } else { return client_cgsi_plugin(soap, p, arg); } } /******************************************************************************/ /* SERVER Plugin functions */ /******************************************************************************/ /** * Constructor for the server plugin */ int server_cgsi_plugin(struct soap *soap, struct soap_plugin *p, void *arg) { /* Activate globus modules */ cgsi_plugin_globus_modules(1); p->id = server_plugin_id; p->data = (void*)calloc(sizeof(struct cgsi_plugin_data), 1); p->fcopy = cgsi_plugin_copy; p->fdelete = cgsi_plugin_delete; if (p->data) { ((struct cgsi_plugin_data*)p->data)->start_new_line = 1; if (server_cgsi_plugin_init(soap, (struct cgsi_plugin_data*)p->data) || cgsi_parse_opts((struct cgsi_plugin_data *)p->data, arg,0)) { free(p->data); /* error: could not init or pass options*/ cgsi_plugin_globus_modules(0); return SOAP_EOM; /* return error */ } } return SOAP_OK; } /** * Allow manipulation of plugin's behaviour. This method allows * adjusting of cgsi-plugin's behaviour by setting flags present in * args. Flags that are missing in args are not altered. If a flag * is already set then this method will not affect it. */ int cgsi_plugin_set_flags(struct soap *soap, int is_server, int flags) { const char *id; struct cgsi_plugin_data *data; id = is_server ? server_plugin_id : client_plugin_id; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, id); if (data == NULL) { cgsi_err(soap, "Cannot find cgsi-plugin data structure; is plugin registered?"); return -1; } if (flags & CGSI_OPT_DELEG_FLAG) { data->context_flags |= GSS_C_DELEG_FLAG; } if (flags & CGSI_OPT_SSL_COMPATIBLE) { data->context_flags |= GSS_C_GLOBUS_SSL_COMPATIBLE; } if (flags & CGSI_OPT_DISABLE_NAME_CHECK) { data->disable_hostname_check = 1; } if (flags & CGSI_OPT_DISABLE_MAPPING) { data->disable_mapping = 1; } if (flags & CGSI_OPT_DISABLE_VOMS_CHECK) { data->disable_voms_check = 1; } if (flags & CGSI_OPT_ALLOW_ONLY_SELF) { data->allow_only_self = 1; } return 0; } /** * Allow manipulation of plugin's behaviour. This method allows * adjusting of cgsi-plugin's behaviour by clearing flags present in * args. Flags that are missing in args are not altered. If a flag * is already cleared then this method will not affect it. */ int cgsi_plugin_clr_flags(struct soap *soap, int is_server, int flags) { const char *id; struct cgsi_plugin_data *data; id = is_server ? server_plugin_id : client_plugin_id; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, id); if (data == NULL) { cgsi_err(soap, "Cannot find cgsi-plugin data structure; is plugin registered?"); return -1; } if (flags & CGSI_OPT_DELEG_FLAG) { data->context_flags &= ~GSS_C_DELEG_FLAG; } if (flags & CGSI_OPT_SSL_COMPATIBLE) { data->context_flags &= ~GSS_C_GLOBUS_SSL_COMPATIBLE; } if (flags & CGSI_OPT_DISABLE_NAME_CHECK) { data->disable_hostname_check = 0; } if (flags & CGSI_OPT_DISABLE_MAPPING) { data->disable_mapping = 0; } if (flags & CGSI_OPT_DISABLE_VOMS_CHECK) { data->disable_voms_check = 0; } if (flags & CGSI_OPT_ALLOW_ONLY_SELF) { data->allow_only_self = 0; } return 0; } /** * Provide a summary of the currently active flags. */ int cgsi_plugin_get_flags(struct soap *soap, int is_server) { const char *id; struct cgsi_plugin_data *data; int flags = 0; id = is_server ? server_plugin_id : client_plugin_id; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, id); if (data == NULL) { cgsi_err(soap, "Cannot find cgsi-plugin data structure; is plugin registered?"); return -1; } if(data->context_flags & GSS_C_DELEG_FLAG) { flags |= CGSI_OPT_DELEG_FLAG; } if(data->context_flags & GSS_C_GLOBUS_SSL_COMPATIBLE) { flags |= CGSI_OPT_SSL_COMPATIBLE; } if(data->disable_hostname_check == 1) { flags |= CGSI_OPT_DISABLE_NAME_CHECK; } if(data->disable_mapping == 1) { flags |= CGSI_OPT_DISABLE_MAPPING; } if(data->disable_voms_check == 1) { flags |= CGSI_OPT_DISABLE_VOMS_CHECK; } if(data->allow_only_self == 1) { flags |= CGSI_OPT_ALLOW_ONLY_SELF; } return flags; } /** * Set credentials without using environment variables */ int cgsi_plugin_set_credentials(struct soap *soap, int is_server, const char* x509_cert, const char* x509_key) { const char *id; struct cgsi_plugin_data *data; id = is_server ? server_plugin_id : client_plugin_id; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, id); if (data == NULL) { cgsi_err(soap, "Cannot find cgsi-plugin data structure; is plugin registered?"); return -1; } free(data->x509_cert); data->x509_cert = NULL; free(data->x509_key); data->x509_key = NULL; if (x509_cert && (data->x509_cert = strdup(x509_cert)) == NULL) { cgsi_err(soap, "Out of memory"); return -1; } if (x509_key && (data->x509_key = strdup(x509_key)) == NULL) { cgsi_err(soap, "Out of memory"); return -1; } return 0; } /** * Initializes the plugin data object */ static int server_cgsi_plugin_init(struct soap *soap, struct cgsi_plugin_data *data) { /* data structure must be zeroed at this point */ /* Setting up the functions */ data->fclose = soap->fclose; data->fsend = soap->fsend; data->frecv = soap->frecv; data->deleg_credential_handle = GSS_C_NO_CREDENTIAL; data->credential_handle = GSS_C_NO_CREDENTIAL; data->context_handle = GSS_C_NO_CONTEXT; setup_trace(data); soap->fclose = server_cgsi_plugin_close; soap->fsend = server_cgsi_plugin_send; soap->frecv = server_cgsi_plugin_recv; return SOAP_OK; } /** * Wrapper to encrypt/send data from the server */ static int server_cgsi_plugin_send(struct soap *soap, const char *buf, size_t len) { return cgsi_plugin_send(soap, buf, len, server_plugin_id); } /** * Wrapper to receive data. It accepts the context if that has not been done yet. * * BEWARE: In this function returning 0 is the error condition ! */ static size_t server_cgsi_plugin_recv(struct soap *soap, char *buf, size_t len) { struct cgsi_plugin_data *data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "Server recv: could not get data structure"); return 0; } /* Establishing the context if not done yet */ if (data->context_established == 0) { trace(data, "### Establishing new context !\n"); if (server_cgsi_plugin_accept(soap) != 0) { /* SOAP fault already reported in the underlying calls */ trace(data, "Context establishment FAILED !\n"); /* If the context establishment fails, we close the socket to avoid gSOAP trying to send an error back to the client ! */ soap_closesock(soap); return 0; } } else { trace(data, "### Context already established!\n"); } if (data->disable_mapping == 0) { /* Now doing username uid gid lookup */ /* Performing the user mapping ! */ if (server_cgsi_map_dn(soap)!=0) { /* Soap fault already filled */ return 0; } } return cgsi_plugin_recv(soap, buf, len, server_plugin_id); } /** * Function that accepts the security context in the server. * The server credentials are loaded every-time. */ static int server_cgsi_plugin_accept(struct soap *soap) { struct cgsi_plugin_data *data; OM_uint32 minor_status, major_status, tmp_status, ret_flags; gss_buffer_desc send_tok=GSS_C_EMPTY_BUFFER, recv_tok=GSS_C_EMPTY_BUFFER; gss_name_t server = GSS_C_NO_NAME, client = GSS_C_NO_NAME; gss_buffer_desc name = GSS_C_EMPTY_BUFFER; OM_uint32 time_req; gss_cred_id_t delegated_cred_handle = GSS_C_NO_CREDENTIAL; gss_channel_bindings_t input_chan_bindings = GSS_C_NO_CHANNEL_BINDINGS; SSL_CTX *ctx = NULL; gss_OID doid = GSS_C_NO_OID; int ret; /* Getting the plugin data object */ data = (struct cgsi_plugin_data *) soap_lookup_plugin (soap, server_plugin_id); if (!data) { cgsi_err(soap, "Error looking up plugin data"); return -1; } free_conn_state(data); /* despite the name ret_flags are also used as an input */ ret_flags = data->context_flags; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "Server accepting context with flags: %xd\n", ret_flags); trace(data, buf); } /* Specifying GSS_C_NO_NAME for the name or the server will force it to take the default host certificate */ major_status = gss_acquire_cred(&minor_status, GSS_C_NO_NAME, 0, GSS_C_NULL_OID_SET, GSS_C_ACCEPT, &data->credential_handle, NULL, NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Could NOT load server credentials", major_status, minor_status); trace(data, "Could not load server credentials !\n"); goto error; } /* remove the LOW cipher suites */ if (data->credential_handle != GSS_C_NO_CREDENTIAL) ctx = ((gss_cred_id_desc*)data->credential_handle)->ssl_context; if (ctx == NULL || !SSL_CTX_set_cipher_list(ctx, SSL_DEFAULT_CIPHER_LIST ":!LOW" )) { cgsi_err(soap, "Error setting the SSL context cipher list"); goto error; } /* Now keeping the credentials name in the data structure */ major_status = gss_inquire_cred(&minor_status, data->credential_handle, &server, NULL, NULL, NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error inquiring credentials", major_status, minor_status); goto error; } /* Keeping the name in the plugin */ major_status = gss_display_name(&minor_status, server, &name, (gss_OID *) NULL); if (major_status != GSS_S_COMPLETE || strlen((const char *)name.value)>CGSI_MAXNAMELEN-1) { if (major_status != GSS_S_COMPLETE) cgsi_gssapi_err(soap, "Error displaying server name", major_status, minor_status); else cgsi_err(soap,"Server name too long"); (void) gss_release_buffer(&minor_status, &name); goto error; } strncpy(data->server_name, (const char*)name.value, CGSI_MAXNAMELEN); data->server_name[CGSI_MAXNAMELEN - 1] = '\0'; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "The server is:<%s>\n", data->server_name); trace(data, buf); } (void) gss_release_buffer(&tmp_status, &name); /* Now doing GSI authentication, loop over gss_accept_sec_context */ do { data->nb_iter++; if (cgsi_plugin_recv_token(soap, &recv_tok.value, &recv_tok.length) < 0) { /* Soap fault already reported ! */ trace(data, "Error receiving token !\n"); goto error; } major_status = gss_accept_sec_context(&minor_status, &data->context_handle, data->credential_handle, &recv_tok, input_chan_bindings, &client, &doid, &send_tok, &ret_flags, &time_req, &delegated_cred_handle); (void) gss_release_buffer(&tmp_status, &recv_tok); if (major_status!=GSS_S_COMPLETE && major_status!=GSS_S_CONTINUE_NEEDED) { cgsi_gssapi_err(soap, "Could not accept security context", major_status, minor_status); trace(data, "Exiting due to a bad return code from gss_accept_sec_context (1)\n"); goto error; } if (send_tok.length != 0) { if (cgsi_plugin_send_token(soap, send_tok.value, send_tok.length) < 0) { (void) gss_release_buffer(&tmp_status, &send_tok); trace(data, "Exiting due to a bad return code (2)\n"); /* Soap fault already reported by underlying layer */ goto error; } /* If token has 0 length, then just try again (it is NOT an error condition)! */ } (void) gss_release_buffer(&tmp_status, &send_tok); } while (major_status & GSS_S_CONTINUE_NEEDED); /* Keeping the name in the plugin */ major_status = gss_display_name(&minor_status, client, &name, (gss_OID *) NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error displaying name", major_status, minor_status); goto error; } strncpy(data->client_name, (const char*)name.value, CGSI_MAXNAMELEN); data->client_name[CGSI_MAXNAMELEN - 1] = '\0'; (void) gss_release_buffer(&tmp_status, &name); { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "The client is:<%s>\n", data->client_name); trace(data, buf); } if (data->allow_only_self) { int rc; major_status = gss_compare_name(&minor_status, client, server, &rc); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err (soap, "Error comparing client and server names",major_status, minor_status); goto error; } if (!rc) { cgsi_err (soap, "The client attempting to connect does not have the same identity as the server"); goto error; } } (void)gss_release_name(&tmp_status, &client); (void)gss_release_name(&tmp_status, &server); /* by default check VOMS credentials, and fail if invalid */ if (! data->disable_voms_check) { if (retrieve_userca_and_voms_creds(soap)) { cgsi_err(soap, "Error retrieving the userca/VOMS credentials"); goto error; } } if (!(ret_flags & GSS_C_DELEG_FLAG)) (void) gss_release_cred(&tmp_status, &delegated_cred_handle); /* Save the delegated credentials */ if (delegated_cred_handle != GSS_C_NO_CREDENTIAL) { gss_name_t deleg_name = GSS_C_NO_NAME; gss_buffer_desc namebuf = GSS_C_EMPTY_BUFFER; SSL_CTX *ctx = NULL; OM_uint32 lifetime; gss_cred_usage_t usage; trace(data, "deleg_cred 1\n"); /* remove the LOW cipher suites */ if (data->credential_handle != GSS_C_NO_CREDENTIAL) ctx = ((gss_cred_id_desc*)data->credential_handle)->ssl_context; if (ctx == NULL || !SSL_CTX_set_cipher_list(ctx, SSL_DEFAULT_CIPHER_LIST ":!LOW" )) { cgsi_err(soap, "Error setting the SSL context cipher list"); goto error; } /* Now keeping the credentials name in the data structure */ major_status = gss_inquire_cred(&minor_status, delegated_cred_handle, &deleg_name, &lifetime, &usage, NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error inquiring delegated credentials", major_status, minor_status); goto error; } /* Keeping the name in the plugin */ major_status = gss_display_name(&minor_status, deleg_name , &namebuf, (gss_OID *) NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error displaying delegated credentials name", major_status, minor_status); (void)gss_release_name(&minor_status, &deleg_name); goto error; } { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "The delegated credentials are for:<%s>\n", (char *)namebuf.value); trace(data, buf); } data->deleg_credential_handle = delegated_cred_handle; data->deleg_cred_set = 1; delegated_cred_handle = GSS_C_NO_CREDENTIAL; (void) gss_release_name (&tmp_status, &deleg_name); (void) gss_release_buffer (&tmp_status, &namebuf); } else { trace(data, "deleg_cred 0\n"); } /* Setting the flag as even the mapping went ok */ data->context_established = 1; ret = 0; goto exit; error: (void) gss_delete_sec_context(&tmp_status,&data->context_handle,GSS_C_NO_BUFFER); (void) gss_release_cred (&tmp_status, &data->credential_handle); ret = -1; exit: (void) gss_release_buffer(&tmp_status, &send_tok); (void) gss_release_buffer(&tmp_status, &recv_tok); (void) gss_release_buffer(&tmp_status, &name); (void) gss_release_cred(&tmp_status, &delegated_cred_handle); (void) gss_release_name (&tmp_status, &server); (void) gss_release_name (&tmp_status, &client); return (ret); } /** * Looks up the client name and maps the username/uid/gid accordingly */ static int server_cgsi_map_dn(struct soap *soap) { char *p; struct cgsi_plugin_data *data; /* Getting the plugin data object */ data = (struct cgsi_plugin_data *) soap_lookup_plugin (soap, server_plugin_id); if (!data) { cgsi_err(soap, "Error looking up plugin data"); return -1; } if (!globus_gss_assist_gridmap(data->client_name, &p)) { /* We have a mapping */ strncpy(data->username, p, CGSI_MAXNAMELEN); data->username[CGSI_MAXNAMELEN - 1] = '\0'; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "The client is mapped to user:<%s>\n", data->username); trace(data, buf); } free(p); } else { char buf[BUFSIZE]; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "Could not find mapping for: %s\n", data->client_name); trace(data, buf); } data->username[0]=0; snprintf(buf, BUFSIZE, "Could not find mapping for: %s", data->client_name); cgsi_err(soap, buf); return -1; } return 0; } static int server_cgsi_plugin_close(struct soap *soap) { return cgsi_plugin_close(soap, server_plugin_id); } /******************************************************************************/ /* CLIENT Plugin functions */ /******************************************************************************/ /** * Constructor for the client plugin */ int client_cgsi_plugin(struct soap *soap, struct soap_plugin *p, void *arg) { /* Activate globus modules */ cgsi_plugin_globus_modules(1); p->id = client_plugin_id; p->data = (void*)calloc(sizeof(struct cgsi_plugin_data), 1); p->fcopy = cgsi_plugin_copy; p->fdelete = cgsi_plugin_delete; if (p->data) { ((struct cgsi_plugin_data*)p->data)->start_new_line = 1; if (client_cgsi_plugin_init(soap, (struct cgsi_plugin_data*)p->data) || cgsi_parse_opts((struct cgsi_plugin_data *)p->data, arg,1)) { free(p->data); /* error: could not init or parse options */ cgsi_plugin_globus_modules(0); return SOAP_EOM; /* return error */ } } return SOAP_OK; } static int client_cgsi_plugin_init(struct soap *soap, struct cgsi_plugin_data *data) { /* data structure must be zeroed at this point */ /* Setting up the functions */ data->fopen = soap->fopen; data->fclose = soap->fclose; data->fsend = soap->fsend; data->frecv = soap->frecv; data->deleg_credential_handle = GSS_C_NO_CREDENTIAL; data->credential_handle = GSS_C_NO_CREDENTIAL; data->context_handle = GSS_C_NO_CONTEXT; setup_trace(data); soap->fopen = client_cgsi_plugin_open; soap->fclose = client_cgsi_plugin_close; soap->fsend = client_cgsi_plugin_send; soap->frecv = client_cgsi_plugin_recv; return SOAP_OK; } static int client_cgsi_plugin_import_cred(struct soap *soap, struct cgsi_plugin_data *data) { char err_buffer[1024]; OM_uint32 major_status, minor_status; struct stat st; gss_buffer_desc buffer; int ret = -1; size_t cert_size = 0; size_t key_size = 0; FILE* fd = NULL; int key_is_cert = 0; buffer.value = NULL; buffer.length = 0; /* Stat cert and key to find out how much memory we need to hold the credentials */ if (stat(data->x509_cert, &st) != 0) { strerror_r(errno, err_buffer, sizeof(err_buffer)); cgsi_err(soap, err_buffer); goto import_end; } cert_size = st.st_size; if (data->x509_key) key_is_cert = strcmp(data->x509_cert, data->x509_key) == 0; if (data->x509_key && !key_is_cert) { if (stat(data->x509_key, &st) != 0) { strerror_r(errno, err_buffer, sizeof(err_buffer)); cgsi_err(soap, err_buffer); goto import_end; } key_size = st.st_size; } /* Allocate and read */ buffer.length = cert_size + key_size; buffer.value = calloc(buffer.length, sizeof(char)); if (buffer.value == NULL) { cgsi_err(soap, "Out of memory"); goto import_end; } fd = fopen(data->x509_cert, "r"); if (!fd) { strerror_r(errno, err_buffer, sizeof(err_buffer)); cgsi_err(soap, err_buffer); goto import_end; } fread(buffer.value, cert_size, 1, fd); fclose(fd); if (data->x509_key && !key_is_cert) { fd = fopen(data->x509_key, "r"); if (!fd) { strerror_r(errno, err_buffer, sizeof(err_buffer)); cgsi_err(soap, err_buffer); goto import_end; } fread((char*)buffer.value + cert_size, key_size, 1, fd); fclose(fd); } /* Import into gss */ major_status = gss_import_cred(&minor_status, &data->credential_handle, GSS_C_NO_OID, 0, // 0 = Pass credentials; 1 = Pass path as X509_USER_PROXY=... &buffer, 0, NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Could NOT import client credentials", major_status, minor_status); } else { ret = 0; } import_end: free(buffer.value); return ret; } static int client_cgsi_plugin_open(struct soap *soap, const char *endpoint, const char *hostname, int port) { OM_uint32 major_status, minor_status, tmp_status, ret_flags; struct cgsi_plugin_data *data; gss_name_t client=GSS_C_NO_NAME, target_name=GSS_C_NO_NAME; gss_buffer_desc send_tok=GSS_C_EMPTY_BUFFER, recv_tok=GSS_C_EMPTY_BUFFER; gss_buffer_desc namebuf=GSS_C_EMPTY_BUFFER; gss_OID oid = GSS_C_NO_OID; int ret; /* Looking up plugin data */ data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, client_plugin_id); if (!data) { cgsi_err(soap, "Error looking up plugin data"); return -1; } free_conn_state(data); /* Getting the credenttials */ if (data->x509_cert) { trace(data, "Using gss_import_cred to load credentials\n"); // client_cgsi_plugin_import_cred should set the error itself if (client_cgsi_plugin_import_cred(soap, data) != 0) { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "Could NOT import client credentials from %s/%s\n", data->x509_cert, data->x509_key); trace(data, buf); goto error; } } else { trace(data, "Using gss_acquire_cred to load credentials\n"); major_status = gss_acquire_cred(&minor_status, GSS_C_NO_NAME, 0, GSS_C_NULL_OID_SET, GSS_C_INITIATE, &data->credential_handle, NULL, NULL); if (major_status != GSS_S_COMPLETE) { trace(data, "Could NOT load client credentials\n"); cgsi_gssapi_err(soap, "Could NOT load client credentials", major_status, minor_status); goto error; } } /* Now keeping the credentials name in the data structure */ major_status = gss_inquire_cred(&minor_status, data->credential_handle, &client, NULL, NULL, NULL); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error inquiring credentials", major_status, minor_status); goto error; } /* Keeping the name in the plugin */ major_status = gss_display_name(&minor_status, client, &namebuf, (gss_OID *) NULL); if (major_status != GSS_S_COMPLETE || strlen((const char*)namebuf.value)>CGSI_MAXNAMELEN-1) { if (major_status != GSS_S_COMPLETE) cgsi_gssapi_err(soap, "Error displaying client name", major_status, minor_status); else cgsi_err(soap,"Client name too long"); goto error; } strncpy(data->client_name, (const char*)namebuf.value, CGSI_MAXNAMELEN); data->client_name[CGSI_MAXNAMELEN - 1] = '\0'; (void)gss_release_buffer(&tmp_status, &namebuf); { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "The client is:<%s>\n", data->client_name); trace(data, buf); } /* Opening the connection to the server */ if (data->fopen == NULL) { cgsi_err(soap, "data->fopen is NULL !"); goto error; } /* gSOAP 2.7.x will try to open a https endpoint with SSL, * if it was built WITH_SLL. Since endpoint is only used * to compare the first six bytes, we pass one, which does * not start with 'https://'. */ data->socket_fd = data->fopen(soap, endpoint+1, hostname, port); if (data->socket_fd < 0) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "could not open connection to %s:%d\n", hostname, port); trace(data, buf); cgsi_err(soap, buf); goto error; } /* setting 'target_name': * if CGSI_OPT_ALLOW_ONLY_SELF is in effect we check that the peer's * name is the same as ours by speficying it as the target name. * Otherwise, if CGSI_OPT_DISABLE_NAME_CHECK was set then we check the * peer's certificate name against the name built from the peer's * address (i.e. via a reverse lookup). Otherwise explictly check * the DN against whatever hostname this function was called with */ if (data->allow_only_self) { /* make target name our own identity */ major_status = gss_duplicate_name (&minor_status, client, &target_name); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err (soap, "Could not duplicate name", major_status, minor_status); goto error; } } else if (data->disable_hostname_check) { /* take target name from reverse lookup */ struct sockaddr *sa; socklen_t sa_length; char host[NI_MAXHOST+5]; unsigned int i; int rc; sa_length = (sizeof (struct sockaddr_in6) > sizeof (struct sockaddr_in)) ? sizeof (struct sockaddr_in6) : sizeof (struct sockaddr_in); sa = (struct sockaddr *) malloc (sa_length); if (sa == NULL) { cgsi_err (soap,"Could not allocate memory for sockaddr"); goto error; } rc = getpeername (data->socket_fd, sa, &sa_length); if (rc<0) { cgsi_err (soap,"Could not find peername"); free (sa); goto error; } if (sa->sa_family != AF_INET && sa->sa_family != AF_INET6) { cgsi_err (soap,"Peer has an unknown address family"); free (sa); goto error; } snprintf (host,sizeof (host),"host@"); if (is_loopback (sa)) { struct addrinfo *res,*resp; struct sockaddr *sa2; free (sa); sa = NULL; if (gethostname (&host[5], sizeof (host) - 5)) { cgsi_err (soap,"Could not get the local host name"); goto error; } rc = getaddrinfo (&host[5], NULL, NULL, &res); if (rc) { cgsi_err (soap,"Could not lookup the local host name"); goto error; } resp = res; while( resp ) { if (resp->ai_family == AF_INET6 && !is_loopback (resp->ai_addr)) { sa = resp->ai_addr; sa_length = resp->ai_addrlen; } else if (resp->ai_family == AF_INET && !is_loopback (resp->ai_addr)) { sa = resp->ai_addr; sa_length = resp->ai_addrlen; break; } resp=resp->ai_next; } if (sa) { sa2 = (struct sockaddr*)malloc (sa_length); if (sa2 == NULL) { cgsi_err (soap,"Could not allocate memory to copy a sockaddr"); freeaddrinfo (res); goto error; } memcpy (sa2,sa,sa_length); sa = sa2; } if (res != NULL) freeaddrinfo (res); } if (sa) { rc = getnameinfo (sa, sa_length, &host[5], sizeof (host) - 5, NULL, 0, 0); free (sa); sa = NULL; if (rc) { cgsi_err (soap,"Could not convert the address information to a name or address"); goto error; } } for (i=5; (i < sizeof (host)) && host[i]; i++) host[i] = tolower (host[i]); namebuf.value = (void *)strdup (host); if (namebuf.value == NULL) { cgsi_err (soap, "Could not allocate memory for host name"); goto error; } namebuf.length = strlen (host) + 1; major_status = gss_import_name (&minor_status, &namebuf, GSS_C_NT_HOSTBASED_SERVICE, &target_name); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err (soap, "Could not import name", major_status, minor_status); goto error; } (void)gss_release_buffer (&tmp_status, &namebuf); } else { /* take the target name from the hostname parameter passed to this function */ namebuf.value = malloc (strlen ("host@") + strlen (hostname) + 1); if (namebuf.value == NULL) { cgsi_err (soap,"Could not allocate memory for target name"); goto error; } strcpy ((char*)namebuf.value,"host@"); strcat ((char*)namebuf.value,hostname); namebuf.length = strlen ((char*)namebuf.value) + 1; major_status = gss_import_name (&minor_status, &namebuf, GSS_C_NT_HOSTBASED_SERVICE, &target_name); (void) gss_release_buffer (&tmp_status, &namebuf); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err (soap, "Error importing target name", major_status, minor_status); goto error; } } do { data->nb_iter++; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "Iteration:<%d>\n", data->nb_iter); trace(data, buf); } major_status = gss_init_sec_context(&minor_status, data->credential_handle, &data->context_handle, target_name, oid, data->context_flags, 0, NULL, /* no channel bindings */ &recv_tok, NULL, /* ignore mech type */ &send_tok, &ret_flags, NULL); /* ignore time_rec */ (void)gss_release_buffer(&tmp_status, &recv_tok); if (major_status!=GSS_S_COMPLETE && major_status!=GSS_S_CONTINUE_NEEDED) { cgsi_gssapi_err(soap, "Error initializing context", major_status, minor_status); goto error; } if (send_tok.length > 0) { ret = cgsi_plugin_send_token(soap, send_tok.value, send_tok.length); if (ret < 0) { /* Soap fault already reported */ trace(data, "Error sending token !\n"); goto error; } } (void) gss_release_buffer (&tmp_status, &send_tok); if (major_status & GSS_S_CONTINUE_NEEDED) { if (cgsi_plugin_recv_token(soap, &(recv_tok.value), &(recv_tok.length)) < 0) { /* fault already reported */ goto error; } } } while (major_status == GSS_S_CONTINUE_NEEDED); /* Record the server name (as GSS reports it) */ { gss_name_t src_name = GSS_C_NO_NAME, tgt_name = GSS_C_NO_NAME; OM_uint32 lifetime, ctx; gss_OID mech; int local, isopen; gss_buffer_desc server_name = GSS_C_EMPTY_BUFFER; major_status = gss_inquire_context(&minor_status, data->context_handle, &src_name, &tgt_name, &lifetime, &mech, &ctx, &local, &isopen); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error inquiring context", major_status, minor_status); goto error; } major_status = gss_display_name(&minor_status, tgt_name, &server_name, (gss_OID *) NULL); if (major_status != GSS_S_COMPLETE || strlen((const char*)server_name.value)>CGSI_MAXNAMELEN-1) { if (major_status != GSS_S_COMPLETE) cgsi_gssapi_err(soap, "Error displaying name", major_status, minor_status); else cgsi_err(soap,"Server name too long"); (void)gss_release_buffer(&tmp_status, &server_name); (void)gss_release_name(&tmp_status, &tgt_name); (void)gss_release_name(&tmp_status, &src_name); goto error; } strncpy(data->server_name, (const char*)server_name.value, CGSI_MAXNAMELEN); data->server_name[CGSI_MAXNAMELEN - 1] = '\0'; { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "Server:<%s>\n", (char *)server_name.value); trace(data, buf); } (void)gss_release_buffer(&tmp_status, &server_name); (void)gss_release_name(&tmp_status, &tgt_name); (void)gss_release_name(&tmp_status, &src_name); } (void)gss_release_name (&tmp_status, &client); data->context_established = 1; ret = data->socket_fd; goto exit; error: (void) gss_delete_sec_context (&tmp_status, &data->context_handle, GSS_C_NO_BUFFER); (void) gss_release_cred (&tmp_status, &data->credential_handle); if (data->socket_fd >= 0) { (void) close(data->socket_fd); data->socket_fd = -1; } ret = -1; exit: (void) gss_release_buffer (&tmp_status, &send_tok); (void) gss_release_buffer (&tmp_status, &recv_tok); (void) gss_release_buffer (&tmp_status, &namebuf); (void) gss_release_name (&tmp_status, &client); (void) gss_release_name (&tmp_status, &target_name); return (ret); } static int client_cgsi_plugin_send(struct soap *soap, const char *buf, size_t len) { return cgsi_plugin_send(soap, buf, len, client_plugin_id); } static size_t client_cgsi_plugin_recv(struct soap *soap, char *buf, size_t len) { return cgsi_plugin_recv(soap, buf, len, client_plugin_id); } static int client_cgsi_plugin_close(struct soap *soap) { return cgsi_plugin_close(soap, client_plugin_id); } /******************************************************************************/ /* COMMON Plugin functions */ /******************************************************************************/ static int cgsi_plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src) { struct cgsi_plugin_data *dst_data, *src_data; *dst = *src; dst->data = (struct cgsi_plugin_data *)malloc(sizeof(struct cgsi_plugin_data)); if (dst->data == NULL) return SOAP_FATAL_ERROR; memcpy(dst->data, src->data, sizeof(struct cgsi_plugin_data)); /* We do not support deep copy of plugin data's connection related parameters. Expect soap structure should only be copied just after soap_accept(), before the connection parameters are filled. */ dst_data = (struct cgsi_plugin_data *)dst->data; src_data = (struct cgsi_plugin_data *)src->data; /* don't want to share these with the source */ dst_data->deleg_credential_handle = GSS_C_NO_CREDENTIAL; dst_data->credential_handle = GSS_C_NO_CREDENTIAL; dst_data->context_handle = GSS_C_NO_CONTEXT; dst_data->voname = NULL; dst_data->deleg_credential_token = NULL; dst_data->fqan = NULL; if (src_data->x509_cert) dst_data->x509_cert = strdup(src_data->x509_cert); if (src_data->x509_key) dst_data->x509_key = strdup(src_data->x509_key); /* reset everything else connection related */ free_conn_state(dst_data); /* Activate globus modules, as the new object will also need them */ cgsi_plugin_globus_modules(1); return SOAP_OK; } static void cgsi_plugin_delete(struct soap *soap, struct soap_plugin *p) { struct cgsi_plugin_data *data; if (p->data == NULL) { cgsi_plugin_globus_modules(0); return; } else { data = (struct cgsi_plugin_data *)p->data; } free_conn_state(data); free(data->x509_cert); free(data->x509_key); free(p->data); p->data = NULL; /* Deactivate globus modules */ cgsi_plugin_globus_modules(0); } static int cgsi_plugin_close(struct soap *soap, const char *plugin_id) { OM_uint32 major_status; OM_uint32 minor_status; gss_buffer_desc output_buffer_desc; gss_buffer_t output_buffer; struct cgsi_plugin_data *data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, plugin_id); if (data == NULL) { cgsi_err(soap, "Close: could not get data structure"); return -1; } output_buffer = &output_buffer_desc; if (data->context_established == 1) { major_status = gss_delete_sec_context(&minor_status, &(data->context_handle), output_buffer); if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error deleting context", major_status, minor_status); } else { /*cgsi_plugin_send_token( (void *)soap, output_buffer->value, output_buffer->length);*/ gss_release_buffer(&minor_status, output_buffer); data->context_established = 0; } } if (data->fclose != NULL) { return data->fclose(soap); } else { cgsi_err(soap, "Close: data->fclose is NULL"); return -1; } } static int cgsi_plugin_send(struct soap *soap, const char *buf, size_t len, const char *plugin_id) { OM_uint32 major_status; OM_uint32 minor_status; gss_buffer_desc input_tok; gss_buffer_desc output_tok; int conf_state; struct cgsi_plugin_data *data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, plugin_id); trace(data, "-------------\n"); trace_str(data, (char *)buf, len); trace(data, "\n----------------------------------\n"); input_tok.value = (char *)buf; input_tok.length = len; if (data->had_send_error) { /* Not much to do, we don't know if the previous send sent any * data, nor if we're being presented with the same data again */ trace(data, "Request to send data after previous send failed\n"); return (-1); } if (data->context_handle != GSS_C_NO_CONTEXT) { major_status = gss_wrap(&minor_status, data->context_handle, 0, GSS_C_QOP_DEFAULT, &input_tok, &conf_state, &output_tok); } else { /* we don't expect to asked to send without a security context. * Best not to send anything unprotected, so we just fail * Assume a useful fault message has already seen set */ trace(data, "Request to send data, without having a security context, failed\n"); return (-1); } if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error wrapping the data", major_status, minor_status); gss_release_buffer(&minor_status, &output_tok); return -1; } if (cgsi_plugin_send_token((void *)soap, output_tok.value, output_tok.length) != 0) { /* Soap fault already reported */ gss_release_buffer(&minor_status, &output_tok); data->had_send_error = 1; return -1; } gss_release_buffer(&minor_status, &output_tok); return SOAP_OK; } static size_t cgsi_plugin_recv(struct soap *soap, char *buf, size_t len, const char *plugin_id) { OM_uint32 major_status; OM_uint32 minor_status, minor_status1; int token_status; size_t tmplen; gss_buffer_desc input_token_desc = GSS_C_EMPTY_BUFFER; gss_buffer_t input_token = &input_token_desc; gss_buffer_desc output_token_desc = GSS_C_EMPTY_BUFFER; gss_buffer_t output_token = &output_token_desc; struct cgsi_plugin_data *data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, plugin_id); if(data->buffered_in != NULL) { tmplen = len < data->buffered_in->length ? len : data->buffered_in->length; memcpy(buf, data->buffered_in->value, tmplen); if(tmplen == data->buffered_in->length) { data->buffered_in = buffer_free(data->buffered_in); } else { data->buffered_in = buffer_consume_upto(data->buffered_in, tmplen); } trace(data, "------------------\n"); trace_str(data, buf, tmplen); trace(data, "\n----------------------------------\n"); return (size_t) tmplen; } token_status = cgsi_plugin_recv_token((void *)soap, &input_token->value, &input_token->length); if (token_status != 0) { trace(data, "Token status <> 0\n"); /* Soap fault already reported */ return 0; } if (data->context_handle != GSS_C_NO_CONTEXT) { ERR_clear_error(); major_status = gss_unwrap(&minor_status, data->context_handle, input_token, output_token, NULL, NULL); gss_release_buffer(&minor_status1, input_token); } else { /* we don't expect to asked to read without a security context. * Best not to read anything which may or may not be wrapped, * so we just fail. Assume a useful fault message has already seen set */ trace(data, "Request to read data, without having a security context, failed\n"); return (0); } if (major_status != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error unwrapping the data", major_status, minor_status); gss_release_buffer(&minor_status1, output_token); return 0; } tmplen = len < output_token->length ? len : output_token->length; memcpy(buf, output_token->value, tmplen); if( tmplen < output_token->length) { data->buffered_in = buffer_create(output_token, tmplen); } gss_release_buffer(&minor_status1, output_token); trace(data, "-------------\n"); trace_str(data, buf, tmplen); trace(data, "\n----------------------------------\n"); return (size_t) tmplen; } #define SSLHSIZE 5 int cgsi_plugin_recv_token(void *arg, void **token, size_t *token_length) { int ret, rem; char *tok, *p; int len; char readbuf[SSLHSIZE]; struct soap *soap = (struct soap *)arg; struct cgsi_plugin_data *data; if (soap == NULL) { cgsi_err(soap, "Error: SOAP object is NULL"); return -1; } data = get_plugin(soap); /* Reads SSL Record layer header ! */ p = readbuf; rem = SSLHSIZE; while (rem>0) { /* trace(data, "%d Remaining %d\n", getpid(), rem); */ errno = 0; soap->error = 0; soap->errnum = 0; ret = data->frecv(soap, p, rem); if (ret <= 0) /* BEWARE soap_recv returns 0 when an error occurs ! */ { char buf[BUFSIZE]; if (soap->errnum) snprintf(buf, BUFSIZE, "Error reading token data header: %s", strerror(soap->errnum)); else if (errno) snprintf(buf, BUFSIZE, "Error reading token data header: %s", strerror(errno)); else if (soap->error) snprintf(buf, BUFSIZE, "Error reading token data header: SOAP error %d", soap->error); else snprintf(buf, BUFSIZE, "Error reading token data header: Connection closed"); cgsi_err(soap, buf); return -1; } p = p + ret; rem = rem - ret; } /* Initialization, len will contain the length of the message */ len = 0; p = (char *)&len; /* Checking whether we have a SSL V2 Client Hello */ if (readbuf[0] == (char)0x80) { *(p+3) = readbuf[1]; len = ntohl(len); /* In the case of SSLv2, we have just read 3 bytes that do NOT belong to the Record layer, we have to deduct them from the length (if possible XXX -> to be checked) */ len = len -3; } else { /* We have SSLv3 or TLS */ /* Getting the packet length from the last two bytes ! */ /* of the readbuf */ *(p+2) = readbuf[3]; *(p+3) = readbuf[4]; /* Converting length to machine byte order ! */ len = ntohl(len); } /* AT this point, the token length is len + the number of bytes already read, i.e. SSLHSIZE */ tok = (char *) malloc(len + SSLHSIZE); if ( (len+SSLHSIZE) && tok == NULL) { cgsi_err(soap, "Out of memory allocating token data"); return -1; } memcpy(tok, readbuf, SSLHSIZE); rem = len; p = (char *) (tok + SSLHSIZE); /* Looping on the data still to read */ while (rem > 0) { errno = 0; soap->error = 0; soap->errnum = 0; ret = data->frecv(soap, p, rem); if (ret <= 0) { char buf[BUFSIZE]; if (soap->errnum) snprintf(buf, BUFSIZE, "Error reading token data: %s", strerror(soap->errnum)); else if (errno) snprintf(buf, BUFSIZE, "Error reading token data: %s", strerror(errno)); else if (soap->error) snprintf(buf, BUFSIZE, "Error reading token data: SOAP error %d", soap->error); else snprintf(buf, BUFSIZE, "Error reading token data: Connection closed"); cgsi_err(soap, buf); free(tok); return -1; } p = p + ret; rem = rem - ret; } { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "================= RECVING: %d\n", len + SSLHSIZE); trace(data, buf); } cgsi_plugin_print_token(data, tok, len+SSLHSIZE); *token_length = (len + SSLHSIZE); *token = tok; return 0; } int cgsi_plugin_send_token(void *arg, void *token, size_t token_length) { int ret; struct cgsi_plugin_data *data; struct soap *soap = (struct soap *)arg; if (soap == NULL) { cgsi_err(soap, "Error: SOAP object is NULL"); return -1; } data = get_plugin(soap); { char buf[TBUFSIZE]; snprintf(buf, TBUFSIZE, "================= SENDING: %d\n", (unsigned int)token_length); trace(data, buf); } cgsi_plugin_print_token(data, (char *)token, token_length); /* We send the whole token knowing it is a SSL token */ ret = data->fsend(soap, (char *)token, token_length); if (ret < 0) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE,"Error sending token data: %s", strerror(errno)); cgsi_err(soap, buf); return -1; } else if (ret != SOAP_OK) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "sending token data: %d of %d bytes written", ret, (int)token_length); cgsi_err(soap, buf); return -1; } return 0; } void cgsi_plugin_print_token(struct cgsi_plugin_data *data, char *token, int length) { int i; unsigned char *p; char buf[TBUFSIZE]; /* can avoid printing all the token if the trace routine * is disabled */ if (data->trace_mode < 2) { return; } /* printing the characters as unsigned hex digits */ p = (unsigned char *)token; for (i=0; i < length; i++, p++) { snprintf(buf, TBUFSIZE,"%02x ", *p); trace(data, buf); if ((i % 16) == 15) { trace(data, "\n"); } } trace(data, "\n"); } /** * Function to display the GSS-API errors */ static void cgsi_gssapi_err(struct soap *soap, const char *msg, OM_uint32 maj_stat, OM_uint32 min_stat) { int ret; char buffer[BUFSIZE],hostname[NI_MAXHOST]; int bufsize; char *buf; struct cgsi_plugin_data *data; int isclient = 1; /* Check if we are a client */ data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, client_plugin_id); if (data == NULL) { isclient = 0; } if (gethostname(hostname, sizeof(hostname))<0) { strncpy(hostname, "unknown", sizeof(hostname)); } hostname[sizeof(hostname)-1] = '\0'; bufsize = BUFSIZE; snprintf(buffer, bufsize, CGSI_PLUGIN " running on %s reports %s\n", hostname, msg); buf = buffer +strlen(buffer); bufsize -= strlen(buffer); ret = cgsi_display_status_1(msg, maj_stat, GSS_C_GSS_CODE, buf, bufsize); if (bufsize-ret > 1) { strcat(buf, "\n"); ret++; } buf += ret; bufsize -= ret; cgsi_display_status_1(msg, min_stat, GSS_C_MECH_CODE, buf, bufsize); if (isclient) { soap_sender_fault(soap, buffer, NULL); } else { soap_receiver_fault(soap, buffer, NULL); } } /** * Displays the GSS-API error messages in the error buffer */ static int cgsi_display_status_1(const char *m, OM_uint32 code, int type, char *buf, int buflen) { OM_uint32 maj_stat, min_stat; gss_buffer_desc msg; OM_uint32 msg_ctx; int count,ret; char *buf0 = buf; if (buflen<=1) return(0); msg_ctx = 0; count = 0; while (1) { maj_stat = gss_display_status(&min_stat, code, type, GSS_C_NULL_OID, &msg_ctx, &msg); ret = snprintf(buf, buflen, "%s\n", (char *)msg.value); (void) gss_release_buffer(&min_stat, &msg); if (ret < 0) { *buf = '\0'; break; } if (ret >= buflen) ret = buflen - 1; count += ret; buf += ret; buflen -= ret; if (!msg_ctx || buflen<=1) break; } if (count>0 && buf0[count-1] == '\n') { buf0[count-1] = '\0'; count--; } return count; } static void cgsi_err(struct soap *soap, const char *msg) { struct cgsi_plugin_data *data; int isclient = 1; char buffer[BUFSIZE],hostname[NI_MAXHOST]; /* Check if we are a client */ data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, client_plugin_id); if (data == NULL) { isclient = 0; } if (gethostname(hostname, sizeof(hostname))<0) { strncpy(hostname, "unknown", sizeof(hostname)); } hostname[sizeof(hostname)-1] = '\0'; snprintf(buffer, sizeof(buffer), CGSI_PLUGIN " running on %s reports %s", hostname, msg); if (isclient) { soap_sender_fault(soap, buffer, NULL); } else { soap_receiver_fault(soap, buffer, NULL); } } /** * Parses the argument passed to the plugin constructor * and initializes the plugin_data object accordingly */ static int cgsi_parse_opts(struct cgsi_plugin_data *p, void *arg, int isclient) { int opts; /* Default values */ p->disable_hostname_check = 0; p->allow_only_self = 0; p->disable_mapping = 0; p->disable_voms_check = 0; p->context_flags = GSS_C_CONF_FLAG | GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG; if (arg == NULL) { /* Default is just confidentiality and mutual authentication */ return 0; } opts = (*((int *)arg)); if (opts & CGSI_OPT_DELEG_FLAG) { p->context_flags |= GSS_C_DELEG_FLAG; } if (opts & CGSI_OPT_SSL_COMPATIBLE) { p->context_flags |= GSS_C_GLOBUS_SSL_COMPATIBLE; } if (opts & CGSI_OPT_DISABLE_NAME_CHECK) { p->disable_hostname_check = 1; } if (opts & CGSI_OPT_DISABLE_MAPPING) { p->disable_mapping = 1; } if (opts & CGSI_OPT_DISABLE_VOMS_CHECK) { p->disable_voms_check = 1; } if (opts & CGSI_OPT_ALLOW_ONLY_SELF) { p->allow_only_self = 1; } return 0; } /** * Look's up the plugin, be it client or server */ static struct cgsi_plugin_data* get_plugin(struct soap *soap) { struct cgsi_plugin_data *data = NULL; /* Check if we are a client */ data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, client_plugin_id); if (data == NULL) { data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); } return data; } /** * Returns 1 if the context has been extablished, 0 if not, * or -1 if an error happened during plugin lookup. * */ int is_context_established(struct soap *soap) { struct cgsi_plugin_data *data = NULL; data = get_plugin(soap); if (data == NULL) return -1; return data->context_established; } /** * Copies the client DN in the buffer passed. * Returns 0 if everything ok, -1 otherwise. * */ int get_client_dn(struct soap *soap, char *dn, size_t dnlen) { struct cgsi_plugin_data *data = NULL; data = get_plugin(soap); if (data == NULL) return -1; memset(dn, '\0', dnlen); strncpy(dn, data->client_name, dnlen); return 0; } /** * Copies the client username in the buffer passed. * Returns 0 if everything ok, -1 otherwise. * */ int get_client_username(struct soap *soap, char *username, size_t usernamelen) { struct cgsi_plugin_data *data = NULL; data = get_plugin(soap); if (data == NULL) return -1; memset(username, '\0', usernamelen); strncpy(username, data->username, usernamelen); return 0; } /** * Checks the environment to setup the trace mode, * if CGSI_TRACE is set * If CGSI_TRACEFILE is set, the output is written to that file, * otherwise, it is sent to stderr. */ static int setup_trace(struct cgsi_plugin_data *data) { char *envar; data->trace_mode = 0; data->trace_file[0] = data->trace_file[CGSI_MAXNAMELEN-1]= '\0'; envar = getenv(CGSI_TRACE); if (envar != NULL) { errno = 0; data->trace_mode = strtol(envar, NULL, 10); if (errno) data->trace_mode = 1; envar = getenv(CGSI_TRACEFILE); if (envar != NULL) { strncpy(data->trace_file, envar, CGSI_MAXNAMELEN-1); } } return 0; } static int trace(struct cgsi_plugin_data *data, const char *tracestr) { if (!data->trace_mode) { return 0; } return trace_str(data, tracestr, strlen(tracestr)); } static int trace_str(struct cgsi_plugin_data *data, const char *msg, int len) { if (!data->trace_mode) { return 0; } /* If no trace file defined, write to stderr */ if (data->trace_file[0]=='\0') { int i; for (i = 0; i < len; ++i) { if (data->start_new_line) { fputs("[CGSI-GSOAP] ", stderr); data->start_new_line = 0; } fputc(msg[i], stderr); if (msg[i] == '\n') data->start_new_line = 1; } } else { int fd; fd = open(data->trace_file, O_CREAT|O_WRONLY|O_APPEND, 0644); if (fd <0) return -1; write(fd, msg, len); close(fd); } return 0; } int get_delegated_credentials(struct soap *soap, void **buffer, size_t *length) { OM_uint32 maj_stat, min_stat; gss_buffer_desc buffer_desc = GSS_C_EMPTY_BUFFER; struct cgsi_plugin_data *data; if (soap == NULL || buffer == NULL || length == NULL) { cgsi_err(soap, "invalid argument passed to get_delegated_credentials"); return -1; } data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "get delegated credentials: could not get data structure"); return -1; } if (data->deleg_credential_token) { *buffer = data->deleg_credential_token; *length = data->deleg_credential_token_len; return 0; } if (data->deleg_cred_set == 0) { cgsi_err(soap, "get delegated credentials: no delegated credentials available"); return -1; } maj_stat = gss_export_cred(&min_stat, data->deleg_credential_handle, GSS_C_NO_OID, 0, &buffer_desc); if (maj_stat != GSS_S_COMPLETE) { cgsi_gssapi_err(soap, "Error exporting credentials", maj_stat, min_stat); return -1; } data->deleg_credential_token = malloc(buffer_desc.length); if (data->deleg_credential_token == NULL) { (void) gss_release_buffer(&min_stat, &buffer_desc); cgsi_err(soap, "get_delegated_credentials: could not allocate memory"); return -1; } memcpy(data->deleg_credential_token, buffer_desc.value, buffer_desc.length); data->deleg_credential_token_len = buffer_desc.length; (void) gss_release_buffer(&min_stat, &buffer_desc); *buffer = data->deleg_credential_token; *length = data->deleg_credential_token_len; return 0; } int export_delegated_credentials(struct soap *soap, char *filename) { const char *token; size_t token_length; int fd; if (soap == NULL) { cgsi_err(soap, "invalid argument passed to export_delegated_credentials"); return -1; } if (get_delegated_credentials(soap, (void **)&token, &token_length)<0) { cgsi_err(soap, "export delegated credentials: could not get credential token"); return -1; } fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd < 0) { cgsi_err(soap, "export delegated credentials: could not open temp file"); return -1; } if (write(fd, token, token_length) != (ssize_t)token_length) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "export delegated credentials: could not write to file (%s)", strerror(errno)); cgsi_err(soap, buf); if(fd >= 0) close(fd); return -1; } if (close(fd)<0) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "export delegated credentials: could not close file (%s)", strerror(errno)); cgsi_err(soap, buf); return -1; } return 0; } #define PROXY_ENV_VAR "X509_USER_PROXY" int set_default_proxy_file(struct soap *soap, char *filename) { int rc; rc = setenv(PROXY_ENV_VAR, filename, 1); if (rc < 0) { char buf[BUFSIZE]; snprintf(buf, BUFSIZE, "set default proxy file: could not setenv (%s)", strerror(errno)); cgsi_err(soap, buf); return -1; } return 0; } void clear_default_proxy_file(int unlink_file) { char *proxy_file; /* Removing the credentials file if flagged so */ if (unlink_file) { proxy_file = getenv(PROXY_ENV_VAR); if (proxy_file != NULL) { unlink(proxy_file); } } /* Clearing the environment variable */ unsetenv(PROXY_ENV_VAR); } int has_delegated_credentials(struct soap *soap) { struct cgsi_plugin_data *data; if (soap == NULL) { return -1; } data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "export delegated credentials: could not get data structure"); return -1; } if (data->deleg_cred_set != 0) { return 1; } return 0; } int soap_cgsi_init(struct soap *soap, int cgsi_options) { int params, rc; params = cgsi_options; if( cgsi_options & CGSI_OPT_KEEP_ALIVE ) soap_init2( soap, SOAP_IO_KEEPALIVE, SOAP_IO_KEEPALIVE ); else soap_init(soap); rc = soap_register_plugin_arg(soap, cgsi_plugin, ¶ms); if (rc < 0) return -1; return 0; } /** * Activate or deactivate required globus modules */ static void cgsi_plugin_globus_modules(int activate) { if (activate) { (void) globus_module_activate(GLOBUS_GSI_GSS_ASSIST_MODULE); (void) globus_module_activate(GLOBUS_GSI_GSSAPI_MODULE); } else { (void) globus_module_deactivate(GLOBUS_GSI_GSSAPI_MODULE); (void) globus_module_deactivate(GLOBUS_GSI_GSS_ASSIST_MODULE); } } static int _get_user_ca (X509 *px509_cred, STACK_OF(X509) *px509_chain, char *user_ca) { X509 *cert; globus_gsi_cert_utils_cert_type_t cert_type; int i; if (! px509_cred || ! px509_chain) return (-1); cert = px509_cred; if (globus_gsi_cert_utils_get_cert_type(cert, &cert_type) != GLOBUS_SUCCESS) return (-1); if (cert_type == GLOBUS_GSI_CERT_UTILS_TYPE_EEC || cert_type == GLOBUS_GSI_CERT_UTILS_TYPE_CA) { X509_NAME_oneline(X509_get_issuer_name(cert), user_ca, 255); return (0); } for (i = 0; i < sk_X509_num(px509_chain); i++) { cert = sk_X509_value (px509_chain, i); if (globus_gsi_cert_utils_get_cert_type(cert, &cert_type) != GLOBUS_SUCCESS) return (-1); if (cert_type == GLOBUS_GSI_CERT_UTILS_TYPE_EEC || cert_type == GLOBUS_GSI_CERT_UTILS_TYPE_CA) { X509_NAME_oneline(X509_get_issuer_name(cert), user_ca, 255); return (0); } } return (-1); } /* Returns the CA */ char *get_client_ca(struct soap *soap) { struct cgsi_plugin_data *data; if (soap == NULL) return NULL; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "get_client_ca: could not get data structure"); return NULL; } if (*data->user_ca == '\0') { return NULL; } return data->user_ca; } /***************************************************************** * * * VOMS FUNCTIONS * * * *****************************************************************/ int retrieve_userca_and_voms_creds(struct soap *soap) { int ret = 0; X509 *px509_cred= NULL; STACK_OF(X509) *px509_chain = NULL; #if defined(USE_VOMS) int error= 0; struct vomsdata *vd= NULL; struct voms **volist = NULL; #endif gss_ctx_id_desc * context; gss_cred_id_t cred; /* Internally a gss_cred_id_t type is a pointer to a gss_cred_id_desc */ gss_cred_id_desc * cred_desc = NULL; globus_gsi_cred_handle_t gsi_cred_handle; struct cgsi_plugin_data *data; ret = -1; if (soap == NULL) { return -1; } data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "retrieve_userca_and_voms_creds: could not get data structure"); return -1; } /* fqan is set, if this function was already called */ /* connection initialization resets this structure */ if (data->fqan != NULL) { trace(data, "retrieve_userca_and_voms_creds: data->fqans already initialized\n"); return 0; } /* Downcasting the context structure */ context = (gss_ctx_id_desc *) data->context_handle; cred = context->peer_cred_handle; /* cast to gss_cred_id_desc */ if (cred == GSS_C_NO_CREDENTIAL) { trace(data, "retrieve_userca_and_voms_creds: No credentials given\n"); goto leave; } cred_desc = (gss_cred_id_desc *) cred; if (globus_module_activate(GLOBUS_GSI_CREDENTIAL_MODULE) != GLOBUS_SUCCESS) { trace(data, "retrieve_userca_and_voms_creds: Could not activate GLOBUS_GSI_CREDENTIAL_MODULE\n"); goto leave; } /* Getting the X509 certicate */ gsi_cred_handle = cred_desc->cred_handle; if (globus_gsi_cred_get_cert(gsi_cred_handle, &px509_cred) != GLOBUS_SUCCESS) { trace(data, "retrieve_userca_and_voms_creds: failed to get the credentials\n"); globus_module_deactivate(GLOBUS_GSI_CREDENTIAL_MODULE); goto leave; } /* Getting the certificate chain */ if (globus_gsi_cred_get_cert_chain (gsi_cred_handle, &px509_chain) != GLOBUS_SUCCESS) { trace(data, "retrieve_userca_and_voms_creds: failed to get the credentials chain\n"); X509_free (px509_cred); (void)globus_module_deactivate (GLOBUS_GSI_CREDENTIAL_MODULE); goto leave; } if (_get_user_ca (px509_cred, px509_chain, data->user_ca) < 0) { trace(data, "retrieve_userca_and_voms_creds: could not get the user's CA\n"); goto leave; } /* No need for the globus module anymore, the rest are calls to VOMS */ (void)globus_module_deactivate (GLOBUS_GSI_CREDENTIAL_MODULE); #if defined(USE_VOMS) if (data->disable_voms_check) { trace(data, "retrieve_userca_and_voms_creds: voms_check disabled\n"); ret = 0; goto leave; } if ((vd = VOMS_Init (NULL, NULL)) == NULL) { trace(data, "retrieve_userca_and_voms_creds: failed to initialize VOMS\n"); goto leave; } if ((VOMS_Retrieve (px509_cred, px509_chain, RECURSE_CHAIN, vd, &error) == 0) && (error != VERR_NOEXT)) { char buffer[BUFSIZE]; VOMS_ErrorMessage(vd, error, buffer, BUFSIZE); trace(data, "retrieve_userca_and_voms_creds: failed to get the VOMS extensions\n"); trace(data, buffer); trace(data, "\n"); cgsi_err(soap, buffer); VOMS_Destroy (vd); goto leave; } volist = vd->data; if (volist != NULL) { int i = 0; int nbfqan; char buffer[BUFSIZE]; /* Copying the voname */ if ((*volist)->voname != NULL) { data->voname = strdup((*volist)->voname); snprintf(buffer, BUFSIZE, "retrieve_userca_and_voms_creds: got VO %s\n", data->voname); trace(data, buffer); } /* Counting the fqans before allocating the array */ while( volist[0]->fqan[i] != NULL) { i++; } nbfqan = i; if (nbfqan > 0) { data->fqan = (char **)malloc(sizeof(char *) * (i+1)); if (data->fqan != NULL) { for (i=0; ifqan[i] = strdup( volist[0]->fqan[i]); snprintf(buffer, BUFSIZE, "retrieve_userca_and_voms_creds: got FQAN %s\n", data->fqan[i]); trace(data, buffer); } data->fqan[nbfqan] = NULL; data->nbfqan = nbfqan; } } /* if (nbfqan > 0) */ } else { trace(data, "retrieve_userca_and_voms_creds: no vos present\n"); } VOMS_Destroy (vd); #endif ret = 0; leave: if (px509_cred) X509_free (px509_cred); if (px509_chain) sk_X509_pop_free(px509_chain,X509_free); return ret; } int retrieve_voms_credentials(struct soap *soap) { return retrieve_userca_and_voms_creds(soap); } /* Returns the VO name, if it could be retrieved via VOMS */ char *get_client_voname(struct soap *soap) { struct cgsi_plugin_data *data; if (soap == NULL) return NULL; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "get_client_voname: could not get data structure"); return NULL; } if (data->voname == NULL) { return NULL; } return data->voname; } char **get_client_roles(struct soap *soap, int *nbfqan) { struct cgsi_plugin_data *data; if (soap == NULL) return NULL; if (nbfqan == NULL) { cgsi_err(soap, "get_client_roles: nbfqan is NULL, cannot return FQAN number"); return NULL; } *nbfqan = 0; data = (struct cgsi_plugin_data*)soap_lookup_plugin(soap, server_plugin_id); if (data == NULL) { cgsi_err(soap, "get_client_roles: could not get data structure"); return NULL; } if (data->fqan == NULL) { return NULL; } *nbfqan = data->nbfqan; return data->fqan; } static int is_loopback(struct sockaddr *sa) { int result = 0; switch (sa->sa_family) { case AF_INET: if (*(unsigned char *) &((struct sockaddr_in *) sa)->sin_addr.s_addr == 127) { result = 1; } break; case AF_INET6: if(IN6_IS_ADDR_LOOPBACK(&((struct sockaddr_in6 *) sa)->sin6_addr) || (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *) sa)->sin6_addr) && *(uint8_t *) &((struct sockaddr_in6 *) sa)->sin6_addr.s6_addr[12] == 127)) { result = 1; } break; } return result; } static void free_conn_state(struct cgsi_plugin_data *data) { OM_uint32 minor_status; char **p; (void) gss_delete_sec_context (&minor_status, &data->context_handle,GSS_C_NO_BUFFER); (void) gss_release_cred (&minor_status, &data->credential_handle); (void) gss_release_cred(&minor_status, &data->deleg_credential_handle); data->context_established = 0; data->socket_fd = -1; data->client_name[0] = '\0'; data->server_name[0] = '\0'; data->username[0] = '\0'; data->nb_iter = 0; data->deleg_cred_set = 0; if (data->voname) { free(data->voname); data->voname = NULL; } if (data->fqan) { for(p = data->fqan; *p != NULL; ++p) { free(*p); } free(data->fqan); data->fqan = NULL; } data->nbfqan = 0; data->had_send_error = 0; if (data->deleg_credential_token) { free(data->deleg_credential_token); data->deleg_credential_token = NULL; } data->deleg_credential_token_len = 0; data->buffered_in = buffer_free(data->buffered_in); } gss_buffer_t buffer_create(gss_buffer_t buf, size_t offset) { gss_buffer_t new_buf; new_buf = (gss_buffer_t) malloc(sizeof(gss_buffer_desc)); return buffer_copy_from(new_buf, buf, offset); } gss_buffer_t buffer_free(gss_buffer_t buf) { if(buf != NULL) { free(buf->value); free(buf); } return NULL; } gss_buffer_t buffer_consume_upto(gss_buffer_t buf, size_t offset) { void *old_data; old_data = buf->value; buffer_copy_from(buf, buf, offset); free(old_data); return buf; } gss_buffer_t buffer_copy_from(gss_buffer_t dest, gss_buffer_t src, size_t offset) { size_t new_len; void *new_data; if(offset > src->length) { // This is probably triggered by a bug somewhere. offset = src->length; } new_len = src->length - offset; new_data = malloc(new_len); memcpy(new_data, ((char *)src->value) + offset, new_len); dest->value = new_data; dest->length = new_len; return dest; } CGSI-gSOAP-1.3.8/src/CMakeLists.txt0000644000000000000000000000630512562602635015217 0ustar rootroot## default set of build ## defaults sources SET(src_core_csgsi "cgsi_plugin.c") SET(src_core_cgsi_header "cgsi_plugin.h") SET(src_core_csgsi_cpp "${CMAKE_CURRENT_BINARY_DIR}/cgsi_plugin.cpp") # create cpp one configure_file( ${src_core_csgsi} ${src_core_csgsi_cpp} COPYONLY ) # C # globus include_directories( " . " " /usr/include/voms " ${GSOAP_INCLUDES_DIR} ${VOMS_INCLUDE_DIRS} ${GLOBUS_GSSAPI_GSI_INCLUDE_DIRS} ${GLOBUS_GSS_ASSIST_INCLUDE_DIRS} ) add_definitions(${GSOAP_DEFINITIONS} ${GLOBUS_GSSAPI_GSI_DEFINITIONS} ${GLOBUS_GSS_ASSIST_DEFINITIONS}) if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") add_library(cgsi_plugin STATIC ${src_core_csgsi}) else () add_library(cgsi_plugin SHARED ${src_core_csgsi}) endif () target_link_libraries(cgsi_plugin ${GLOBUS_COMMON_LIBRARIES} ${GLOBUS_GSSAPI_GSI_LIBRARIES} ${GLOBUS_GSS_ASSIST_LIBRARIES} ${GLOBUS_GSI_CERT_UTILS_LIBRARIES} ${GLOBUS_GSI_CREDENTIAL_LIBRARIES} "c" ) set_target_properties(cgsi_plugin PROPERTIES VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} SOVERSION ${VERSION_MAJOR} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME "cgsi_plugin" ) # voms if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") add_library(cgsi_plugin_voms STATIC ${src_core_csgsi}) else () add_library(cgsi_plugin_voms SHARED ${src_core_csgsi}) endif () target_link_libraries(cgsi_plugin_voms ${GLOBUS_GSSAPI_GSI_LIBRARIES} ${GLOBUS_GSS_ASSIST_LIBRARIES} ${VOMS_LIBRARIES} "c" ) set_target_properties(cgsi_plugin_voms PROPERTIES VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} SOVERSION ${VERSION_MAJOR} CLEAN_DIRECT_OUTPUT 1 COMPILE_FLAGS " -DUSE_VOMS " OUTPUT_NAME "cgsi_plugin_voms" ) ## C++ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") add_library(cgsi_plugin_cpp STATIC ${src_core_csgsi_cpp}) else () add_library(cgsi_plugin_cpp SHARED ${src_core_csgsi_cpp}) endif () target_link_libraries(cgsi_plugin_cpp ${GLOBUS_COMMON_LIBRARIES} ${GLOBUS_GSSAPI_GSI_LIBRARIES} ${GLOBUS_GSS_ASSIST_LIBRARIES} ${GLOBUS_GSI_CERT_UTILS_LIBRARIES} ${GLOBUS_GSI_CREDENTIAL_LIBRARIES} "c" ) set_target_properties(cgsi_plugin_cpp PROPERTIES VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} SOVERSION ${VERSION_MAJOR} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME "cgsi_plugin_cpp" ) # voms if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") add_library(cgsi_plugin_voms_cpp STATIC ${src_core_csgsi_cpp}) else () add_library(cgsi_plugin_voms_cpp SHARED ${src_core_csgsi_cpp}) endif () target_link_libraries(cgsi_plugin_voms_cpp ${VOMS_LIBRARIES} ${GLOBUS_GSSAPI_GSI_LIBRARIES} ${GLOBUS_GSS_ASSIST_LIBRARIES} "c" ) set_target_properties(cgsi_plugin_voms_cpp PROPERTIES VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} SOVERSION ${VERSION_MAJOR} CLEAN_DIRECT_OUTPUT 1 COMPILE_FLAGS " -DUSE_VOMS " OUTPUT_NAME "cgsi_plugin_voms_cpp" ) install(TARGETS cgsi_plugin cgsi_plugin_voms cgsi_plugin_cpp cgsi_plugin_voms_cpp RUNTIME DESTINATION ${BIN_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR} ) install(FILES "cgsi_plugin.h" DESTINATION ${INCLUDE_INSTALL_DIR}/) CGSI-gSOAP-1.3.8/src/doxygenConfig0000755000000000000000000012520112562602635015205 0ustar rootroot# Doxyfile 1.3.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = CGSI_gSOAP # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = $(VERSION) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, # Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explict @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # reimplements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = $(SRCDIR)/cgsi_plugin.h # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl *.cs *.php *.php3 *.inc FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = $(SRCDIR)/doxygenConfig.footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output dir. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = YES # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = YES # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assigments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = YES # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse the # parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superceded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = NO # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similiar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that # lay further from the root node will be omitted. Note that setting this option to # 1 or 2 may greatly reduce the computation time needed for large code bases. Also # note that a graph may be further truncated if the graph's image dimensions are # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO CGSI-gSOAP-1.3.8/LICENSE0000644000000000000000000002613612562602635012701 0ustar rootroot Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. CGSI-gSOAP-1.3.8/test/0000755000000000000000000000000012562602635012643 5ustar rootrootCGSI-gSOAP-1.3.8/test/cgsi-tracefile-with-ascii0000755000000000000000000000040512562602635017510 0ustar rootroot#!/usr/bin/perl -pw if (/^(?:[[:xdigit:]]{2} ){1,16}$/) { my $ascii = ' '; foreach $digits (split(/\s+/)) { $hd = hex($digits); $ascii .= ((31 < $hd and $hd < 127) ? chr($hd) : '.'); } $ascii = ' ' x ((17 - length($ascii))*3) . $ascii; s/$/$ascii/; } CGSI-gSOAP-1.3.8/test/Makefile0000644000000000000000000001024212562602635014302 0ustar rootroot## # $id: $ ## ifeq ($(SRCDIR), $(EMPTY)) SRCDIR=. else VPATH=.:$(SRCDIR) endif ################################################################################ ## implicit rule flags ## SHELL = /bin/sh -e CC = gcc CFLAGS = -Wall -g -fPIC LDFLAGS = ################################################################################ ## project flags ## ifeq ($(GLOBUS_LOCATION), $(EMPTY)) GLOBUS_LOCATION=/opt/globus endif ifeq ($(GLOBUS_FLAVOUR), $(EMPTY)) GLOBUS_FLAVOUR = gcc32dbg endif GLOBUS_FLAVOUR_PTHR=$(GLOBUS_FLAVOUR)pthr GLOBUS_INCLUDE = -I$(GLOBUS_LOCATION)/include/$(GLOBUS_FLAVOUR) GLOBUS_LIBS = -L$(GLOBUS_LOCATION)/lib -lglobus_gssapi_gsi_$(GLOBUS_FLAVOUR) \ -lglobus_gss_assist_$(GLOBUS_FLAVOUR) # This is not nice: libtool by hand... GLOBUS_LIBS += $(shell $(SRCDIR)/libtool $(GLOBUS_LOCATION)/lib/libglobus_gssapi_gsi_$(GLOBUS_FLAVOUR).la) GLOBUS_LIBS += $(shell $(SRCDIR)/libtool $(GLOBUS_LOCATION)/lib/libglobus_gss_assist_$(GLOBUS_FLAVOUR).la) GLOBUS_INCLUDE_PTHR = -I$(GLOBUS_LOCATION)/include/$(GLOBUS_FLAVOUR_PTHR) GLOBUS_LIBS_PTHR = -L$(GLOBUS_LOCATION)/lib -lglobus_gssapi_gsi_$(GLOBUS_FLAVOUR_PTHR) \ -lglobus_gss_assist_$(GLOBUS_FLAVOUR_PTHR) # This is not nice: libtool by hand... GLOBUS_LIBS_PTHR += $(shell $(SRCDIR)/libtool $(GLOBUS_LOCATION)/lib/libglobus_gssapi_gsi_$(GLOBUS_FLAVOUR_PTHR).la) GLOBUS_LIBS_PTHR += $(shell $(SRCDIR)/libtool $(GLOBUS_LOCATION)/lib/libglobus_gss_assist_$(GLOBUS_FLAVOUR_PTHR).la) LDLIBS += $(GLOBUS_LIBS) # handling x86_64's lib64 directory LIBDIR =lib ifeq ($(shell uname -m), x86_64) LIBDIR =lib64 endif ifeq ($(GSOAP_LOCATION), $(EMPTY)) GSOAP_LOCATION=/usr/local endif CFLAGS += -I$(GSOAP_LOCATION)/include LDLIBS += -L$(GSOAP_LOCATION)/lib -lgsoap ifeq ($(GSOAP_VERSION), $(EMPTY)) GSOAP_VERSION=_gsoap_2.3 endif # local references to CGSI-gSOAP CFLAGS += -I. -I$(SRCDIR) -I$(SRCDIR)/../src ifeq ($(VOMS_LOCATION), $(EMPTY)) VOMS_LOCATION=/opt/glite endif ifneq ($(USE_VOMS), $(EMPTY)) VOMS_FLAGS = -DUSE_VOMS -I$(VOMS_LOCATION)/include/glite/security/voms VOMS_LIBS=-L$(VOMS_LOCATION)/$(LIBDIR) -lvomsapi_$(GLOBUS_FLAVOUR) VOMS_FLAGS_PTHR = -DUSE_VOMS -I$(VOMS_LOCATION)/include/glite/security/voms VOMS_LIBS_PTHR=-L$(VOMS_LOCATION)/$(LIBDIR) -lvomsapi_$(GLOBUS_FLAVOUR_PTHR) CFLAGS += $(VOMS_FLAGS) LDLIBS += $(VOMS_LIBS) endif ################################################################################ ## compilation targets ## .PHONY: all all: cgsi-gsoap-client cgsi-gsoap-server cgsi_gsoap_test.h: cgsi-gsoap-test.wsdl typemap.dat $(GSOAP_LOCATION)/bin/wsdl2h -t $(SRCDIR)/typemap.dat -n cgsi_gsoap_test -c -s -o $@ $< cgsi_gsoap_testH.h cgsi_gsoap_testClientLib.c cgsi_gsoap_testServerLib.c: cgsi_gsoap_test.h $(GSOAP_LOCATION)/bin/soapcpp2 -I$(GSOAP_LOCATION)/include -p cgsi_gsoap_test $< # gSOAP 2.6.2 vs 2.7.6b workaround: if [ -f cgsi_USCOREgsoap_USCOREtest.nsmap ] ; \ then mv cgsi_USCOREgsoap_USCOREtest.nsmap cgsi_gsoap_test.nsmap ; \ fi cgsi_gsoap_testC.o: cgsi_gsoap_testC.c $(CC) -I$(GSOAP_LOCATION)/include -c -o $@ $< cgsi_gsoap_testClient.o: cgsi_gsoap_testClient.c $(CC) -I$(GSOAP_LOCATION)/include -c -o $@ $< cgsi_gsoap_testServer.o: cgsi_gsoap_testServer.c $(CC) -I$(GSOAP_LOCATION)/include -c -o $@ $< cgsi-gsoap-client.o: cgsi-gsoap-client.c cgsi_gsoap_testH.h $(CC) $(CFLAGS) -c -o $@ $< cgsi-gsoap-client: cgsi-gsoap-client.o cgsi_gsoap_testClient.o cgsi_gsoap_testC.o ../src/libcgsi_plugin$(GSOAP_VERSION).so $(CC) -o $@ $^ $(LDLIBS) cgsi-gsoap-server.o: cgsi-gsoap-server.c cgsi_gsoap_testH.h $(CC) $(CFLAGS) -c -o $@ $< cgsi-gsoap-server: cgsi-gsoap-server.o cgsi_gsoap_testServer.o cgsi_gsoap_testC.o ../src/libcgsi_plugin_voms$(GSOAP_VERSION)_$(GLOBUS_FLAVOUR).so $(CC) -o $@ $^ $(LDLIBS) clean: rm -f *.o *.c *.h *.xml *.nsmap ################################################################################ ## test targets ## test: cgsi-gsoap-client cgsi-gsoap-server LD_LIBRARY_PATH=$(GLOBUS_LOCATION)/lib $(SRCDIR)/test-client-server.sh ################################################################################ ## maintenance targets ## test-utils: cp -u $(SRCDIR)/../../org.glite.data.test-utils/shunit . cp -u $(SRCDIR)/../../org.glite.data.test-utils/glite-test-certs . CGSI-gSOAP-1.3.8/test/cgsi-gsoap-server.c0000644000000000000000000001507212562602635016354 0ustar rootroot/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Authors: * Akos Frohner * * Simple test server for CGSI-gSOAP. */ #include #include #include #include "cgsi_plugin.h" #include "cgsi_gsoap_testH.h" #include "cgsi_gsoap_test.nsmap" int cgsi_USCOREgsoap_USCOREtest__getAttributes(struct soap *psoap, struct cgsi_USCOREgsoap_USCOREtest__getAttributesResponse *response) { char **roles; char *attributes; int nbfqans, i; int length = 1000; if (retrieve_voms_credentials(psoap)) { return SOAP_SVR_FAULT; } roles = get_client_roles(psoap, &nbfqans); if (roles != NULL) { length += nbfqans; for (i = 0; i < nbfqans; i++) { length += strlen(roles[i]); } } attributes = malloc(length); get_client_dn(psoap, attributes, length); if (roles != NULL) { strncat(attributes, "\nFQANs:\n", length); for (i = 0; i < nbfqans; i++) { strncat(attributes, roles[i], length); strncat(attributes, "\n", length); } } fprintf(stdout, "INFO: Client with the following attributes:\n%s", attributes); if (has_delegated_credentials(psoap)) { fprintf(stdout, "INFO: Server has a credential delegated from the client\n"); strncat(attributes, "Server has a credential delegated from the client\n", length - strlen(attributes) - 1); } fprintf(stdout,"\n"); fflush(stdout); attributes[length-1] = '\0'; response->getAttributesReturn = soap_strdup(psoap, attributes); free(attributes); return SOAP_OK; } void parse_options(int argc, char **argv, int *flags, int *port, int *to_serve) { *flags = CGSI_OPT_SERVER | CGSI_OPT_DISABLE_MAPPING; *port = 8111; *to_serve = 1; int c; while ((c = getopt(argc, argv, "p:r:sgol")) != -1) switch (c) { case 'h': printf("Usage: %s -p PORT (-s|-g) -o -l\n", argv[0]); fflush(stdout); exit (EXIT_SUCCESS); break; case 'p': *port = atoi(optarg); fprintf(stdout, "INFO: port number = %d\n", *port); fflush(stdout); break; case 'r': *to_serve = atoi(optarg); fprintf(stdout, "INFO: requests to be served = %d\n", *to_serve); fflush(stdout); break; case 's': *flags |= CGSI_OPT_SSL_COMPATIBLE; fprintf(stdout, "INFO: SSL compatible mode\n"); fflush(stdout); break; case 'g': *flags |= CGSI_OPT_DELEG_FLAG; fprintf(stdout, "INFO: enabled HTTPG delegation\n"); fflush(stdout); break; case 'o': *flags |= CGSI_OPT_DISABLE_VOMS_CHECK; fprintf(stdout, "INFO: disabled VOMS parsing during authentication\n"); fflush(stdout); break; case 'l': *flags |= CGSI_OPT_ALLOW_ONLY_SELF; fprintf(stdout, "INFO: will only allow clients that share the server's identity to connect\n"); fflush(stdout); break; case ':': fprintf(stderr, "ERROR: Option argument is missing\n"); fflush(stderr); exit(EXIT_FAILURE); case '?': fprintf(stderr, "ERROR: Unknown command line option\n"); fflush(stderr); exit(EXIT_FAILURE); default: fprintf(stderr, "ERROR: Illegal command line arguments:%s\n", optarg); fflush(stderr); exit(EXIT_FAILURE); } if ((*flags & CGSI_OPT_DELEG_FLAG) && (*flags & CGSI_OPT_SSL_COMPATIBLE)) { fprintf(stdout, "WARNING: it is not useful to set both delegation and ssl compatible flags\n"); fflush(stdout); } } int main(int argc, char **argv) { int s; // slave socket struct soap *psoap; int flags, i; int port = 8111; int to_serve = 1; parse_options(argc, argv, &flags, &port, &to_serve); fprintf(stdout, "INFO: CGSI-gSOAP test server is going to serve %d requests.\n", to_serve); fflush(stdout); psoap = soap_new(); if (psoap == NULL) { fprintf(stdout, "ERROR: Failed to create a SOAP instance\n"); exit(EXIT_FAILURE); } if (soap_cgsi_init(psoap, flags)) { fprintf(stdout, "ERROR: Failed to initialize the SOAP layer\n"); exit(EXIT_FAILURE); } if (soap_set_namespaces(psoap, namespaces)) { fprintf(stdout, "ERROR: Failed to set namespaces\n"); soap_print_fault(psoap, stdout); exit(EXIT_FAILURE); } // making these short for tests psoap->max_keep_alive = 5; psoap->accept_timeout = 60; psoap->recv_timeout = 5; psoap->send_timeout = 5; if( soap_bind(psoap, NULL, port, 100) < 0 ) { fprintf(stdout, "ERROR: soap_bind has failed.\n"); soap_print_fault(psoap, stdout); soap_destroy(psoap); exit(EXIT_FAILURE); } /* main loop */ for (i = 0; i < to_serve; i++) { s = soap_accept(psoap); if (s < 0) { soap_print_fault(psoap, stdout); break; } fprintf(stdout, "\nINFO: ==================================================\n"); fprintf(stdout, "INFO: %d: accepted connection from IP=%d.%d.%d.%d socket=%d\n", i, (int)((psoap->ip >> 24) & 0xFF), (int)((psoap->ip >> 16) & 0xFF), (int)((psoap->ip >> 8) & 0xFF), (int)(psoap->ip & 0xFF), s); if (soap_serve(psoap) != SOAP_OK) // process RPC request soap_print_fault(psoap, stdout); // print error fprintf(stdout, "INFO: request served\n"); fflush(stdout); soap_destroy(psoap); // clean up class instances soap_end(psoap); // clean up everything and close socket } soap_closesock(psoap); soap_done(psoap); fprintf(stdout, "server is properly shut down\n"); return EXIT_SUCCESS; } CGSI-gSOAP-1.3.8/test/libtool0000755000000000000000000000324112562602635014235 0ustar rootroot#!/usr/bin/perl -w # # poor man's libtool # # (c) 2006-2009. FROHNER Ákos # # License: http://www.apache.org/licenses/LICENSE-2.0 # use strict; use FileHandle; use File::Basename; my $verbose = 0; my @dependencies = @ARGV; my %seen_dependency = (); my @LDADD = (); while ($#dependencies >= 0) { my $dep = pop(@dependencies); # check, if we have seen this before next if $seen_dependency{$dep}; $seen_dependency{$dep} = 1; print "INFO: dependency: $dep \n" if $verbose; if ( $dep =~ /.*\.la/ and -f $dep) { print "INFO: processing '$dep' file\n" if $verbose; # adding the base library to the dependencies my ($name, $path, $suffix) = fileparse($dep, ('.la')); push(@dependencies, '-L' . $path); $name =~ s/^lib//; push(@dependencies, '-l' . $name); my $fla = new FileHandle("$dep",'r') or die "Could not open '$dep' for reading!\n"; while(<$fla>) { next unless /^dependency_libs\s*=/; my ($libs) = (/^dependency_libs\s*=\s*'([^']*)'/); print "INFO: new dependencies: $libs\n" if $verbose; push(@dependencies, split(/\s+/, $libs)); } $fla->close(); } elsif ( $dep =~ /^-L/ ) { print "INFO: checking if the '$dep' directory exists\n" if $verbose; if ( -d substr($dep, 2)) { push(@LDADD, $dep); } elsif ($verbose) { warn "WARN: '$dep' does not refer to a real directory!\n"; } } else { print "INFO: adding '$dep' to LDADD\n" if $verbose; push(@LDADD, $dep); } } print join(' ', @LDADD), "\n"; CGSI-gSOAP-1.3.8/test/shunit0000755000000000000000000002300612562602635014104 0ustar rootroot#!/bin/bash # # Copyright (c) Members of the EGEE Collaboration. 2004-2009. # See http://public.eu-egee.org/partners/ for details on # the copyright holders. # For license conditions see the license file or # http://www.apache.org/licenses/LICENSE-2.0 # # Authors: # Akos Frohner # # Unit test framework for test written in shell. # # Environment variables: # TEST_MODULE the name of the module/component, # for example 'org.glite.data.hydra-cli' # # TEST_REQUIRES the name of the binaries to be used, # for example 'grep glite-eds-encrypt' # # TEST_VERBOSE set to 'yes' to print many messages # # TEST_FAILONERROR set to 'exit' to stop exit in case of error # # TEST_XML_REPORT set to 'yes' to produce an XML report # See shunit.dtd for the XML schema. # # Usage: # # test_success 'expected text in output' program with parameters # # test_success redirects both stdout and stderr into a temporary # file and egreps for the specified text. The exit code of # the command is also analysed. # The test is successful, if the return code is 0 and the # expected text was found in the output. # # test_failure 'expected text in output' program with parameters # # test_failure works like test_success, just the return # code has to be something else than 0 to declare the # test successful. # # test_success_diff 'expected text in output' program with parameters # # test_success_diff works like test_success, however it # compares the expected result to the output using 'diff', # so they shall match exactly to declare the test successful. # # test_summary # # Prints the number of successful and erroneous tests and # exits with the number of errors found as exit code. # # Assumptions: # # Test certificates has been already generated and staged by the # org.glite.security.test-utils module. # # There is a 'services.xml' file in the current directory: # # # # # https://localhost:8443/glite-data-hydra-service/services/Hydra # org.glite.Metadata # 1.0.0 # org.example.single # # # if [ -z "$TEST_MODULE" ]; then echo "Error: this is a framework, which shall be used by real tests!" >&2 exit -1 fi # should it print intermediate results TEST_VERBOSE=${TEST_VERBOSE:-'no'} # special case for autoconf based modules if [ $(cd .. && basename $PWD) = "$TEST_MODULE" -a -d '../build' ]; then dot_paths=$(find $(dirname $0)/../build -name .libs -printf '%p:') export PATH=${dot_paths}$PATH export LD_LIBRARY_PATH=${dot_paths}$LD_LIBRARY_PATH fi # using the stage area as GLITE_LOCATION if [ -z "$GLITE_LOCATION" ]; then for ws in . .. ../.. ../../.. ../../../..; do if [ -d "$ws/stage" ]; then export GLITE_LOCATION=$(cd $ws/stage; echo $PWD) break fi done if [ -z "$GLITE_LOCATION" ]; then echo "Error: could not find the 'stage' directory!" >&2 exit -1 fi fi export PATH=$PATH:$GLITE_LOCATION/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GLITE_LOCATION/lib if [ 'yes' = "$TEST_VERBOSE" ]; then echo "#Info: the test is using the following pathes:" echo " export PATH=$PATH" echo " export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" fi tempbase=$PWD/$(basename $0)-$$ trap "rm -rf $tempbase.*" EXIT # change it to 'exit' to fail the test TEST_FAILONERROR=${TEST_FAILONERROR:-return} # test counts TEST_ALL=0 TEST_BAD=0 TEST_GOOD=0 if [ -n "$TEST_XML_REPORT" ]; then TEST_XML_OUTPUT=$tempbase.xml cat >$TEST_XML_OUTPUT < ]> EOF fi function test_report_good { TEST_GOOD=$(($TEST_GOOD + 1)) echo "OK" if [ -n "$TEST_XML_REPORT" ]; then ret=$1 shift echo "" >>$TEST_XML_OUTPUT echo " " >>$TEST_XML_OUTPUT echo -n " >$TEST_XML_OUTPUT cat $tempbase.result >>$TEST_XML_OUTPUT echo "]]>" >>$TEST_XML_OUTPUT echo -n " >$TEST_XML_OUTPUT cat $tempbase.stdout >>$TEST_XML_OUTPUT echo "]]>" >>$TEST_XML_OUTPUT echo "" >>$TEST_XML_OUTPUT fi } function test_report_bad { TEST_BAD=$(($TEST_BAD + 1)) echo "NOT OK" if [ -n "$TEST_XML_REPORT" ]; then ret=$1 shift echo "" >>$TEST_XML_OUTPUT echo " " >>$TEST_XML_OUTPUT echo -n " >$TEST_XML_OUTPUT cat $tempbase.result >>$TEST_XML_OUTPUT echo "]]>" >>$TEST_XML_OUTPUT echo -n " >$TEST_XML_OUTPUT cat $tempbase.stdout >>$TEST_XML_OUTPUT echo "]]>" >>$TEST_XML_OUTPUT echo "" >>$TEST_XML_OUTPUT fi } function test_success { result="$1" echo "$1" >$tempbase.result shift TEST_ALL=$(($TEST_ALL + 1)) echo "" echo "Command: $@" echo "Expected result: $result" "$@" >$tempbase.stdout 2>&1 ret=$? [ 'yes' = "$TEST_VERBOSE" ] && sed -e 's/^/Output: /' $tempbase.stdout # expected to succeed if [ $ret -ne 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 1 fi egrep -q "$result" $tempbase.stdout if [ $? -ne 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 2 fi test_report_good $ret "$@" return 0 } function test_success_diff { echo "$1" >$tempbase.result shift TEST_ALL=$(($TEST_ALL + 1)) echo "" echo "Command: $@" [ 'yes' = "$TEST_VERBOSE" ] && sed -e 's/^/Expected: /' $tempbase.result "$@" >$tempbase.stdout 2>&1 ret=$? [ 'yes' = "$TEST_VERBOSE" ] && sed -e 's/^/Output: /' $tempbase.stdout # expected to succeed if [ $ret -ne 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 1 fi diff $tempbase.result $tempbase.stdout >$tempbase.diff ret=$? [ 'yes' = "$TEST_VERBOSE" -o $ret -ne 0 ] && sed -e 's/^/DiffOutput: /' $tempbase.diff if [ $ret -ne 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 2 fi test_report_good $ret "$@" return 0 } function test_failure { result="$1" echo "$1" >$tempbase.result shift TEST_ALL=$(($TEST_ALL + 1)) echo "" echo "Command: $@" echo "Expected result: $result" "$@" >$tempbase.stdout 2>&1 ret=$? [ 'yes' = "$TEST_VERBOSE" ] && sed -e 's/^/Output: /' $tempbase.stdout # it is expected to fail if [ $ret -eq 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 1 fi egrep -q "$result" $tempbase.stdout if [ $? -ne 0 ]; then test_report_bad $ret "$@" $TEST_FAILONERROR 2 fi test_report_good $ret "$@" return 0 } function test_summary { echo "" echo "There were $TEST_ALL test for '$TEST_MODULE': Success: $TEST_GOOD, Errors: $TEST_BAD" echo $(($TEST_GOOD * 100 / $TEST_ALL))"% success rate" if [ -n "$TEST_XML_REPORT" ]; then echo "" >>$TEST_XML_OUTPUT echo "" >>$TEST_XML_OUTPUT mv $TEST_XML_OUTPUT $(date +%Y%m%dT%H%M%S)-$(basename $0 .sh).xml fi exit $TEST_BAD } # check for required binaries for prog in $TEST_REQUIRES egrep do if [ ! -x "$(which $prog)" ]; then echo "Error: '$prog' not found!" >&2 exit -1 fi done TEST_CERT_DIR=$GLITE_LOCATION/share/test/certificates if [ ! -d "$TEST_CERT_DIR" ]; then echo "Error: '$TEST_CERT_DIR' was not found!" >&2 exit -1 fi export X509_CERT_DIR=$TEST_CERT_DIR/grid-security/certificates export X509_VOMS_DIR=$TEST_CERT_DIR/grid-security/vomsdir export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem if [ 'yes' = "$TEST_VERBOSE" ]; then echo "#Info: the test is using the following credentials:" echo " export X509_USER_PROXY=$X509_USER_PROXY" echo " export X509_CERT_DIR=$X509_CERT_DIR" echo " export X509_VOMS_DIR=$X509_VOMS_DIR" echo "" fi export GLITE_SD_VO='org.example.single' export GLITE_SD_PLUGIN='file' export GLITE_SD_SERVICES_XML=$(dirname $0)/services.xml if [ 'yes' = "$TEST_VERBOSE" ]; then echo "#Info: the test is using the following service-discovery settings:" echo " export GLITE_SD_VO='org.example.single'" echo " export GLITE_SD_PLUGIN='file'" echo " export GLITE_SD_SERVICES_XML=$(dirname $0)/services.xml" fi if [ -n "$TEST_XML_REPORT" ]; then echo -n ">$TEST_XML_OUTPUT env | sort >>$TEST_XML_OUTPUT echo "]]>" >>$TEST_XML_OUTPUT fi CGSI-gSOAP-1.3.8/test/typemap.dat0000644000000000000000000000007112562602635015012 0ustar rootrootcgsi_gsoap_test=http://glite.org/namespaces/cgsi-gsoap-1 CGSI-gSOAP-1.3.8/test/cgsi-gsoap-test.wsdl0000644000000000000000000000322412562602635016550 0ustar rootroot CGSI-gSOAP-1.3.8/test/test-client-server.sh0000755000000000000000000001370212562602635016744 0ustar rootroot#!/bin/bash # # Copyright (c) Members of the EGEE Collaboration. 2004. # See http://www.eu-egee.org/partners/ for details on the copyright holders. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Authors: # Akos Frohner # TEST_MODULE='CGSI-gSOAP' TEST_REQUIRES='cgsi-gsoap-client cgsi-gsoap-server glite-test-certs' export PATH=$PATH:. if [ -f 'shunit' ]; then source shunit elif [ -f '../../test/shunit' ]; then source ../../test/shunit else echo "ERROR: cannot find 'shunit'!" >&2 fi TEST_CERT_DIR=$PWD glite-test-certs --certdir=$TEST_CERT_DIR --some --env --wrong source $TEST_CERT_DIR/home/env_settings.sh function server_start { export X509_USER_CERT=$TEST_CERT_DIR/grid-security/hostcert.pem export X509_USER_KEY=$TEST_CERT_DIR/grid-security/hostkey.pem unset X509_USER_PROXY if [ 'yes' = "$TEST_VERBOSE" ]; then echo " export X509_USER_CERT=$X509_USER_CERT" echo " export X509_USER_KEY=$X509_USER_KEY" #export CGSI_TRACE='yes' fi cgsi-gsoap-server $@ >$tempbase.server.log 2>&1 & echo $! >$tempbase.server.pid } function server_stop { kill $(cat $tempbase.server.pid) 2>/dev/null echo "Server output:" echo "==============" cat $tempbase.server.log rm $tempbase.server.pid $tempbase.server.log } function test_old_behaviour { echo "------------------------------------------------------------" echo " testing the old behaviour with connection time VOMS parsing" echo "------------------------------------------------------------" PORT=8110 ENDPOINT="https://localhost:$PORT/cgsi-gsoap-test" server_start -r 5 -s -p $PORT unset X509_USER_CERT unset X509_USER_KEY export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success /org.acme cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme-Radmin.pem test_success /org.acme/Role=Admin cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme-Gproduction.pem test_success /org.acme/production cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/vomswv-acme.pem test_failure "CGSI-gSOAP: Error reading token data" cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success /org.acme cgsi-gsoap-client $ENDPOINT server_stop } function test_new_behaviour { echo "-----------------------------------------------------" echo " testing the new behaviour with explicit VOMS parsing" echo "-----------------------------------------------------" PORT=8111 ENDPOINT="https://localhost:$PORT/cgsi-gsoap-test" server_start -r 5 -s -p $PORT -o unset X509_USER_CERT unset X509_USER_KEY export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success /org.acme cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme-Radmin.pem test_success /org.acme/Role=Admin cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme-Gproduction.pem test_success /org.acme/production cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/vomswv-acme.pem test_failure "CGSI-gSOAP: Cannot find certificate of AC issuer for vo org.acme" cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success /org.acme cgsi-gsoap-client $ENDPOINT server_stop } function test_plain_proxy { echo "-----------------------------------------------" echo " testing the plain proxy without VOMS extension" echo "-----------------------------------------------" PORT=8112 ENDPOINT="https://localhost:$PORT/cgsi-gsoap-test" server_start -r 3 -s -p $PORT -o unset X509_USER_CERT unset X509_USER_KEY export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success /org.acme cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/vomswv-acme.pem test_failure "CGSI-gSOAP: Cannot find certificate of AC issuer for vo org.acme" cgsi-gsoap-client $ENDPOINT export X509_USER_PROXY=$TEST_CERT_DIR/home/user_grid_proxy.pem test_success "/C=UG/L=Tropic/O=Utopia/OU=Relaxation/CN=$LOGNAME" cgsi-gsoap-client $ENDPOINT server_stop } function test_delegation { echo "-----------------------------------------------" echo " testing delegation " echo "-----------------------------------------------" PORT=8113 ENDPOINT="httpg://localhost:$PORT/cgsi-gsoap-test" server_start -r 1 -p $PORT -o unset X509_USER_CERT unset X509_USER_KEY export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem test_success "Server has a credential delegated from the client" cgsi-gsoap-client -d $ENDPOINT server_stop } function test_stress { echo "---------------------------------------" echo " stress test with explicit VOMS parsing" echo "---------------------------------------" PORT=8114 ENDPOINT="https://localhost:$PORT/cgsi-gsoap-test" ITERATIONS=1000 server_start -r $ITERATIONS -s -p $PORT -o unset X509_USER_CERT unset X509_USER_KEY export X509_USER_PROXY=$TEST_CERT_DIR/home/voms-acme.pem i=0 while [ $i -lt $ITERATIONS ]; do echo "$i/$ITERATIONS" test_success /org.acme cgsi-gsoap-client $ENDPOINT i=$(( $i + 1 )) done server_stop } test_old_behaviour test_new_behaviour test_plain_proxy test_delegation #test_stress test_summary CGSI-gSOAP-1.3.8/test/cgsi-gsoap-client.c0000644000000000000000000000772712562602635016334 0ustar rootroot/* * Copyright (c) Members of the EGEE Collaboration. 2004. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Authors: * Akos Frohner * * Simple test client for CGSI-gSOAP. */ #include #include #include "cgsi_plugin.h" #include "cgsi_gsoap_testH.h" #include "cgsi_gsoap_test.nsmap" const static char HTTP_PREFIX[] = "http:"; const static char HTTPS_PREFIX[] = "https:"; const static char HTTPG_PREFIX[] = "httpg:"; struct soap *test_setup(const char *endpoint, int delegate, int namecheck, int allow_only_self) { struct soap *psoap; int ret,flags; psoap = soap_new(); /* Register the CGSI plugin if secure communication is requested */ if (endpoint && !strncmp(endpoint, HTTPS_PREFIX, strlen(HTTPS_PREFIX))) { flags = CGSI_OPT_SSL_COMPATIBLE; } else if (endpoint && !strncmp(endpoint, HTTPG_PREFIX, strlen(HTTPG_PREFIX))) { flags = 0; } else { printf("ERROR: Not secure endpoint '%s'\n", endpoint); exit(EXIT_FAILURE); } if (allow_only_self) flags |= CGSI_OPT_ALLOW_ONLY_SELF; if (!namecheck) flags |= CGSI_OPT_DISABLE_NAME_CHECK; if (delegate) flags |= CGSI_OPT_DELEG_FLAG; ret = soap_cgsi_init(psoap, flags); if (ret) { printf("ERROR: Failed to initialize the SOAP layer\n"); exit(EXIT_FAILURE); } if (soap_set_namespaces(psoap, namespaces)) { printf("ERROR: Failed to set namespaces\n"); exit(EXIT_FAILURE); } // making these short for tests psoap->recv_timeout = 5; psoap->send_timeout = 5; return psoap; } char *getAttributes(struct soap *psoap, const char *endpoint) { int ret; struct cgsi_USCOREgsoap_USCOREtest__getAttributesResponse get_resp; ret = soap_call_cgsi_USCOREgsoap_USCOREtest__getAttributes(psoap, endpoint, NULL, &get_resp); if ( SOAP_OK != ret ) { printf("ERROR: gSOAP error\n"); soap_print_fault(psoap, stderr); exit(EXIT_FAILURE); } return strdup(get_resp.getAttributesReturn); } void test_destroy(struct soap *psoap) { soap_destroy(psoap); soap_end(psoap); soap_done(psoap); free(psoap); } int main(int argc, char **argv) { struct soap *psoap; char *attributes = NULL; char *endpoint = "https://localhost:8111/cgsi-gsoap-test"; int i, delegate=0, namecheck=0, allow_only_self=0; for(i=0;i=0.3.5) pkg_check_modules(DAVIX_COPY_PKG davix_copy>=0.3.5) if (DAVIX_PKG_FOUND AND DAVIX_COPY_PKG_FOUND) set (DAVIX_INCLUDE_DIR "${DAVIX_PKG_INCLUDE_DIRS}" "${DAVIX_COPY_PKG_INCLUDE_DIRS}") set (DAVIX_LIBRARIES "${DAVIX_PKG_LIBRARIES}" "${DAVIX_COPY_PKG_LIBRARIES}") set (DAVIX_CFLAGS "${DAVIX_PKG_CFLAGS} ${DAVIX_COPY_PKG_FLAGS}") else () # Davix Libraries find_library(DAVIX_MAIN_LIBRARY NAMES davix HINTS ${DAVIX_LOCATION}/lib ${DAVIX_LOCATION}/lib64 ${DAVIX_LOCATION}/lib32 ${STAGE_DIR}/lib ${STAGE_DIR}/lib64 ${CMAKE_INSTALL_PREFIX}/Davix/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Davix/*/${PLATFORM}/lib64 /usr/local/lib DOC "The main davix library" ) find_library(DAVIX_COPY_LIBRARY NAMES davix_copy HINTS ${DAVIX_LOCATION}/lib ${DAVIX_LOCATION}/lib64 ${DAVIX_LOCATION}/lib32 ${STAGE_DIR}/lib ${STAGE_DIR}/lib64 ${CMAKE_INSTALL_PREFIX}/Davix/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Davix/*/${PLATFORM}/lib64 /usr/local/lib DOC "The davix copy library" ) set (DAVIX_LIBRARIES ${DAVIX_MAIN_LIBRARY} ${DAVIX_COPY_LIBRARY}) # Davix Include Directories find_path(DAVIX_INCLUDE_DIR NAMES davix.hpp HINTS ${DAVIX_LOCATION} ${DAVIX_LOCATION}/include ${DAVIX_LOCATION}/include/* ${STAGE_DIR}/include ${STAGE_DIR}/include ${CMAKE_INSTALL_PREFIX}/Davix/*/${PLATFORM}/include/* /usr/local/include/davix DOC "Davix include directory" ) set (DAVIX_CFLAGS "") endif() if (DAVIX_LIBRARIES) message ("DAVIX libraries: ${DAVIX_LIBRARIES}") endif (DAVIX_LIBRARIES) if(DAVIX_INCLUDE_DIR) message(STATUS "DAVIX includes found in ${DAVIX_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set DAVIX_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DAVIX DEFAULT_MSG DAVIX_LIBRARIES DAVIX_INCLUDE_DIR) mark_as_advanced(DAVIX_LIBRARIES DAVIX_INCLUDE_DIR DAVIX_CFLAGS) CGSI-gSOAP-1.3.8/cmake/modules/FindUUID.cmake0000644000000000000000000000353412562602656016775 0ustar rootroot# # This module detects if uuid is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # UUID_LIBRARIES = full path to the uuid libraries # UUID_INCLUDE_DIR = include dir to be used when using the uuid library # UUID_FOUND = set to true if uuid was found successfully # # UUID_LOCATION # setting this enables search for uuid libraries / headers in this location find_package (PkgConfig) pkg_check_modules(UUID_PKG uuid) if (UUID_PKG_FOUND) set (UUID_LIBRARIES ${UUID_PKG_LIBRARIES}) set (UUID_INCLUDE_DIRS ${UUID_PKG_INCLUDE_DIRS}) if (NOT UUID_INCLUDE_DIRS) set (UUID_INCLUDE_DIRS "/usr/include") endif (NOT UUID_INCLUDE_DIRS) set (UUID_DEFINITIONS "${UUID_PKG_CFLAGS} ${UUID_PKG_CFLAGS_OTHER}") else (UUID_PKG_FOUND) find_library(UUID_LIBRARIES NAMES uuid HINTS ${UUID_LOCATION} ${CMAKE_INSTALL_PREFIX}/uuid/*/${PLATFORM}/ DOC "The uuid library" ) find_path(UUID_INCLUDE_DIRS NAMES uuid.h HINTS ${UUID_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/uuid/*/${PLATFORM}/ DOC "The uuid include directory" ) set (UUID_DEFINITIONS "") endif (UUID_PKG_FOUND) if (UUID_LIBRARIES) message (STATUS "UUID libraries: ${UUID_LIBRARIES}") endif (UUID_LIBRARIES) if (UUID_INCLUDE_DIRS) message (STATUS "UUID include dir: ${UUID_INCLUDE_DIRS}") endif (UUID_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set UUID_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (UUID DEFAULT_MSG UUID_LIBRARIES UUID_INCLUDE_DIRS ) mark_as_advanced(UUID_INCLUDE_DIRS UUID_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindGRIDFTP_IFCE.cmake0000644000000000000000000000331012562602656020104 0ustar rootroot# # This module detects if GRIDFTP_IFCE is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GRIDFTP_IFCE_LIBRARIES = full path to the dpm libraries # GRIDFTP_IFCE_INCLUDE_DIR = include dir to be used when using the dpm library # GRIDFTP_IFCE_FOUND = set to true if dpm was found successfully # # GRIDFTP_IFCE_LOCATION # setting this enables search for dpm libraries / headers in this location # ----------------------------------------------------- # DPM Libraries # ----------------------------------------------------- find_library(GRIDFTP_IFCE_LIBRARIES NAMES gridftp_ifce HINTS ${GRIDFTP_IFCE_LOCATION}/lib ${GRIDFTP_IFCE_LOCATION}/lib64 ${GRIDFTP_IFCE_LOCATION}/lib32 DOC "The main gridftp_ifce library" ) # ----------------------------------------------------- # GRIDFTP_IFCE Include Directories # ----------------------------------------------------- find_path(GRIDFTP_IFCE_INCLUDE_DIR NAMES gridftp-ifce.h HINTS ${GRIDFTP_IFCE_LOCATION} ${GRIDFTP_IFCE_LOCATION}/include ${GRIDFTP_IFCE_LOCATION}/include/* DOC "The gridftp-ifce.h include directory" ) if(GRIDFTP_IFCE_INCLUDE_DIR) message(STATUS "gridftp_ifce includes found in ${GRIDFTP_IFCE_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GRIDFTP_IFCE_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(gridftp_ifce DEFAULT_MSG GRIDFTP_IFCE_LIBRARIES GRIDFTP_IFCE_INCLUDE_DIR) mark_as_advanced(GRIDFTP_IFCE_INCLUDE_DIR GRIDFTP_IFCE_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindGTEST.cmake0000644000000000000000000000377112562602656017120 0ustar rootroot# # This module detects if GTEST is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GTEST_LIBRARIES = full path to the GTEST libraries # GTEST_SSL_LIBRARIES = full path to the GTEST ssl libraries # GTEST_INCLUDE_DIR = include dir to be used when using the GTEST library # GTEST_WSDL2H = wsdl2h binary # GTEST_SOAPCPP2 = soapcpp2 binary # GTEST_FOUND = set to true if GTEST was found successfully # # GTEST_LOCATION # setting this enables search for GTEST libraries / headers in this location # ----------------------------------------------------- # GTEST Libraries # ----------------------------------------------------- find_library(GTEST_LIBRARIES NAMES gtest HINTS ${GTEST_LOCATION}/lib ${GTEST_LOCATION}/lib64 ${GTEST_LOCATION}/lib32 DOC "The main GTEST library" ) # ----------------------------------------------------- # GTEST Libraries # ----------------------------------------------------- find_library(GTEST_MAIN_LIBRARIES NAMES gtest_main HINTS ${GTEST_LOCATION}/lib ${GTEST_LOCATION}/lib64 ${GTEST_LOCATION}/lib32 DOC "The main GTEST main library" ) # ----------------------------------------------------- # GTEST Include Directories # ----------------------------------------------------- find_path(GTEST_INCLUDE_DIR NAMES gtest.h HINTS ${GTEST_LOCATION} ${GTEST_LOCATION}/include ${GTEST_LOCATION}/include/gtest ${GTEST_LOCATION}/include/* /usr/include/gtest DOC "The GTEST include directory" ) SET(GTEST_DEFINITIONS "") # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GTEST_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GTEST DEFAULT_MSG GTEST_LIBRARIES GTEST_MAIN_LIBRARIES GTEST_INCLUDE_DIR) mark_as_advanced(GTEST_INCLUDE_DIR GTEST_LIBRARIES ) CGSI-gSOAP-1.3.8/cmake/modules/FindGlobus_GSI_CERT_UTILS.cmake0000644000000000000000000000544412562602656021763 0ustar rootroot# # This module detects if globus-gsi-cert-utils is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GLOBUS_GSI_CERT_UTILS_LIBRARIES = full path to the globus-gsi-cert-utils libraries # GLOBUS_GSI_CERT_UTILS_INCLUDE_DIR = include dir to be used when using the globus-gsi-cert-utils library # GLOBUS_GSI_CERT_UTILS_FOUND = set to true if globus-gsi-cert-utils was found successfully # # GLOBUS_GSI_CERT_UTILS_LOCATION # setting this enables search for globus-gsi-cert-utils libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GLOBUS_GSI_CERT_UTILS_PKG globus-gsi-cert-utils) if (GLOBUS_GSI_CERT_UTILS_PKG_FOUND) set (GLOBUS_GSI_CERT_UTILS_LIBRARIES ${GLOBUS_GSI_CERT_UTILS_PKG_LIBRARIES}) set (GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS ${GLOBUS_GSI_CERT_UTILS_PKG_INCLUDE_DIRS}) set (GLOBUS_GSI_CERT_UTILS_DEFINITIONS "${GLOBUS_GSI_CERT_UTILS_PKG_CFLAGS}") else (GLOBUS_GSI_CERT_UTILS_PKG_FOUND) set (CMAKE_FIND_FRAMEWORK NEVER) find_library(GLOBUS_GSI_CERT_UTILS_LIBRARIES NAMES globus_gsi_cert_utils HINTS ${GLOBUS_GSI_CERT_UTILS_LOCATION} ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib64 /usr/local/opt/globus-toolkit/libexec/lib DOC "The main globus-gsi-cert-utils library" ) find_path(GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS NAMES globus_gsi_cert_utils.h HINTS ${GLOBUS_GSI_CERT_UTILS_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/include ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/include /usr/local/opt/globus-toolkit/libexec/include DOC "The globus-gsi-cert-utils include directory" ) set (GLOBUS_GSI_CERT_UTILS_DEFINITIONS "") endif (GLOBUS_GSI_CERT_UTILS_PKG_FOUND) if (GLOBUS_GSI_CERT_UTILS_LIBRARIES) message (STATUS "GLOBUS_GSI_CERT_UTILS libraries: ${GLOBUS_GSI_CERT_UTILS_LIBRARIES}") endif (GLOBUS_GSI_CERT_UTILS_LIBRARIES) if (GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS) message (STATUS "GLOBUS_GSI_CERT_UTILS include dir: ${GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS}") endif (GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GLOBUS_GSI_CERT_UTILS_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GLOBUS_GSI_CERT_UTILS DEFAULT_MSG GLOBUS_GSI_CERT_UTILS_LIBRARIES GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS ) mark_as_advanced(GLOBUS_GSI_CERT_UTILS_INCLUDE_DIRS GLOBUS_GSI_CERT_UTILS_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindXROOTD.cmake0000644000000000000000000000413412562602656017243 0ustar rootroot# - Try to find XROOTD libraries # # XROOTD_FOUND - System has XROOTD # XROOTD_INCLUDE_DIR - The XROOTD include directory # XROOTD_LIBRARIES - The libraries needed to use XROOTD # # XROOTD_LOCATION # setting this enables search for xrootd libraries / headers in this location # ----------------------------------------------------- # XROOTD Libraries # ----------------------------------------------------- find_library(XROOTD_CL NAMES XrdCl HINTS ${XROOTD_LOCATION}/lib ${XROOTD_LOCATION}/lib64 ${XROOTD_LOCATION}/lib32 DOC "xrootd cl" ) find_library(XROOTD_CLIENT NAMES XrdClient HINTS ${XROOTD_LOCATION}/lib ${XROOTD_LOCATION}/lib64 ${XROOTD_LOCATION}/lib32 DOC "xrootd client" ) find_library(XROOTD_POSIX NAMES XrdPosix HINTS ${XROOTD_LOCATION}/lib ${XROOTD_LOCATION}/lib64 ${XROOTD_LOCATION}/lib32 DOC "xrootd posix libraries" ) find_library(XROOTD_UTIL NAMES XrdUtils HINTS ${XROOTD_LOCATION}/lib ${XROOTD_LOCATION}/lib64 ${XROOTD_LOCATION}/lib32 DOC "xrootd util" ) set(XROOTD_LIBRARIES ${XROOTD_CL} ${XROOTD_CLIENT} ${XROOTD_POSIX} ${XROOTD_UTIL} ) if(XROOTD_LIBRARIES) message(STATUS "xrootd library found in ${XROOTD_LIBRARIES}") endif() # ----------------------------------------------------- # XROOTD Include Directories # ----------------------------------------------------- find_path(XROOTD_INCLUDE_DIR NAMES XrdVersion.hh HINTS ${XROOTD_LOCATION} ${XROOTD_LOCATION}/include ${XROOTD_LOCATION}/include/* ${XROOTD_LOCATION}/src/ /usr/include/xrootd /usr/local/include/xrootd DOC "The xrootd include directory" ) if(XROOTD_INCLUDE_DIR) message(STATUS "xrootd includes found in ${XROOTD_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set XROOTD_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(xrootd DEFAULT_MSG XROOTD_LIBRARIES XROOTD_INCLUDE_DIR) mark_as_advanced(XROOTD_INCLUDE_DIR XROOTD_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindGTHREAD2.cmake0000644000000000000000000000364712562602656017374 0ustar rootroot# # This module detects if gthread2 is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GTHREAD2_LIBRARIES = full path to the glib2 libraries # GTHREAD2_INCLUDE_DIR = include dir to be used when using the glib2 library # GTHREAD2_FOUND = set to true if glib2 was found successfully # # GTHREAD2_LOCATION # setting this enables search for gthread2 libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GTHREAD2_PKG gthread-2.0) if (GTHREAD2_PKG_FOUND) set (GTHREAD2_LIBRARIES ${GTHREAD2_PKG_LIBRARIES}) set (GTHREAD2_INCLUDE_DIRS ${GTHREAD2_PKG_INCLUDE_DIRS}) set (GTHREAD2_DEFINITIONS "${GTHREAD2_PKG_CFLAGS} ${GTHREAD2_PKG_CFLAGS_OTHER}") else (GTHREAD2_PKG_FOUND) find_library(GTHREAD2_LIBRARIES NAMES libgthread-2.0.so.0 HINTS ${GTHREAD2_LOCATION} ${CMAKE_INSTALL_PREFIX}/glib2/*/${PLATFORM}/ DOC "The main gthread2 library" ) find_path(GTHREAD2_INCLUDE_DIRS NAMES gthread.h HINTS ${GTHREAD2_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/glib2/*/${PLATFORM}/ DOC "The gthread2 include directory" ) set (GTHREAD2_DEFINITIONS "") endif (GTHREAD2_PKG_FOUND) if (GTHREAD2_LIBRARIES) message (STATUS "GTHREAD2 libraries: ${GTHREAD2_LIBRARIES}") endif (GTHREAD2_LIBRARIES) if (GTHREAD2_INCLUDE_DIRS) message (STATUS "GTHREAD2 include dir: ${GTHREAD2_INCLUDE_DIRS}") endif (GTHREAD2_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GTHREAD2_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GTHREAD2 DEFAULT_MSG GTHREAD2_LIBRARIES GTHREAD2_INCLUDE_DIRS ) mark_as_advanced(GTHREAD2_INCLUDE_DIRS GTHREAD2_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindVOMS.cmake0000644000000000000000000000411612562602656017010 0ustar rootroot# # This module detects if voms is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # VOMS_LIBRARIES = full path to the voms libraries # VOMS_INCLUDE_DIR = include dir to be used when using the voms library # VOMS_DEFINITIONS = compiler flags # VOMS_FOUND = set to true if voms was found successfully # # VOMS_LOCATION # setting this enables search for voms libraries / headers in this location find_package (PkgConfig) pkg_search_module(VOMS_PKG voms-2.0 voms) if (VOMS_PKG_FOUND) set (VOMS_LIBRARIES ${VOMS_PKG_LIBRARIES}) set (VOMS_INCLUDE_DIRS ${VOMS_PKG_INCLUDE_DIRS}) if (NOT VOMS_INCLUDE_DIRS) set (VOMS_INCLUDE_DIRS "/usr/include") endif (NOT VOMS_INCLUDE_DIRS) set (VOMS_DEFINITIONS "${VOMS_PKG_CFLAGS} ${VOMS_PKG_CFLAGS_OTHER}") else (VOMS_PKG_FOUND) message("SEARCH FOR ${CMAKE_INSTALL_PREFIX}/Grid/voms/*/${PLATFORM}/lib64") find_library(VOMS_LIBRARIES NAMES vomsapi HINTS ${VOMS_LOCATION} ${CMAKE_INSTALL_PREFIX}/Grid/voms/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/voms/*/${PLATFORM}/lib64 DOC "The voms library" ) find_path(VOMS_INCLUDE_DIRS NAMES voms/voms_api.h HINTS ${VOMS_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/Grid/voms/*/${PLATFORM}/include DOC "The voms include directory" ) set (VOMS_CFLAGS "") endif (VOMS_PKG_FOUND) if (VOMS_LIBRARIES) message (STATUS "VOMS libraries: ${VOMS_LIBRARIES}") endif (VOMS_LIBRARIES) if (VOMS_INCLUDE_DIRS) message (STATUS "VOMS include dir: ${VOMS_INCLUDE_DIRS}") endif (VOMS_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set VOMS_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (VOMS DEFAULT_MSG VOMS_LIBRARIES VOMS_INCLUDE_DIRS ) mark_as_advanced(VOMS_LIBRARIES VOMS_INCLUDE_DIRS VOMS_DEFINITIONS) CGSI-gSOAP-1.3.8/cmake/modules/FindGlobus_FTP_CLIENT.cmake0000644000000000000000000000517012562602656021227 0ustar rootroot# # This module detects if globus-ftp-client is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GLOBUS_FTP_CLIENT_LIBRARIES = full path to the globus-ftp-client libraries # GLOBUS_FTP_CLIENT_INCLUDE_DIR = include dir to be used when using the globus-ftp-client library # GLOBUS_FTP_CLIENT_FOUND = set to true if globus-ftp-client was found successfully # # GLOBUS_FTP_CLIENT_LOCATION # setting this enables search for globus-ftp-client libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GLOBUS_FTP_CLIENT_PKG globus-ftp-client) if (GLOBUS_FTP_CLIENT_PKG_FOUND) set (GLOBUS_FTP_CLIENT_LIBRARIES ${GLOBUS_FTP_CLIENT_PKG_LIBRARIES}) set (GLOBUS_FTP_CLIENT_INCLUDE_DIRS ${GLOBUS_FTP_CLIENT_PKG_INCLUDE_DIRS}) set (GLOBUS_FTP_CLIENT_DEFINITIONS "${GLOBUS_FTP_CLIENT_PKG_CFLAGS}") else (GLOBUS_FTP_CLIENT_PKG_FOUND) set (CMAKE_FIND_FRAMEWORK NEVER) find_library(GLOBUS_FTP_CLIENT_LIBRARIES NAMES globus_ftp_client HINTS ${GLOBUS_FTP_CLIENT_LOCATION} ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib64 /usr/local/opt/globus-toolkit/libexec/lib DOC "The main globus-ftp-client library" ) find_path(GLOBUS_FTP_CLIENT_INCLUDE_DIRS NAMES globus_ftp_client.h HINTS ${GLOBUS_FTP_CLIENT_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/include ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/include /usr/local/opt/globus-toolkit/libexec/include DOC "The globus-ftp-client include directory" ) set (GLOBUS_FTP_CLIENT_DEFINITIONS "") endif (GLOBUS_FTP_CLIENT_PKG_FOUND) if (GLOBUS_FTP_CLIENT_LIBRARIES) message (STATUS "GLOBUS_FTP_CLIENT libraries: ${GLOBUS_FTP_CLIENT_LIBRARIES}") endif (GLOBUS_FTP_CLIENT_LIBRARIES) if (GLOBUS_FTP_CLIENT_INCLUDE_DIRS) message (STATUS "GLOBUS_FTP_CLIENT include dir: ${GLOBUS_FTP_CLIENT_INCLUDE_DIRS}") endif (GLOBUS_FTP_CLIENT_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GLOBUS_FTP_CLIENT_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GLOBUS_FTP_CLIENT DEFAULT_MSG GLOBUS_FTP_CLIENT_LIBRARIES GLOBUS_FTP_CLIENT_INCLUDE_DIRS ) mark_as_advanced(GLOBUS_FTP_CLIENT_INCLUDE_DIRS GLOBUS_FTP_CLIENT_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/MacroAddepydoc.cmake0000644000000000000000000000364512562602656020307 0ustar rootroot## ## Doxygen macro, allow Doxygen generation from cmake ## do a ""make doc" for the generation # for old version < 3.0 cmake variables replace config files ( not supported ) ( needed for EPEL 5 support ) # EPYDOC_MODULE_PATH path of the module to configure # EPYDOC_MODULE_URL project url # EPYDOC_MODULE_NAME project name # macro(addEpydocGeneration EPYDOC_CONFIG_LOCATION) IF(NOT EPYDOC_FOUND) execute_process(COMMAND epydoc --version OUTPUT_VARIABLE EPYDOC_VERSION_UNPARSED ERROR_VARIABLE EPYDOC_ERROR ) IF(${EPYDOC_ERROR}) message(SEND_ERROR "epydoc not found....") ELSE(${EPYDOC_ERROR}) string(REGEX REPLACE ".*version (.*)\n" "\\1" EPYDOC_VERSION ${EPYDOC_VERSION_UNPARSED}) message(STATUS " epydoc version ..... ${EPYDOC_VERSION} ") ENDIF(${EPYDOC_ERROR}) ENDIF(NOT EPYDOC_FOUND) IF(${EPYDOC_VERSION} VERSION_GREATER "3.0.0") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${EPYDOC_CONFIG_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/epydoc_config @ONLY) add_custom_target(doc epydoc --config ${CMAKE_CURRENT_BINARY_DIR}/epydoc_config -v WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generate API documentation with epydoc" VERBATIM ) ELSE(${EPYDOC_VERSION} VERSION_GREATER "3.0.0") # VERSION TOO OLD, NO CONFIG FILE MANAGEMENT add_custom_target(doc epydoc --html -u ${EPYDOC_MODULE_URL} -n ${EPYDOC_MODULE_NAME} -v -o ${CMAKE_CURRENT_BINARY_DIR}/html ${EPYDOC_MODULE_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generate API documentation with epydoc" VERBATIM ) ENDIF(${EPYDOC_VERSION} VERSION_GREATER "3.0.0") endmacro(addEpydocGeneration EPYDOC_CONFIG_LOCATION) CGSI-gSOAP-1.3.8/cmake/modules/MacroAddDoxygen.cmake0000644000000000000000000000106112562602656020427 0ustar rootroot## ## Doxygen macro, allow Doxygen generation from cmake ## do a ""make doc" for the generation macro(addDoxyGeneration DOXYFILE_LOCATION) find_package(Doxygen) if(DOXYGEN_FOUND) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYFILE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" VERBATIM ) endif(DOXYGEN_FOUND) endmacro(addDoxyGeneration DOXYFILE_LOCATION) CGSI-gSOAP-1.3.8/cmake/modules/FindGlobus_GSI_CREDENTIAL.cmake0000644000000000000000000000544512562602656021661 0ustar rootroot# # This module detects if globus-gsi-credential is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GLOBUS_GSI_CREDENTIAL_LIBRARIES = full path to the globus-gsi-credential libraries # GLOBUS_GSI_CREDENTIAL_INCLUDE_DIR = include dir to be used when using the globus-gsi-credential library # GLOBUS_GSI_CREDENTIAL_FOUND = set to true if globus-gsi-credential was found successfully # # GLOBUS_GSI_CREDENTIAL_LOCATION # setting this enables search for globus-gsi-credential libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GLOBUS_GSI_CREDENTIAL_PKG globus-gsi-credential) if (GLOBUS_GSI_CREDENTIAL_PKG_FOUND) set (GLOBUS_GSI_CREDENTIAL_LIBRARIES ${GLOBUS_GSI_CREDENTIAL_PKG_LIBRARIES}) set (GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS ${GLOBUS_GSI_CREDENTIAL_PKG_INCLUDE_DIRS}) set (GLOBUS_GSI_CREDENTIAL_DEFINITIONS "${GLOBUS_GSI_CREDENTIAL_PKG_CFLAGS}") else (GLOBUS_GSI_CREDENTIAL_PKG_FOUND) set (CMAKE_FIND_FRAMEWORK NEVER) find_library(GLOBUS_GSI_CREDENTIAL_LIBRARIES NAMES globus_gsi_credential HINTS ${GLOBUS_GSI_CREDENTIAL_LOCATION} ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib64 /usr/local/opt/globus-toolkit/libexec/lib DOC "The main globus-gsi-credential library" ) find_path(GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS NAMES globus_gsi_credential.h HINTS ${GLOBUS_GSI_CREDENTIAL_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/include ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/include /usr/local/opt/globus-toolkit/libexec/include DOC "The globus-gsi-credential include directory" ) set (GLOBUS_GSI_CREDENTIAL_DEFINITIONS "") endif (GLOBUS_GSI_CREDENTIAL_PKG_FOUND) if (GLOBUS_GSI_CREDENTIAL_LIBRARIES) message (STATUS "GLOBUS_GSI_CREDENTIAL libraries: ${GLOBUS_GSI_CREDENTIAL_LIBRARIES}") endif (GLOBUS_GSI_CREDENTIAL_LIBRARIES) if (GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS) message (STATUS "GLOBUS_GSI_CREDENTIAL include dir: ${GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS}") endif (GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GLOBUS_GSI_CREDENTIAL_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GLOBUS_GSI_CREDENTIAL DEFAULT_MSG GLOBUS_GSI_CREDENTIAL_LIBRARIES GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS ) mark_as_advanced(GLOBUS_GSI_CREDENTIAL_INCLUDE_DIRS GLOBUS_GSI_CREDENTIAL_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/DefineInstallationPaths.cmake0000644000000000000000000001056212562602656022201 0ustar rootrootif (UNIX) IF (NOT APPLICATION_NAME) MESSAGE(STATUS "${PROJECT_NAME} is used as APPLICATION_NAME") SET(APPLICATION_NAME ${PROJECT_NAME}) ENDIF (NOT APPLICATION_NAME) # Suffix for Linux IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") SET(LIB_SUFFIX "" CACHE STRING "Suffix of the lib") ELSE () IF (CMAKE_SIZEOF_VOID_P EQUAL 4) SET(LIB_SUFFIX "" CACHE STRING "Suffix of the lib") SET (PKG_ARCH "i386") ELSE (CMAKE_SIZEOF_VOID_P EQUAL 4) SET(LIB_SUFFIX "64" CACHE STRING "Suffix of the lib") SET (PKG_ARCH "x86_64") ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4) ENDIF () SET(EXEC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Base directory for executables and libraries" ) SET(SHARE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/share" CACHE PATH "Base directory for files which go to share/" ) SET(DATA_INSTALL_PREFIX "${SHARE_INSTALL_PREFIX}/${APPLICATION_NAME}" CACHE PATH "The parent directory where applications can install their data") # The following are directories where stuff will be installed to SET(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" CACHE PATH "The ${APPLICATION_NAME} binary install dir (default prefix/bin)" ) SET(SBIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/sbin" CACHE PATH "The ${APPLICATION_NAME} sbin install dir (default prefix/sbin)" ) SET(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is prefix/lib)" ) SET(LIBEXEC_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/libexec" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is prefix/libexec)" ) SET(PKGCONFIG_FILES_DIR "${LIB_INSTALL_DIR}/pkgconfig/" CACHE PATH "subdirectory relative to the install prefix where pkgconfig files (.pc) will be installed" ) SET(PLUGIN_INSTALL_DIR "${LIB_INSTALL_DIR}/${APPLICATION_NAME}-plugins/" CACHE PATH "The subdirectory relative to the install prefix where plugins will be installed (default is prefix/lib/${APPLICATION_NAME})" ) SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The subdirectory to the header prefix (default prefix/include)" ) SET(DATA_INSTALL_DIR "${DATA_INSTALL_PREFIX}" CACHE PATH "The parent directory where applications can install their data (default prefix/share/${APPLICATION_NAME})" ) SET(DOC_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/doc/${APPLICATION_NAME}" CACHE PATH "The parent directory where applications can install their documentation (default prefix/share/doc/${APPLICATION_NAME})" ) SET(HTML_INSTALL_DIR "${DATA_INSTALL_PREFIX}/doc/HTML" CACHE PATH "The HTML install dir for documentation (default data/doc/html)" ) SET(ICON_INSTALL_DIR "${DATA_INSTALL_PREFIX}/icons" CACHE PATH "The icon install dir (default data/icons/)" ) SET(SOUND_INSTALL_DIR "${DATA_INSTALL_PREFIX}/sounds" CACHE PATH "The install dir for sound files (default data/sounds)" ) SET(LOCALE_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/locale" CACHE PATH "The install dir for translations (default prefix/share/locale)" ) SET(XDG_APPS_DIR "${SHARE_INSTALL_PREFIX}/applications/" CACHE PATH "The XDG apps dir" ) SET(XDG_DIRECTORY_DIR "${SHARE_INSTALL_PREFIX}/desktop-directories" CACHE PATH "The XDG directory" ) SET(SYSCONF_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/etc" CACHE PATH "The ${APPLICATION_NAME} sysconfig install dir (default prefix/etc)" ) SET(MAN_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/man" CACHE PATH "The ${APPLICATION_NAME} man install dir (default prefix/man)" ) SET(INFO_INSTALL_DIR "${SHARE_INSTALL_PREFIX}/info" CACHE PATH "The ${APPLICATION_NAME} info install dir (default prefix/info)" ) endif (UNIX) if (WIN32) # Same same set(BIN_INSTALL_DIR "." CACHE PATH "-") set(SBIN_INSTALL_DIR "." CACHE PATH "-") set(LIB_INSTALL_DIR "lib" CACHE PATH "-") set(INCLUDE_INSTALL_DIR "include" CACHE PATH "-") set(PLUGIN_INSTALL_DIR "plugins" CACHE PATH "-") set(HTML_INSTALL_DIR "doc/HTML" CACHE PATH "-") set(ICON_INSTALL_DIR "." CACHE PATH "-") set(SOUND_INSTALL_DIR "." CACHE PATH "-") set(LOCALE_INSTALL_DIR "lang" CACHE PATH "-") endif (WIN32) CGSI-gSOAP-1.3.8/cmake/modules/FindGlobus_COMMON.cmake0000644000000000000000000000471412562602656020533 0ustar rootroot# # This module detects if globus-common is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GLOBUS_COMMON_LIBRARIES = full path to the globus-common libraries # GLOBUS_COMMON_INCLUDE_DIR = include dir to be used when using the globus-common library # GLOBUS_COMMON_FOUND = set to true if globus-common was found successfully # # GLOBUS_COMMON_LOCATION # setting this enables search for globus-common libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GLOBUS_COMMON_PKG globus-common) if (GLOBUS_COMMON_PKG_FOUND) set (GLOBUS_COMMON_LIBRARIES ${GLOBUS_COMMON_PKG_LIBRARIES}) set (GLOBUS_COMMON_INCLUDE_DIRS ${GLOBUS_COMMON_PKG_INCLUDE_DIRS}) set (GLOBUS_COMMON_DEFINITIONS "${GLOBUS_COMMON_PKG_CFLAGS}") else (GLOBUS_COMMON_PKG_FOUND) set (CMAKE_FIND_FRAMEWORK NEVER) find_library(GLOBUS_COMMON_LIBRARIES NAMES globus_common HINTS ${GLOBUS_COMMON_LOCATION} ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib64 /usr/local/opt/globus-toolkit/libexec/lib DOC "The main globus-common library" ) find_path(GLOBUS_COMMON_INCLUDE_DIRS NAMES globus_common.h HINTS ${GLOBUS_COMMON_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/include ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/include /usr/local/opt/globus-toolkit/libexec/include DOC "The globus-common include directory" ) set (GLOBUS_COMMON_DEFINITIONS "") endif (GLOBUS_COMMON_PKG_FOUND) if (GLOBUS_COMMON_LIBRARIES) message (STATUS "GLOBUS_COMMON libraries: ${GLOBUS_COMMON_LIBRARIES}") endif (GLOBUS_COMMON_LIBRARIES) if (GLOBUS_COMMON_INCLUDE_DIRS) message (STATUS "GLOBUS_COMMON include dir: ${GLOBUS_COMMON_INCLUDE_DIRS}") endif (GLOBUS_COMMON_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GLOBUS_COMMON_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GLOBUS_COMMON DEFAULT_MSG GLOBUS_COMMON_LIBRARIES GLOBUS_COMMON_INCLUDE_DIRS ) mark_as_advanced(GLOBUS_COMMON_INCLUDE_DIRS GLOBUS_COMMON_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindGlobus_GSS_ASSIST.cmake0000644000000000000000000000511612562602656021262 0ustar rootroot# # This module detects if globus-gssapi-gsi is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GLOBUS_GSS_ASSIST_LIBRARIES = full path to the globus-gssapi-gsi libraries # GLOBUS_GSS_ASSIST_INCLUDE_DIR = include dir to be used when using the globus-gssapi-gsi library # GLOBUS_GSS_ASSIST_FOUND = set to true if globus-gssapi-gsi was found successfully # # GLOBUS_GSS_ASSIST_LOCATION # setting this enables search for globus-gssapi-gsi libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GLOBUS_GSS_ASSIST_PKG globus-gss-assist) if (GLOBUS_GSS_ASSIST_PKG_FOUND) set (GLOBUS_GSS_ASSIST_LIBRARIES ${GLOBUS_GSS_ASSIST_PKG_LIBRARIES}) set (GLOBUS_GSS_ASSIST_INCLUDE_DIRS ${GLOBUS_GSS_ASSIST_PKG_INCLUDE_DIRS}) set (GLOBUS_GSS_ASSIST_DEFINITIONS "${GLOBUS_GSS_ASSIST_PKG_CFLAGS}") else (GLOBUS_GSS_ASSIST_PKG_FOUND) find_library(GLOBUS_GSS_ASSIST_LIBRARIES NAMES globus_gss_assist HINTS ${GLOBUS_GSS_ASSIST_LOCATION} ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/lib64 /usr/local/opt/globus-toolkit/libexec/lib DOC "The main globus-gssapi-gsi library" ) find_path(GLOBUS_GSS_ASSIST_INCLUDE_DIRS NAMES globus_gss_assist.h HINTS ${GLOBUS_GSS_ASSIST_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/globus/*/${PLATFORM}/include ${CMAKE_INSTALL_PREFIX}/Grid/epel/*/${PLATFORM}/include /usr/local/opt/globus-toolkit/libexec/include DOC "The globus-gss-assist include directory" ) set (GLOBUS_GSS_ASSIST_DEFINITIONS "") endif (GLOBUS_GSS_ASSIST_PKG_FOUND) if (GLOBUS_GSS_ASSIST_LIBRARIES) message (STATUS "GLOBUS GSS ASSIST libraries: ${GLOBUS_GSS_ASSIST_LIBRARIES}") endif (GLOBUS_GSS_ASSIST_LIBRARIES) if (GLOBUS_GSS_ASSIST_INCLUDE_DIRS) message (STATUS "GLOBUS GSS ASSIST include dir: ${GLOBUS_GSS_ASSIST_INCLUDE_DIRS}") endif (GLOBUS_GSS_ASSIST_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GLOBUS_GSS_ASSIST_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GLOBUS_ASSIST DEFAULT_MSG GLOBUS_GSS_ASSIST_LIBRARIES GLOBUS_GSS_ASSIST_INCLUDE_DIRS ) mark_as_advanced(GLOBUS_GSS_ASSIST_INCLUDE_DIRS GLOBUS_GSS_ASSIST_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindPythonEasy.cmake0000644000000000000000000001412612562602656020331 0ustar rootroot# - Find python libraries # This module find the current version of python on your installation in a easy way # # PYTHON_LIBRARIES = path to the python library # PYTHON_LIBRARIES_${VERSION} = path to the python library for the distribution version # PYTHON_SITE_PACKAGES_${_VERSION} = path to the python modules dir # PYTHON_LIBRARIES = path to the python modules dir for the distribution version # PYTHON_INCLUDE_PATH = path to where Python.h is found # PYTHON_INCLUDE_PATH_${VERSION} = path to where Python.h for the distribution version # PYTHON_EXECUTABLE = python interpreter for the distribution version # PYTHON_EXECUTABLE_${VERSION} = available python version # PYTHON_AVAILABLE_VERSIONS = list all the version available on the system # -- LIST(APPEND L_PYTHON_VERSIONS "1.5" "1.6" "2.0" "2.1" "2.2" "2.4" "2.5" "2.6" "2.7" "2.8" "3.0" "3.1" "3.2" "3.3" "3.4") INCLUDE(FindPackageHandleStandardArgs) # determine the std version # main version executable FIND_PROGRAM(PYTHON_EXECUTABLE NAMES python HINTS ${ALT_PYTHON_LOCATION}/bin PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.4\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.3\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.2\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.1\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.0\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.8\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath] ) EXECUTE_PROCESS( COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print('%s.%s' % sys.version_info[:2])" OUTPUT_VARIABLE PYTHON_CURRENT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) ## tests for all versions of the packages FOREACH(_VERSION ${L_PYTHON_VERSIONS}) STRING(REPLACE "." "" _VERSION_NO_DOTS ${_VERSION}) FIND_PROGRAM(PYTHON_EXECUTABLE_${_VERSION} NAMES python${_VERSION} HINTS ${ALT_PYTHON_LOCATION}/bin/ PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.4\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.3\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.2\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.1\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.0\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.8\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath] ) IF(PYTHON_EXECUTABLE_${_VERSION}) LIST(APPEND PYTHON_AVAILABLE_VERSIONS ${_VERSION}) EXECUTE_PROCESS( COMMAND ${PYTHON_EXECUTABLE_${_VERSION}} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_${_VERSION} OUTPUT_STRIP_TRAILING_WHITESPACE) #find libs FIND_LIBRARY(PYTHON_LIBRARY_${_VERSION} NAMES python${_VERSION_NO_DOTS} python${_VERSION} HINTS ${ALT_PYTHON_LOCATION}/lib/ PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_VERSION}\\InstallPath]/libs PATH_SUFFIXES # Avoid finding the .dll in the PATH. We want the .lib. NO_SYSTEM_ENVIRONMENT_PATH ) SET(PYTHON_LIBRARIES_${_VERSION} ${PYTHON_LIBRARY_${_VERSION}}) # find path FIND_PATH(PYTHON_INCLUDE_PATH_${_VERSION} NAMES Python.h HINTS ${ALT_PYTHON_LOCATION}/include/python${_VERSION}/ PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_VERSION}\\InstallPath]/include PATH_SUFFIXES python${_VERSION} ) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Python${_VERSION} DEFAULT_MSG PYTHON_EXECUTABLE_${_VERSION}) MARK_AS_ADVANCED(PYTHON_EXECUTABLE_${_VERSION}) MARK_AS_ADVANCED(PYTHON_SITE_PACKAGES_${_VERSION}) MARK_AS_ADVANCED(PYTHON_LIBRARIES_${_VERSION}) MARK_AS_ADVANCED(PYTHON_INCLUDE_PATH_${_VERSION}) ENDIF(PYTHON_EXECUTABLE_${_VERSION}) ENDFOREACH(_VERSION ${L_PYTHON_VERSIONS}) SET(PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES_${PYTHON_CURRENT_VERSION}} CACHE PATH "path to the python modules dir for the distribution version") SET(PYTHON_LIBRARIES ${PYTHON_LIBRARIES_${PYTHON_CURRENT_VERSION}} CACHE PATH "path to the python modules dir for the distribution version") SET(PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_PATH_${PYTHON_CURRENT_VERSION}} CACHE PATH "path to the python include dir for the distribution version") FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentVersion DEFAULT_MSG PYTHON_CURRENT_VERSION ) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentInclude DEFAULT_MSG PYTHON_INCLUDE_PATH ) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentLibs DEFAULT_MSG PYTHON_LIBRARIES ) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonCurrentModsDir DEFAULT_MSG PYTHON_SITE_PACKAGES ) MARK_AS_ADVANCED(PYTHON_EXECUTABLE) MARK_AS_ADVANCED(PYTHON_SITE_PACKAGES) MARK_AS_ADVANCED(PYTHON_LIBRARIES) MARK_AS_ADVANCED(PYTHON_INCLUDE_PATH) CGSI-gSOAP-1.3.8/cmake/modules/FindDPM.cmake0000644000000000000000000000515312562602656016646 0ustar rootroot# # This module detects if dpm is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # DPM_LIBRARIES = full path to the dpm libraries # DPM_INCLUDE_DIR = include dir to be used when using the dpm library # DPM_FOUND = set to true if dpm was found successfully # # DPM_LOCATION # setting this enables search for dpm libraries / headers in this location # ----------------------------------------------------- # DPM Libraries # ----------------------------------------------------- find_library(DPM_LIBRARIES NAMES dpm HINTS ${DPM_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/ DOC "The main dpm library" ) # ----------------------------------------------------- # LCGDM Libraries # ----------------------------------------------------- find_library(LCGDM_LIBRARIES NAMES lcgdm HINTS ${DPM_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/ DOC "The main lcgdm library" ) # ----------------------------------------------------- # DPM Include Directories # ----------------------------------------------------- find_path(DPM_INCLUDE_DIR NAMES dpm/dpm_api.h HINTS ${DPM_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/ DOC "The dpm include directory" ) if(DPM_INCLUDE_DIR) message(STATUS "dpm includes found in ${DPM_INCLUDE_DIR}") endif() # ----------------------------------------------------- # LCGDM Include Directories # ----------------------------------------------------- find_path(LCGDM_INCLUDE_DIR NAMES Cinit.h HINTS ${LCGDM_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/ DOC "The LCGDM include directory" ) if(LCGDM_INCLUDE_DIR) message(STATUS "lcgdm includes found in ${LCGDM_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set DPM_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(dpm DEFAULT_MSG DPM_LIBRARIES DPM_INCLUDE_DIR) find_package_handle_standard_args(lcgdm DEFAULT_MSG LCGDM_LIBRARIES LCGDM_INCLUDE_DIR) mark_as_advanced(DPM_INCLUDE_DIR DPM_LIBRARIES) mark_as_advanced(LCGDM_INCLUDE_DIR LCGDM_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindPugiXML.cmake0000644000000000000000000000313012562602656017504 0ustar rootroot# # This module detects if pugixml is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # PUGIXML_LIBRARIES = full path to the pugixml libraries # PUGIXML_INCLUDE_DIR = include dir to be used when using the pugixml library # PUGIXML_FOUND = set to true if pugixml was found successfully # # PUGIXML_LOCATION # setting this enables search for pugixml libraries / headers in this location # ----------------------------------------------------- # PUGIXML Libraries # ----------------------------------------------------- find_library(PUGIXML_LIBRARIES NAMES pugixml HINTS ${PUGIXML_LOCATION}/lib ${PUGIXML_LOCATION}/lib64 ${PUGIXML_LOCATION}/lib32 DOC "The main pugixml library" ) # ----------------------------------------------------- # PUGIXML Include Directories # ----------------------------------------------------- find_path(PUGIXML_INCLUDE_DIR NAMES pugixml.hpp HINTS ${PUGIXML_LOCATION} ${PUGIXML_LOCATION}/include ${PUGIXML_LOCATION}/include/* /usr/include DOC "The pugixml include directory" ) if(PUGIXML_INCLUDE_DIR) message(STATUS "pugixml includes found in ${PUGIXML_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set PUGIXML_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(pugixml DEFAULT_MSG PUGIXML_LIBRARIES PUGIXML_INCLUDE_DIR) mark_as_advanced(PUGIXML_INCLUDE_DIR PUGIXML_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/FindSRM_IFCE.cmake0000644000000000000000000000454712562602656017463 0ustar rootroot# # This module detects if SRM-IFCE is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # SRM_IFCE_LIBRARIES = full path to the SRM-IFCE libraries # SRM_IFCE_INCLUDE_DIR = include dir to be used when using the SRM-IFCE library # SRM_IFCE_FOUND = set to true if SRM-IFCE was found successfully # # SRM_IFCE_LOCATION # setting this enables search for SRM-IFCE libraries / headers in this location # ----------------------------------------------------- # Try with pkgconfig first # ----------------------------------------------------- find_package(PkgConfig) pkg_check_modules(SRM_IFCE_PKG REQUIRED srm-ifce>=1.15.0) if (SRM_IFCE_PKG_FOUND) set (SRM_IFCE_LIBRARIES "${SRM_IFCE_PKG_LIBRARIES}") set (SRM_IFCE_CFLAGS "${SRM_IFCE_PKG_CFLAGS}") if (SRM_IFCE_PKG_INCLUDE_DIRS) set (SRM_IFCE_INCLUDE_DIR "${SRM_IFCE_PKG_INCLUDE_DIRS}") else () set (SRM_IFCE_INCLUDE_DIR "/usr/include") endif () else () # SRM-IFCE Libraries find_library(SRM_IFCE_LIBRARIES NAMES gfal_srm_ifce HINTS ${SRM_IFCE_LOCATION}/lib ${SRM_IFCE_LOCATION}/lib64 ${SRM_IFCE_LOCATION}/lib32 ${STAGE_DIR}/lib ${STAGE_DIR}/lib64 ${CMAKE_INSTALL_PREFIX}/Grid/srm-ifce/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/srm-ifce/*/${PLATFORM}/lib64 DOC "The main srm-ifce library" ) # SRM-IFCE Include Directories find_path(SRM_IFCE_INCLUDE_DIR NAMES gfal_srm_ifce.h HINTS ${SRM_IFCE_LOCATION} ${SRM_IFCE_LOCATION}/include ${SRM_IFCE_LOCATION}/include/* ${STAGE_DIR}/include ${STAGE_DIR}/include ${CMAKE_INSTALL_PREFIX}/Grid/srm-ifce/*/${PLATFORM}/include DOC "The srm-ifce include directory" ) set (SRM_IFCE_CFLAGS "") endif() if(SRM_IFCE_INCLUDE_DIR) message(STATUS "SRM-IFCE includes found in ${SRM_IFCE_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set SRM_IFCE_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(SRM_IFCE DEFAULT_MSG SRM_IFCE_LIBRARIES SRM_IFCE_INCLUDE_DIR) mark_as_advanced(SRM_IFCE_LIBRARIES SRM_IFCE_INCLUDE_DIR SRM_IFCE_CFLAGS) CGSI-gSOAP-1.3.8/cmake/modules/CMakeCXX11Support.cmake0000644000000000000000000000223012562602656020520 0ustar rootrootinclude(CheckCXXSourceCompiles REQUIRED) if(CMAKE_COMPILER_IS_GNUCXX) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7) SET(HAVE_CXX011_FULL_SUPPORT TRUE) SET(HAVE_CXX011_PARTIAL_SUPPORT TRUE) SET(CXX11_FLAG_ENABLE "-std=c++11") elseif(GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3) message(STATUS "C++11 partial support") SET(HAVE_CXX011_PARTIAL_SUPPORT TRUE) SET(CXX11_FLAG_ENABLE "-std=c++0x") else () message(STATUS "C++11 no support ") SET(CXX11_FLAG_ENABLE "") endif() else(CMAKE_COMPILER_IS_GNUCXX) message(STATUS "C++11 activated full") SET(HAVE_CXX011_FULL_SUPPORT TRUE) SET(HAVE_CXX011_PARTIAL_SUPPORT TRUE) SET(CXX11_FLAG_ENABLE "-std=c++0x") endif(CMAKE_COMPILER_IS_GNUCXX) ## Check TR1 CHECK_CXX_SOURCE_COMPILES(" #include int main() { return 0; }" HAVE_TR1_SUPPORT) if(HAVE_TR1_SUPPORT) message(STATUS "TR1 support detected") else(HAVE_TR1_SUPPORT) message(STATUS "no TR1 support") endif(HAVE_TR1_SUPPORT) CGSI-gSOAP-1.3.8/cmake/modules/MacroCopyFile.cmake0000644000000000000000000000171412562602656020120 0ustar rootroot# - macro_copy_file(_src _dst) # Copies a file to ${_dst} only if ${_src} is different (newer) than ${_dst} # # Example: # macro_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/icon.png ${CMAKE_CURRENT_BINARY_DIR}/.) # Copies file icon.png to ${CMAKE_CURRENT_BINARY_DIR} directory # # Copyright (c) 2006-2007 Wengo # Copyright (c) 2006-2008 Andreas Schneider # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. macro(copy_files GLOBPAT DESTINATION) file(GLOB COPY_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${GLOBPAT}) add_custom_target(copy ALL COMMENT "Copying files: ${GLOBPAT}") foreach(FILENAME ${COPY_FILES}) set(SRC "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}") set(DST "${DESTINATION}/${FILENAME}") add_custom_command( TARGET copy COMMAND ${CMAKE_COMMAND} -E copy ${SRC} ${DST} ) endforeach(FILENAME) endmacro(copy_files) CGSI-gSOAP-1.3.8/cmake/modules/FindLFC.cmake0000644000000000000000000000405212562602656016627 0ustar rootroot# # This module detects if LFC is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # LFC_LIBRARIES = full path to the LFC libraries # LFC_INCLUDE_DIR = include dir to be used when using the LFC library # LFC_FOUND = set to true if LFC was found successfully # # LFC_LOCATION # setting this enables search for LFC libraries / headers in this location # ----------------------------------------------------- # LFC Libraries # ----------------------------------------------------- find_library(LFC_LIBRARIES NAMES lfc lcgdm HINTS ${LFC_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/lfc/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/lfc/*/${PLATFORM}/ DOC "The main LFC library" ) # ----------------------------------------------------- # LFC Include Directories # ----------------------------------------------------- find_path(LFC_INCLUDE_DIR NAMES lfc/lfc_api.h HINTS ${LFC_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/lfc/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/lfc/*/${PLATFORM}/ DOC "The LFC include directory" ) if(LFC_INCLUDE_DIR) message(STATUS "LFC includes found in ${LFC_INCLUDE_DIR}") endif() # ----------------------------------------------------- # LCGDM Include Directories # ----------------------------------------------------- find_path(LCGDM_INCLUDE_DIR NAMES Cinit.h HINTS ${LCGDM_LOCATION} ${LCGDM_LOCATION}/include ${LCGDM_LOCATION}/include/lcgdm /usr/include/lcgdm ${LCGDM_LOCATION}/include/dpm /usr/include/dpm /usr/include/lfc DOC "The LCGDM include directory" ) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set LFC_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LFC DEFAULT_MSG LFC_LIBRARIES LFC_INCLUDE_DIR) mark_as_advanced(LFC_INCLUDE_DIR LFC_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/CMakeStringHelpers.cmake0000644000000000000000000000324412562602656021116 0ustar rootroot##convenience function for string manipulation function(replace_occurence output input pattern replacer) string(REGEX REPLACE ${pattern} ${replacer} tmp_str ${input}) set(${output} ${tmp_str} PARENT_SCOPE) endfunction(replace_occurence output input pattern replacer) function(replace_all_occurence) PARSE_ARGUMENTS(REPLACE_ALL "LIST_PATTERN;LIST_REPLACER" "" ${ARGN} ) LIST(APPEND list_pattern ${REPLACE_ALL_LIST_PATTERN}) LIST(APPEND list_replacer ${REPLACE_ALL_LIST_REPLACER}) LIST(LENGTH list_pattern list_size ) LIST(LENGTH list_replacer list2_size ) math(EXPR list_size ${list_size}-1) LIST(GET REPLACE_ALL_DEFAULT_ARGS 0 output_var) LIST(GET REPLACE_ALL_DEFAULT_ARGS 1 intput_content ) SET(tmp_str ${intput_content}) SET(tmp_str2 "") foreach(i RANGE ${list_size}) list(GET list_pattern ${i} current_pattern ) list(GET list_replacer ${i} current_replacer ) replace_occurence(tmp_str2 ${tmp_str} ${current_pattern} ${current_replacer} ) SET(tmp_str ${tmp_str2}) endforeach(i RANGE ${list_size}) SET(${output_var} ${tmp_str} PARENT_SCOPE) endfunction(replace_all_occurence) function(STRING_APPEND var_name content) SET(${var_name} "${${var_name}}${content}" PARENT_SCOPE) endfunction(STRING_APPEND var_name content) function(parse_lib_path lib_link lib_directory lib_path) string(REGEX REPLACE "^.*/(lib)?(.*)\\.(so|dll)" "\\2" my_lib_link ${lib_path}) string(REGEX REPLACE "^(.*)/(lib)?(.*)\\.(so|dll)" "\\1" my_lib_dir ${lib_path}) SET(${lib_link} ${my_lib_link} PARENT_SCOPE) SET(${lib_directory} ${my_lib_dir} PARENT_SCOPE) endfunction(parse_lib_path lib_link lib_directory lib_path) CGSI-gSOAP-1.3.8/cmake/modules/FindDCAP.cmake0000644000000000000000000000361512562602656016736 0ustar rootroot# # This module detects if DCAP is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # DCAP_LIBRARIES = full path to the DCAP libraries # DCAP_INCLUDE_DIR = include dir to be used when using the DCAP library # DCAP_FOUND = set to true if DCAP was found successfully # # DCAP_LOCATION # setting this enables search for DCAP libraries / headers in this location # ----------------------------------------------------- # DCAP Libraries # ----------------------------------------------------- find_library(DCAP_LIBRARIES NAMES dcap HINTS ${DCAP_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/lib64 ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/lib64 DOC "The main DCAP library" ) # ----------------------------------------------------- # DCAP Include Directories # ----------------------------------------------------- find_path(DCAP_INCLUDE_DIR NAMES dcap.h HINTS ${DCAP_LOCATION} ${STAGE_DIR} ${CMAKE_INSTALL_PREFIX}/dcap/*/${PLATFORM}/ ${CMAKE_INSTALL_PREFIX}/Grid/dcap/*/${PLATFORM}/include DOC "The DCAP include directory" ) if (DCAP_LIBRARIES) message (STATUS "DCAP libraries found in ${DCAP_LIBRARIES}") endif (DCAP_LIBRARIES) if(DCAP_INCLUDE_DIR) message(STATUS "DCAP includes found in ${DCAP_INCLUDE_DIR}") endif() # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set DCAP_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DCAP DEFAULT_MSG DCAP_LIBRARIES DCAP_INCLUDE_DIR) mark_as_advanced(DCAP_INCLUDE_DIR DCAP_LIBRARIES) CGSI-gSOAP-1.3.8/cmake/modules/CMakeGeneratePkgConfig.cmake0000644000000000000000000000772312562602656021655 0ustar rootroot# @title cmake macro for pkgconfig files generation # @brief generate a .pc package config file with a given name # @author Adrien Devresse include(DefineInstallationPaths REQUIRED) include(CMakeMacroParseArguments REQUIRED) include(CMakeStringHelpers REQUIRED) SET(CMAKE_PKGCONFIG_TEMPLATE "prefix=@PREFIX@ exec_prefix=@PREFIX@ libdir=@LIBDIR_VAR includedir=@INCLUDE_VAR@ Name: @NAME_PROJECT@ Description: @DESCRIPTION_PROJECT@ Version: @VERSION_PROJECT@ URL: @URL_PROJECT@ Requires: @REQUIRES_PROJECT@ Conflicts: @CONFLICTS_PROJECT@ Libs: @LIBS_PROJECT@ Libs.private: @LIBS_PRIVATE_PROJECT@ Cflags: @CFLAGS_PROJECT@ ") SET(CMAKE_PKGCONFIG_TEMPLATE_BASE " prefix=@PREFIX@ exec_prefix= \\\${prefix} libdir= @LIBDIR_VAR@ includedir=@INCLUDE_VAR@ Name: @NAME_PROJECT@ Description: @DESCRIPTION_PROJECT@ Version: @VERSION_PROJECT@ Requires: @REQUIRES_PROJECT@ Libs: @LIBS_PROJECT@ Cflags: @CFLAGS_PROJECT@ " ) LIST(APPEND CMAKE_PKGCONFIG_TEMPLATE_BASE_PATTERN "@PREFIX@" "@LIBDIR_VAR@" "@INCLUDE_VAR@" "@NAME_PROJECT@" "@DESCRIPTION_PROJECT@" "@VERSION_PROJECT@" "@REQUIRES_PROJECT@" "@LIBS_PROJECT@" "@CFLAGS_PROJECT@") # main function to use # FORMAT : add_PkgConfigFile_for_Library("string_filename.pc" target_library # [DESCRIPTION] "description of the pkgconfig files" # [HEADER_DIRS] dir1, dir2 # [REQUIRES] req1 req 2 ) # list of dir to include in $prefix/include/, ex : $prefix/include/dir1 # the pc file is produced in the ${CMAKE_CURRENT_BINARY_DIR} directory function(add_PkgConfigFile_for_Library) PARSE_ARGUMENTS(PKGCONFIGFILE "HEADER_DIRS;DESCRIPTION;REQUIRES;CFLAGS" "" ${ARGN} ) LIST(GET PKGCONFIGFILE_DEFAULT_ARGS 0 pkgconfig_filename) LIST(GET PKGCONFIGFILE_DEFAULT_ARGS 1 lib_target) LIST(GET PKGCONFIGFILE_DESCRIPTION 0 description) get_target_property(library_name ${lib_target} OUTPUT_NAME) get_target_property(library_version ${lib_target} VERSION) set(pkgconfig_prefix "${CMAKE_INSTALL_PREFIX}") set(pkgconfig_libdir_var "\\\${prefix}/lib${LIB_SUFFIX}") set(pkgconfig_include_var "\\\${prefix}/include") set(pkgconfig_linkflags "-l${library_name} -L\\\${libdir}") set(pkgconfig_name "${pkgconfig_filename}") set(pkgconfig_version "${library_version}") set(pkgconfig_description "pkgconfig file for ${library_name}") set(pkgconfig_requires " ") set(pkgconfig_cflags "") IF(PKGCONFIGFILE_REQUIRES) FOREACH(req ${PKGCONFIGFILE_REQUIRES}) set(pkgconfig_requires "${pkgconfig_requires} ${req}") ENDFOREACH(req PKGCONFIGFILE_REQUIRES) ENDIF(PKGCONFIGFILE_REQUIRES) IF(PKGCONFIGFILE_CFLAGS) FOREACH(req ${PKGCONFIGFILE_CFLAGS}) set(pkgconfig_cflags "${pkgconfig_cflags} ${req}") ENDFOREACH(req PKGCONFIGFILE_CFLAGS) ENDIF(PKGCONFIGFILE_CFLAGS) IF(PKGCONFIGFILE_HEADER_DIRS) FOREACH(dir ${PKGCONFIGFILE_HEADER_DIRS}) set(pkgconfig_includedir "${pkgconfig_includedir} -I\\\${includedir}/${dir}") ENDFOREACH(dir PKGCONFIGFILE_HEADER_DIRS) ELSE(PKGCONFIGFILE_HEADER_DIRS) set(pkgconfig_includedir " -I\\\${includedir}") ENDIF(PKGCONFIGFILE_HEADER_DIRS) IF(description) set(pkgconfig_description "${description}") ENDIF(description) set(pkgconfig_cflags "${pkgconfig_cflags} ${pkgconfig_includedir} ") LIST(APPEND pkgconfig_list_var ${pkgconfig_prefix} ${pkgconfig_libdir_var} ${pkgconfig_include_var} ${pkgconfig_name} ${pkgconfig_description} ${pkgconfig_version} ${pkgconfig_requires} ${pkgconfig_linkflags} ${pkgconfig_cflags}) replace_all_occurence(pc_file_content ${CMAKE_PKGCONFIG_TEMPLATE_BASE} LIST_PATTERN ${CMAKE_PKGCONFIG_TEMPLATE_BASE_PATTERN} LIST_REPLACER ${pkgconfig_list_var}) SET(filename "${CMAKE_CURRENT_BINARY_DIR}/${pkgconfig_filename}") FILE(WRITE ${filename} "${pc_file_content}" ) message(STATUS "generate pkgconfig file for ${lib_target} under ${filename}") endfunction(add_PkgConfigFile_for_Library) CGSI-gSOAP-1.3.8/cmake/modules/FindGFAL2.cmake0000644000000000000000000000501212562602656017013 0ustar rootroot# # This module detects if gfal2 is installed and determines where the # include files and libraries are. # # This code sets the following variables: # # GFAL2_LIBRARIES = full path to the gfal2 libraries # GFAL2_INCLUDE_DIR = include dir to be used when using the gfal2 library # GFAL2_FOUND = set to true if gfal2 was found successfully # # GFAL2_LOCATION # setting this enables search for gfal2 libraries / headers in this location find_package (PkgConfig) pkg_check_modules(GFAL2_PKG gfal2) pkg_check_modules(GFAL2_TRANSFER_PKG gfal_transfer) if (GFAL2_PKG_FOUND AND GFAL2_TRANSFER_PKG_FOUND) set (GFAL2_LIBRARIES ${GFAL2_PKG_LIBRARIES} ${GFAL2_TRANSFER_PKG_LIBRARIES}) set (GFAL2_INCLUDE_DIRS ${GFAL2_PKG_INCLUDE_DIRS} ${GFAL2_TRANSFER_PKG_INCLUDE_DIRS}) set (GFAL2_DEFINITIONS "${GFAL2_PKG_CFLAGS} ${GFAL2_TRANSFER_PKG_CFLAGS}") set (GFAL2_LIBRARY_DIRS ${GFAL2_PKG_LIBRARY_DIRS}) else (GFAL2_PKG_FOUND AND GFAL2_TRANSFER_PKG_FOUND) find_library(GFAL2_CORE_LIBRARIES NAMES gfal2 HINTS ${GFAL2_LOCATION} ${CMAKE_INSTALL_PREFIX}/Grid/gfal2/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/gfal2/*/${PLATFORM}/lib64 DOC "The main gfal2 library" ) find_library(GFAL2_TRANSFER_LIBRARIES NAMES gfal_transfer HINTS ${GFAL2_LOCATION} ${CMAKE_INSTALL_PREFIX}/Grid/gfal2/*/${PLATFORM}/lib ${CMAKE_INSTALL_PREFIX}/Grid/gfal2/*/${PLATFORM}/lib64 DOC "The transfer gfal2 library" ) set (GFAL2_LIBRARIES ${GFAL2_CORE_LIBRARIES} ${GFAL2_TRANSFER_LIBRARIES}) find_path(GFAL2_INCLUDE_DIRS NAMES gfal_api.h HINTS ${GFAL2_LOCATION}/include/* ${CMAKE_INSTALL_PREFIX}/Grid/gfal2/*/${PLATFORM}/include/* DOC "The gfal2 include directory" ) set (GFAL2_DEFINITIONS "") endif (GFAL2_PKG_FOUND AND GFAL2_TRANSFER_PKG_FOUND) if (GFAL2_LIBRARIES) message (STATUS "GFAL2 libraries: ${GFAL2_LIBRARIES}") endif (GFAL2_LIBRARIES) if (GFAL2_INCLUDE_DIRS) message (STATUS "GFAL2 include dir: ${GFAL2_INCLUDE_DIRS}") endif (GFAL2_INCLUDE_DIRS) # ----------------------------------------------------- # handle the QUIETLY and REQUIRED arguments and set GFAL2_FOUND to TRUE if # all listed variables are TRUE # ----------------------------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args (GFAL2 DEFAULT_MSG GFAL2_LIBRARIES GFAL2_INCLUDE_DIRS ) mark_as_advanced(GFAL2_INCLUDE_DIRS GFAL2_LIBRARIES GFAL2_LIBRARY_DIRS) CGSI-gSOAP-1.3.8/RELEASE-NOTES0000644000000000000000000001616012562602635013561 0ustar rootroot* Wed Aug 12 2015 Alejandro Alvarez 1.3.8 - [DMC-646] - When trace is on, the output buffer is printed full, regardless of the actual length - [DMC-698] - Port DMC clients to MacOSX * Thu Nov 06 2014 Alejandro Alvarez 1.3.7 - [DMC-437] - x509_* data members are leaking - [DMC-438] - client_cgsi_plugin_import_cred wrongly check the existence of ukey - [DMC-451] - Dump encrypted payload only if CGSI_TRACE is > 1 - [DMC-494] - CGSI-soap changes to be more verbose and meaningful * Wed Jun 25 2014 Alejandro Alvarez 1.3.6 - Disabled weak ciphers - [LCGUTIL-55] - API to set/get at runtime the different possible credentials - [LCGUTIL-384] - Remove compilation warnings on cgsi-gsoap * Wed Dec 21 2011 Zsolt Molnar 1.3.5-1 - Dealing with bugs in CGSI-Gsoap: https://svnweb.cern.ch/trac/lcgutil/ticket/176 - cgsi-gsoap - license violation: https://svnweb.cern.ch/trac/lcgutil/ticket/233 - cgsi-gsoap compilation failure with default debian compiler flags: https://svnweb.cern.ch/trac/lcgutil/ticket/237 - General EPEL packaging for all the lcg-utils components: General EPEL packaging for all the lcg-utils components * Mon Mar 8 2011 Jean-Philippe Baud 1.3.4-2 - set AutoReqProv = yes (strong requirement from EMI project) - add support for EMI build - Fixes #77984: srmv1 and srmv2.2 segfaults while security scan * Mon Aug 23 2010 Jean-Philippe Baud 1.3.4-1 - create rpm sub-directory and spec file to help building from head - add Makefile to build solaris packages * Tue Aug 3 2010 Jean-Philippe Baud 1.3.4 - add code to get user_ca - fix typo in Makefile (GLOBUS_FLAVOUR default) * Wed Aug 19 2009 Akos Frohner 1.3.3-2 - updating build dependency * Mon Jan 12 2009 David Smith 1.3.3-1 - Update version to 1.3.3, apply initial solaris build changes and change vomsc to vomsapi. * Mon Oct 20 2008 Akos Frohner 1.3.2-2 - Fixes #42623: DM custom packager creates rpms with invalid name * Mon Jul 7 2008 Akos Frohner 1.3.2-1 - gSOAP 2.7.10 has introduced a virtual destructor, which inserts a pointer to the VMT at the beginning of the 'soap' structure, making the C and C++ versions of the code binary incompatible, so we need to build C++ flavour of the libraries as well with _cpp suffix. * Thu May 8 2008 David Smith 1.3.1-1 - Added new function, export_delegated_credentials(), to make a delegated credential token available in memory suitable for storage and later reuse by the user - Removed some spurious trailing newlines from error messages - Fixed descriptor and connection leak on the client side when the authenitcation negociation to a server fails - Enhanced some error messages to cover more of the error message recommendations in bug #35320 * Wed Oct 10 2007 Akos Frohner 1.2.1-2 - VOMS libs are in 'lib64' on x86_64 starting with VOMS v1.7.23 * Fri Sep 21 2007 Akos Frohner 1.2.1-1 - Adding the CGSI_gSOAP error messages to the returned SOAP errors. - updated to use glite-test-certs, instead of glite-security-test-utils * Thu Aug 30 2007 Akos Frohner 1.2.0-1 - using lib64 on x86_64 platform for the libraries * Tue Jul 31 2007 David Smith - improve relase of resources on error during gss_init_sec_context() or gss_accept_sec_context() loops and on send error in cgsi_plugin_send(). - Send errors are now noted and the plugin will not attempt to wrap and send any further data with the context. - change peer identitiy check in client_cgsi_plugin_open() from an explicit check after the security context is established to an internal check handled by gss_init_sec_context() - Change of behavior of CGSI_OPT_DISABLE_NAME_CHECK. Without the option set a client checks the server presents an identnity compatible with the hostname specified to client_cgsi_plugin_open(). (Which was the previous behavior). Without CGSI_OPT_DISABLE_NAME_CHECK the client does a reverse lookup of the server's name and uses that in the identity check. - Added new option CGSI_OPT_ALLOW_ONLY_SELF which affects both client and servers and causes them to only connect/accept connections with peers which have the same credentials. This overrides CGSI_OPT_DISABLE_NAME_CHECK. - Read/write attempts without a security context having first been established fail but no longer reset the error. It is assumed that the reason for the context establish failure has already been recorded, resetting the error leads to a poor diagnostic message. - Small optimisation in cgsi_plugin_print_token(). * Fri Jan 19 2007 Akos FROHNER 1.1.17-2 - avoiding memory leak, if retrieve_voms_credentials() called multiple times * Fri Jan 12 2007 Akos FROHNER 1.1.17-1 - having no VOMS extension (i.e. grid-proxy-init) is not an error * Tue Jan 9 2007 Akos FROHNER 1.1.16-3 - enabling gSOAP 2.6.x and 2.7.x gLite builds from the same source - maintainer has been changed to CERN/IT/GD * Thu Aug 31 2006 Akos FROHNER 1.1.16 - VOMS parsing is no longer implicit, if CGSI_OPT_DISABLE_VOMS_CHECK option is used on the server side: one has to call retrieve_voms_credentials() to make it happen. It returns -1 in case of error and fills the SOAP Fault sturture with the details. This fixes: #19355: CGSI-gSOAP shall refuse requests with invalid VOMS AC - New server side option: CGSI_OPT_DISABLE_MAPPING, to disable gridmap-file lookup of the DN (for example server does its own authorization). - Simple client-server test suite, for regression testing. - gSOAP 2.7.x compatibility fix. - Fixed when CGSI_TRACE was printing garbage. * Mon Feb 13 2006 Akos FROHNER 1.1.15 - moved to the gLite build system - moved the VOMS dependant libraries into a -voms RPM - changed structure init to calloc that the memory is zeroad it fixes a segfault, if the non-voms library is used - added interface documentation in HTML and man formats * Thu Feb 9 2006 Ben COUTURIER 1.1.14 - Create libs for flavours gcc32dbg and gcc32dbgpthr in case of VOMS support * Mon Jan 9 2006 Ben COUTURIER 1.1.13 - Fixed problems with VOMS code * Mon Jan 9 2006 Ben COUTURIER 1.1.12 - Fixed memory leak in case of error in the VOMS code * Thu Nov 17 2005 Ben COUTURIER 1.1.11 - VOMS Integration: Added new library libcgsi_plugin_voms.... * Tue Jul 12 2005 Ben COUTURIER 1.1.10 - Added license * Fri Jul 8 2005 Ben COUTURIER 1.1.9 - Moved the plugin to /usr - Included David Smith's activation/deactivation patch to allow running the plugin in a multithreaded server - Fixed bug in cgsi_plugin_copy (before that it was not duplicating the cgsi_plugin_data) - Protected calls to cgsi_plugin_data->fopen and fclose - Send error message in faultstring rather rather than in fault detail CGSI-gSOAP-1.3.8/CMakeLists.txt0000644000000000000000000000226712562602635014433 0ustar rootroot## cmake build script for cgsi GSOAP ## @author Devresse Adrien project (cgsi-gsoap) cmake_minimum_required (VERSION 2.6) # build type set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "build type") set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/") # load module include(DefineInstallationPaths REQUIRED) include(ReleaseDebugAutoFlags REQUIRED) find_package(PkgConfig REQUIRED) #enable testing INCLUDE(CTest) set(OUTPUT_NAME_DAVIX "cgsi-gsoap") set(VERSION_MAJOR 1) set(VERSION_MINOR 3) set(VERSION_PATCH 8) set(VERSION_STRING ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) # libs checks find_package(gSOAP REQUIRED) find_package(VOMS REQUIRED) find_package(Globus_COMMON REQUIRED) find_package(Globus_GSSAPI_GSI REQUIRED) find_package(Globus_GSS_ASSIST REQUIRED) find_package(Globus_GSI_CERT_UTILS REQUIRED) find_package(Globus_GSI_CREDENTIAL REQUIRED) ## general def add_definitions(-D_GNU_SOURCE) add_definitions(-D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64) install(FILES README readme.html DESTINATION ${DOC_INSTALL_DIR}/) install(FILES RELEASE-NOTES DESTINATION ${DOC_INSTALL_DIR}/) install(FILES LICENSE DESTINATION ${DOC_INSTALL_DIR}/) add_subdirectory (src) CGSI-gSOAP-1.3.8/README0000644000000000000000000000057512562602635012553 0ustar rootrootCGSI-gSOAP ---------- Client and server side library to secure gSOAP using the Globus Security Infrastructure. It is licensed under the Apache 2 License. See LICENSE for details. See RELEASE-NOTES for a detailed changelog. You can notify bugs or ask for feature requests via * Tracker: https://its.cern.ch/jira/browse/DMC/component/14238 * Mailing list: dmc-support@cern.ch CGSI-gSOAP-1.3.8/project/0000755000000000000000000000000012562602635013332 5ustar rootrootCGSI-gSOAP-1.3.8/project/glite-security-cgsi-gsoap.spec.template.2.7.100000644000000000000000000000371112562602635023551 0ustar rootrootSummary: GSI plugin for gSOAP Name: CGSI_gSOAP_2.7.10 Version: @VERSION@ Release: @RELEASE@@RELEASE.SUFFIX@ Source0: CGSI_gSOAP_2.7.10-%{version}-@RELEASE@.tar.gz Vendor: CERN/IT/DM License: Apache2 Group: Application/File BuildRoot: %{_builddir}/%{name}-%{version} Prefix: /usr Provides: libcgsi_plugin_gsoap_@GSOAP.VERSION@.so Requires: vdt_globus_essentials Obsoletes: CGSI_gSOAP_2.7 %define __spec_install_post %{nil} %define debug_package %{nil} %description CGSI allows writing gSOAP clients with GSI authentication. This package contains the shared libraries for the client side. %package dev Summary: GSI plugin for gSOAP -- development files Group: Application/File Requires: vdt_globus_sdk Requires: glite-security-voms-api Obsoletes: CGSI_gSOAP_2.7-dev %description dev CGSI allows writing gSOAP clients with GSI authentication. This package contains the header and static library for development. %package voms Summary: GSI plugin for gSOAP -- VOMSified libraries Group: Application/File Provides: libcgsi_plugin_voms_gsoap_@GSOAP.VERSION@_@GLOBUS.DBG.THR.FLAVOUR@.so Provides: libcgsi_plugin_voms_gsoap_@GSOAP.VERSION@_@GLOBUS.DBG.NOTHR.FLAVOUR@.so Requires: vdt_globus_essentials Requires: glite-security-voms-api-cpp Obsoletes: CGSI_gSOAP_2.7-voms %description voms CGSI allows writing gSOAP clients with GSI authentication. This package contains the VOMS enabled shared libraries for the servers side. %prep %setup -c %build %install %clean %files %defattr(-,root,root) %{prefix}/%{_lib}/libcgsi_plugin_gsoap_*.so %{prefix}/%{_lib}/libcgsi_plugin_gsoap_*.so.* %files dev %defattr(-,root,root) %{prefix}/include/cgsi_plugin.h %{prefix}/%{_lib}/libcgsi_plugin*.a %doc %{prefix}/share/doc %doc %{prefix}/share/man %files voms %defattr(-,root,root) %{prefix}/%{_lib}/libcgsi_plugin_voms_gsoap_*.so %{prefix}/%{_lib}/libcgsi_plugin_voms_gsoap_*.so.* %post if [ $(id -u) -eq 0 ]; then ldconfig fi %post voms if [ $(id -u) -eq 0 ]; then ldconfig fi %changelog CGSI-gSOAP-1.3.8/project/e-m_org.glite.security.cgsi-gsoap-2.7.10.ini0000644000000000000000000000124312562602635023107 0ustar rootroot; ; INI Template file for the object "Component" called "org.glite.security.cgsi-gsoap-2.7.10" ; ; The section [Component-] contains component information ; The section [Parent] contains the parent pair (type, name) information [Component-org.glite.security.cgsi-gsoap-2.7.10] displayName = org.glite.security.cgsi-gsoap-2.7.10 description = gSOAP 2.7.10 plugin and gss libraries repository = http://eticssoft.web.cern.ch/eticssoft/repository/ packageName = CGSI_gSOAP_2.7.10 vcsroot = :pserver:anonymous@glite.cvs.cern.ch:/cvs/glite licenceType = Apache2 download = None vendor = EGEE homepage = http://www.glite.org [Parent] Subsystem = org.glite.data CGSI-gSOAP-1.3.8/project/glite-security-cgsi-gsoap.spec.template.etics0000644000000000000000000000360412562602635024134 0ustar rootrootSummary: GSI plugin for gSOAP Name: CGSI_gSOAP_@GSOAP.VERSION@ Version: @VERSION@ Release: @RELEASE@@RELEASE.SUFFIX@ Source0: CGSI_gSOAP_@GSOAP.VERSION@-%{version}-@RELEASE@.tar.gz Vendor: CERN/IT/GD License: Apache2 Group: Application/File BuildRoot: %{_builddir}/%{name}-%{version} Prefix: /usr Provides: libcgsi_plugin_gsoap_@GSOAP.VERSION@.so Requires: vdt_globus_essentials %define __spec_install_post %{nil} %define debug_package %{nil} %description CGSI allows writing gSOAP clients with GSI authentication. This package contains the shared libraries for the client side. %package dev Summary: GSI plugin for gSOAP -- development files Group: Application/File Requires: vdt_globus_sdk Requires: glite-security-voms-api %description dev CGSI allows writing gSOAP clients with GSI authentication. This package contains the header and static library for development. %package voms Summary: GSI plugin for gSOAP -- VOMSified libraries Group: Application/File Provides: libcgsi_plugin_voms_gsoap_@GSOAP.VERSION@_@GLOBUS.DBG.THR.FLAVOUR@.so Provides: libcgsi_plugin_voms_gsoap_@GSOAP.VERSION@_@GLOBUS.DBG.NOTHR.FLAVOUR@.so Requires: vdt_globus_essentials Requires: glite-security-voms-api-cpp %description voms CGSI allows writing gSOAP clients with GSI authentication. This package contains the VOMS enabled shared libraries for the servers side. %prep %setup -c %build %install %clean %files %defattr(-,root,root) %{prefix}/%{_lib}/libcgsi_plugin_gsoap_*.so %{prefix}/%{_lib}/libcgsi_plugin_gsoap_*.so.* %files dev %defattr(-,root,root) %{prefix}/include/cgsi_plugin.h %{prefix}/%{_lib}/libcgsi_plugin*.a %doc %{prefix}/share/doc %doc %{prefix}/share/man %files voms %defattr(-,root,root) %{prefix}/%{_lib}/libcgsi_plugin_voms_gsoap_*.so %{prefix}/%{_lib}/libcgsi_plugin_voms_gsoap_*.so.* %post if [ $(id -u) -eq 0 ]; then ldconfig fi %post voms if [ $(id -u) -eq 0 ]; then ldconfig fi %changelog CGSI-gSOAP-1.3.8/project/e-c_org.glite.security.cgsi-gsoap-2.7.10.ini0000644000000000000000000000357212562602635023104 0ustar rootroot; ; INI Template file for the object "Configuration" called "@CNAME@" ; [Configuration-@CNAME@] majorVersion = @VMAJOR@ minorVersion = @VMINOR@ revisionVersion = @VPATCH@ age = @VRELEASE@ moduleName = @MODULE@ projectName = org.glite displayName = @MODULE@ v@VERSION@ description = @MODULE@ v@VERSION@ tag = @TNAME@ path = ${projectName}/${moduleName}/${version}/${platformName}/${packageName}-${version}-${age}.tar.gz status = None profile = None [Platform-default:BuildCommand] init = None configure = mkdir -p build; cd build; ${src.location}/configure --with-version=${version} --with-release=${age} --with-globus-prefix=${vdt_globus_essentials.location} --with-globus-thr-flavor=${globus.dbg.thr.flavor} --with-globus-nothr-flavor=${globus.dbg.nothr.flavor} --with-gsoap-location=${gsoap.location} --with-gsoap-version=${gsoap.version} --with-voms-location=${stageDir} --with-cpp-libs --with-libdir=${libdir} postpublish = None packaging = None displayName = None description = None doc = None prepublish = None publish = None compile = make -C build/src all install = make -C build/src PREFIX=${prefix} install clean = rm -rf build test = make -C build/test all checkstyle = None [Platform-default:VcsCommand] tag = None displayName = None description = None branch = None commit = None checkout = cvs -d ${vcsroot} co -r ${tag} -d ${moduleName} org.glite.security.cgsi-gsoap [Platform-default:TestCommand] ;clean = None ;init = None ;displayName = None ;description = None ;test = None [Platform-default:Property] packageName = CGSI_gSOAP_2.7.10 package.prefix = /usr package.userspec = build/glite-security-cgsi-gsoap-2.7.spec [Platform-default:Environment] ;var1 = None [Platform-default:StaticDependency] externals|gsoap = gsoap v. 2.7.10,B [Platform-default:DynamicDependency] vdt|vdt_globus_essentials = B org.glite|org.glite.security.voms-api-cpp = B org.glite|org.glite.security.voms-api = B CGSI-gSOAP-1.3.8/project/e-m_org.glite.security.cgsi-gsoap-2.7.ini0000644000000000000000000000122412562602635022667 0ustar rootroot; ; INI Template file for the object "Component" called "org.glite.security.cgsi-gsoap-2.7" ; ; The section [Component-] contains component information ; The section [Parent] contains the parent pair (type, name) information [Component-org.glite.security.cgsi-gsoap-2.7] displayName = org.glite.security.cgsi-gsoap-2.7 description = gSOAP 2.7 plugin and gss libraries repository = http://eticssoft.web.cern.ch/eticssoft/repository/ packageName = CGSI_gSOAP_2.7 vcsroot = :pserver:anonymous@glite.cvs.cern.ch:/cvs/glite licenceType = Apache2 download = None vendor = EGEE homepage = http://www.glite.org [Parent] Subsystem = org.glite.data CGSI-gSOAP-1.3.8/project/e-c_org.glite.security.cgsi-gsoap-2.7.ini0000644000000000000000000000357112562602635022664 0ustar rootroot; ; INI Template file for the object "Configuration" called "@CNAME@" ; [Configuration-@CNAME@] majorVersion = @VMAJOR@ minorVersion = @VMINOR@ revisionVersion = @VPATCH@ age = @VRELEASE@ moduleName = @MODULE@ projectName = org.glite displayName = @MODULE@ v@VERSION@ description = @MODULE@ v@VERSION@ tag = @TNAME@ path = ${projectName}/${moduleName}/${version}/${platformName}/${packageName}-${version}-${age}.tar.gz status = None profile = None [Platform-default:BuildCommand] init = None configure = mkdir -p build; cd build; ${src.location}/configure --with-version=${version} --with-release=${age} --with-globus-prefix=${vdt_globus_essentials.location} --with-globus-thr-flavor=${globus.dbg.thr.flavor} --with-globus-nothr-flavor=${globus.dbg.nothr.flavor} --with-gsoap-location=${gsoap.location} --with-gsoap-version=${gsoap.version} --with-voms-location=${stageDir} --with-cpp-libs --with-libdir=${libdir} postpublish = None packaging = None displayName = None description = None doc = None prepublish = None publish = None compile = make -C build/src all install = make -C build/src PREFIX=${prefix} install clean = rm -rf build test = make -C build/test all checkstyle = None [Platform-default:VcsCommand] tag = None displayName = None description = None branch = None commit = None checkout = cvs -d ${vcsroot} co -r ${tag} -d ${moduleName} org.glite.security.cgsi-gsoap [Platform-default:TestCommand] ;clean = None ;init = None ;displayName = None ;description = None ;test = None [Platform-default:Property] packageName = CGSI_gSOAP_2.7 package.prefix = /usr package.userspec = build/glite-security-cgsi-gsoap-2.7.spec [Platform-default:Environment] ;var1 = None [Platform-default:StaticDependency] externals|gsoap = gsoap v. 2.7.6b-2,B [Platform-default:DynamicDependency] vdt|vdt_globus_essentials = B org.glite|org.glite.security.voms-api-cpp = B org.glite|org.glite.security.voms-api = B