summaryrefslogtreecommitdiff
path: root/examples/printing/smbprint
diff options
context:
space:
mode:
authorRichard Sharpe <sharpe@samba.org>2002-09-24 06:44:37 +0000
committerRichard Sharpe <sharpe@samba.org>2002-09-24 06:44:37 +0000
commit05c557c31ceaacdfcf911145b9479285e5e08a83 (patch)
treefad5cc71f0e89519e15ecc4f679bad4c34fe7df7 /examples/printing/smbprint
parent0f72389a85699fc0b96f3a6b5f1ad5df41620eda (diff)
downloadsamba-05c557c31ceaacdfcf911145b9479285e5e08a83.tar.gz
samba-05c557c31ceaacdfcf911145b9479285e5e08a83.tar.bz2
samba-05c557c31ceaacdfcf911145b9479285e5e08a83.zip
Make sure that Alfred Perlstein's changes get into head as smbprint and
that the old one becomes smbprint.old. We still need to hack smbprint some more to make sure that we can pass the username and password in a file rather than on the command line where local hackers can see it. (This used to be commit ef970a764eb97893ff2090f7cbf2f2ec06911d0f)
Diffstat (limited to 'examples/printing/smbprint')
-rwxr-xr-xexamples/printing/smbprint104
1 files changed, 77 insertions, 27 deletions
diff --git a/examples/printing/smbprint b/examples/printing/smbprint
index 5a00a2a8aa..68bd66a13f 100755
--- a/examples/printing/smbprint
+++ b/examples/printing/smbprint
@@ -25,6 +25,11 @@
#
# -t now causes translate to be used when sending files
#
+# Further modifications by Alfred Perlstein to fix some problems and
+# improve the quality of the code (3-Dec-2001).
+#
+# More hacking by Richard Sharpe to improve portability. 9-Dec-2001.
+#
# In order for this to work the /etc/printcap entry must include an
# accounting file (af=...):
#
@@ -46,12 +51,10 @@
# service=CJET_371
# password=""
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
+#smbclient=/usr/pkg/bin/smbclient
+# Assume that smbclient will be in the same place as smbprint
+smbclient="`dirname $0`/smbclient"
#
# The last parameter to the filter is the accounting file name.
@@ -67,29 +70,76 @@ config_file=$spool_dir/.config
# server
# service
# password
-eval `cat $config_file`
+# username (optional)
+# IP (optional)
+# debug (optional)
+# debugsmb (optional)
+# debugfile (optional)
+. $config_file
+
+if [ "x$password" = "x" ] ; then
+ password="-N"
+fi
-while getopts t c; do
- case $c in
- t)
- TRANS=1
- ;;
+if [ "x$username" == "x" ] ; then
+ username="$server";
+fi
- '?') # Bad parameters, ignore it ...
- ;;
- esac
+while test $# -gt 0; do
+ case "$1" in
+ -t)
+ TRANS=1
+ ;;
+
+ *) # Bad Parameters, ignore them ...
+ ;;
+ esac
+ shift
done
+
+command="print - ;"
+if [ $TRANS -eq 1 ]; then
+ command="translate;$command";
+fi
+
+debugfile="/tmp/smb-print.log"
+if [ "x$debug" = "x" ] ; then
+ debugfile=/dev/null debugargs=
+else
+ if [ $debug -eq 0 ] ; then
+ debugfile=/dev/null debugargs=
+ else
+ set -x; exec >>$debugfile 2>&1
+ debugargs="$debugfile."
+ #[ "x$debugsmb" == "x" ] || debugargs="$debugargs -d $debugsmb"
+ fi
+fi
+
+if [ "x$smbconf" != "x" ]; then
+
+ smbconf="-s $smbconf"
+
+fi
+
+if [ "x$IP" != "x" ]; then
+
+ IP="-I $IP"
+
+fi
+
+if [ "x$debugargs" != "x" ]; then
+
+ debugargs="-l $debugargs"
+
+fi
+
+$smbclient \
+ "\\\\$server\\$service" \
+ $password \
+ $smbconf \
+ $IP \
+ $debugargs \
+ -U $username \
+ -P \
+ -c "$command"
#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
- if [ $TRANS -eq 1 ]; then
- echo translate
- fi
- echo "print -"
- cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile