diff options
Diffstat (limited to 'net-p2p/freenet/files')
-rw-r--r-- | net-p2p/freenet/files/wrapper.sh | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/net-p2p/freenet/files/wrapper.sh b/net-p2p/freenet/files/wrapper.sh new file mode 100644 index 000000000000..67b9f119f3de --- /dev/null +++ b/net-p2p/freenet/files/wrapper.sh @@ -0,0 +1,160 @@ +#!/bin/sh + +PREFIX="%%PREFIX%%" +# java +JAVAVM="%%JAVAVM%%" +JAR_DIR="%%JAR_DIR%%" +JAR_FILES="%%JAR_FILES%%" +JAR_START="%%JAR_START%%" +# data +DATA_DIR="%%DATA_DIR%%" +SEED_FILE=seednodes.ref +# home +HOME_DIR=${HOME}/.freenet +CONFIG_FILE=freenet.conf + +configure_freenet () { + echo "Configuring FreeNet node" + cd ${HOME_DIR} && + ${JAVAVM} -jar ./${JAR_START} freenet.node.Main --config "${@}" +} + +configure_java_classpath () { + if [ -z "${CLASSPATH}" ]; then + CLASSPATH=./freenet.jar:./freenet-ext.jar + else + CLASSPATH=./freenet.jar:./freenet-ext.jar:${CLASSPATH} + fi +} + +display_usage () { + echo "Usage: ${0} [-h] [-i|-o]" + echo 'Options:' + echo ' -h Display this help message' + echo ' -c Configure FreeNet node' + echo ' -i Start a FreeNet node' + echo ' -o Stop a FreeNet node' + echo '' +} + +prepare_configure_freenet () { + # do we have a config file? + if [ ! -f ${HOME_DIR}/${CONFIG_FILE} ]; then + # add basic information prior to configuration + echo > ${HOME_DIR}/${CONFIG_FILE} + + # select listenPort randomly + if [ -n "${RANDOM}" ] + then + DEFLP=$((${RANDOM}%30000+2000)) + else + echo "no random in shell, enter a FNP port number + <ENTER>" + read DEFLP + fi + echo "listenPort=${DEFLP}" >> ${HOME_DIR}/${CONFIG_FILE} + + # point to seednodes file + echo 'seedNodes=seednodes.ref' >> ${HOME_DIR}/${CONFIG_FILE} + + # tell FreeNet to request configuration procedure + CONFIGURE=yes + fi +} + +prepare_home_dir () { + # create home dir staging area + if [ ! -d ${HOME_DIR} ] + then + mkdir -p ${HOME_DIR} + fi + # copy a seed file if none exists + if [ ! -f ${HOME_DIR}/${SEED_FILE} ] + then + rm -f ${HOME_DIR}/${SEED_FILE} + cp -f ${PREFIX}/${DATA_DIR}/${SEED_FILE} ${HOME_DIR}/${SEED_FILE} + # avoid unnecessary reseeding + touch -t "197001011200" ${HOME_DIR}/${SEED_FILE} + fi + # link the jar files + for jar in ${JAR_FILES} + do + if [ ! -h ${HOME_DIR}/${jar} ] + then + ln -sf ${PREFIX}/${JAR_DIR}/${jar} ${HOME_DIR}/${jar} + fi + done +} + +start_freenet () { + echo "Starting FreeNet node" + cd ${HOME_DIR} && + nice -10 ${JAVAVM} -jar ./${JAR_START} "${@}" & + echo $! > ${HOME_DIR}/freenet.pid + exit 0 +} + +stop_freenet () { + if [ -f ${HOME_DIR}/freenet.pid ]; then + echo "Stopping FreeNet node" + cd ${HOME_DIR} && + exec kill `cat freenet.pid` & + else + echo "Cannot find FreeNet node" + echo "Where is the ${HOME_DIR}/freenet.pid file?" + fi +} + +# we require at least one command line parameter +if [ $# -lt 1 ]; then + display_usage + exit 1 +fi + +# parse command line parameters +while getopts ":io" COMMAND_LINE_ARGUMENT ; do + case "${COMMAND_LINE_ARGUMENT}" in + c) + CONFIGURE=yes + ;; + h) + display_usage + exit 0 + ;; + i) + START=yes + unset STOP + ;; + o) + STOP=yes + unset START + ;; + *) + display_usage + exit 1 + ;; + esac +done + +# always verify that home dir staging area is pristine +prepare_home_dir + +# check for proper configuration +prepare_configure_freenet + +# prepare java CLASSPATH +configure_java_classpath + +if [ -n "${CONFIGURE}" ]; then + configure_freenet +fi + +if [ -n "${START}" ]; then + start_freenet +fi + +if [ -n "${STOP}" ]; then + stop_freenet +fi + +# we should never get this far +exit 1 |