1#!/sbin/openrc-run 2 3# backward compatibility for existing gentoo layout 4# 5if [ -d "/var/lib/bitcoin/.bitcoin" ]; then 6 BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoin/.bitcoin" 7else 8 BITCOIND_DEFAULT_DATADIR="/var/lib/bitcoind" 9fi 10 11BITCOIND_CONFIGFILE=${BITCOIND_CONFIGFILE:-/etc/bitcoin/bitcoin.conf} 12BITCOIND_PIDDIR=${BITCOIND_PIDDIR:-/var/run/bitcoind} 13BITCOIND_PIDFILE=${BITCOIND_PIDFILE:-${BITCOIND_PIDDIR}/bitcoind.pid} 14BITCOIND_DATADIR=${BITCOIND_DATADIR:-${BITCOIND_DEFAULT_DATADIR}} 15BITCOIND_USER=${BITCOIND_USER:-${BITCOIN_USER:-bitcoin}} 16BITCOIND_GROUP=${BITCOIND_GROUP:-bitcoin} 17BITCOIND_BIN=${BITCOIND_BIN:-/usr/bin/bitcoind} 18BITCOIND_NICE=${BITCOIND_NICE:-${NICELEVEL:-0}} 19BITCOIND_OPTS="${BITCOIND_OPTS:-${BITCOIN_OPTS}}" 20 21name="Bitcoin Core Daemon" 22description="Bitcoin cryptocurrency P2P network daemon" 23 24command="/usr/bin/bitcoind" 25command_args="-pid=\"${BITCOIND_PIDFILE}\" \ 26 -conf=\"${BITCOIND_CONFIGFILE}\" \ 27 -datadir=\"${BITCOIND_DATADIR}\" \ 28 -daemon \ 29 ${BITCOIND_OPTS}" 30 31required_files="${BITCOIND_CONFIGFILE}" 32start_stop_daemon_args="-u ${BITCOIND_USER} \ 33 -N ${BITCOIND_NICE} -w 2000" 34pidfile="${BITCOIND_PIDFILE}" 35 36# The retry schedule to use when stopping the daemon. Could be either 37# a timeout in seconds or multiple signal/timeout pairs (like 38# "SIGKILL/180 SIGTERM/300") 39retry="${BITCOIND_SIGTERM_TIMEOUT}" 40 41depend() { 42 need localmount net 43} 44 45# verify 46# 1) that the datadir exists and is writable (or create it) 47# 2) that a directory for the pid exists and is writable 48# 3) ownership and permissions on the config file 49start_pre() { 50 checkpath \ 51 -d \ 52 --mode 0750 \ 53 --owner "${BITCOIND_USER}:${BITCOIND_GROUP}" \ 54 "${BITCOIND_DATADIR}" 55 56 checkpath \ 57 -d \ 58 --mode 0755 \ 59 --owner "${BITCOIND_USER}:${BITCOIND_GROUP}" \ 60 "${BITCOIND_PIDDIR}" 61 62 checkpath -f \ 63 -o "${BITCOIND_USER}:${BITCOIND_GROUP}" \ 64 -m 0660 \ 65 "${BITCOIND_CONFIGFILE}" 66 67 checkconfig || return 1 68} 69 70checkconfig() 71{ 72 if grep -qs '^rpcuser=' "${BITCOIND_CONFIGFILE}" && \ 73 ! grep -qs '^rpcpassword=' "${BITCOIND_CONFIGFILE}" ; then 74 eerror "" 75 eerror "ERROR: You must set a secure rpcpassword to run bitcoind." 76 eerror "The setting must appear in ${BITCOIND_CONFIGFILE}" 77 eerror "" 78 eerror "This password is security critical to securing wallets " 79 eerror "and must not be the same as the rpcuser setting." 80 eerror "You can generate a suitable random password using the following " 81 eerror "command from the shell:" 82 eerror "" 83 eerror "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'" 84 eerror "" 85 eerror "It is recommended that you also set alertnotify so you are " 86 eerror "notified of problems:" 87 eerror "" 88 eerror "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \ 89 "admin@foo.com" 90 eerror "" 91 return 1 92 fi 93} 94