blob: 7b1a3b3b5659d3ea0430e184bb850fb87755cb2d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
#!/bin/sh
#
# Under a BSDL license. Copyright by Mario S F Ferreira <lioux@FreeBSD.org>
# $FreeBSD$
PREFIX="%%PREFIX%%"
# java
JAVAVM_CALL="%%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_CALL} -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] [-c] [-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_CALL} -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 "chio" 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
|