summaryrefslogtreecommitdiffstats
path: root/lass/5pkgs/sshify/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lass/5pkgs/sshify/default.nix')
-rw-r--r--lass/5pkgs/sshify/default.nix38
1 files changed, 38 insertions, 0 deletions
diff --git a/lass/5pkgs/sshify/default.nix b/lass/5pkgs/sshify/default.nix
new file mode 100644
index 00000000..aba0ab6b
--- /dev/null
+++ b/lass/5pkgs/sshify/default.nix
@@ -0,0 +1,38 @@
+{ pkgs }:
+pkgs.writers.writeBashBin "sshify" ''
+ set -efu
+
+ TMPDIR=$(mktemp -d)
+
+ SSH_ARGS=()
+
+ while [[ "$#" -gt 0 ]]; do
+ case $1 in
+ --)
+ shift
+ break
+ ;;
+ *)
+ SSH_ARGS+=($1)
+ ;;
+ esac
+ shift
+ done
+
+ if [[ "$#" -le 0 ]]; then
+ echo no command specified
+ exit 1
+ fi
+
+ RANDOM_HIGH_PORT=$(shuf -i 20000-65000 -n 1)
+
+ cat << EOF >$TMPDIR/proxychains.conf
+ [ProxyList]
+ socks4 127.0.0.1 $RANDOM_HIGH_PORT
+ EOF
+
+ ssh -fNM -S "$TMPDIR/socket" -D "$RANDOM_HIGH_PORT" "''${SSH_ARGS[@]}"
+ trap "ssh -S $TMPDIR/socket -O exit bla 2>/dev/null; rm -rf $TMPDIR >&2" EXIT
+
+ ${pkgs.proxychains-ng}/bin/proxychains4 -q -f "$TMPDIR/proxychains.conf" "$@"
+''