#!/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
|
|
}
|