# Copyright 1999-2002 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Maintainer: Will Glynn # Due to Freenet's... erm, "interesting" file release mechanism, # this ebuild is just one giant hack :) # New releases DESCRIPTION="fred, the official Freenet node" SRC_URI="http://freenetproject.org/snapshots/freenet-ext.jar" HOMEPAGE="http://www.freenetproject.org/" RDEPEND="virtual/jdk" src_unpack() { mkdir -p ${S} cp /usr/portage/distfiles/freenet-ext.jar ${S}/freenet-ext.jar } src_compile() { mkdir -p ${S} cd ${S} wget http://freenetproject.org/snapshots/freenet-latest.jar -O ${S}/freenet.jar } src_install() { cd ${D} mkdir -p etc/init.d/ cat << EOF > etc/init.d/freenet #!/sbin/runscript # Copyright 1999-2002 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later depend() { need net } start() { ebegin "Starting Freenet" if [[ ! -e /etc/freenet.conf ]]; then echo Freenet is not properly configured. echo Run "ebuild /usr/portage/net-misc/freenet/${P}.ebuild config" echo and try again. eend 0 fi export CLASSPATH=/usr/lib/freenet/freenet.jar:/usr/lib/freenet/freenet-ext.jar:\$CLASSPATH start-stop-daemon --start --quiet --pidfile /var/run/freenet.pid -m \\ --background --exec \$(java-config --java) -- \\ freenet.node.Main -p /etc/freenet.conf --logFile /var/log/freenet.log eend $? } stop() { ebegin "Stopping Freenet" start-stop-daemon --stop --quiet --pidfile /var/run/freenet.pid rm /var/run/freenet.pid > /dev/null 2>&1 eend $? } EOF chmod 755 etc/init.d/freenet mkdir -p usr/lib/freenet/ cp ${S}/freenet.jar usr/lib/freenet/freenet.jar cp ${S}/freenet-ext.jar usr/lib/freenet/freenet-ext.jar } pkg_preinst() { # stop Freenet if currently started if [[ `/etc/init.d/freenet status 2>&1 | grep started` ]]; then # it's currently running echo "*** IMPORTANT: To use the latest update, you must restart Freenet." fi } pkg_postinst() { if [[ ! -e /etc/freenet/freenet.conf ]]; then echo echo '*** IMPORTANT: Before you can use your Freenet node, it must be configured.' echo " Please run \"ebuild /usr/portage/net-misc/freenet/${P}.ebuild config\"" echo fi } ask_user() { local resp=""; local doneit=0; while [ 1 ]; do if [ $doneit -ne 0 ]; then echo "That is not a valid response. Please answer yes or no."; fi doneit=1 echo -ne $1 echo -n ' [y/n] ' read resp echo case `echo $resp | tr A-Z a-z` in y) return 1;; yes) return 1;; n) return 0;; no) return 0;; esac done; } update_seeds() { wget -q http://hawk.freenetproject.org/~freenet4/seednodes.ref -O /var/freenet/seednodes if [[ $? ]]; then echo "/var/freenet/seednodes have been updated." else echo "There was an error updating the seednodes file." fi } pkg_config() { mkdir -p /var/freenet > /dev/null 2>&1 # see if the config exists if [[ ! -e /etc/freenet.conf ]]; then ask_user "You don't have a Freenet configuration file in /etc/freenet.conf.\nWould you like to create one now?" if [[ $? ]]; then cd /etc/ IP=`hostname`; echo $IP | grep [\.] >/dev/null || IP=`hostname`.`hostname -d` echo ipAddress=$IP > freenet.conf if [ "$RANDOM" ]; then let DEFLP=$RANDOM%30000+2000 echo listenPort=$DEFLP >> freenet.conf fi echo seedFile=/var/freenet/seednodes >> freenet.conf echo storeFile=/var/freenet/datastore >> freenet.conf mkdir -p /var/freenet > /dev/null 2>&1 export CLASSPATH=/usr/lib/freenet/freenet.jar:/usr/lib/freenet/freenet-ext.jar: echo "Starting Freenet in configuration mode..." $(java-config --java) freenet.node.Main --config /etc/freenet.conf echo else echo "Okay, but Freenet will not work without one." fi fi # see if seednodes exist if [[ ! -e /var/freenet/seednodes ]]; then ask_user "Freenet requires a series of \"seed nodes\" that your computer can connect to\nto become connected to the network. Would you like to download the default\nset now?" if [[ $? ]]; then update_seeds; fi else ask_user "Would you like to update your list of seed nodes?" if [[ $? ]]; then update_seeds; fi fi # export our node.ref for good measure export CLASSPATH=/usr/lib/freenet/freenet.jar:/usr/lib/freenet/freenet-ext.jar: $(java-config --java) freenet.node.Main -p /etc/freenet.conf -x /var/freenet/node.ref } pkg_postrm() { # kill the datastore and node.ref (as it is invalidated with a nuked datastore) if [[ -e /var/freenet/ ]]; then rm -fr /var/freenet fi }