Refactor backtunnel-share with cleanup logic, duration-based termination, and improved error handling; introduce backtunnel-share-gui for streamlined GUI-based operation
This commit is contained in:
45
scripts/backtunnel-share-gui
Normal file
45
scripts/backtunnel-share-gui
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2025. LUXIM d.o.o., Slovenia - Matjaž Mozetič.
|
||||
|
||||
# GUI wrapper for BackTunnel "Share" action (Dolphin service menu)
|
||||
# Prompts for parameters via kdialog and launches backtunnel-share in Konsole.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# --- Selection from Dolphin ---
|
||||
FOLDER="${1:-}"
|
||||
if [[ -z "$FOLDER" ]]; then
|
||||
kdialog --error "No folder selected." || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Defaults ---
|
||||
REMOTE_DEFAULT="user@vps.example.com"
|
||||
DURATION_DEFAULT="2h"
|
||||
TPORT_DEFAULT="2222"
|
||||
LPORT_DEFAULT="22"
|
||||
INVITE_MOUNT_DEFAULT="/mnt/remote-rssh"
|
||||
|
||||
# --- Prompts ---
|
||||
REMOTE="$(kdialog --inputbox "Remote (user@host or user:host):" "$REMOTE_DEFAULT")" || exit 1
|
||||
DUR="$(kdialog --combobox "Share duration" 30m 2h 6h 1d 2d --editable "$DURATION_DEFAULT")" || exit 1
|
||||
TPORT="$(kdialog --inputbox "Tunnel port on remote:" "$TPORT_DEFAULT")" || exit 1
|
||||
LPORT="$(kdialog --inputbox "Local SSH port to expose:" "$LPORT_DEFAULT")" || exit 1
|
||||
|
||||
INV="" # explicit if-then; avoids SC2015 ("A && B || C is not if-then-else")
|
||||
if kdialog --yesno "Print invite line for chat?"; then
|
||||
INV="-i"
|
||||
fi
|
||||
|
||||
QR=""
|
||||
if kdialog --yesno "Show QR code for the invite?"; then
|
||||
QR="--qr"
|
||||
fi
|
||||
|
||||
MP="$(kdialog --inputbox "Suggested mount point in invite:" "$INVITE_MOUNT_DEFAULT")" || exit 1
|
||||
|
||||
# --- Run share in Konsole (keeps session open) ---
|
||||
exec konsole --noclose -e backtunnel-share \
|
||||
"$FOLDER" with "$REMOTE" for "$DUR" \
|
||||
-p "$TPORT" -l "$LPORT" $INV $QR --invite-mount "$MP"
|
||||
Reference in New Issue
Block a user