File: xinetd

package info (click to toggle)
unit-translator 0.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 632 kB
  • sloc: sh: 909; makefile: 28
file content (44 lines) | stat: -rw-r--r-- 1,347 bytes parent folder | download | duplicates (2)
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
# xinetd output backend
# shellcheck shell=bash

gen_xinetd_entry() {
	printf '%s\n' "service $(basename "${service[ExecStart]// */}")"
	printf '%s\n' '{'

	printf '%s\n' "    disabled = no"

	if [[ "${socket[ListenStream]:-}" ]]; then
		printf '%s\n' "    port = ${socket[ListenStream]}"
		printf '%s\n' "    socket_type = stream"
		printf '%s\n' "    wait = no"
	elif [[ "${socket[ListenDatagram]:-}" ]]; then
		printf '%s\n' "    port = ${socket[ListenDatagram]}"
		printf '%s\n' "    socket_type = dgram"
		printf '%s\n' "    protocol = udp"
		printf '%s\n' "    wait = yes"
	elif [[ "${socket[ListenSequentialPackets]:-}" ]]; then
		printf '%s\n' "    port = ${socket[ListenSequentialPackets]}"
		printf '%s\n' "    socket_type = seqpacket"
		printf '%s\n' "    protocol = udp"
		printf '%s\n' "    wait = yes"
	fi

	printf '%s\n' "    user = ${service[User]:-root}"
	server=${service[ExecStart]%% *}
	printf '%s\n' "    server = $server"
	server_args=${service[ExecStart]#"${server}"}
	printf '%s\n' "    server_args = ${server_args# }"

	printf '%s\n' '}'
}

export_inetd() {
	systemd_unit=$1
	base_dir=$2
	xinetd_dir="${base_dir}/xinetd.d"
	mkdir -p "${xinetd_dir}"

	xinetd_file="${xinetd_dir}/$(basename "${systemd_unit}" .socket)"
	# generate a xinetd configuration file
	gen_xinetd_entry "${systemd_unit%%.socket}" >"${xinetd_file}"
}