X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=remoteusage.mdwn;h=2e867e2e4f3e140715b4336a5026607cc24bb597;hb=4f2481e3c1e193f931b015499040820e6ed0bdc2;hp=19de21275188e120f1867f15e1ca855b3c9e08db;hpb=d340838fe102602497aec4c6a3172897848689e3;p=obsolete%2Fnotmuch-wiki diff --git a/remoteusage.mdwn b/remoteusage.mdwn index 19de212..2e867e2 100644 --- a/remoteusage.mdwn +++ b/remoteusage.mdwn @@ -24,7 +24,8 @@ You will need to have the following items in place: that computer "client") 3. `ssh` and `dtach` on your client computer. (TODO: Make dtach -optional, or allow screen or tmux to be used instead.) +optional, or allow screen or tmux to be used instead. +[[Here|remotewrapper]] is a version that does not require dtach.) 4. password-free login (public key authentication) from client to server. [Here](http://www.debian-administration.org/articles/152) is a @@ -50,7 +51,7 @@ future calls can reuse the socket. SSH_BIN="ssh" USER="example_user" SSH_HOST="example.com" - SOCKET_DIR="/tmp/notmuch_socks" + SOCKET_DIR="/tmp/notmuch_$(id -u)" SSH_SOCKET="${SOCKET_DIR}/ssh.socket" NOTMUCH_REMOTE_BIN="notmuch" DTACH="/usr/bin/dtach" @@ -69,19 +70,8 @@ future calls can reuse the socket. create_socket_dir () { - - mkdir "${SOCKET_DIR}" $(id -u) - chmod 700 "${SOCKET_DIR}" - } - - check_create_socket_dir () - { - if ! check_for_socket_dir; then - create_socket_dir || - (echo "Couldn't create socket directory at ${SOCKET_DIR}" >&2 && exit 1) - elif ! check_socket_dir_owner_and_perm; then - (echo "Incorrect permissions at ${SOCKET_DIR}" >&2 && exit 1) - fi + mkdir "${SOCKET_DIR}" + chmod 700 "${SOCKET_DIR}" } check_for_socket () @@ -92,21 +82,29 @@ future calls can reuse the 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 || (check_create_socket_dir && start_socket) - CMD=$1 - shift + 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 printf -v ARGS "%q " "$@" - $SSH_BIN -S $SSH_SOCKET $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN ${CMD} ${ARGS} + $SSH_BIN -S $SSH_SOCKET $USER@$SSH_HOST $NOTMUCH_REMOTE_BIN ${ARGS} } - notmuch_run $@ - + notmuch_run "$@" Save this to a file, "remote-notmuch.sh", in your path.