-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·80 lines (70 loc) · 2.32 KB
/
Copy pathinstall.sh
File metadata and controls
executable file
·80 lines (70 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
set -e
if [ "$EUID" -ne 0 ]; then
echo "Please run as root."
exit 1
fi
if ! command -v python3.13 &>/dev/null; then
echo "Python 3.13 is required. Please install it and run this script again."
exit 1
fi
INSTALL_DIR="/opt/virtunet"
VENV="$INSTALL_DIR/.venv"
echo "[VirtuNet] Finding Distro Family"
source /etc/os-release
FAMILY=""
for ID_CHECK in $ID $ID_LIKE; do
case "$ID_CHECK" in
ubuntu|debian) FAMILY="debian" ;;
arch|manjaro|cachyos) FAMILY="arch" ;;
fedora|rhel|centos) FAMILY="fedora" ;;
opensuse*) FAMILY="opensuse" ;;
esac
[ -n "$FAMILY" ] && break
done
echo "[VirtuNet] Distro Family Found: $FAMILY"
echo "[VirtuNet] Installing Build Dependencies."
case "$FAMILY" in
debian)
apt-get install -y build-essential libnetfilter-queue-dev python3.13-dev libxcb-cursor0 > /dev/null
;;
arch)
pacman -S --noconfirm --needed base-devel libnetfilter_queue xcb-util-cursor > /dev/null
;;
fedora)
dnf install -y gcc libnetfilter_queue-devel python3-devel xcb-util-cursor > /dev/null
;;
opensuse)
zypper install -y gcc libnetfilter_queue-devel python313-devel xcb-util-cursor > /dev/null
;;
*)
echo "WARNING: Unsupported Distro, skipping build dependency install. Consult ReadMe about details of needed Build Dependencies."
;;
esac
echo "[VirtuNet] Building Folder Structure."
mkdir -p "$INSTALL_DIR"
cp -r . "$INSTALL_DIR"
echo "[VirtuNet] VirtuNet Folder Built At: $INSTALL_DIR"
echo "[VirtuNet] Creating Python .Venv Environment."
python3.13 -m venv "$VENV"
echo "[VirtuNet] Installing Python Dependencies to .Venv Environment."
"$VENV/bin/pip" install -r "$INSTALL_DIR/requirements.txt" > /dev/null
echo "[VirtuNet] Creating Run Script."
cat > /usr/local/bin/virtunet << 'EOF'
#!/bin/bash
cd /opt/virtunet
sudo PYWEBVIEW_GUI=qt /opt/virtunet/.venv/bin/python main.py
EOF
chmod +x /usr/local/bin/virtunet
echo "[VirtuNet] Creating Desktop Instance."
cat > /usr/share/applications/virtunet.desktop << 'EOF'
[Desktop Entry]
Name=VirtuNet
Comment=Network Simulation Tool
Exec=sudo virtunet
Icon=/opt/virtunet/GUI/Assets/VirtuNetIcon.png
Terminal=true
Type=Application
Categories=Network;Education;
EOF
echo "[VirtuNet] Installation Complete. To Launch Virtunet: sudo virtunet"