summaryrefslogtreecommitdiffstats
path: root/remote/modules/run-virt/data/opt/openslx/vmchooser/run-virt-includes/setup_printer_lpd.inc
blob: 2fb9310a7a35b5520e9e87894c656b127283319c (plain) (blame)
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
#####################################
# Include: Setup printer daemon LPD #
#####################################

QUEUE="STANDARD" # This has to match the queue you configured in your VM
SPOOLDIR=

### Disabled: 100megs is not enough, some jobs are HUGE, try to use temp which should be on disk
## Try using user's tmpfs home first, as it gets wiped on logout
#if [ -n "${HOME}" ] && [ -w "${HOME}" ]; then
#       SPOOLDIR="${HOME}/.spool"
#       mkdir -p "${SPOOLDIR}/${QUEUE}"
#fi
# If failed, try to fall back to /tmp

if [ -z "${SPOOLDIR}" ] || [ ! -w "${SPOOLDIR}/${QUEUE}" ]; then
	SPOOLDIR="${TMPDIR}/printergui-${RANDOM}"
	rm -rf -- "${SPOOLDIR}"
	if ! mkdir -p "${SPOOLDIR}/${QUEUE}"; then
		slxlog "virt-spooldir" "Could not create spool directory ($SPOOLDIR) for $USER - printing will not work!"
		# TODO: Warn user
	fi
	chmod 0700 "${SPOOLDIR}/${QUEUE}"
fi

# Start the lpdaemon listening on the given port
# TODO: externalize with something like runvirt.d (other parts might benefit from that too)
tcpsvd -E 192.168.101.1 5515 \
	lpd "$SPOOLDIR" \
	ash -c "/opt/openslx/scripts/run-virt_print '${USER}' \"${SPOOLDIR}/${QUEUE}/\$DATAFILE\"" &

# PID to kill the process
PID_LPD="$!"

{
	sleep 2
	# Check if tcpsvd is running. Do this a little delayed so we do not check
	# immediately after trying to spawn it, as this could result in
	# success even if it's not really working.

	if ! kill -0 "$PID_LPD"; then
		slxlog "virt-lpd" "Could not start tcpsvd/lpd for virtual machine session"
		notify_user "Durcksystem" "Das Drucksystem konnte nicht initialisiert werden. Druckfunktion nicht verfügbar."
	fi
} &