46 lines
1.2 KiB
Bash
Executable File
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" "$@"
|