diff options
-rw-r--r-- | GIDs | 2 | ||||
-rw-r--r-- | UIDs | 2 | ||||
-rw-r--r-- | net-p2p/bitcoin/Makefile | 2 | ||||
-rw-r--r-- | net-p2p/bitcoin/files/bitcoind.in | 166 |
4 files changed, 165 insertions, 7 deletions
@@ -720,7 +720,7 @@ postgres:*:770: # free: 776 openxpki:*:777: # free: 778 -# free: 779 +bitcoin:*:779: zetacoin:*:780: # free: 781 # free: 782 @@ -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" |