X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=remoteusage.mdwn;h=48aced826cc5478283fd802fca50691735af397a;hb=1e5c1247bf095a03338f40e5a7bfaaec760a6c4b;hp=84b7c385ee8763752f89470b7c3acb58b85c5402;hpb=ef4c8d8386797b8265765739ac924357a01db67a;p=notmuch-wiki diff --git a/remoteusage.mdwn b/remoteusage.mdwn index 84b7c38..48aced8 100644 --- a/remoteusage.mdwn +++ b/remoteusage.mdwn @@ -46,43 +46,66 @@ over ssh. future calls can reuse the socket. #!/usr/bin/env bash - + SSH_BIN="ssh" USER="example_user" SSH_HOST="example.com" - SSH_SOCKET="/tmp/notmuch_ssh.socket" + SOCKET_DIR="/tmp/notmuch_$(id -u)" + SSH_SOCKET="${SOCKET_DIR}/ssh.socket" NOTMUCH_REMOTE_BIN="notmuch" - DTACH="dtach" - DTACH_SOCKET="/tmp/notmuch_dtach.socket" + DTACH="/usr/bin/dtach" + DTACH_SOCKET="${SOCKET_DIR}/dtach.socket" - check_for_socket () + check_for_socket_dir () { - [ -S "${SSH_SOCKET}" ] + [ -d "${SOCKET_DIR}" ] + } + + check_socket_dir_owner_and_perm () + { + [ "$(stat -c %U ${SOCKET_DIR})" = "$(whoami)" ] && + [ "$(stat -c %a ${SOCKET_DIR})" = "700" ] + } + + create_socket_dir () + { + mkdir "${SOCKET_DIR}" + chmod 700 "${SOCKET_DIR}" } - check_if_socket_alive () + check_for_socket () { - timeout 1 $SSH_BIN -S ${SSH_SOCKET} $USER@$SSH_HOST true > /dev/null + [ -S "${SSH_SOCKET}" ] } start_socket () { dtach_command="${DTACH} -n ${DTACH_SOCKET} ${SSH_BIN} -M -S ${SSH_SOCKET} ${USER}@${SSH_HOST}" - command -v ${DTACH} &>/dev/null && ${dtach_command} || - echo "${DTACH} not installed" + command -v ${DTACH} &>/dev/null && ${dtach_command} } notmuch_run () { - check_for_socket || start_socket + if check_for_socket_dir; then + if check_socket_dir_owner_and_perm; then + if ! check_for_socket; then + start_socket + fi + else echo "Wrong permissions of ${SOCKET_DIR}" >&2 + exit 1 + fi + elif create_socket_dir; then + start_socket + else + exit 1 + fi CMD=$1 shift printf -v ARGS "%q " "$@" $SSH_BIN -S $SSH_SOCKET $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN ${CMD} ${ARGS} } - notmuch_run $@ - + notmuch_run $@ Save this to a file, "remote-notmuch.sh", in your path.