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