github.com/yggdrasil-network/yggdrasil-go@v0.5.6/contrib/openrc/yggdrasil (about)

     1  #!/sbin/openrc-run
     2  
     3  description="An experiment in scalable routing as an encrypted IPv6 overlay network."
     4  
     5  CONFFILE="/etc/yggdrasil.conf"
     6  pidfile="/run/${RC_SVCNAME}.pid"
     7  
     8  command="/usr/bin/yggdrasil"
     9  extra_started_commands="reload"
    10  
    11  depend() {
    12  	use net dns logger
    13  }
    14  
    15  start_pre() {
    16  	if [ ! -f "${CONFFILE}" ]; then
    17  		ebegin "Generating new configuration file into ${CONFFILE}"
    18  		if ! eval ${command} -genconf > ${CONFFILE}; then
    19  			eerror "Failed to generate configuration file"
    20  			exit 1
    21  		fi
    22  	fi
    23  
    24  	if [ ! -e /dev/net/tun ]; then
    25  		ebegin "Inserting TUN module"
    26  		if ! modprobe tun;  then
    27  			eerror "Failed to insert TUN kernel module"
    28  			exit 1
    29  		fi
    30  	fi
    31  }
    32  
    33  start() {
    34  	ebegin "Starting ${RC_SVCNAME}"
    35  	start-stop-daemon --start --quiet \
    36  		--pidfile "${pidfile}" \
    37  		--make-pidfile \
    38  		--background \
    39  		--stdout /var/log/yggdrasil.stdout.log \
    40  		--stderr /var/log/yggdrasil.stderr.log \
    41  		--exec "${command}" -- -useconffile "${CONFFILE}"
    42  	eend $?
    43  }
    44  
    45  reload() {
    46  	ebegin "Reloading ${RC_SVCNAME}"
    47  	start-stop-daemon --signal HUP --pidfile "${pidfile}"
    48  	eend $?
    49  }
    50  
    51  stop() {
    52  	ebegin "Stopping ${RC_SVCNAME}"
    53  	start-stop-daemon --stop --pidfile "${pidfile}" --exec "${command}"
    54  	eend $?
    55  }