Welcome to mirror list, hosted at ThFree Co, Russian Federation.

pihole-FTL.service « Templates « advanced - github.com/pi-hole/pi-hole.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bc1b1d20e050afed4879eec90f82bb6e6cc2b54d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/usr/bin/env sh
### BEGIN INIT INFO
# Provides:          pihole-FTL
# Required-Start:    $remote_fs $syslog $network
# Required-Stop:     $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: pihole-FTL daemon
# Description:       Enable service provided by pihole-FTL daemon
### END INIT INFO

#source utils.sh for getFTLPIDFile(), getFTLPID ()
PI_HOLE_SCRIPT_DIR="/opt/pihole"
utilsfile="${PI_HOLE_SCRIPT_DIR}/utils.sh"
. "${utilsfile}"


is_running() {
  if [ -d "/proc/${FTL_PID}" ]; then
    return 0
  fi
  return 1
}


# Start the service
start() {
  if is_running; then
    echo "pihole-FTL is already running"
  else
    # Touch files to ensure they exist (create if non-existing, preserve if existing)
    mkdir -pm 0755 /run/pihole /var/log/pihole
    [ ! -f "${FTL_PID_FILE}" ] && install -D -m 644 -o pihole -g pihole /dev/null "${FTL_PID_FILE}"
    [ ! -f /var/log/pihole/FTL.log ] && install -m 644 -o pihole -g pihole /dev/null /var/log/pihole/FTL.log
    [ ! -f /var/log/pihole/pihole.log ] && install -m 640 -o pihole -g pihole /dev/null /var/log/pihole/pihole.log
    [ ! -f /etc/pihole/dhcp.leases ] && install -m 644 -o pihole -g pihole /dev/null /etc/pihole/dhcp.leases
    # Ensure that permissions are set so that pihole-FTL can edit all necessary files
    chown pihole:pihole /run/pihole /etc/pihole /var/log/pihole /var/log/pihole/FTL.log /var/log/pihole/pihole.log /etc/pihole/dhcp.leases
    # Ensure that permissions are set so that pihole-FTL can edit the files. We ignore errors as the file may not (yet) exist
    chmod -f 0644 /etc/pihole/macvendor.db /etc/pihole/dhcp.leases /var/log/pihole/FTL.log
    chmod -f 0640 /var/log/pihole/pihole.log
    # Chown database files to the user FTL runs as. We ignore errors as the files may not (yet) exist
    chown -f pihole:pihole /etc/pihole/pihole-FTL.db /etc/pihole/gravity.db /etc/pihole/macvendor.db
    # Chown database file permissions so that the pihole group (web interface) can edit the file. We ignore errors as the files may not (yet) exist
    chmod -f 0664 /etc/pihole/pihole-FTL.db

    # Backward compatibility for user-scripts that still expect log files in /var/log instead of /var/log/pihole/
    # Should be removed with Pi-hole v6.0
    if [ ! -f /var/log/pihole.log ]; then
        ln -s /var/log/pihole/pihole.log /var/log/pihole.log
        chown -h pihole:pihole /var/log/pihole.log

    fi
    if [ ! -f /var/log/pihole-FTL.log ]; then
        ln -s /var/log/pihole/FTL.log /var/log/pihole-FTL.log
        chown -h pihole:pihole /var/log/pihole-FTL.log
    fi

    if setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW,CAP_NET_ADMIN,CAP_SYS_NICE,CAP_IPC_LOCK,CAP_CHOWN+eip "/usr/bin/pihole-FTL"; then
      su -s /bin/sh -c "/usr/bin/pihole-FTL" pihole || exit $?
    else
      echo "Warning: Starting pihole-FTL as root because setting capabilities is not supported on this system"
      /usr/bin/pihole-FTL || exit $?
    fi
    echo
  fi
}

# Stop the service
stop() {
  if is_running; then
    kill "${FTL_PID}"
    for i in 1 2 3 4 5; do
      if ! is_running; then
        break
      fi

      printf "."
      sleep 1
    done
    echo

    if is_running; then
      echo "Not stopped; may still be shutting down or shutdown may have failed, killing now"
      kill -9 "${FTL_PID}"
    else
      echo "Stopped"
    fi
  else
    echo "Not running"
  fi
  # Cleanup
  rm -f /run/pihole/FTL.sock /dev/shm/FTL-* "${FTL_PID_FILE}"
  echo
}

# Indicate the service status
status() {
  if is_running; then
    echo "[ ok ] pihole-FTL is running"
    exit 0
  else
    echo "[    ] pihole-FTL is not running"
    exit 1
  fi
}


### main logic ###

# Get file paths
FTL_PID_FILE="$(getFTLPIDFile)"

# Get FTL's current PID
FTL_PID="$(getFTLPID ${FTL_PID_FILE})"

case "$1" in
  stop)
        stop
        ;;
  status)
        status
        ;;
  start|restart|reload|condrestart)
        stop
        start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac

exit 0