diff options
Diffstat (limited to '')
| -rwxr-xr-x | bin/w3m-sandbox | 99 | 
1 files changed, 99 insertions, 0 deletions
| diff --git a/bin/w3m-sandbox b/bin/w3m-sandbox new file mode 100755 index 0000000..3560442 --- /dev/null +++ b/bin/w3m-sandbox @@ -0,0 +1,99 @@ +#!/usr/bin/env dash +# https://git.sr.ht/~seirdy/bwrap-scripts +progname="$(basename "${0}")" + +help_text="Usage: $progname [OPTION...] [FILE] + +View a file or STDIN in w3m, sandboxed with bubblewrap. +Internet access is blocked; ideal for viewing HTML emails. + +Options: +  -h, --help            Print this help and exit +" + +usage() { +	printf '%s' "$help_text" +} + +# when the user passess bad args, send a msg to stderr and exit +# usage: bad_option <option> <reason> +bad_option() { +	echo "$progname: option $1: $2" >&2 +	usage >&2 +	exit 1 +} + +args='' + +# parse arguments +while [ $# -gt 0 ]; do +	case "$1" in +		-h | --help) +			usage +			exit 0 +			;; +		-*) +			args="$args $1" +			;; +		*) +			if [ -f "$1" ]; then +				file_path="$1" +			else +				args="$args $1" +			fi +			;; +	esac +	shift +done + +if [ -n "$TERMINFO" ]; then +	terminfo="$TERMINFO" +else +	terminfo="/usr/share/terminfo" +fi + +xdg_data="${XDG_DATA_HOME-$HOME/.local/share}" + +bwrap_wrapper() { +	env -i bwrap \ +		--ro-bind /home/devi/w3m/w3m /home/devi/w3m/w3m \ +		--ro-bind "$terminfo" /usr/share/terminfo \ +		--ro-bind "$HOME/.w3m" "$HOME/.w3m" \ +		--symlink usr/lib64 /lib64 \ +		--ro-bind /usr/lib64 /usr/lib64 \ +		--proc /proc \ +		--unshare-all \ +		--hostname RESTRICTED \ +		--setenv WWW_HOME "$HOME/.w3m" \ +		--setenv TERM "$TERM" \ +		--new-session --die-with-parent --cap-drop ALL \ +		"$@"  +		# "$@" 9<"$xdg_data/seccomp/seccomp-filter-default.bpf" + +} + +if [ -z "$file_path" ]; then +	bwrap_wrapper /home/devi/w3m/w3m \ +		-I %{charset} \ +		-T text/html \ +		-no-mouse \ +		-no-cookie \ +		-cols "$COLUMNS" \ +		-o display_link=true \ +		-o display_link_number=true \ +		-o display_image=false \ +		$args +else +	bwrap_wrapper \ +		--ro-bind "$(dirname "$file_path")" /data /home/devi/w3m/w3m \ +		-I %{charset} \ +		-T text/html \ +		-cols "$COLUMNS" \ +		-o display_link=true \ +		-o display_link_number=true \ +		-o display_image=false \ +		$args \ +		"/data/$(basename "$file_path")" +fi + +# vi:ft=sh | 
