aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GIDs2
-rw-r--r--UIDs2
-rw-r--r--net-p2p/bitcoin/Makefile2
-rw-r--r--net-p2p/bitcoin/files/bitcoind.in166
4 files changed, 165 insertions, 7 deletions
diff --git a/GIDs b/GIDs
index 819f6d73d49e..32db5cc3211c 100644
--- a/GIDs
+++ b/GIDs
@@ -720,7 +720,7 @@ postgres:*:770:
# free: 776
openxpki:*:777:
# free: 778
-# free: 779
+bitcoin:*:779:
zetacoin:*:780:
# free: 781
# free: 782
diff --git a/UIDs b/UIDs
index 626261380624..ef16c5848347 100644
--- a/UIDs
+++ b/UIDs
@@ -725,7 +725,7 @@ postgres:*:770:770::0:0:PostgreSQL Daemon:/var/db/postgres:/bin/sh
# free: 776
openxpki:*:777:777::0:0:OpenXPKI Owner:/nonexistent:/usr/sbin/nologin
# free: 778
-# free: 779
+bitcoin:*:779:779::0:0:bitcoin Daemon:/var/db/bitcoin:/usr/sbin/nologin
zetacoin:*:780:780::0:0:ZetaCoin Daemon:/nonexistent:/usr/sbin/nologin
# free: 781
# free: 782
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"