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}"
}
|