From 11322ebc0443c39dc41383f6b6c78ef75cc4fab3 Mon Sep 17 00:00:00 2001 From: ben Date: Wed, 4 Oct 2023 01:11:39 +0000 Subject: [PATCH] Add 'lxc-compile.sh' --- lxc-compile.sh | 290 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 290 insertions(+) create mode 100644 lxc-compile.sh diff --git a/lxc-compile.sh b/lxc-compile.sh new file mode 100644 index 0000000..4aede84 --- /dev/null +++ b/lxc-compile.sh @@ -0,0 +1,290 @@ +#!/bin/bash + +# LXC container env setup script and gittylab compiler for all routers + +print_success() { echo -e "\e[32m${@}\e[0m"; } +print_error() { echo -e "\e[31m${@}\e[0m"; } + +if [ `whoami` != "root" ] && [ `whoami` != "forge" ] && [ `whoami` != "homestead" ] && [ `whoami` != "vagrant" ]; +then + print_error "You must be root to run this script!" + exit 1 +fi + +echo "Updating apt..." +sudo_output=$(sudo bash -c "apt-get update 2>&1; echo $?") +sudo_result=$? +aptget_result=$(echo "${sudo_output}"| tail -1) + +echo "${sudo_output}" + +# Check results +if [ ${sudo_result} -eq 0 ]; then + if [ ${aptget_result} -eq 0 ]; then + print_success "Updated apt." + else + print_error "Failed to apt, apt-get error!" + fi +else + print_error "Failed to update apt, sudo error!" + exit 1 +fi + +echo "Installing openssh-server" +sudo_output=$(sudo bash -c "apt-get -y install openssh-server 2>&1; echo $?") +sudo_result=$? +aptget_result=$(echo "${sudo_output}"| tail -1) +echo "${sudo_output}" + +# Check results +if [ ${sudo_result} -eq 0 ]; then + if [ ${aptget_result} -eq 0 ]; then + print_success "Installed openssh-server." + else + print_error "Failed to install openssh-server, apt-get error!" + fi +else + print_error "Failed to install openssh-server, sudo error!" + exit 1 +fi + +sshd_config='/etc/ssh/sshd_config' + +sudo mv $sshd_config $sshd_config.bak +sudo rm -f $sshd_config + +echo "# SSH Config +Port 22 +Protocol 2 +HostKey /etc/ssh/ssh_host_rsa_key +HostKey /etc/ssh/ssh_host_dsa_key +HostKey /etc/ssh/ssh_host_ecdsa_key +HostKey /etc/ssh/ssh_host_ed25519_key +UsePrivilegeSeparation yes +KeyRegenerationInterval 3600 +ServerKeyBits 1024 +SyslogFacility AUTH +LogLevel INFO +LoginGraceTime 120 +PermitRootLogin yes +StrictModes yes +RSAAuthentication yes +PubkeyAuthentication yes +IgnoreRhosts yes +RhostsRSAAuthentication no +HostbasedAuthentication no +PermitEmptyPasswords no +ChallengeResponseAuthentication no +X11Forwarding yes +X11DisplayOffset 10 +PrintMotd no +PrintLastLog yes +TCPKeepAlive yes +AcceptEnv LANG LC_* +UsePAM yes +Subsystem sftp internal-sftp +Match group sftp +ChrootDirectory %h +X11Forwarding no +AllowTcpForwarding no +ForceCommand internal-sftp +" | sudo tee $sshd_config + +echo "Restarting SSH service..." +sudo service ssh restart + +echo "Creating user and group..." +sudo groupadd sftp + +echo "Enter username for sftp: " +read sftp_user + +echo "Enter password for sftp: " +stty -echo +read sftp_passwd +stty echo + +sudo useradd -m $sftp_user -g sftp -s /bin/false +echo "$sftp_user:$sftp_passwd" | sudo chpasswd +sudo mkdir -p /home/$sftp_user/files +sudo chown root:root /home/$sftp_user +sudo chown $sftp_user:sftp /home/$sftp_user/files +sudo chmod 755 /home/$sftp_user +sudo chmod 770 /home/$sftp_user/files + +echo "FTP INSTALL FINISHED! :)" + +# Install code server: +curl -fsSL https://code-server.dev/install.sh | sh +sudo systemctl enable --now code-server@root +sudo apt-get install -y gawk libncurses5-dev libz-dev zlib1g-dev git ccache pkg-config +sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib nano +sudo apt install gettext git libncurses-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget +sudo systemctl restart code-server@root + +# Ask user for choice: +echo "What router do you want to build packages for today?" +select opt in "x86" "Gli gl-a1300, Gli bl1300" "TPLink Archer C7, Gli Crete ar750" "ASUS RT-ac88u" "Linksys E8450, BPI-R64" "gl-mt1300" "Linksys WRT32x, AC3200acm" "glinet-xe300, gli Shadow, Slate" "mt300nv2 Yellow mini"; do + case $opt in + "x86") + sdk="https://downloads.openwrt.org/releases/21.02.7/targets/x86/64/openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + folder="openwrt-sdk-21.02.7-x86-64_gcc-8.4.0_musl.Linux-x86_64" + ;; + "Gli gl-a1300, Gli bl1300") + sdk="https://downloads.openwrt.org/releases/23.05.0-rc2/targets/ipq40xx/generic/openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz" + file="openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz" + folder="openwrt-sdk-23.05.0-rc2-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64" + ;; + "TPLink Archer C7, Gli Crete ar750") + sdk="https://downloads.openwrt.org/releases/22.03.3/targets/ath79/generic/openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64.tar.xz" + folder="openwrt-sdk-22.03.3-ath79-generic_gcc-11.2.0_musl.Linux-x86_64" + ;; + "ASUS RT-ac88u") + sdk="https://downloads.openwrt.org/releases/22.03.5/targets/bcm53xx/generic/openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz" + file="openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz" + folder="openwrt-sdk-22.03.5-bcm53xx-generic_gcc-11.2.0_musl_eabi.Linux-x86_64" + ;; + "Linksys E8450, BPI-R64") + sdk="https://downloads.openwrt.org/releases/22.03.5/targets/mediatek/mt7622/openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64.tar.xz" + folder="openwrt-sdk-22.03.5-mediatek-mt7622_gcc-11.2.0_musl.Linux-x86_64" + ;; + "gl-mt1300") + sdk="https://downloads.openwrt.org/releases/21.02.6/targets/ramips/mt7621/openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + folder="openwrt-sdk-21.02.6-ramips-mt7621_gcc-8.4.0_musl.Linux-x86_64" + ;; + "Linksys WRT32x, AC3200acm") + sdk="https://downloads.openwrt.org/releases/22.03.0/targets/mvebu/cortexa9/openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz" + file="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz" + folder="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64" + ;; + "glinet-xe300, gli Shadow, Slate") + sdk="https://downloads.openwrt.org/releases/22.03.0/targets/ath79/nand/openwrt-sdk-22.03.0-ath79-nand_gcc-11.2.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64.tar.xz" + folder="openwrt-sdk-22.03.0-mvebu-cortexa9_gcc-11.2.0_musl_eabi.Linux-x86_64" + ;; + "mt300nv2 Yellow mini") + sdk="https://downloads.openwrt.org/releases/21.02.3/targets/ramips/mt76x8/openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + file="openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64.tar.xz" + folder="openwrt-sdk-21.02.3-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64" + ;; + *) echo "Invalid option";; + esac + break +done + +#remove existing files +rm $file +rm -R $folder + +# Download and extract openwrt SDK: +if [[ ! -f $file ]]; then + wget $sdk + tar xf $file +fi +#change dir to SDK folder +cd $folder + +#add .po lang support +./scripts/feeds update -a +./scripts/feeds install -a +./scripts/feeds update packages +make menuconfig +git clone https://github.com/openwrt-dev/po2lmo.git tools/po2lmo +cd tools/po2lmo +make && sudo make install +cd .. +cd .. + +base_url="https://gittylab.com/ben/" + +gitapps=( + "luci-app-frigate" + "luci-app-easymesh" + "luci-app-atinout" + "luci-app-cellled" + "luci-app-mmconfig" + "luci-app-smstools3" + "luci-app-modeminfo" + "luci-app-btcpayserver" + "luci-theme-privaterouter" + "luci-app-nodered" + "luci-app-autogpt" + "luci-app-megamedia" + "luci-app-rtorrent" + "luci-app-webtop" + "luci-app-shortcutmenu" + "luci-app-plex" + "luci-app-filebrowser" + "luci-app-nextcloud" + "luci-app-seafile" + "luci-app-heimdall" + "luci-app-motioneye" + "luci-app-joplin" + "luci-app-ghostblog" + "luci-app-emby" + "luci-app-jellyfin" + "luci-app-prowlarr" + "luci-app-wordpress" + "luci-app-gitea" + "luci-app-libreddit" + "luci-app-whoogle" + "luci-app-vaultwarden" + "luci-app-mastodon" + "luci-app-discourse" + "luci-app-gotify" + "luci-app-jitsi" + "luci-app-owncast" + "luci-app-neko" + "luci-app-alltube" + "luci-app-bookstack" + "luci-app-searxng" + "luci-app-homeassistant" + "luci-app-photoprism" + "luci-app-qbittorrent" + "luci-app-simplex" + "luci-app-chatgpt" + "luci-app-lxc-attach" + "luci-app-fileassistant" +) + +# Ask user if they want to clone all gittylab packages: +read -p "Do you want to clone all openwrt packages from gittylab? [yes/no] " gitchoice + +if [[ $gitchoice == "yes" ]]; then + for gitapp in "${gitapps[@]}"; do + # Clone the app + git clone "${base_url}${gitapp}.git" "package/$gitapp" + + # Find directories named "libexec" and apply chmod +x to them and their contents recursively + find . -type d -name "libexec" -exec chmod -R +x {} \; + + echo "Permissions have been set for all 'libexec' directories and their contents." + + # Compile the app using OpenWRT SDK + make package/$gitapp/clean + ./scripts/feeds update -a + ./scripts/feeds install -a + make package/$gitapp/compile + done +else + +read -p "What single openwrt package do you want to clone and build today? " appname + +# Clone the app +git clone "${base_url}${appname}.git" "package/appname" + +# Find directories named "libexec" and apply chmod +x to them and their contents recursively +find . -type d -name "libexec" -exec chmod -R +x {} \; + +echo "Permissions have been set for all 'libexec' directories and their contents." + +# Compile the app using OpenWRT SDK +make package/$appname/clean +./scripts/feeds update -a +./scripts/feeds install -a +make package/$appname/compile +done