#!/bin/bash # Copyright: 2023 Virtuozzo International GmbH # 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. [ -n "${JAVACOMMONENGINELIB_VERSION:-}" ] && return 0; JAVACOMMONENGINELIB_VERSION="0.1"; $PROGRAM 'grep' $PROGRAM 'setcap' $PROGRAM 'patchelf' JAVA_COMMON_PATH="/usr/java" JAVA6_DIR=$(ls $JAVA_COMMON_PATH | $GREP jdk1.6 | sort -r | head -n 1) ; JAVA7_DIR=$(ls $JAVA_COMMON_PATH | $GREP jdk1.7 | sort -r | head -n 1) ; JAVA8_DIR=$(ls $JAVA_COMMON_PATH | $GREP jdk1.8 | sort -r | head -n 1) ; JAVA_LATEST_DIR="/usr/java/latest" JAVA_DEFAULT_DIR="/usr/java/default" function switchEngine(){ local engine_type=$1 case $engine_type in "java6" ) local java_dir="$JAVA6_DIR" ;; "java7" ) local java_dir="$JAVA7_DIR" ;; "java8" ) local java_dir="$JAVA8_DIR" ;; *) return 1 esac [ -L "$JAVA_LATEST_DIR" ] && { set -f; rm "$JAVA_LATEST_DIR"; set +f; } [ ! -z "$java_dir" ] && ln -s "$java_dir" "$JAVA_LATEST_DIR"; [ -L "$JAVA_DEFAULT_DIR" ] && { set -f; rm "$JAVA_DEFAULT_DIR"; set +f; } [ ! -z "$java_dir" ] && ln -s "$JAVA_LATEST_DIR" "$JAVA_DEFAULT_DIR"; [ -d "$JAVA_COMMON_PATH" ] && chown -R "$DATA_OWNER" "$JAVA_COMMON_PATH" 2>>"$JEM_CALLS_LOG"; # Do not setcap for java6 [[ "x${engine_type}" == "xjava6" ]] && return 0 [ -e "/etc/ld.so.conf.d/java.conf" ] && /bin/rm "/etc/ld.so.conf.d/java.conf" echo -e "$(find /usr/java/${java_dir} -name libjli.so -printf "%h\n")" > "/etc/ld.so.conf.d/java.conf" ldconfig $SETCAP cap_net_bind_service=+epi "/usr/java/${java_dir}/bin/java" $SETCAP cap_net_bind_service=+epi "/usr/java/${java_dir}/jre/bin/java" $PATCHELF --set-rpath "/usr/java/${java_dir}/jre/lib/amd64/jli" "/usr/java/${java_dir}/jre/bin/java" $PATCHELF --set-rpath "/usr/java/${java_dir}/lib/amd64/jli" "/usr/java/${java_dir}/bin/java" #TODO: Investigate and fix this double-run $SETCAP cap_net_bind_service=+epi "/usr/java/${java_dir}/bin/java" $SETCAP cap_net_bind_service=+epi "/usr/java/${java_dir}/jre/bin/java" } function describeSetVersion(){ echo "\n\t\tset java version"; }