2025-08-08 20:28:57 +02:00

46 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
#
# nxsmb: Small wrapper for the SMB backend to be able to print to CIFS or SMB ports directly.
#
# Copyright (c) 2008 by Fabian Franz.
#
#
# turn on DEBUG?
#set -x -v
CUPS_BACKEND="/usr/lib/cups/backend"
PATH_LIB="/usr/lib"
NXREDIR_LIBRARY="$PATH_LIB/freenx-server/libnxredir.so.0"
COMMAND_SMB="$CUPS_BACKEND/smb"
PORT=$(echo $DEVICE_URI | cut -d/ -f3 | cut -d@ -f2 | cut -d: -f2)
PROTOCOL=$(echo $DEVICE_URI | cut -d/ -f4)
PRINTER=$(echo $DEVICE_URI | cut -d/ -f5)
if [ -z "$PRINTER" ]; then # old style setup
echo "Warning: Not using nxredir library. The DEVICE_URI is not in the right format."
exec "$COMMAND_SMB" "$@"
fi
if [ ! -x "$NXREDIR_LIBRARY" ]; then
# repair DEVICE_URI
DEVICE_URI=$(echo $DEVICE_URI | sed "s|/$PROTOCOL||g")
echo "Error: Not using nxredir library. $NXREDIR_LIBRARY could not be found or is not executable."
exec "$COMMAND_SMB" "$@"
fi
if [ "$PROTOCOL" = "cifs" -o "$PROTOCOL" = "CIFS" ]; then
REAL_PORT="445"
else
REAL_PORT="139"
fi
DEVICE_URI=$(echo $DEVICE_URI | sed "s|:$PORT/$PROTOCOL/|:$REAL_PORT/|g")
export DEVICE_URI=$(echo $DEVICE_URI | sed "s|nxsmb://|smb://|g")
export NXSAMBA_PORT="$PORT"
export LD_PRELOAD="$NXREDIR_LIBRARY${LD_PRELOAD:+:$LD_PRELOAD}"
exec "$COMMAND_SMB" "$@"