aboutsummaryrefslogtreecommitdiffstats
path: root/net-p2p
diff options
context:
space:
mode:
authoraraujo <araujo@FreeBSD.org>2016-11-25 14:11:01 +0800
committeraraujo <araujo@FreeBSD.org>2016-11-25 14:11:01 +0800
commita35648952cc7c5d9dfb827a29f58c73209504280 (patch)
treedb39d552fe8218a493b7e1db3d45817c6e44c77b /net-p2p
parent3ea1d8573a7b9e4a4ad8cb8d7a28c80b62e0c550 (diff)
downloadfreebsd-ports-gnome-a35648952cc7c5d9dfb827a29f58c73209504280.tar.gz
freebsd-ports-gnome-a35648952cc7c5d9dfb827a29f58c73209504280.tar.zst
freebsd-ports-gnome-a35648952cc7c5d9dfb827a29f58c73209504280.zip
- Add a UID/GID for bitcoin.
- Rewrite the rc script with new options that allows users to: - set config file. - set datadir. - set bitcoin limits. PR: ports/213235 Submitted by: Christopher Hall <hsw@bitmark.com> Approved by: maintainer timeout (1 month)
Diffstat (limited to 'net-p2p')
-rw-r--r--net-p2p/bitcoin/Makefile2
-rw-r--r--net-p2p/bitcoin/files/bitcoind.in166
2 files changed, 163 insertions, 5 deletions
diff --git a/net-p2p/bitcoin/Makefile b/net-p2p/bitcoin/Makefile
index 0f4a42c4169b..256fd10dd3f8 100644
--- a/net-p2p/bitcoin/Makefile
+++ b/net-p2p/bitcoin/Makefile
@@ -4,7 +4,7 @@
PORTNAME= bitcoin
PORTVERSION= 0.12.1
DISTVERSIONPREFIX= v
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= net-p2p finance
MAINTAINER= robbak@robbak.com
diff --git a/net-p2p/bitcoin/files/bitcoind.in b/net-p2p/bitcoin/files/bitcoind.in
index d4a558e837da..45bc454c171d 100644
--- a/net-p2p/bitcoin/files/bitcoind.in
+++ b/net-p2p/bitcoin/files/bitcoind.in
@@ -1,15 +1,173 @@
#!/bin/sh
-#
# $FreeBSD$
-#
+
# PROVIDE: bitcoind
-# REQUIRE: LOGIN
+# REQUIRE: LOGIN cleanvar
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf to enable :
+# bitcoind_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable bitcoind
+# bitcoind_user (str) Set to "bitcoin" by default.
+# bitcoind_group (str) Set to "bitcoin" by default.
+# bitcoind_conf (str) Set to "%%PREFIX%%/etc/bitcoind.conf" by default.
+# bitcoind_data (str) Set to "/var/lib/bitcoind" by default.
+# bitcoindlimits_enable (bool) Set to "NO" by default.
+# Set it to "YES" to enable bitcoindlimits
+# bitcoindlimits_args Set to "-e -U ${bitcoind_user}" by default
+
. /etc/rc.subr
name="bitcoind"
rcvar=bitcoind_enable
+
+start_precmd="bitcoind_precmd"
+start_cmd="bitcoind_start"
+restart_precmd="bitcoind_checkconfig"
+reload_precmd="bitcoind_checkconfig"
+configtest_cmd="bitcoind_checkconfig"
+status_cmd="bitcoind_status"
+stop_cmd="bitcoind_stop"
+stop_postcmd="bitcoind_wait"
command="%%PREFIX%%/bin/bitcoind"
+cli_command="%%PREFIX%%/bin/bitcoin-cli"
+daemon_command="/usr/sbin/daemon"
+#pidfile="/var/run/${name}.pid"
+extra_commands="configtest"
+
+
+: ${bitcoind_enable:="NO"}
+: ${bitcoindlimits_enable:="NO"}
+
+load_rc_config ${name}
+
+: ${bitcoind_user:="bitcoin"}
+: ${bitcoind_group:="bitcoin"}
+: ${bitcoind_data_dir:="/var/db/bitcoind"}
+: ${bitcoind_config_file:="%%PREFIX%%/etc/bitcoin.conf"}
+: ${bitcoindlimits_args:="-e -U ${bitcoind_user}"}
+
+# set up dependant variables
+procname="${command}"
+pidfile="${bitcoind_data_dir}/bitcoind.pid"
+required_files="${bitcoind_config_file}"
+
+
+bitcoind_checkconfig()
+{
+ echo "Performing sanity check on bitcoind configuration:"
+ if [ ! -d "${bitcoind_data_dir}" ]
+ then
+ echo "Missing data directory: ${bitcoind_data_dir}"
+ exit 1
+ fi
+ chown -R "${bitcoind_user}:${bitcoind_group}" "${bitcoind_data_dir}"
+
+ if [ ! -f "${bitcoind_config_file}" ]
+ then
+ echo "Missing configuration file: ${bitcoind_config_file}"
+ exit 1
+ fi
+ if [ ! -x "${command}" ]
+ then
+ echo "Missing executable: ${command}"
+ exit 1
+ fi
+ return 0
+}
+
+bitcoind_cleanup()
+{
+ rm -f "${pidfile}"
+}
+
+bitcoind_precmd()
+{
+ bitcoind_checkconfig
+
+ pid=$(check_pidfile "${pidfile}" "${procname}")
+ if [ -z "${pid}" ]
+ then
+ echo "Bitcoind is not running"
+ rm -f "${pidfile}"
+ fi
+
+ if checkyesno bitcoindlimits_enable
+ then
+ eval $(/usr/bin/limits ${bitcoindlimits_args}) 2>/dev/null
+ else
+ return 0
+ fi
+}
+
+bitcoind_status()
+{
+ local pid
+ pid=$(check_pidfile "${pidfile}" "${procname}")
+ if [ -z "${pid}" ]
+ then
+ echo "Bitcoind is not running"
+ return 1
+ else
+ echo "Bitcoind running, pid: ${pid}"
+ fi
+}
+
+bitcoind_start()
+{
+ echo "Starting bitcoind:"
+ cd "${bitcoind_data_dir}" || return 1
+ ${daemon_command} -u "${bitcoind_user}" -p "${pidfile}" \
+ ${command} \
+ -conf="${bitcoind_config_file}" \
+ -datadir="${bitcoind_data_dir}" 2> /tmp/bitcoind.stderr > /tmp/bitcoind.stdout
+}
+
+bitcoind_stop()
+{
+ echo "Stopping bitcoind:"
+ pid=$(check_pidfile "${pidfile}" "${procname}")
+ if [ -z "${pid}" ]
+ then
+ echo "Bitcoind is not running"
+ return 1
+ else
+ ${cli_command} -conf="${bitcoind_config_file}" -datadir="${bitcoind_data_dir}" stop
+ fi
+}
+
+bitcoind_wait()
+{
+ local n=60
+ echo "Waiting for bitcoind shutdown:"
+ while :
+ do
+ printf '.'
+ pid=$(check_pidfile "${pidfile}" "${procname}")
+ if [ -z "${pid}" ]
+ then
+ printf '\n'
+ break
+ fi
+ sleep 1
+ n=$((${n} - 1))
+ if [ ${n} -eq 0 -a -f "${pidfile}" ]
+ then
+ printf "\nForce shutdown"
+ kill -9 $(cat "${pidfile}")
+ for n in 1 2 3
+ do
+ printf '.'
+ sleep 1
+ done
+ printf '\n'
+ break
+ fi
+ done
+ rm -f "${pidfile}"
+ echo "Shutdown complete"
+}
-load_rc_config $name
run_rc_command "$1"