|  | #!/bin/bash | 
|  | # | 
|  | # 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. | 
|  | # | 
|  | # Shell script to start rsyncd on master Solr server | 
|  |  | 
|  | orig_dir=$(pwd) | 
|  | cd ${0%/*}/.. | 
|  | solr_root=$(pwd) | 
|  | cd ${orig_dir} | 
|  |  | 
|  | unset data_dir solr_port rsyncd_port user rsyncd_bwlimit verbose debug | 
|  | . ${solr_root}/bin/scripts-util | 
|  |  | 
|  | # set up variables | 
|  | prog=${0##*/} | 
|  | log=${solr_root}/logs/rsyncd.log | 
|  |  | 
|  | # define usage string | 
|  | USAGE="\ | 
|  | usage: $prog [-d dir] [-p portnum] [-u username] [-b kbps] [-v] [-V] | 
|  | -d          specify directory holding index data | 
|  | -p          specify rsyncd port number | 
|  | -u          specify user to sudo to before running script | 
|  | -b          specify a max transfer rate in kilobytes per second (defaults to 0 (no limit)) | 
|  | -v          increase verbosity | 
|  | -V          output debugging info | 
|  | " | 
|  |  | 
|  | # parse args | 
|  | while getopts d:p:u:b:vV OPTION | 
|  | do | 
|  | case $OPTION in | 
|  | d) | 
|  | data_dir="$OPTARG" | 
|  | ;; | 
|  | p) | 
|  | rsyncd_port="$OPTARG" | 
|  | ;; | 
|  | u) | 
|  | user="$OPTARG" | 
|  | ;; | 
|  | b) | 
|  | rsyncd_bwlimit="$OPTARG" | 
|  | ;; | 
|  | v) | 
|  | verbose="v" | 
|  | ;; | 
|  | V) | 
|  | debug="V" | 
|  | ;; | 
|  | *) | 
|  | echo "$USAGE" | 
|  | exit 1 | 
|  | esac | 
|  | done | 
|  |  | 
|  | [[ -n $debug ]] && set -x | 
|  |  | 
|  | fixUser "$@" | 
|  |  | 
|  | # try to determine rsyncd port number from $confFile if not specified on | 
|  | # command line, default to solr_port+10000 | 
|  | if [[ -z ${rsyncd_port} ]] | 
|  | then | 
|  | if [[ "${solr_port}" ]] | 
|  | then | 
|  | rsyncd_port=`expr 10000 + ${solr_port}` | 
|  | else | 
|  | echo "rsyncd port number missing in $confFile or command line." | 
|  | echo "$USAGE" | 
|  | exit 1 | 
|  | fi | 
|  | fi | 
|  |  | 
|  | # Set bwlimit to unlimited by default | 
|  | if [[ -z ${rsyncd_bwlimit} ]] | 
|  | then | 
|  | rsyncd_bwlimit='0' | 
|  | fi | 
|  |  | 
|  | dataDir | 
|  |  | 
|  | logMessage started by $oldwhoami | 
|  | logMessage command: $0 $@ | 
|  |  | 
|  | if [[ ! -f ${solr_root}/logs/rsyncd-enabled ]] | 
|  | then | 
|  | logMessage rsyncd disabled | 
|  | exit 2 | 
|  | fi | 
|  |  | 
|  | if \ | 
|  | rsync rsync://localhost:${rsyncd_port} >/dev/null 2>&1 | 
|  | then | 
|  | logMessage "rsyncd already running at port ${rsyncd_port}" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | # create conf/rsyncd.conf on the fly, creating solrlogs directory if needed | 
|  | if [[ ! -d ${solr_root}/conf ]] | 
|  | then | 
|  | mkdir ${solr_root}/conf | 
|  | fi | 
|  | cat <<EOF > ${solr_root}/conf/rsyncd.conf | 
|  | #### rsyncd.conf file #### | 
|  |  | 
|  | uid = $(whoami) | 
|  | gid = $(whoami) | 
|  | use chroot = no | 
|  | list = no | 
|  | pid file = ${solr_root}/logs/rsyncd.pid | 
|  | log file = ${solr_root}/logs/rsyncd.log | 
|  | [solr] | 
|  | path = ${data_dir} | 
|  | comment = Solr | 
|  | EOF | 
|  |  | 
|  | rsync --daemon --port=${rsyncd_port} --bwlimit=${rsyncd_bwlimit} --config=${solr_root}/conf/rsyncd.conf | 
|  |  | 
|  | # first make sure rsyncd is accepting connections | 
|  | i=1 | 
|  | while \ | 
|  | ! rsync rsync://localhost:${rsyncd_port} >/dev/null 2>&1 | 
|  | do | 
|  | if (( i++ > 15 )) | 
|  | then | 
|  | logMessage "rsyncd not accepting connections, exiting" >&2 | 
|  | exit 2 | 
|  | fi | 
|  | sleep 1 | 
|  | done | 
|  |  | 
|  | logMessage rsyncd started with data_dir=${data_dir} and accepting requests |