add Teckids utility suite, by request from Natureshadow
[shellsnippets/shellsnippets.git] / mksh / teckids / showphoto
1 # -*- mode: sh -*-
2 #-
3 # Copyright © 2014
4 #       Dominik George <dominik.george@teckids.org>
5 # Copyright © 2014, 2015, 2016
6 #       mirabilos <thorsten.glaser@teckids.org>
7 #
8 # Provided that these terms and disclaimer and all copyright notices
9 # are retained or reproduced in an accompanying document, permission
10 # is granted to deal in this work without restriction, including un‐
11 # limited rights to use, publicly perform, distribute, sell, modify,
12 # merge, give away, or sublicence.
13 #
14 # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to
15 # the utmost extent permitted by applicable law, neither express nor
16 # implied; without malicious intent or gross negligence. In no event
17 # may a licensor, author or contributor be held liable for indirect,
18 # direct, other damage, loss, or other issues arising in any way out
19 # of dealing in the work, even if advised of the possibility of such
20 # damage or existence of a defect, except proven that it results out
21 # of said person’s immediate fault when using the work as intended.
22
23 # Teckids utility subcommand that displays the JPEG photo of a user
24
25 cmd_options='p:\ 1prog\ 1\ 1Anzeigeprogramm'
26
27 teckids_sourcing_wrapper=1
28 . "$(dirname "$0")/teckids"
29
30 # consider making a teckids-utils config file (not in git) instead
31 for x in "$prog" xdg-open run-mailcap xloadimage konqueror false; do
32         [[ $x = false ]] && die Could not find an image viewer
33         [[ -z $x ]] || if whence -p $x >/dev/null; then
34                 viewer=$x
35                 break
36         fi
37 done
38
39 if (( $# == 0 )); then
40         dn=$(cat "$TECKIDS_CACHE_DIR"/last_whois)
41 else
42         dn=$1
43 fi
44
45 asso_setldap_sasl users -- -b "$dn" -s base
46
47 mkdir -p "$TOP/../.tmp"
48 d=$(mktemp -d "$TOP/../.tmp/XXXXXXXXXX")
49
50 teckids_loadk_users
51 found=0
52 for user_dn in "${asso_y[@]}"; do
53         jpegPhoto=$(asso_getv users "$user_dn" jpegPhoto 0)
54         [[ -z "$jpegPhoto" ]] && continue
55         Lb64decode "$jpegPhoto" >"$d/out.jpg"
56         $viewer "$d/out.jpg"
57         found=1
58 done
59 (( found )) || (( quiet )) || print -ru2 W: no jpegPhoto found
60
61 (sleep 3; rm -rf "$d") &
62
63 exit 0