ports/114611: [NEW PORT] net-p2p/freenet05: An anonymous censorship-resistant peer-to-peer network

Nicolas Gieczewski nicolas at nixsoftware.com
Mon Jul 16 03:00:15 UTC 2007


>Number:         114611
>Category:       ports
>Synopsis:       [NEW PORT] net-p2p/freenet05: An anonymous censorship-resistant peer-to-peer network
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jul 16 03:00:11 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Nicolas Gieczewski
>Release:        FreeBSD 6.2-STABLE
>Organization:
>Environment:
FreeBSD aspen.veggy.org 6.2-STABLE FreeBSD 6.2-STABLE #0: Sun May 27 20:29:10 ART 2007     root at aspen.veggy.org:/usr/obj/usr/src/sys/ASPEN  i386
>Description:
Freenet is a decentralized censorship-resistant peer-to-peer
distributed data store aiming to provide electronic freedom of
speech through strong anonymity. Freenet works by pooling the
contributed bandwidth and storage space of member computers to
allow users to anonymously publish or retrieve various kinds
of content.

This is the legacy, stable 0.5 branch of Freenet.

WWW: http://freenetproject.org/
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	freenet05
#	freenet05/distinfo
#	freenet05/pkg-descr
#	freenet05/Makefile
#	freenet05/pkg-message
#	freenet05/files
#	freenet05/files/wrapper.in
#	freenet05/files/freenet.in
#
echo c - freenet05
mkdir -p freenet05 > /dev/null 2>&1
echo x - freenet05/distinfo
sed 's/^X//' >freenet05/distinfo << 'END-of-freenet05/distinfo'
XMD5 (freenet-20070514.tgz) = 2fbe15b03f20350d15f82d347cf6720c
XSHA256 (freenet-20070514.tgz) = 40f81c71ff742e1d59db03e5bbf0df833e25e2736a63e0d0854b6c70cc856b35
XSIZE (freenet-20070514.tgz) = 12534272
END-of-freenet05/distinfo
echo x - freenet05/pkg-descr
sed 's/^X//' >freenet05/pkg-descr << 'END-of-freenet05/pkg-descr'
XFreenet is a decentralized censorship-resistant peer-to-peer
Xdistributed data store aiming to provide electronic freedom of
Xspeech through strong anonymity. Freenet works by pooling the
Xcontributed bandwidth and storage space of member computers to
Xallow users to anonymously publish or retrieve various kinds
Xof content.
X
XThis is the legacy, stable 0.5 branch of Freenet.
X
XWWW: http://freenetproject.org/
END-of-freenet05/pkg-descr
echo x - freenet05/Makefile
sed 's/^X//' >freenet05/Makefile << 'END-of-freenet05/Makefile'
X# New ports collection makefile for:	freenet05
X# Date created:		15 July 2007
X# Whom:			Nicolas Gieczewski <nicolas at nixsoftware.com>
X#
X# $FreeBSD$
X#
X
XPORTNAME=	freenet
XPORTVERSION=	0.5.2.1.5107
XCATEGORIES=	net-p2p security java
XMASTER_SITES=	http://freebsd.blazis.com/ports/freenet05/
XDISTNAME=	${PORTNAME}-20070514
XEXTRACT_SUFX=	.tgz
X
XMAINTAINER=	nicolas at nixsoftware.com
XCOMMENT=	An anonymous censorship-resistant peer-to-peer network
X
XLATEST_LINK=	freenet05
XNO_BUILD=	yes
X
XUSE_RC_SUBR=	freenet
XUSE_JAVA=	yes
XJAVA_VERSION=	1.4+
XJAVAVM=		${LOCALBASE}/bin/java
X
XDATA_FILES=	seednodes.ref
XDOC_FILES=	README
XJAR_FILES=	freenet.jar freenet-ext.jar
XJAR_START=	freenet.jar
XSEED_FILE=	seednodes.ref
X
XPLIST_FILES=	sbin/${PORTNAME:L} \
X		%%JAVAJARDIR%%/freenet.jar \
X		%%JAVAJARDIR%%/freenet-ext.jar \
X		%%DATADIR%%/seednodes.ref
XPLIST_DIRS=	%%DATADIR%%
X
XPORTDOCS=	${DOC_FILES}
X
Xpost-patch:
X	@${SED} -e "s|%%PREFIX%%|${PREFIX}|; \
X		    s|%%DATA_DIR%%|${DATADIR:S,^${PREFIX}/,,}|; \
X		    s|%%JAVA_VERSION%%|${JAVA_VERSION}|; \
X		    s|%%JAVAVM%%|${JAVAVM}|; \
X		    s|%%JAVAJARDIR%%|${JAVAJARDIR:S,^${PREFIX}/,,}|; \
X		    s|%%JAR_FILES%%|${JAR_FILES}|; \
X		    s|%%JAR_START%%|${JAR_START}|; \
X		    s|%%SEED_FILE%%|${SEED_FILE}|" \
X		    ${FILESDIR}/wrapper.in > ${WRKDIR}/wrapper
X
Xdo-install:
X# docs
X.ifndef(NOPORTDOCS)
X	@${MKDIR} ${DOCSDIR}
X.for doc in ${DOC_FILES}
X	@${INSTALL_DATA} ${WRKSRC}/${doc} ${DOCSDIR}
X.endfor
X.endif
X# data
X	@${MKDIR} ${DATADIR}
X.for data_file in ${DATA_FILES}
X	@${INSTALL_DATA} ${WRKSRC}/${data_file} ${DATADIR}
X.endfor
X# jar
X.for jar in ${JAR_FILES}
X	@${INSTALL_DATA} ${WRKSRC}/${jar} ${JAVAJARDIR}
X.endfor
X# wrapper
X	@${INSTALL_SCRIPT} ${WRKDIR}/wrapper ${PREFIX}/sbin/${PORTNAME:L}
X
Xpost-install:
X	@${SED} "s|%%PREFIX%%|${PREFIX}|; \
X	         s|%%ETC%%|/etc|g" < pkg-message
X
X.include <bsd.port.mk>
END-of-freenet05/Makefile
echo x - freenet05/pkg-message
sed 's/^X//' >freenet05/pkg-message << 'END-of-freenet05/pkg-message'
X====================================================================
X
XRESTRICTIONS
X
X  This program uses heavy encryption algorithms. If your country
X  has restrictions against encryption, you should check with legal
X  authorities before using it.
X
XHOW TO START
X
X  Add the following lines to %%ETC%%/rc.conf or %%ETC%%/rc.conf.local:
X
X    freenet_enable (bool):  Set to "YES" to run freenet at startup.
X    freenet_user (string):  Set to the name of a non-root user.
X
X  Next, run:
X
X    %%PREFIX%%/etc/rc.d/freenet start
X
XHOW TO USE
X
X  Point your Web browser to http://127.0.0.1:8888/ to access the
X  Freenet Web Interface. This page serves as a gateway to Freenet.
X  Try clicking the various links in the "Bookmarks" panel to reach
X  some of the popular freesites.
X
X  Note that Freenet will be quite slow and fail to load most sites
X  at first. You should leave your node running for a few hours
X  (preferably a couple of days) so that it can find enough peers
X  and integrate well with the network.
X
XNEXT STEPS
X
X  Please refer to %%PREFIX%%/share/doc/freenet/README and
X  http://freenetproject.org/ for further information.
X
X====================================================================
END-of-freenet05/pkg-message
echo c - freenet05/files
mkdir -p freenet05/files > /dev/null 2>&1
echo x - freenet05/files/wrapper.in
sed 's/^X//' >freenet05/files/wrapper.in << 'END-of-freenet05/files/wrapper.in'
X#!/bin/sh
X#
X# Under a BSDL license. Copyright by Mario S F Ferreira <lioux at FreeBSD.org>
X# $FreeBSD$
X
Xexport JAVA_VERSION
X
XPREFIX="%%PREFIX%%"
X# java
XJAVA_VERSION="%%JAVA_VERSION%%"
XJAVAVM_CALL="%%JAVAVM%%"
XJAVAJARDIR="%%JAVAJARDIR%%"
XJAR_FILES="%%JAR_FILES%%"
XJAR_START="%%JAR_START%%"
X# data
XDATA_DIR="%%DATA_DIR%%"
XSEED_FILE=seednodes.ref
X# home
XHOME_DIR=${HOME}/.freenet
XCONFIG_FILE=freenet.conf
X
Xconfigure_freenet () {
X  echo "Configuring Freenet node"
X  cd ${HOME_DIR} &&
X  	${JAVAVM_CALL} -jar ./${JAR_START} freenet.node.Main --config "${@}" 
X}
X
Xconfigure_java_classpath () {
X  if [ -z "${CLASSPATH}" ]; then
X	CLASSPATH=./freenet.jar:./freenet-ext.jar
X  else
X	CLASSPATH=./freenet.jar:./freenet-ext.jar:${CLASSPATH}
X  fi
X}
X
Xdisplay_usage () {
X  echo "Usage: ${0} [-h] [-c] [-i|-o]"
X  echo 'Options:'
X  echo '  -h  Display this help message'
X  echo '  -c  Configure Freenet node'
X  echo '  -i  Start a Freenet node'
X  echo '  -o  Stop a Freenet node'
X  echo ''
X}
X
Xprepare_configure_freenet () {
X  # do we have a config file?
X  if [ ! -f ${HOME_DIR}/${CONFIG_FILE} ]; then
X	# add basic information prior to configuration
X	echo > ${HOME_DIR}/${CONFIG_FILE}
X
X	# select listenPort randomly
X	if [ -n "${RANDOM}" ]
X	then
X		DEFLP=$((${RANDOM}%30000+2000))
X	else
X		echo "No random in shell, enter a FNP port number + <ENTER>"
X		read DEFLP
X	fi
X	echo "listenPort=${DEFLP}" >> ${HOME_DIR}/${CONFIG_FILE}
X
X	# point to seednodes file
X	echo 'seedNodes=seednodes.ref' >> ${HOME_DIR}/${CONFIG_FILE}
X
X	# tell Freenet to request configuration procedure
X	CONFIGURE=yes
X  fi
X}
X
Xprepare_home_dir () {
X  # create home dir staging area
X  if [ ! -d ${HOME_DIR} ]
X  then
X	mkdir -p ${HOME_DIR}
X  fi
X  # copy a seed file if none exists
X  if [ ! -f ${HOME_DIR}/${SEED_FILE} ]
X  then
X	rm -f ${HOME_DIR}/${SEED_FILE}
X	cp -f ${PREFIX}/${DATA_DIR}/${SEED_FILE} ${HOME_DIR}/${SEED_FILE}
X	# avoid unnecessary reseeding
X	touch -t "197001011200" ${HOME_DIR}/${SEED_FILE}
X  fi
X  # link the jar files
X  for jar in ${JAR_FILES}
X  do
X	ln -sf ${PREFIX}/${JAVAJARDIR}/${jar} ${HOME_DIR}/${jar}
X  done
X}
X
Xstart_freenet () {
X  echo "Starting Freenet node"
X  cd ${HOME_DIR} && \
X	nice -10 ${JAVAVM_CALL} -jar ./${JAR_START} "${@}" \
X	>/dev/null 2>/dev/null &
X  echo $! > ${HOME_DIR}/freenet.pid
X  exit 0
X}
X
Xstop_freenet () {
X  if [ -f ${HOME_DIR}/freenet.pid ]; then
X	echo "Stopping Freenet node"
X	cd ${HOME_DIR} &&
X		exec kill `cat freenet.pid` &
X  else
X	echo "Cannot find Freenet node"
X	echo "Where is the ${HOME_DIR}/freenet.pid file?"
X  fi
X}
X
X# we require at least one command line parameter
Xif [ $# -lt 1 ]; then
X	display_usage
X	exit 1
Xfi
X
X# parse command line parameters
Xwhile getopts "chio" COMMAND_LINE_ARGUMENT ; do
X  case "${COMMAND_LINE_ARGUMENT}" in
X  c)
X	CONFIGURE=yes
X	;;
X  h)
X	display_usage
X	exit 0
X	;;
X  i)
X	START=yes
X	unset STOP
X	;;
X  o)
X	STOP=yes
X	unset START
X	;;
X  *)
X	display_usage
X	exit 1
X	;;
X  esac
Xdone
X
X# always verify that home dir staging area is pristine
Xprepare_home_dir
X
X# check for proper configuration
Xprepare_configure_freenet
X
X# prepare java CLASSPATH
Xconfigure_java_classpath
X
Xif [ -n "${CONFIGURE}" ]; then
X  configure_freenet
Xfi
X
Xif [ -n "${START}" ]; then
X  start_freenet
Xfi
X
Xif [ -n "${STOP}" ]; then
X  stop_freenet
Xfi
X
X# we should never get this far
Xexit 1
END-of-freenet05/files/wrapper.in
echo x - freenet05/files/freenet.in
sed 's/^X//' >freenet05/files/freenet.in << 'END-of-freenet05/files/freenet.in'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X# Under a BSDL license. Copyright 2005 Mario S F Ferreira <lioux at FreeBSD.org>
X#
X# PROVIDE: freenet
X# REQUIRE: LOGIN
X# KEYWORD: shutdown
X#
X# Add the following lines to /etc/rc.conf or /etc/rc.conf.local to enable
X# this service:
X#
X# freenet_enable (bool):	Set to "YES" to enable freenet.
X# 				Defaults to "NO".
X# freenet_user (string):	Set to the name of a non-root user.
X# 				Defaults to "".
X#
X
X. %%RC_SUBR%%
X
Xname="freenet"
Xrcvar=`set_rcvar`
Xcommand="%%PREFIX%%/sbin/${name}"
Xextra_commands="configure"
X
Xfreenet_check_vars()
X{
X  if [ -z "${freenet_user}" ]; then
X    freenet_user=$(whoami)
X  fi
X  if [ "x${freenet_user}" = "xroot" ]; then
X    err 1 "You must set freenet_user to a non-root user for security reasons."
X  fi
X}
X
Xconfigure_cmd="configure_cmd"
Xconfigure_cmd()
X{
X  freenet_check_vars
X  su -l ${freenet_user} -c "${command} -c"
X}
X
Xstart_cmd="start_cmd"
Xstart_cmd()
X{
X  freenet_check_vars
X  su -l ${freenet_user} -c "${command} -i"
X}
X
Xstop_cmd="stop_cmd"
Xstop_cmd()
X{
X  freenet_check_vars
X  su -l ${freenet_user} -c "${command} -o"
X}
X
Xload_rc_config "${name}"
X: ${freenet_enable="NO"}
X: ${freenet_user=""}
X
Xrun_rc_command "$1"
END-of-freenet05/files/freenet.in
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list