#!/bin/sh /etc/rc.common
# Copyright (C) 2017 OpenWrt.org
# Copyright (C) 2021-2022 PurpleI2P team

USE_PROCD=1

START=90
STOP=10

# default params
PROG=/usr/sbin/i2pd
USER="i2pd"
GROUP="i2pd"
PIDFILE=/var/run/i2pd.pid
DATADIR=/var/lib/i2pd
CONFFILE=/etc/i2pd/i2pd.conf

start_instance() {
	local data_dir netdb_dir addressbook_dir cfg="$1"

	config_get data_dir "$cfg" data_dir "$DATADIR"
	config_get netdb_dir "$cfg" netdb_dir
	config_get addressbook_dir "$cfg" addressbook_dir

	## Setting up data dir
	if [ ! -d "$data_dir" ]; then
		mkdir -p "$data_dir"
		ln -s /usr/share/i2pd/certificates "$data_dir/certificates"
		ln -s /etc/i2pd/i2pd.conf "$data_dir/i2pd.conf"
		ln -s /etc/i2pd/tunnels.conf "$data_dir/tunnels.conf"
		ln -s /etc/i2pd/tunnels.d "$data_dir/tunnels.d"
	fi

	if [ -n "$netdb_dir" ]; then
		if [ ! -d "$netdb_dir" ]; then
			mkdir -p "$netdb_dir"
		fi
		ln -s "$netdb_dir" "$data_dir/netDb"
	fi

	if [ -n "$addressbook_dir" ]; then
		if [ ! -d "$addressbook_dir" ]; then
			mkdir -p "$addressbook_dir"
		fi
		ln -s "$addressbook_dir" "$data_dir/addressbook"
	fi

	## We need permissions
	chown "$USER:$GROUP" "$data_dir"

	if [ -n "$netdb_dir" ]; then
		chown "$USER:$GROUP" "$netdb_dir"
	fi

	if [ -n "$addressbook_dir" ]; then
		chown "$USER:$GROUP" "$addressbook_dir"
	fi

	touch "$PIDFILE"
	chown "$USER:adm" "$PIDFILE"

	procd_open_instance
	procd_set_param command "$PROG" --datadir="$data_dir" --conf="$CONFFILE" --pidfile "$PIDFILE"
	## Don't know about i2pd user's HOME
	procd_set_param env "HOME=$data_dir"
	procd_set_param limits nofile=4096
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_set_param user "$USER"
	procd_set_param pidfile "$PIDFILE"
	procd_close_instance
}

start_service() {
	config_load "i2pd"
	config_foreach start_instance "i2pd"
}

reload_service() {
	procd_send_signal i2pd
}