#!/bin/sh

# Roughly based on this article:
# https://werat.github.io/2017/02/04/tmux-ssh-agent-forwarding.html
#
# NOTE: this file is executed by sshd as a child process, NOT sourced by the
# user's shell.  Any variable assignments or exports here have no effect on the
# shell environment the user will land in.

REMOTE_LINK="${HOME}/.ssh/ssh_auth_sock"

if [ -S "${SSH_AUTH_SOCK}" ] ; then
  # Always update the symlink to the latest session's socket.
  # This ensures that tmux (which uses the static path) always points to a
  # current agent.
  mkdir -p "$(dirname "${REMOTE_LINK}")"
  ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
fi

# if stdin is a tty, don't do the cookie step
if [ ! -t 0 ] ; then
  # Handle X forwarding, per sshd(8)
  if read -r proto cookie && [ -n "$DISPLAY" ]; then
    if [ "$(echo "$DISPLAY" | cut -c1-10)" = 'localhost:' ]; then
      # X11UseLocalhost=yes
      echo add "unix:$(echo "$DISPLAY" | cut -c11-)" "$proto" "$cookie"
    else
      # X11UseLocalhost=no
      echo add "$DISPLAY $proto $cookie"
    fi | xauth -q -
  fi
fi
