#!/bin/sh /etc/rc.common
# Copyright (C) 2017 OpenWrt.org

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

. /lib/functions.sh



i2pd_start() {
	local cfg="$1"
	local data_dir
	local addressbook_dir

	config_get data_dir "$cfg" data_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/tunnels.conf "$data_dir/tunnels.conf"
		if [ -n "$addressbook_dir" ]; then
			if [ ! -d "$addressbook_dir" ]; then
				mkdir -p "$addressbook_dir"
			fi
			ln -s "$addressbook_dir" "$data_dir/addressbook"
		fi
	fi

	## We need permissions
	chown "$USER:$GROUP" "$data_dir"
	chown "$USER:$GROUP" "$addressbook_dir"
	touch "$PIDFILE"
	chown "$USER:adm" "$PIDFILE"

	procd_open_instance
	procd_set_param command "$PROG" --service --conf="$CONFFILE" --pidfile "$PIDFILE"
	## Don't know about i2pd user's HOME
	procd_set_param env "HOME=$DATADIR"
	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() {
	local instance="$1"
	local instance_found=0

	config_cb() {
		local type="$1"
		local name="$2"
		if [ "$type" = "i2pd" ]; then
			if [ -n "$instance" ] && [ "$instance" = "$name" ]; then
				instance_found=1
			fi
		fi
	}

	config_load i2pd

	if [ -n "$instance" ]; then
		[ "$instance_found" -gt 0 ] || return
		i2pd_start "$instance"
	else
		config_foreach i2pd_start i2pd
	fi
}