118 lines
3.4 KiB
Bash
118 lines
3.4 KiB
Bash
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
if [ "$#" -gt 0 ] && [ "$1" == 'list' ]; then
|
|
|
|
ip -o link show | while IFS=: read -r _ name _; do
|
|
echo "${name}"
|
|
done
|
|
|
|
exit 0
|
|
|
|
elif [ "$#" -gt 0 ] && [ "$1" == 'kill' ]; then
|
|
|
|
shift
|
|
|
|
for interface in "$@"; do
|
|
|
|
device=$(busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager GetDeviceByIpIface s "$interface" | awk '{gsub(/"/,""); print $NF}')
|
|
|
|
echo $device
|
|
|
|
busctl call org.freedesktop.NetworkManager "$device" org.freedesktop.NetworkManager.Device Delete
|
|
|
|
done
|
|
|
|
elif [ "$#" -gt 0 ] && [ "$1" == 'bwrap-kill' ]; then
|
|
|
|
shift
|
|
|
|
for interface in "$@"; do
|
|
|
|
device=$(bwrap \
|
|
\
|
|
--ro-bind-try /usr/bin /usr/bin \
|
|
--symlink /usr/bin /bin \
|
|
--ro-bind-try /usr/lib /usr/lib \
|
|
--symlink /usr/lib /lib \
|
|
--ro-bind-try /usr/lib64 /usr/lib64 \
|
|
--symlink /usr/lib64 /lib64 \
|
|
--ro-bind-try /usr/sbin /usr/sbin \
|
|
--symlink /usr/sbin /sbin \
|
|
\
|
|
--ro-bind /etc/alternatives /etc/alternatives \
|
|
$(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \
|
|
--dev /dev \
|
|
--dev-bind-try /dev/dri /dev/dri \
|
|
--proc /proc \
|
|
--ro-bind /sys /sys \
|
|
--ro-bind /var /var \
|
|
\
|
|
--ro-bind /home /home \
|
|
\
|
|
busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager GetDeviceByIpIface s "$interface" | awk '{gsub(/"/,""); print $NF}')
|
|
|
|
echo $device
|
|
|
|
bwrap \
|
|
\
|
|
--ro-bind-try /usr/bin /usr/bin \
|
|
--symlink /usr/bin /bin \
|
|
--ro-bind-try /usr/lib /usr/lib \
|
|
--symlink /usr/lib /lib \
|
|
--ro-bind-try /usr/lib64 /usr/lib64 \
|
|
--symlink /usr/lib64 /lib64 \
|
|
--ro-bind-try /usr/sbin /usr/sbin \
|
|
--symlink /usr/sbin /sbin \
|
|
\
|
|
--ro-bind /etc/alternatives /etc/alternatives \
|
|
$(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \
|
|
--dev /dev \
|
|
--dev-bind-try /dev/dri /dev/dri \
|
|
--proc /proc \
|
|
--ro-bind /sys /sys \
|
|
--ro-bind /var /var \
|
|
\
|
|
--ro-bind /home /home \
|
|
\
|
|
busctl call org.freedesktop.NetworkManager "$device" org.freedesktop.NetworkManager.Device Delete
|
|
|
|
done
|
|
|
|
elif [ "$#" -gt 0 ] && [ "$1" == 'kill-mullvad' ]; then
|
|
|
|
pkill mullvad-gui; mullvad lockdown-mode set off && mullvad disconnect
|
|
|
|
exit 0
|
|
|
|
elif [ "$#" -gt 0 ] && [ "$1" == 'bwrap-kill-mullvad' ]; then
|
|
|
|
bwrap \
|
|
\
|
|
--ro-bind-try /usr/bin /usr/bin \
|
|
--symlink /usr/bin /bin \
|
|
--ro-bind-try /usr/lib /usr/lib \
|
|
--symlink /usr/lib /lib \
|
|
--ro-bind-try /usr/lib64 /usr/lib64 \
|
|
--symlink /usr/lib64 /lib64 \
|
|
--ro-bind-try /usr/sbin /usr/sbin \
|
|
--symlink /usr/sbin /sbin \
|
|
\
|
|
--ro-bind /etc/alternatives /etc/alternatives \
|
|
$(find /run -mindepth 1 -maxdepth 1 ! -path /run/dbus -printf '--bind %p %p ' 2>/dev/null) \
|
|
--dev /dev \
|
|
--dev-bind-try /dev/dri /dev/dri \
|
|
--proc /proc \
|
|
--ro-bind /sys /sys \
|
|
--ro-bind /var /var \
|
|
\
|
|
--ro-bind /home /home \
|
|
\
|
|
pkill mullvad-gui; mullvad lockdown-mode set off && mullvad disconnect
|
|
|
|
exit 0
|
|
|
|
else
|
|
echo 'Unknown action. Supported actions: "list", "kill [i ...]", "bwrap-kill [i ...]", "kill-mullvad", "bwrap-kill-mullvad".'
|
|
fi
|