diff options
Diffstat (limited to 'pki/base/common/scripts/pkicomplete')
-rwxr-xr-x | pki/base/common/scripts/pkicomplete | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/pki/base/common/scripts/pkicomplete b/pki/base/common/scripts/pkicomplete new file mode 100755 index 000000000..083475ce4 --- /dev/null +++ b/pki/base/common/scripts/pkicomplete @@ -0,0 +1,250 @@ +#!/usr/bin/perl +# +# --- BEGIN COPYRIGHT BLOCK --- +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Copyright (C) 2007 Red Hat, Inc. +# All rights reserved. +# --- END COPYRIGHT BLOCK --- +# + +############################################################## +# This script is used to complete setting up the framework +# that is required prior to creating various PKI instances. +# +# Objects placed in here consist of items that can only be +# determined at runtime (not at buildtime). +# +# NOTE: The steps completed by this script are only +# needed by non-TPS (Java-based) PKI subsystems. +# +# Sample Invocation (for CA, KRA, OCSP, or TKS): +# +# ./pkicomplete +# +############################################################## + + +############################################################## +# Perl Version +############################################################## + +my $MINIMUM_PERL_VERSION = "5.006001"; + +my $perl_version_error_message = "ERROR: Using Perl version $] ...\n" + . " Must use Perl version " + . "$MINIMUM_PERL_VERSION or later to " + . "run this script!\n"; + +die "$perl_version_error_message" if $] < $MINIMUM_PERL_VERSION; + + +############################################################## +# Environment Variables +############################################################## + +# untaint called subroutines +if( ( $^O ne 'Windows_NT' ) && ( $^O ne 'MSWin32' ) ) { + $> = $<; # set effective user ID to real UID + $) = $(; # set effective group ID to real GID + $ENV{ 'PATH' } = '/bin:/usr/bin'; + $ENV{ 'ENV' } = '' if $ENV{ 'ENV' } ne ''; +} + + +############################################################## +# Shared Common Perl Data and Subroutines +############################################################## + +# Compute "flavor" of Operating System +my $pki_flavor = ""; +if( $^O eq "linux" ) { + $pki_flavor = `pkiflavor`; +} elsif( $^O eq "solaris" ) { + $pki_flavor = `pkiflavor`; +} else { + print( STDERR + "ERROR: Unsupported platform '$^O'!\n" ); + print( STDOUT "\n" ); + exit 255; +} + +$pki_flavor =~ s/\s+$//g; + +# Establish path to scripts +my $pki_subsystem_common_area = "/usr/share/$pki_flavor"; +my $common_path = "/usr/share/pki/scripts"; + +if( ! -d "$common_path" ) { + print( STDERR + "ERROR: The path '$common_path' does not exist!\n" + . " Unable to load shared Common Perl Data " + . "and Subroutines!\n" ); + print( STDOUT "\n" ); + exit 255; +} + +if( ! -e "$common_path/pkicommon" ) { + print( STDERR + "ERROR: The file '$common_path/pkicommon' does not exist!\n" + . " Unable to load shared Common Perl Data " + . "and Subroutines!\n" ); + print( STDOUT "\n" ); + exit 255; +} + +eval( "use lib '" . $common_path . "'" ); +require( 'pkicommon' ); + + +############################################################## +# Local Constants +############################################################## + +# Links created for initial "tomcat" installation that MUST exist!!! +my $jss4_common_symlink = "/var/lib/tomcat5/common/lib/jss4.jar"; +my $osutil_common_symlink = "/var/lib/tomcat5/common/lib/osutil.jar"; +my $symkey_common_symlink = "/var/lib/tomcat5/common/lib/symkey.jar"; +my $jss4_server_symlink = "/var/lib/tomcat5/server/lib/jss4.jar"; + +# Locations of the actual files that the symlinks reference +# first, try looking for the JSS jar file in a 32-bit directory +my $jss4_jar_file = "$default_system_jni_java_path/jss4.jar"; +if (! file_exists($jss4_jar_file)) { + # not found, try looking for it in a 32-bit dirsec directory + $jss4_jar_file = "$default_system_jni_java_path/dirsec/jss4.jar"; + if (! file_exists($jss4_jar_file)) { + # still not found, try looking for it in a 64-bit directory + $jss4_jar_file = "$default_system_user_libraries/java/jss4.jar"; + if (! file_exists($jss4_jar_file)) { + # as a last resort, try looking for it in a 64-bit dirsec directory + $jss4_jar_file = "$default_system_user_libraries/java/dirsec/jss4.jar"; + if (! file_exists($jss4_jar_file)) { + # unable to find 'jss4.jar' JNI file anywhere + print( STDERR + "ERROR: Unable to find a 'jss4.jar' JNI jar file!\n" ); + print( STDOUT "\n" ); + exit 255; + } + } + } +} +my $osutil_jar_file = "$default_system_jni_java_path/osutil.jar"; +my $symkey_jar_file = "$default_system_jni_java_path/symkey.jar"; + + +############################################################## +# Main Program +############################################################## + +# no args +# no return value +sub main() +{ + my $result = 0; + my $root_user = ""; + my $root_group = ""; + + chdir( "/tmp" ); + + # On Linux/UNIX, insure that this script is being run as "root". + $result = check_for_root_UID(); + if( !$result ) { + exit 255; + } + + # Establish "root" usr/group based upon platform + if( $^O eq "linux" ) { + # Superuser and group to give to PKI installed files + $root_user = "root"; + $root_group = "root"; + } elsif( $^O eq "solaris" ) { + # Superuser and group to give to PKI installed files + $root_user = "root"; + $root_group = "other"; + } + + # Complete setting up PKI framework . . . + if( !symbolic_link_exists( $jss4_common_symlink ) ) { + $result = create_symbolic_link( $jss4_common_symlink, + $jss4_jar_file ); + if( !$result ) { + exit 255; + } + + $result = give_symbolic_link_to( $jss4_common_symlink, + $root_user, + $root_group ); + if( !$result ) { + exit 255; + } + } + + if( !symbolic_link_exists( $osutil_common_symlink ) ) { + $result = create_symbolic_link( $osutil_common_symlink, + $osutil_jar_file ); + if( !$result ) { + exit 255; + } + + $result = give_symbolic_link_to( $osutil_common_symlink, + $root_user, + $root_group ); + if( !$result ) { + exit 255; + } + } + + if( !symbolic_link_exists( $symkey_common_symlink ) ) { + $result = create_symbolic_link( $symkey_common_symlink, + $symkey_jar_file ); + if( !$result ) { + exit 255; + } + + $result = give_symbolic_link_to( $symkey_common_symlink, + $root_user, + $root_group ); + if( !$result ) { + exit 255; + } + } + + if( !symbolic_link_exists( $jss4_server_symlink ) ) { + $result = create_symbolic_link( $jss4_server_symlink, + $jss4_jar_file ); + if( !$result ) { + exit 255; + } + + $result = give_symbolic_link_to( $jss4_server_symlink, + $root_user, + $root_group ); + if( !$result ) { + exit 255; + } + } + + return; +} + + +############################################################## +# PKI Instance Removal +############################################################## + +main(); + +exit 0; + |