| #!/usr/bin/env bash |
| # shellcheck disable=SC1090 |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You 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. |
| # |
| |
| # The app's label |
| export APP_LABEL=Gateway |
| |
| # The app's name |
| APP_NAME=gateway |
| |
| # Start/stop script location |
| APP_BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| |
| # Setup the common environment |
| . "$APP_BIN_DIR"/knox-env.sh |
| |
| # Source common functions |
| . "$APP_BIN_DIR"/knox-functions.sh |
| |
| # The app's jar name |
| APP_JAR="$APP_BIN_DIR/gateway.jar" |
| |
| # The app's conf dir |
| DEFAULT_APP_CONF_DIR="$APP_HOME_DIR/conf" |
| export APP_CONF_DIR=${KNOX_GATEWAY_CONF_DIR:-$DEFAULT_APP_CONF_DIR} |
| |
| # The app's data dir |
| DEFAULT_APP_DATA_DIR="$APP_HOME_DIR/data" |
| export APP_DATA_DIR=${KNOX_GATEWAY_DATA_DIR:-$DEFAULT_APP_DATA_DIR} |
| |
| # The app's log dir |
| DEFAULT_APP_LOG_DIR="$APP_HOME_DIR/logs" |
| APP_LOG_DIR=${KNOX_GATEWAY_LOG_DIR:-$DEFAULT_APP_LOG_DIR} |
| |
| # The app's logging options |
| export APP_LOG_OPTS="$KNOX_GATEWAY_LOG_OPTS" |
| |
| # The app's memory options |
| export APP_MEM_OPTS="$KNOX_GATEWAY_MEM_OPTS" |
| |
| # The app's debugging options |
| export APP_DBG_OPTS="$KNOX_GATEWAY_DBG_OPTS" |
| |
| # Name of PID file |
| DEFAULT_APP_PID_DIR="$APP_HOME_DIR/pids" |
| APP_PID_DIR=${KNOX_GATEWAY_PID_DIR:-$DEFAULT_APP_PID_DIR} |
| export APP_PID_FILE="$APP_PID_DIR/$APP_NAME.pid" |
| |
| # Name of LOG/OUT/ERR file |
| export APP_OUT_FILE="$APP_LOG_DIR/$APP_NAME.out" |
| export APP_ERR_FILE="$APP_LOG_DIR/$APP_NAME.err" |
| |
| DEFAULT_APP_RUNNING_IN_FOREGROUND="$GATEWAY_SERVER_RUN_IN_FOREGROUND" |
| export APP_RUNNING_IN_FOREGROUND=${KNOX_GATEWAY_RUNNING_IN_FOREGROUND:-$DEFAULT_APP_RUNNING_IN_FOREGROUND} |
| |
| function main { |
| checkJava |
| |
| case "$1" in |
| setup) |
| setupEnv |
| ;; |
| start) |
| if [ "$2" = "--printEnv" ]; then |
| printEnv |
| fi |
| checkEnv |
| appStart |
| ;; |
| stop) |
| appStop |
| ;; |
| status) |
| appStatus |
| ;; |
| clean) |
| appClean |
| ;; |
| help) |
| printHelp |
| ;; |
| *) |
| printf "Usage: %s {start|stop|status|clean}\n" "$0" |
| ;; |
| esac |
| } |
| |
| function setupEnv { |
| checkEnv |
| "$JAVA" -jar "$APP_JAR" -persist-master -nostart |
| return 0 |
| } |
| |
| function checkReadDir { |
| if [ ! -e "$1" ]; then |
| printf "Directory %s does not exist.\n" "$1" |
| exit 1 |
| fi |
| if [ ! -d "$1" ]; then |
| printf "File %s is not a directory.\n" "$1" |
| exit 1 |
| fi |
| if [ ! -r "$1" ]; then |
| printf "Directory %s is not readable by current user %s.\n" "$1" "$USER" |
| exit 1 |
| fi |
| if [ ! -x "$1" ]; then |
| printf "Directory %s is not executable by current user %s.\n" "$1" "$USER" |
| exit 1 |
| fi |
| } |
| |
| function checkWriteDir { |
| checkReadDir "$1" |
| if [ ! -w "$1" ]; then |
| printf "Directory %s is not writable by current user %s.\n" "$1" "$USER" |
| exit 1 |
| fi |
| } |
| |
| function checkEnv { |
| # Make sure not running as root |
| if [ "$(id -u)" -eq "0" ]; then |
| echo "This command $0 must not be run as root." |
| exit 1 |
| fi |
| |
| checkWriteDir "$APP_LOG_DIR" |
| checkWriteDir "$APP_PID_DIR" |
| } |
| |
| function printHelp { |
| "$JAVA" -jar "$APP_JAR" -help |
| return 0 |
| } |
| |
| #Starting main |
| main "$@" |