Added obexd
[tpope-extra.git] / bluetooth / obexd
diff --git a/bluetooth/obexd b/bluetooth/obexd
new file mode 100755 (executable)
index 0000000..271e4d5
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $Id$
+# -*- sh -*- vim: ft=sh sw=4 sts=4
+
+# /usr/local/sbin/obexd
+# Designed to repeatedly call obexserver to receive new files, and send them
+# off in an email to root.
+
+on_term() {
+    killall obexserver >/dev/null 2>&1 || true
+    exit
+}
+
+trap on_term SIGTERM
+#trap on_term SIGQUIT
+trap on_term SIGINT
+
+trap "sdptool del OPUSH >/dev/null || true" EXIT
+
+sdptool add --channel=10 OPUSH >/dev/null
+
+while true; do
+filename=`obexserver|grep '^Filename = '|sed -e 's/^Filename = //'`
+
+(
+    case "$filename" in
+       *.txt)          ctype=text/plain ;;
+       *.htm|*.html)   ctype=text/html ;;
+       *.vcf)          ctype=text/x-vcard ;;
+       *.wav)          ctype=audio/x-wav ;;
+       *.mid|*.midi)   ctype=audio/midi ;;
+       *.jpg|*.jpeg)   ctype=image/jpeg ;;
+       *.gif)          ctype=image/gif ;;
+       "WAP bookmark") ctype=text/x-url ;;
+       *.3gp)          ctype=video/x-realmedia ;; # ???
+       *) ctype=application/octet-stream ;;
+    esac
+
+    # metasend can't handle file names with spaces
+    tempfile=`mktemp -t obexd.XXXXXX`
+    case "$ctype" in
+       text/*) tr -d '\r' < "/tmp/$filename" >> $tempfile ;;
+       *) cat "/tmp/$filename" >> $tempfile ;;
+    esac
+    rm -f "/tmp/$filename"
+
+    metasend -b -F bluetooth -t root -s "Object received via Bluetooth" -c '' \
+    -D "$filename" -S 4000000 -m "$ctype; name=\"`echo $filename|tr ' ' '_'`\""\
+    -f $tempfile
+    rm -f $tempfile
+)
+
+done