diff options
author | skydrome | 2015-06-01 10:21:28 -0400 |
---|---|---|
committer | skydrome | 2015-06-01 10:21:28 -0400 |
commit | 44822ddfd71ee12aa45cb9ff01eb200ec5d87f7f (patch) | |
tree | 89886691be09601c15ec2fdaea1cc7e8c3b0f771 | |
download | aur-44822ddfd71ee12aa45cb9ff01eb200ec5d87f7f.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 70 | ||||
-rw-r--r-- | PKGBUILD | 249 | ||||
-rw-r--r-- | contrib.properties | 9 | ||||
-rw-r--r-- | fred.properties | 11 | ||||
-rw-r--r-- | freenet.ini | 30 | ||||
-rw-r--r-- | freenet.install | 24 | ||||
-rw-r--r-- | freenet.service | 13 | ||||
-rw-r--r-- | run.sh | 189 | ||||
-rw-r--r-- | wrapper.config | 146 |
9 files changed, 741 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..b146a651d9c9 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,70 @@ +pkgbase = freenet + pkgdesc = An encrypted network without censorship + pkgver = 0.7.5.1468 + pkgrel = 2 + url = https://downloads.freenetproject.org + install = freenet.install + arch = any + license = GPL2 + checkdepends = junit + makedepends = java-environment + makedepends = unzip + makedepends = apache-ant + makedepends = apache-ant-contrib + makedepends = git + depends = java-runtime + depends = bcprov151 + depends = gmp + depends = java-service-wrapper + noextract = lzma465.tar.bz2 + noextract = league-lzmajio-0.95-0-gd38bf5c.tar.gz + noextract = jBitcollider-0.8.zip + noextract = mantissa-7.2-src.zip + noextract = *.jar + backup = opt/freenet/wrapper.config + backup = opt/freenet/conf/freenet.ini + source = git+https://github.com/freenet/fred.git#commit=ad3fc4a + source = git+https://github.com/freenet/contrib.git + source = git+https://github.com/freenet/plugin-JSTUN.git + source = git+https://github.com/freenet/plugin-UPnP.git + source = git+https://github.com/freenet/plugin-KeyUtils.git + source = https://downloads.freenetproject.org/alpha/opennet/seednodes.fref + source = WebOfTrust.jar::https://downloads.freenetproject.org/alpha/plugins/WebOfTrust/WebOfTrust-build0013.jar + source = https://downloads.freenetproject.org/contrib/jar/latest/commons-compress.jar + source = https://downloads.freenetproject.org/contrib/jar/latest/db4o.jar + source = https://raw.githubusercontent.com/i2p/i2p.i2p/master/core/c/jcpuid/src/jcpuid.c + source = https://raw.githubusercontent.com/i2p/i2p.i2p/master/core/c/jcpuid/include/jcpuid.h + source = fred.properties + source = contrib.properties + source = run.sh + source = freenet.service + source = freenet.ini + source = wrapper.config + source = https://downloads.sourceforge.net/project/sevenzip/LZMA%20SDK/4.65/lzma465.tar.bz2 + source = league-lzmajio-0.95-0-gd38bf5c.tar.gz::https://codeload.github.com/league/lzmajio/legacy.tar.gz/0.95 + source = https://downloads.sourceforge.net/project/bitcollider/jBitcollider%20%28Java%29/0.8/jBitcollider-0.8.zip + source = https://www.spaceroots.org/software/mantissa/mantissa-7.2-src.zip + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = c8a96950fe4c469084905a3de54a0f89e811d39e50d46b91d052ec1d2985512d + sha256sums = 16924be3c8f1322b659f3ff08060a43f45f2e8de6f95af28d86fe9876e79008d + sha256sums = bb98650344e65138d694dfa54f89b5690088cc14f42d1ace2ae0063d35f417bd + sha256sums = f1ecddb5395892e0b2e6282bc3a1437d06afa52758057850ecccfa0a79c45c5d + sha256sums = 9ec758801a9864ae10caf851ee60ed22c3ef44428e77689c203d9b890921a6d2 + sha256sums = 24fed7935fcbfc6eb022e04abe8b9d22fda88eae8c1f73daf99e8f28a420d05f + sha256sums = 10ee7592556225883e11bc13019736f77ba27e5fcce8cdc82048975317ca8c8b + sha256sums = 3e48a77324277569b93a6e4082ddcf4303435c86ebd005594f164cb0047997b3 + sha256sums = c449771efa8819b31565ae7e46787e9aee7afbbc4664e27a96d1fd2f2a4ca4fa + sha256sums = 60930e055217f885135ff016175aeebc2582dcc391ff9f6340717e20ef597ec3 + sha256sums = ac83d727d6301e75cf1d441a1a1e72ba06ea119fa53a3bae65b3373108abf213 + sha256sums = c935fd04dd8e0e8c688a3078f3675d699679a90be81c12686837e0880aa0fa1e + sha256sums = 265f7ed2dd4fecb058884d3f8974674b06e0be46131c3b2bc6a310373937d2ef + sha256sums = b36482ee9e919c669bb1797ff7e50f57edf505af67664e280fe1dff361861044 + sha256sums = e438135d69139ed4fa44400f416ea73935d16afe50dfe490b7bba0602ee89476 + +pkgname = freenet + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..2eeff5606c2f --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,249 @@ +# Maintainer: skydrome <skydrome at@at i2pmail do.t org> +# Contributors: +# + +#_fred=#tag=build01467 # build-1467 2014-11-23 +_fred=#commit=ad3fc4a # allow building keyutils plugin from source +#_fred=#branch=next # git HEAD + +# comment out to run unit tests +BUILDENV+=('!check') + +# plugins failing to build: +# 'WebOfTrust' +_plugins=('JSTUN' 'UPnP' 'KeyUtils') + +pkgname=freenet +pkgver=0.7.5.1468 +pkgrel=2 + +_pkgver=0.7.5 +pkgdesc="An encrypted network without censorship" +url="https://downloads.freenetproject.org" +license=('GPL2') +arch=('any') +install='freenet.install' + +depends=('java-runtime' 'bcprov151' 'gmp' 'java-service-wrapper') +makedepends=('java-environment' 'unzip' 'apache-ant' 'apache-ant-contrib' 'git') +checkdepends=('junit') + +backup=('opt/freenet/wrapper.config' + 'opt/freenet/conf/freenet.ini') + +# these are packages we need to download to prevent ant from +# downloading them itself we are also going to build as much +# as we can from source, including this array +_deps=("https://downloads.sourceforge.net/project/sevenzip/LZMA%20SDK/4.65/lzma465.tar.bz2" + "league-lzmajio-0.95-0-gd38bf5c.tar.gz::https://codeload.github.com/league/lzmajio/legacy.tar.gz/0.95" + "https://downloads.sourceforge.net/project/bitcollider/jBitcollider%20%28Java%29/0.8/jBitcollider-0.8.zip" + "https://www.spaceroots.org/software/mantissa/mantissa-7.2-src.zip") + +noextract=('lzma465.tar.bz2' + 'league-lzmajio-0.95-0-gd38bf5c.tar.gz' + 'jBitcollider-0.8.zip' + 'mantissa-7.2-src.zip' + *."jar") + +# here we have only java-commons-compress and java-db4o coming +# prebuilt by the freenetproject, the rest we attempt to build ourselves +source=("git+https://github.com/freenet/fred.git${_fred}" + "git+https://github.com/freenet/contrib.git" + "git+https://github.com/freenet/plugin-JSTUN.git" + "git+https://github.com/freenet/plugin-UPnP.git" + "git+https://github.com/freenet/plugin-KeyUtils.git" + #"git+https://github.com/freenet/plugin-WebOfTrust.git" + "${url}/alpha/opennet/seednodes.fref" + "WebOfTrust.jar::${url}/alpha/plugins/WebOfTrust/WebOfTrust-build0013.jar" + "${url}/contrib/jar/latest/commons-compress.jar" + "${url}/contrib/jar/latest/db4o.jar" + "https://raw.githubusercontent.com/i2p/i2p.i2p/master/core/c/jcpuid/src/jcpuid.c" + "https://raw.githubusercontent.com/i2p/i2p.i2p/master/core/c/jcpuid/include/jcpuid.h" + 'fred.properties' 'contrib.properties' 'run.sh' + 'freenet.service' 'freenet.ini' 'wrapper.config' + "${_deps[@]}" +) + +sha256sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'c8a96950fe4c469084905a3de54a0f89e811d39e50d46b91d052ec1d2985512d' + '16924be3c8f1322b659f3ff08060a43f45f2e8de6f95af28d86fe9876e79008d' + 'bb98650344e65138d694dfa54f89b5690088cc14f42d1ace2ae0063d35f417bd' + 'f1ecddb5395892e0b2e6282bc3a1437d06afa52758057850ecccfa0a79c45c5d' + '9ec758801a9864ae10caf851ee60ed22c3ef44428e77689c203d9b890921a6d2' + '24fed7935fcbfc6eb022e04abe8b9d22fda88eae8c1f73daf99e8f28a420d05f' + '10ee7592556225883e11bc13019736f77ba27e5fcce8cdc82048975317ca8c8b' + '3e48a77324277569b93a6e4082ddcf4303435c86ebd005594f164cb0047997b3' + 'c449771efa8819b31565ae7e46787e9aee7afbbc4664e27a96d1fd2f2a4ca4fa' + '60930e055217f885135ff016175aeebc2582dcc391ff9f6340717e20ef597ec3' + 'ac83d727d6301e75cf1d441a1a1e72ba06ea119fa53a3bae65b3373108abf213' + 'c935fd04dd8e0e8c688a3078f3675d699679a90be81c12686837e0880aa0fa1e' + '265f7ed2dd4fecb058884d3f8974674b06e0be46131c3b2bc6a310373937d2ef' + 'b36482ee9e919c669bb1797ff7e50f57edf505af67664e280fe1dff361861044' + 'e438135d69139ed4fa44400f416ea73935d16afe50dfe490b7bba0602ee89476') + +pkgver() { + cd "$srcdir/fred" + echo "${_pkgver}.$(git describe |cut -d- -f3 |sed 's/build0//')" +} + +prepare() { + cd "$srcdir/fred" + + if [[ "$CARCH" = 'i686' ]]; then + _arch=x86 + __arch=i386 + else + _arch=x86_64 + __arch=amd64 + fi + + rm -rf contrib + ln -sf ../contrib contrib + mkdir -p contrib/freenet-ext/{dist,lib} + + # had a hard time building these two sources, we'll use the binaries + for dep in db4o commons-compress ;do + cp "$srcdir/${dep}.jar" contrib/freenet-ext/dist + done + + # this is done to satisfy ant + ln -sf /usr/share/java/wrapper.jar contrib/freenet-ext/dist/ + ln -sf /usr/share/java/{bcprov,hamcrest-core,junit}.jar lib/ + cp "$srcdir"/{lzma465.tar.bz2,league-lzmajio-0.95-0-gd38bf5c.tar.gz,jBitcollider-0.8.zip,mantissa-7.2-src.zip} contrib/freenet-ext/lib + + # we're going to compile our own c libraries + cd "$srcdir/contrib" + rm -rf NativeBigInteger/lib/net/i2p/util/* + rm -rf onion-fec/bin/lib/{freebsd,linux,win32}-* + + cd "$srcdir/contrib/jcpuid" + rm -rf lib/freenet/support/CPUInformation/* include/jcpuid.h + + # these are from the I2P project + ln -sf "$srcdir"/jcpuid.h include/ + ln -sf "$srcdir"/jcpuid.c src/ + + # append wrapper.jar location to JSTUN build + sed -i "$srcdir/plugin-JSTUN/build.xml" \ + -e 's|<pathelement location="${freenet-ext.location}"/>|<pathelement location="${freenet-ext.location}"/>\n<pathelement location="/usr/share/java/wrapper.jar"/>|' +} + +build() { + source /etc/profile.d/apache-ant.sh + source /etc/profile.d/jre.sh + + build_jbigi + build_jcpuid + build_fec + + msg "Building Freenet-ext..." + cd "$srcdir/fred/contrib/freenet-ext" + ant package -propertyfile "$srcdir/contrib.properties" + + msg "Building Freenet..." + cd "$srcdir/fred" + ant package-only -propertyfile "$srcdir/fred.properties" \ + -f build-clean.xml + + build_plugins + + # not needed anymore + rm -f contrib/freenet-ext/dist/wrapper.jar +} + +build_jbigi() { + msg "Building libjbigi..." + cd "$srcdir/contrib/NativeBigInteger" + + _objdir='net/i2p/util' + CFLAGS+=" -fPIC -Wall" + INCLUDES="-I./jbigi/include -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" + LDFLAGS="-shared -Wl,-O1,--sort-common,-z,relro,-soname,libjbigi.so -lgmp" + gcc -c $CFLAGS $INCLUDES jbigi/src/jbigi.c + gcc $LDFLAGS $INCLUDES -o lib/"$_objdir"/libjbigi-linux-none.so jbigi.o + plain "done" +} + +build_jcpuid() { + msg "Building libjcpuid..." + cd "$srcdir/contrib/jcpuid" + + _objdir='freenet/support/CPUInformation' + INCLUDES="-I./include -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" + LDFLAGS="-shared -Wl,-O1,--sort-common,-z,relro,-soname,libjcpuid-x86-linux.so" + gcc $CFLAGS $LDFLAGS $INCLUDES src/jcpuid.c -o lib/"$_objdir"/libjcpuid-${_arch}-linux.so + plain "done" +} + +build_fec() { + msg "Building onion-fec..." + cd "$srcdir/contrib/onion-fec/src/csrc" + + CFLAGS+=" -I${JAVA_HOME}/include" make + _DEST="../../bin/lib/linux-${_arch}" + mkdir -p "$_DEST" + cp libfec*.so "$_DEST" + plain "done" +} + +build_plugins() { + for plugin in ${_plugins[@]}; do + msg "Building Plugin ${plugin}..." + cd "$srcdir/plugin-${plugin}" + ant dist \ + -Dfreenet-cvs-snapshot.location=../fred/dist/freenet.jar \ + -Dfreenet-ext.location=../contrib/freenet-ext/dist/freenet-ext.jar \ + -Djunit.location=/usr/share/java/junit.jar + done +} + +check() { + cd "$srcdir/fred" + + # these tests use alot of memory and can cause OOM's + rm -f test/freenet/client/async/{*Storage,ClientRequestSelector}Test.java + + ant unit -propertyfile "$srcdir/fred.properties" \ + -f build-clean.xml +} + +package() { + cd "$srcdir/fred" + + # freenet + install -dm755 "$pkgdir"/usr/bin + install -dm700 "$pkgdir"/run/freenet + install -dm750 "$pkgdir"/opt/freenet/{downloads,lib,conf/node,persistent-temp,tmp,plugins/data,user/{data,certs}} + + install -m640 "$srcdir"/{wrapper.config,run.sh} "$pkgdir"/opt/freenet + install -m640 "$srcdir"/freenet.ini "$pkgdir"/opt/freenet/conf + install -m640 "$srcdir"/seednodes.fref "$pkgdir"/opt/freenet/conf/node + install -m640 contrib/freenet-ext/dist/* dist/freenet.jar "$pkgdir"/opt/freenet/lib + + # plugins + for plugin in ${_plugins[@]}; do + install -m640 "$srcdir"/plugin-${plugin}/dist/${plugin}.jar "$pkgdir"/opt/freenet/plugins + done + install -m640 "$srcdir"/WebOfTrust.jar "$pkgdir"/opt/freenet/plugins + + echo "pluginmanager.loadplugin=$(echo ${_plugins[@]}|sed 's| |;|g')" \ + >>"$pkgdir"/opt/freenet/conf/freenet.ini + + # launcher + chmod +x "$pkgdir"/opt/freenet/run.sh + ln -s /opt/freenet/run.sh "$pkgdir"/usr/bin/freenet + + # systemd + install -dm755 "$pkgdir"/usr/lib/tmpfiles.d + install -Dm644 "$srcdir"/freenet.service "$pkgdir"/usr/lib/systemd/system/freenet.service + echo 'd /run/freenet 0700 freenet freenet' >"$pkgdir"/usr/lib/tmpfiles.d/freenet.conf + + # license + install -dm755 "$pkgdir"/usr/share/licenses/freenet + install -m644 LICENSE "$pkgdir"/usr/share/licenses/freenet/LICENSE +} diff --git a/contrib.properties b/contrib.properties new file mode 100644 index 000000000000..c6b4d212cc13 --- /dev/null +++ b/contrib.properties @@ -0,0 +1,9 @@ +javac.target.version = 1.6 +extlib.use-mirrors = local + +extlib.wrapper.suppress = true +extlib.db4o.suppress = true +extlib.lzma.suppress = false +extlib.lzmajio.suppress = false +extlib.mantissa.suppress = false +extlib.commons-compress.suppress = true diff --git a/fred.properties b/fred.properties new file mode 100644 index 000000000000..0c2c2466ca25 --- /dev/null +++ b/fred.properties @@ -0,0 +1,11 @@ +javac.target.version = 1.6 + +lib.contrib.dir = contrib/freenet-ext/dist + +libtest.jars = junit.jar hamcrest-core.jar +bc.jar = bcprov.jar + +pmd.skip = true +cpd.skip = true +doc.skip = true +findbugs.skip = true diff --git a/freenet.ini b/freenet.ini new file mode 100644 index 000000000000..d3323be598e5 --- /dev/null +++ b/freenet.ini @@ -0,0 +1,30 @@ +node.install.runDir=/opt/freenet +node.install.cfgDir=/opt/freenet/conf +node.install.nodeDir=/opt/freenet/conf/node +node.install.persistentTempDir=/opt/freenet/persistent-temp +node.install.pluginDir=/opt/freenet/plugins +node.install.pluginStoresDir=/opt/freenet/plugins/data +node.install.userDir=/opt/freenet/user +node.masterKeyFile=/opt/freenet/user/master.keys +node.install.storeDir=/opt/freenet/user/data +node.clientThrottleFile=/opt/freenet/user/data/client-throttle.dat +node.load.nodeThrottleFile=/opt/freenet/user/data/node-throttle.dat +ssl.sslKeyStore=/opt/freenet/user/certs +node.downloadsDir=/opt/freenet/downloads +node.install.tempDir=/opt/freenet/tmp +node.uploadAllowedDirs=all +node.downloadAllowedDirs=all +node.updater.enabled=false +node.updater.updateSeednodes=true +node.updater.autoupdate=false +node.updater.updateInstallers=false +node.l10n=English +logger.dirname=/opt/freenet/logs +logger.priority=ERROR +fproxy.enabled=true +fproxy.advancedModeEnabled=true +fproxy.port=8888 +fcp.enabled=true +fcp.port=9481 +security-levels.physicalThreatLevel=LOW +security-levels.networkThreatLevel=NORMAL diff --git a/freenet.install b/freenet.install new file mode 100644 index 000000000000..91ab82eb3c5d --- /dev/null +++ b/freenet.install @@ -0,0 +1,24 @@ +post_install() { + getent passwd freenet &>/dev/null || { + echo -n ">>> Creating freenet system user... " + useradd --system \ + --user-group \ + --home /opt/freenet \ + freenet && + echo "ok" || echo "fail" + } + chown -R freenet:freenet /opt/freenet /run/freenet + echo "Please visit http://127.0.0.1:8888/ to configure your node" +} + +post_upgrade() { + chown -R freenet:freenet /opt/freenet /run/freenet +} + +pre_remove() { + getent passwd freenet &>/dev/null && { + echo -n ">>> Removing freenet system user... " + userdel freenet + echo "ok" + } +} diff --git a/freenet.service b/freenet.service new file mode 100644 index 000000000000..0f2f2ffcff3e --- /dev/null +++ b/freenet.service @@ -0,0 +1,13 @@ +[Unit] +Description=An encrypted network without censorship and monitoring. +After=network.target + +[Service] +Type=forking +User=freenet +ExecStart=/opt/freenet/run.sh start +ExecStop=/opt/freenet/run.sh stop +WorkingDirectory=/opt/freenet + +[Install] +WantedBy=multi-user.target diff --git a/run.sh b/run.sh new file mode 100644 index 000000000000..97acd33c82fa --- /dev/null +++ b/run.sh @@ -0,0 +1,189 @@ +#!/bin/bash + +#----------------------------------------------------------------------------- +_USER="freenet" +WRAPPER_CMD="/usr/bin/java-service-wrapper" +WRAPPER_CONF="/opt/freenet/wrapper.config" +PIDDIR="/run/freenet" +PIDFILE="$PIDDIR/freenet.pid" +TIMEOUT=30 +#----------------------------------------------------------------------------- + +fail() { + printf "\e[1;31m>>> ERROR:\033[0m %s\n" "$*" + exit 1 +} + +check_user() { + if [[ "$(id -un)" != "$_USER" ]]; then + if [[ ! -d "$PIDDIR" ]]; then + install -dm700 "$PIDDIR" + chown ${_USER}:${_USER} "$PIDDIR" + fi + SCRIPT_PATH="$(cd $(dirname $0) && pwd)/$(basename $0)" + su - "$_USER" -c "${SCRIPT_PATH} $@" + exit $? + fi +} + +init_vars() { + [[ ! -r "$WRAPPER_CONF" ]] && + fail "Unable to read \$WRAPPER_CONF: ${WRAPPER_CONF}" + [[ ! -x "$WRAPPER_CMD" ]] && + fail "Unable to find or execute \$WRAPPER_CMD: ${WRAPPER_CMD}" + [[ ! $(grep -E ^_USER $0) && "$EUID" = "0" ]] && + fail "Attempting to start as root! Please edit $(basename $0) and set the variable \$_USER" + [[ "$(id -un "$_USER")" != "$_USER" ]] && + fail "\$_USER does not exist: $_USER" + COMMAND_LINE="\"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"freenet\" wrapper.name=\"freenet\"" +} + +get_wrapper_pid() { + pgrep -u "$_USER" -f 'wrapper.name=freenet' +} +get_pid() { + pgrep -u "$_USER" -f 'jar' +} + +check_if_running() { + unset pid + if [[ -f "$PIDFILE" ]]; then + if [[ -r "$PIDFILE" ]]; then + pid=$(cat "$PIDFILE") + #echo "debug: pid:$pid get_pid:$(get_pid)" + if [[ ! "$pid" ]]; then + pid=$(get_pid) + if [[ ! "$pid" ]]; then + echo "Removing stale pid file: $PIDFILE" + rm -f "$PIDFILE" + fi + else + [[ "$pid" != "$(get_pid)" ]] && + fail "\$PIDFILE $PIDFILE differs from what is actually running!" + fi + else + fail "Cannot read \$PIDFILE: $PIDFILE" + fi + fi +} + +_console() { + if [[ ! "$pid" ]]; then + trap '' INT QUIT + eval $COMMAND_LINE + [[ $? != 0 ]] && fail "Failed to launch the wrapper!" + else + echo "Freenet is already running" + fi +} + +_start() { + if [[ ! "$pid" ]]; then + echo -n "Starting Freenet" + COMMAND_LINE+=" wrapper.daemonize=TRUE" + eval $COMMAND_LINE + [[ $? != 0 ]] && fail "Failed to launch the wrapper!" + i=0 + while [[ ! "$pid" || $i < $TIMEOUT ]]; do + echo -n "." + sleep 1 + check_if_running + ((i++)) + done + [[ $(get_pid) ]] && + echo " done" || fail "timeout: Failed to start wrapper!" + else + echo "Freenet is already running" + fi +} + +_restart() { + [[ "$pid" ]] && + kill -USR1 $(get_wrapper_pid) || echo "Freenet is not running" +} + +_stop() { + if [[ "$pid" ]]; then + echo -n "Stopping Freenet" + kill -TERM $pid + [[ $? != 0 ]] && fail "Unable to stop Freenet: kill -TERM $pid" + i=0 + while [[ "$pid" || $i > $TIMEOUT ]]; do + echo -n "." + sleep 1 + [[ ! $(get_pid) ]] && unset pid + ((i++)) + done + if [[ "$pid" ]]; then + fail "timeout: Failed to stop wrapper!" + else + echo " done" + [[ "$1" = 'start' ]] && _start + fi + else + echo "Freenet is not running." + fi +} + +_graceful() { + if [[ "$pid" ]]; then + echo "Stopping Freenet gracefully..." + kill -HUP $pid + [[ $? != 0 ]] && fail "Unable to stop Freenet." + else + echo "Freenet is not running." + fi +} + +_status() { + [[ "$pid" ]] && + echo "Freenet is running: PID:$pid" || echo "Freenet is not running." +} + +_dump() { + if [[ "$pid" ]]; then + echo "Dumping threads..." + kill -QUIT $pid + [[ $? != 0 ]] && + fail "Failed to dump Freenet Service" || echo "Dumped Freenet Service." + else + echo "Freenet is not running." + fi +} +#----------------------------------------------------------------------------- + +check_user "$@" +init_vars +check_if_running + +case "$1" in + 'console') _console + ;; + 'start') _start + ;; + 'stop') _stop + ;; + 'graceful') _graceful + ;; + 'restart') _restart + ;; + 'status') _status + ;; + 'dump') _dump + ;; + + *) echo "Usage: $(basename $0) [command]" + echo + echo "Commands:" + echo " console Launch in the current console" + echo " start Start in the background as a daemon process" + echo " stop Stop if running as a daemon or in another console" + echo " graceful Stop gracefully, may take up to 11 minutes for all tunnels to close" + echo " restart Restart the JVM" + echo " status Query the current status" + echo " dump Request a Java thread dump if running" + echo + ;; +esac +exit 0 + diff --git a/wrapper.config b/wrapper.config new file mode 100644 index 000000000000..c180b73e2066 --- /dev/null +++ b/wrapper.config @@ -0,0 +1,146 @@ +#encoding=UTF-8 + +# Java Application +wrapper.java.command=/usr/lib/jvm/default/bin/java + +# Java Main class. This class must implement the WrapperListener interface +# or guarantee that the WrapperManager class is initialized. Helper +# classes are provided to do this for you. See the Integration section +# of the documentation for details. +#wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp +wrapper.java.mainclass=freenet.node.NodeStarter + +# Java Classpath (include wrapper.jar) Add class path elements as +# needed starting from 1 +# Be sure there are no other duplicate classes. +wrapper.java.classpath.1=/opt/freenet/lib/*.jar +wrapper.java.classpath.2=/usr/share/java/*.jar + +# Java Library Path (location of libwrapper.so) +wrapper.java.library.path.1=/opt/freenet/lib +wrapper.java.library.path.2=/usr/lib/java-service-wrapper + +# Java Bits. On applicable platforms, tells the JVM to run in 32 or 64-bit mode. +wrapper.java.additional.auto_bits=TRUE + +wrapper.java.additional.1=-Dnetworkaddress.cache.ttl=0 +wrapper.java.additional.2=-Dnetworkaddress.cache.negative.ttl=0 +# Needed for some linux distros? Shouldn't prevent using IPv6, just make it prefer IPv4? +wrapper.java.additional.3=-Djava.net.preferIPv4Stack=true +# You could enable this for debugging, but Freenet will use more CPU if you do. +#wrapper.java.additional.4=-enableassertions:freenet +# You might want to set the following line if you have changed java.maxmemory +# wrapper.java.additional.5=-XX:MaxPermSize= + +# Initial Java Heap Size (in MB) +# If a non-zero value is specified for this property then an appropriate -Xms +# parameter will be added. The initial memory must be less than or equal to +# the value set for the maxmemory property +wrapper.java.initmemory=32 + +# Maximum Java Heap Size (in MB) +wrapper.java.maxmemory=192 + +# Application parameters. Add parameters as needed starting from 1 +wrapper.app.parameter.1=/opt/freenet/conf/freenet.ini + +#******************************************************************** +# Wrapper Logging Properties +#******************************************************************** +# Enables Debug output from the Wrapper. +# wrapper.debug=TRUE +# Format of output for the console. (See docs for formats) +wrapper.console.format=PM + +# Log Level for console output. (See docs for log levels) +wrapper.console.loglevel=INFO + +# Log file to use for wrapper output logging. +# You may wish to change this. +wrapper.logfile=/opt/freenet/wrapper.log + +# Format of output for the log file. +# The format consists of the tokens 'L' for log level, 'P' for prefix, 'D' for thread, +# 'T' for time, 'Z' for millisecond time, and 'M' for message +# Unfortunately the log timezone cannot be changed, see +# http://www.nabble.com/Log-message-timezone-td23651317.html +wrapper.logfile.format=LPTM + +# Log Level for log file output. (See docs for log levels) +wrapper.logfile.loglevel=INFO + +# Maximum size that the log file will be allowed to grow to before +# the log is rolled. Size is specified in bytes. The default value +# of 0, disables log rolling. May abbreviate with the 'k' (kb) or +# 'm' (mb) suffix. For example: 10m = 10 megabytes. +wrapper.logfile.maxsize=1m + +# Maximum number of rolled log files which will be allowed before old +# files are deleted. The default value of 0 implies no limit. +wrapper.logfile.maxfiles=5 + +# Log Level for sys/event log output. (See docs for log levels) +wrapper.syslog.loglevel=NONE + +# these will shut down or crash the JVM +wrapper.signal.mode.usr1=RESTART +wrapper.signal.mode.usr2=IGNORE + +# choose what to do if the JVM kills itself based on the exit code +wrapper.on_exit.default=SHUTDOWN +wrapper.on_exit.0=SHUTDOWN +wrapper.on_exit.1=SHUTDOWN +# OOM +wrapper.on_exit.10=RESTART +# graceful shutdown +wrapper.on_exit.2=SHUTDOWN +# hard shutdown +wrapper.on_exit.3=SHUTDOWN +# hard restart +wrapper.on_exit.4=RESTART +# hard restart +wrapper.on_exit.5=RESTART + +# the router may take a few seconds to save state, etc +wrapper.jvm_exit.timeout=60 + +wrapper.restart.reload_configuration=TRUE +wrapper.filter.trigger.1=java.lang.OutOfMemoryError +wrapper.filter.action.1=RESTART + +# give the OS 60s to clear all the old sockets / etc before restarting +# Let's change the default from 60 to 10 seconds and see if anyone moans.. +wrapper.restart.delay=5 +wrapper.ping.interval=300 + +# The ping timeout must be at least 5 seconds longer than the value of wrapper.ping.interval. +# Extend this if you are getting 'JVM appears hung' shutdowns. +wrapper.ping.timeout=320 + +# use the wrapper's internal timer thread. otherwise this would +# force a restart of the router during daylight savings time as well +# as any time that the OS clock changes +#wrapper.use_system_time=false + +# pid file for the JVM +# Directory must exist or the wrapper will fail to start. +wrapper.java.pidfile=/run/freenet/freenet.pid + +#******************************************************************** +# Wrapper General Properties +#******************************************************************** +# Allow for the use of non-contiguous numbered properties +wrapper.ignore_sequence_gaps=TRUE + +# Title to use when running as a console +wrapper.console.title=Freenet 0.7 + +#wrapper.anchorfile=Freenet.anchor +#wrapper.anchor.poll_interval=1 + +# Set permissions used when creating files +# See http://wrapper.tanukisoftware.com/doc/english/prop-umask.html +# for a detailed explanation of these settings. +wrapper.umask=0022 +wrapper.java.umask=0022 +wrapper.logfile.umask=077 |