ProxmoxVE/vm/openwrt.sh
oOStroudyOo 53ed69e090 Squashed commit of the following:
commit 995fa24aaffa98b8e12e8ebe084cbce61f605995
Author: oOStroudyOo <111181956+oOStroudyOo@users.noreply.github.com>
Date:   Mon Dec 23 14:41:35 2024 +0000

    Improve motd

    Added gold colour.
    Added TABS (A longer version of TAB for central heading / Reduced code).
    Added building icon.
    Added hammer and spanner icon (GitHub).
    Change LXC Container title to more central location and in gold.
    Added website URL.
    Split the lines to show Org, Website and GitHub on separate lines.
    Change Org icon to building.
    Added the hammer and spanner emoji to GitHub line.
    Changed IP icon from idea to network.
    Added line break under the title for better readability.
    Added line break under the IP address for better readability.

commit 0d18fb33ce
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Sun Dec 22 10:45:03 2024 +0100

    Update navidrome-install.sh

commit 003f7c3ab4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Sun Dec 22 10:42:47 2024 +0100

    Update navidrome.sh

commit 525362f3c5
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Fri Dec 20 09:20:20 2024 +0100

    Changes

commit 9e6770f03b
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Fri Dec 20 09:14:04 2024 +0100

    Change to dpkg -i

commit 775ed987db
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Thu Dec 19 15:33:28 2024 +0100

    New Script: CheckMk

commit 8950eb302e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Thu Dec 19 09:48:05 2024 +0100

    Update apache-guacamole-install.sh

commit 3ac7c9093b
Merge: 9ae03880 75772753
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Thu Dec 19 09:28:30 2024 +0100

    Merge branch 'develop' of https://github.com/community-scripts/ProxmoxVE into develop

commit 9ae03880a4
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Thu Dec 19 09:28:13 2024 +0100

    Update Bookstack for testing

commit 757727537b
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 16:37:01 2024 +0100

    Update apache-guacamole-install.sh

commit 7e2b1fd87f
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 15:05:32 2024 +0100

    Suppres output

commit c00c17290e
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 14:10:01 2024 +0100

    Update zammad-install.sh

commit 66fafe2b10
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 14:00:00 2024 +0100

    Update zammad-install.sh

commit c85462809d
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 13:56:31 2024 +0100

    Update zammad-install.sh

commit 887c70c35a
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 13:47:11 2024 +0100

    Update zammad-install.sh

commit d87f3f777b
Author: Michel Roegl-Brunner <michel.roegl-brunner@htl-braunau.at>
Date:   Wed Dec 18 13:05:49 2024 +0100

    Push Zammad and Apache Guacamole

commit ef3bb43405
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 12:30:24 2024 +0100

    fix paths to tmp

commit b6104103cb
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:21:29 2024 +0100

    Update build.func

commit fbb1b7d88a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:12:32 2024 +0100

    Update authentik.sh

commit daba45f93a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:07:28 2024 +0100

    Add files via upload

commit a13c0617b2
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:07:02 2024 +0100

    Update authentik.sh

commit 934f989f10
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:03:12 2024 +0100

    Update authentik.sh

commit c1b2476a30
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Wed Dec 18 10:02:52 2024 +0100

    Add files via upload

commit b7e00c4885
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 13 11:42:19 2024 +0100

    dev

commit daf650be1f
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 13 11:40:40 2024 +0100

    test

commit 5a3dca218e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Tue Dec 10 14:41:59 2024 +0100

    Update alpine-vaultwarden-install.sh

commit b4c59c7044
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Tue Dec 10 09:44:54 2024 +0100

    Update nginxproxymanager.sh

commit 9ef229b90a
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Tue Dec 10 09:29:21 2024 +0100

    Update nginxproxymanager-install.sh

commit e6361570b3
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Tue Dec 10 09:23:56 2024 +0100

    Update keycloak.sh

commit f901cd55dd
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 13:16:27 2024 +0100

    Update build.func

commit 02a0d16bee
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 13:14:36 2024 +0100

    Update build.func

commit e30f96e038
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 11:26:35 2024 +0100

    switch *arr to arr

commit 90246d1537
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:38:14 2024 +0100

    add space option

commit 693ad497f6
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:35:19 2024 +0100

    update motd for OS_version/name

commit 107243d576
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:34:15 2024 +0100

    remove project in motd

commit e65593751c
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:32:15 2024 +0100

    noCancel

commit 7fc60c9039
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:23:24 2024 +0100

    switch nocancel

commit ef837ab8b9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:21:25 2024 +0100

    Update build.func

commit 37b398a5c9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:20:24 2024 +0100

    Update build.func

commit 6ea43228c4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:16:10 2024 +0100

    Update build.func

commit 8d89c107f9
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:08:57 2024 +0100

    Update build.func

commit 6e90b44e7e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:08:47 2024 +0100

    Update build.func

commit 4c2965f850
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 10:06:34 2024 +0100

    Update build.func

commit 29209dbee6
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:57:47 2024 +0100

    Update build.func

commit 63be70cc25
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:50:49 2024 +0100

    Update build.func

commit 02ded1ee47
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:46:39 2024 +0100

    Update build.func

commit b42d5c6a57
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:41:04 2024 +0100

    Update build.func

commit 9e90ab1921
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:39:16 2024 +0100

    Update build.func

commit 03301f12d2
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:36:00 2024 +0100

    Update build.func

commit d10c404b60
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:24:57 2024 +0100

    Update create_lxc.sh

commit b72eb02fde
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:19:32 2024 +0100

    space for spinner

commit 542c4f703b
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:11:02 2024 +0100

    Update install.func

commit 0f914e5ad7
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 09:06:49 2024 +0100

    TAGS > var_tags

commit d270b5535d
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 08:59:15 2024 +0100

    fix space in spinner

commit ffca06575e
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Mon Dec 9 08:58:22 2024 +0100

    fix space in  spinner

commit d73c19f5cd
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Sat Dec 7 22:10:22 2024 +0100

    Fix Ressource-Check for other languages

commit f107a60062
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Sat Dec 7 11:41:13 2024 +0100

    netbox HTTPS instead http

commit f6604e09d4
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:31:00 2024 +0100

    fix for dev branch

commit 8063b68434
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:28:44 2024 +0100

    Update install.func

commit c0ff715175
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:28:19 2024 +0100

    Update create_lxc.sh

commit ae614234df
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:26:57 2024 +0100

    prepare for develop branch

commit 0141f3fc86
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:24:05 2024 +0100

    Update build.func

commit 6d390bbd78
Author: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Date:   Fri Dec 6 15:19:58 2024 +0100

    Full Update
2024-12-23 15:14:53 +00:00

524 lines
17 KiB
Bash

#!/usr/bin/env bash
# Copyright (c) 2021-2024 tteck
# Author: tteck (tteckster)
# Jon Spriggs (jontheniceguy)
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Based on work from https://i12bretro.github.io/tutorials/0405.html
function header_info {
clear
cat <<"EOF"
____ _ __ __
/ __ \____ ___ ____| | / /____/ /_
/ / / / __ \/ _ \/ __ \ | /| / / ___/ __/
/ /_/ / /_/ / __/ / / / |/ |/ / / / /_
\____/ .___/\___/_/ /_/|__/|__/_/ \__/
/_/ W I R E L E S S F R E E D O M
EOF
}
header_info
echo -e "Loading..."
GEN_MAC=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
GEN_MAC_LAN=02:$(openssl rand -hex 5 | awk '{print toupper($0)}' | sed 's/\(..\)/\1:/g; s/.$//')
NEXTID=$(pvesh get /cluster/nextid)
YW=$(echo "\033[33m")
BL=$(echo "\033[36m")
HA=$(echo "\033[1;34m")
RD=$(echo "\033[01;31m")
BGN=$(echo "\033[4;92m")
GN=$(echo "\033[1;92m")
DGN=$(echo "\033[32m")
CL=$(echo "\033[m")
BFR="\\r\\033[K"
HOLD="-"
CM="${GN}${CL}"
CROSS="${RD}${CL}"
set -Eeo pipefail
trap 'error_handler $LINENO "$BASH_COMMAND"' ERR
trap cleanup EXIT
function error_handler() {
local exit_code="$?"
local line_number="$1"
local command="$2"
local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}"
echo -e "\n$error_message\n"
cleanup_vmid
}
function cleanup_vmid() {
if qm status $VMID &>/dev/null; then
qm stop $VMID &>/dev/null
qm destroy $VMID &>/dev/null
fi
}
function cleanup() {
popd >/dev/null
rm -rf $TEMP_DIR
}
TEMP_DIR=$(mktemp -d)
pushd $TEMP_DIR >/dev/null
function send_line_to_vm() {
echo -e "${DGN}Sending line: ${YW}$1${CL}"
for ((i = 0; i < ${#1}; i++)); do
character=${1:i:1}
case $character in
" ") character="spc" ;;
"-") character="minus" ;;
"=") character="equal" ;;
",") character="comma" ;;
".") character="dot" ;;
"/") character="slash" ;;
"'") character="apostrophe" ;;
";") character="semicolon" ;;
'\') character="backslash" ;;
'`') character="grave_accent" ;;
"[") character="bracket_left" ;;
"]") character="bracket_right" ;;
"_") character="shift-minus" ;;
"+") character="shift-equal" ;;
"?") character="shift-slash" ;;
"<") character="shift-comma" ;;
">") character="shift-dot" ;;
'"') character="shift-apostrophe" ;;
":") character="shift-semicolon" ;;
"|") character="shift-backslash" ;;
"~") character="shift-grave_accent" ;;
"{") character="shift-bracket_left" ;;
"}") character="shift-bracket_right" ;;
"A") character="shift-a" ;;
"B") character="shift-b" ;;
"C") character="shift-c" ;;
"D") character="shift-d" ;;
"E") character="shift-e" ;;
"F") character="shift-f" ;;
"G") character="shift-g" ;;
"H") character="shift-h" ;;
"I") character="shift-i" ;;
"J") character="shift-j" ;;
"K") character="shift-k" ;;
"L") character="shift-l" ;;
"M") character="shift-m" ;;
"N") character="shift-n" ;;
"O") character="shift-o" ;;
"P") character="shift-p" ;;
"Q") character="shift-q" ;;
"R") character="shift-r" ;;
"S") character="shift-s" ;;
"T") character="shift-t" ;;
"U") character="shift-u" ;;
"V") character="shift-v" ;;
"W") character="shift-w" ;;
"X") character="shift=x" ;;
"Y") character="shift-y" ;;
"Z") character="shift-z" ;;
"!") character="shift-1" ;;
"@") character="shift-2" ;;
"#") character="shift-3" ;;
'$') character="shift-4" ;;
"%") character="shift-5" ;;
"^") character="shift-6" ;;
"&") character="shift-7" ;;
"*") character="shift-8" ;;
"(") character="shift-9" ;;
")") character="shift-0" ;;
esac
qm sendkey $VMID "$character"
done
qm sendkey $VMID ret
}
TEMP_DIR=$(mktemp -d)
pushd $TEMP_DIR >/dev/null
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "OpenWrt VM" --yesno "This will create a New OpenWrt VM. Proceed?" 10 58); then
:
else
header_info && echo -e "⚠ User exited script \n" && exit
fi
function msg_info() {
local msg="$1"
echo -ne " ${HOLD} ${YW}${msg}..."
}
function msg_ok() {
local msg="$1"
echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
}
function msg_error() {
local msg="$1"
echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}"
}
function pve_check() {
if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then
msg_error "This version of Proxmox Virtual Environment is not supported"
echo -e "Requires Proxmox Virtual Environment Version 8.1 or later."
echo -e "Exiting..."
sleep 2
exit
fi
}
function arch_check() {
if [ "$(dpkg --print-architecture)" != "amd64" ]; then
echo -e "\n ${CROSS} This script will not work with PiMox! \n"
echo -e "Exiting..."
sleep 2
exit
fi
}
function ssh_check() {
if command -v pveversion >/dev/null 2>&1; then
if [ -n "${SSH_CLIENT:+x}" ]; then
if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then
echo "you've been warned"
else
clear
exit
fi
fi
fi
}
function exit-script() {
clear
echo -e "⚠ User exited script \n"
exit
}
function default_settings() {
VMID=$NEXTID
HN=openwrt
CORE_COUNT="1"
RAM_SIZE="256"
BRG="vmbr0"
VLAN=""
MAC=$GEN_MAC
LAN_MAC=$GEN_MAC_LAN
LAN_BRG="vmbr0"
LAN_IP_ADDR="192.168.1.1"
LAN_NETMASK="255.255.255.0"
LAN_VLAN=",tag=999"
MTU=""
START_VM="yes"
echo -e "${DGN}Using Virtual Machine ID: ${BGN}${VMID}${CL}"
echo -e "${DGN}Using Hostname: ${BGN}${HN}${CL}"
echo -e "${DGN}Allocated Cores: ${BGN}${CORE_COUNT}${CL}"
echo -e "${DGN}Allocated RAM: ${BGN}${RAM_SIZE}${CL}"
echo -e "${DGN}Using WAN Bridge: ${BGN}${BRG}${CL}"
echo -e "${DGN}Using WAN VLAN: ${BGN}Default${CL}"
echo -e "${DGN}Using WAN MAC Address: ${BGN}${MAC}${CL}"
echo -e "${DGN}Using LAN MAC Address: ${BGN}${LAN_MAC}${CL}"
echo -e "${DGN}Using LAN Bridge: ${BGN}${LAN_BRG}${CL}"
echo -e "${DGN}Using LAN VLAN: ${BGN}999${CL}"
echo -e "${DGN}Using LAN IP Address: ${BGN}${LAN_IP_ADDR}${CL}"
echo -e "${DGN}Using LAN NETMASK: ${BGN}${LAN_NETMASK}${CL}"
echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}"
echo -e "${DGN}Start VM when completed: ${BGN}yes${CL}"
echo -e "${BL}Creating a OpenWRT VM using the above default settings${CL}"
}
function advanced_settings() {
while true; do
if VMID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Virtual Machine ID" 8 58 $NEXTID --title "VIRTUAL MACHINE ID" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z "$VMID" ]; then
VMID="$NEXTID"
fi
if pct status "$VMID" &>/dev/null || qm status "$VMID" &>/dev/null; then
echo -e "${CROSS}${RD} ID $VMID is already in use${CL}"
sleep 2
continue
fi
echo -e "${DGN}Virtual Machine ID: ${BGN}$VMID${CL}"
break
else
exit-script
fi
done
if VM_NAME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 openwrt --title "HOSTNAME" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $VM_NAME ]; then
HN="openwrt"
else
HN=$(echo ${VM_NAME,,} | tr -d ' ')
fi
echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}"
else
exit-script
fi
if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 1 --title "CORE COUNT" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $CORE_COUNT ]; then
CORE_COUNT="1"
fi
echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}"
else
exit-script
fi
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 256 --title "RAM" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $RAM_SIZE ]; then
RAM_SIZE="256"
fi
echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}"
else
exit-script
fi
if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN Bridge" 8 58 vmbr0 --title "WAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $BRG ]; then
BRG="vmbr0"
fi
echo -e "${DGN}Using WAN Bridge: ${BGN}$BRG${CL}"
else
exit-script
fi
if LAN_BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN Bridge" 8 58 vmbr0 --title "LAN BRIDGE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $LAN_BRG ]; then
LAN_BRG="vmbr0"
fi
echo -e "${DGN}Using LAN Bridge: ${BGN}$LAN_BRG${CL}"
else
exit-script
fi
if LAN_IP_ADDR=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router IP" 8 58 $LAN_IP_ADDR --title "LAN IP ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $LAN_IP_ADDR ]; then
LAN_IP_ADDR="192.168.1.1"
fi
echo -e "${DGN}Using LAN IP ADDRESS: ${BGN}$LAN_IP_ADDR${CL}"
else
exit-script
fi
if LAN_NETMASK=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a router netmmask" 8 58 $LAN_NETMASK --title "LAN NETMASK" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $LAN_NETMASK ]; then
LAN_NETMASK="255.255.255.0"
fi
echo -e "${DGN}Using LAN NETMASK: ${BGN}$LAN_NETMASK${CL}"
else
exit-script
fi
if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN MAC Address" 8 58 $GEN_MAC --title "WAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $MAC1 ]; then
MAC="$GEN_MAC"
else
MAC="$MAC1"
fi
echo -e "${DGN}Using WAN MAC Address: ${BGN}$MAC${CL}"
else
exit-script
fi
if MAC2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN MAC Address" 8 58 $GEN_MAC_LAN --title "LAN MAC ADDRESS" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $MAC2 ]; then
LAN_MAC="$GEN_MAC_LAN"
else
LAN_MAC="$MAC2"
fi
echo -e "${DGN}Using LAN MAC Address: ${BGN}$LAN_MAC${CL}"
else
exit-script
fi
if VLAN1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a WAN Vlan (leave blank for default)" 8 58 --title "WAN VLAN" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $VLAN1 ]; then
VLAN1="Default"
VLAN=""
else
VLAN=",tag=$VLAN1"
fi
echo -e "${DGN}Using WAN Vlan: ${BGN}$VLAN1${CL}"
else
exit-script
fi
if VLAN2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a LAN Vlan" 8 58 999 --title "LAN VLAN" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $VLAN2 ]; then
VLAN2="999"
LAN_VLAN=",tag=$VLAN2"
else
LAN_VLAN=",tag=$VLAN2"
fi
echo -e "${DGN}Using LAN Vlan: ${BGN}$VLAN2${CL}"
else
exit-script
fi
if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default)" 8 58 --title "MTU SIZE" --cancel-button Exit-Script 3>&1 1>&2 2>&3); then
if [ -z $MTU1 ]; then
MTU1="Default"
MTU=""
else
MTU=",mtu=$MTU1"
fi
echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}"
else
exit-script
fi
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "START VIRTUAL MACHINE" --yesno "Start VM when completed?" 10 58); then
START_VM="yes"
else
START_VM="no"
fi
echo -e "${DGN}Start VM when completed: ${BGN}$START_VM${CL}"
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create OpenWrt VM?" --no-button Do-Over 10 58); then
echo -e "${RD}Creating a OpenWrt VM using the above advanced settings${CL}"
else
header_info
echo -e "${RD}Using Advanced Settings${CL}"
advanced_settings
fi
}
function start_script() {
if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then
header_info
echo -e "${BL}Using Default Settings${CL}"
default_settings
else
header_info
echo -e "${RD}Using Advanced Settings${CL}"
advanced_settings
fi
}
arch_check
pve_check
ssh_check
start_script
msg_info "Validating Storage"
while read -r line; do
TAG=$(echo $line | awk '{print $1}')
TYPE=$(echo $line | awk '{printf "%-10s", $2}')
FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}')
ITEM=" Type: $TYPE Free: $FREE "
OFFSET=2
if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then
MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET))
fi
STORAGE_MENU+=("$TAG" "$ITEM" "OFF")
done < <(pvesm status -content images | awk 'NR>1')
VALID=$(pvesm status -content images | awk 'NR>1')
if [ -z "$VALID" ]; then
echo -e "\n${RD}⚠ Unable to detect a valid storage location.${CL}"
echo -e "Exiting..."
exit
elif [ $((${#STORAGE_MENU[@]} / 3)) -eq 1 ]; then
STORAGE=${STORAGE_MENU[0]}
else
while [ -z "${STORAGE:+x}" ]; do
STORAGE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Storage Pools" --radiolist \
"Which storage pool you would like to use for the OpenWrt VM?\n\n" \
16 $(($MSG_MAX_LENGTH + 23)) 6 \
"${STORAGE_MENU[@]}" 3>&1 1>&2 2>&3) || exit
done
fi
msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location."
msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}."
msg_info "Getting URL for OpenWrt Disk Image"
response=$(curl -s https://openwrt.org)
stableversion=$(echo "$response" | sed -n 's/.*Current stable release - OpenWrt \([0-9.]\+\).*/\1/p')
URL="https://downloads.openwrt.org/releases/$stableversion/targets/x86/64/openwrt-$stableversion-x86-64-generic-ext4-combined.img.gz"
sleep 2
msg_ok "${CL}${BL}${URL}${CL}"
wget -q --show-progress $URL
echo -en "\e[1A\e[0K"
FILE=$(basename $URL)
msg_ok "Downloaded ${CL}${BL}$FILE${CL}"
gunzip -f $FILE >/dev/null 2>/dev/null || true
NEWFILE="${FILE%.*}"
FILE="$NEWFILE"
mv $FILE ${FILE%.*}
qemu-img resize -f raw ${FILE%.*} 512M >/dev/null 2>/dev/null
msg_ok "Extracted & Resized OpenWrt Disk Image ${CL}${BL}$FILE${CL}"
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
case $STORAGE_TYPE in
nfs | dir)
DISK_EXT=".qcow2"
DISK_REF="$VMID/"
DISK_IMPORT="-format qcow2"
;;
btrfs)
DISK_EXT=".raw"
DISK_REF="$VMID/"
DISK_IMPORT="-format raw"
;;
esac
for i in {0,1}; do
disk="DISK$i"
eval DISK${i}=vm-${VMID}-disk-${i}${DISK_EXT:-}
eval DISK${i}_REF=${STORAGE}:${DISK_REF:-}${!disk}
done
msg_info "Creating OpenWrt VM"
qm create $VMID -cores $CORE_COUNT -memory $RAM_SIZE -name $HN \
-onboot 1 -ostype l26 -scsihw virtio-scsi-pci --tablet 0
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
qm importdisk $VMID ${FILE%.*} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
qm set $VMID \
-efidisk0 ${DISK0_REF},efitype=4m,size=4M \
-scsi0 ${DISK1_REF},size=512M \
-boot order=scsi0 \
-tags proxmox-helper-scripts \
-description "<div align='center'><a href='https://Helper-Scripts.com'><img src='https://raw.githubusercontent.com/community-scripts/ProxmoxVE/develop/misc/images/logo-81x112.png'/></a>
# OpenWRT
<a href='https://ko-fi.com/D1D7EP4GF'><img src='https://img.shields.io/badge/&#x2615;-Buy me a coffee-blue' /></a>
</div>" >/dev/null
msg_ok "Created OpenWrt VM ${CL}${BL}(${HN})"
msg_info "OpenWrt is being started in order to configure the network interfaces."
qm start $VMID
sleep 15
msg_ok "Network interfaces are being configured as OpenWrt initiates."
send_line_to_vm ""
send_line_to_vm "uci delete network.@device[0]"
send_line_to_vm "uci set network.wan=interface"
send_line_to_vm "uci set network.wan.device=eth1"
send_line_to_vm "uci set network.wan.proto=dhcp"
send_line_to_vm "uci delete network.lan"
send_line_to_vm "uci set network.lan=interface"
send_line_to_vm "uci set network.lan.device=eth0"
send_line_to_vm "uci set network.lan.proto=static"
send_line_to_vm "uci set network.lan.ipaddr=${LAN_IP_ADDR}"
send_line_to_vm "uci set network.lan.netmask=${LAN_NETMASK}"
send_line_to_vm "uci set firewall.@zone[1].input='ACCEPT'"
send_line_to_vm "uci set firewall.@zone[1].forward='ACCEPT'"
send_line_to_vm "uci commit"
send_line_to_vm "halt"
msg_ok "Network interfaces have been successfully configured."
until qm status $VMID | grep -q "stopped"; do
sleep 2
done
msg_info "Bridge interfaces are being added."
qm set $VMID \
-net0 virtio,bridge=${LAN_BRG},macaddr=${LAN_MAC}${LAN_VLAN}${MTU} \
-net1 virtio,bridge=${BRG},macaddr=${MAC}${VLAN}${MTU} >/dev/null 2>/dev/null
msg_ok "Bridge interfaces have been successfully added."
if [ "$START_VM" == "yes" ]; then
msg_info "Starting OpenWrt VM"
qm start $VMID
msg_ok "Started OpenWrt VM"
fi
VLAN_FINISH=""
if [ "$VLAN" == "" ] && [ "$VLAN2" != "999" ]; then
VLAN_FINISH=" Please remember to adjust the VLAN tags to suit your network."
fi
msg_ok "Completed Successfully!\n${VLAN_FINISH}"