#!/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 "$DATADIR"
|
|
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"
|
|
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"
|
|
## For debugging, provide about 512 MB on external storage for coredump and adjust /proc/sys/kernel/core_pattern
|
|
# echo "/tmp/coredumps/core.%e.%p.%s.%t" > /proc/sys/kernel/core_pattern
|
|
# procd_set_param limits core="unlimited unlimited"
|
|
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
|
|
}
|