From 66aff98afdb88c5d327509f9c573a2b98c6fb5a4 Mon Sep 17 00:00:00 2001 From: Anthony Axenov Date: Fri, 14 Nov 2025 10:45:09 +0800 Subject: [PATCH] wip3 --- install/_example | 46 +++++++++++++++++ install/anytype | 46 +++++++++++++++++ install/apache2 | 49 +++++++++++++++--- install/apt | 6 +-- install/canon-mg2500 | 55 +++++++++++++++++--- install/chrome | 57 ++++++++++++++++---- install/clamav | 56 ++++++++++++++++++-- install/docker | 97 +++++++++++++++++++++++----------- install/frkn | 53 ------------------- install/golang | 61 ++++++++++++++++------ install/jbmono | 20 ------- install/nerd-fonts | 66 +++++++++++++++++++++++ install/nvim | 81 +++++++++++++++++++++++------ scripts/frkn.sh | 115 ----------------------------------------- uninstall/apache2 | 10 ---- uninstall/canon-mg2500 | 15 ------ 16 files changed, 527 insertions(+), 306 deletions(-) create mode 100644 install/_example create mode 100755 install/anytype delete mode 100755 install/frkn delete mode 100755 install/jbmono create mode 100755 install/nerd-fonts delete mode 100755 scripts/frkn.sh delete mode 100755 uninstall/apache2 delete mode 100755 uninstall/canon-mg2500 diff --git a/install/_example b/install/_example new file mode 100644 index 0000000..43a2d3f --- /dev/null +++ b/install/_example @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +##makedesc: Example script + +set -eo pipefail + +install() { + echo + echo "===============================================" + echo "Installing example" + echo "===============================================" + echo + sleep 3 + echo + echo "Finish! example v1.2.3" + echo +} + +upgrade() { + echo + echo "===============================================" + echo "Upgrading example" + echo "===============================================" + echo + sleep 3 + echo + echo "Finish! example v1.2.3" + echo +} + +remove() { + echo + echo "===============================================" + echo "Removing example" + echo "===============================================" + echo + sleep 3 + echo + echo "Finish!" + echo +} + +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/anytype b/install/anytype new file mode 100755 index 0000000..2de74db --- /dev/null +++ b/install/anytype @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +##makedesc: Manage anytype (deb) + +set -eo pipefail + +installDir="$HOME/install/anytype" + +install() { + release="$(curl -s 'https://api.github.com/repos/anyproto/anytype-ts/releases/latest')" + tag="$(echo "$release" | jq -r '.tag_name')" + asset="$(echo "$release" | jq -r '.assets.[] | select(.name | test("amd64.deb$"))')" + url="$(echo "$asset" | jq -r '.browser_download_url')" + echo -e "$tag $url" + + echo + echo "===============================================" + echo "Installing anytype $tag" + echo "===============================================" + echo + + mkdir -p "$installDir" + filepath="$installDir/anytype_${tag}_amd46.deb" + wget "$url" -O "$filepath" + sudo dpkg -i "$filepath" + + echo + echo "Finish! $tag" + echo +} + +remove() { + echo + echo "===============================================" + echo "Removing anytype" + echo "===============================================" + echo + sudo apt purge -y anytype* + echo + echo "Finish!" + echo +} + +case "$1" in + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/apache2 b/install/apache2 index 4907851..f610a5f 100755 --- a/install/apache2 +++ b/install/apache2 @@ -1,11 +1,46 @@ #!/usr/bin/env bash -##makedesc: Install apache2 (latest) -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +##makedesc: Manage apache2 (apt) -title +install() { + echo + echo "===============================================" + echo "Installing apache2" + echo "===============================================" + echo + sudo apt install -y apache2 + sudo systemctl restart apache2 + echo + echo "Finish! $(apache2 -v)" + echo +} -apt_install apache2 -sudo systemctl restart apache2 +upgrade() { + echo + echo "===============================================" + echo "Upgrading apache2" + echo "===============================================" + echo + sudo apt upgrade -y apache2 apache2-data apache2-utils + sudo systemctl restart apache2 + echo + echo "Finish! $(apache2 -v)" + echo +} -success "apache2 installed!" -apache2 -v +remove() { + echo + echo "===============================================" + echo "Removing apache2" + echo "===============================================" + echo + sudo apt purge -y apache2* + echo + echo "Finish!" + echo +} + +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/apt b/install/apt index b918b2c..2a255de 100755 --- a/install/apt +++ b/install/apt @@ -1,5 +1,5 @@ #!/usr/bin/env bash -##makedesc: Install software from apt +##makedesc: Install basic software from apt sudo apt update && \ sudo apt upgrade -y --autoremove && \ @@ -34,17 +34,17 @@ sudo apt update && \ p7zip-full \ easyeffects \ software-properties-common \ - terminator \ ubuntu-restricted-extras \ unzip \ vlc \ ffmpeg \ - xclip \ inotify-tools \ notify-osd \ fonts-open-sans \ libnotify-bin \ tree \ earlyoom + # terminator + # xclip # sqlitebrowser # etckeeper diff --git a/install/canon-mg2500 b/install/canon-mg2500 index 536e058..61a31d4 100755 --- a/install/canon-mg2500 +++ b/install/canon-mg2500 @@ -1,13 +1,52 @@ #!/usr/bin/env bash -##makedesc: Install Canon Pixma MG2500 + ppa -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +##makedesc: Canon Pixma MG2500 + ppa -title +install() { + echo + echo "===============================================" + echo "Installing Canon Pixma MG2500 + ppa" + echo "===============================================" + echo + sudo add-apt-repository -y ppa:thierry-f/fork-michael-gruz + sudo apt install -y cnijfilter-mg2500series scangearmp-mg2500series + echo + echo "Finish!" + echo "Drivers for Canon Pixma MG2500 installed!" + echo "Now you must reboot PC and connect your printer." + echo +} -apt_ppa_add ppa:thierry-f/fork-michael-gruz +upgrade() { + echo + echo "===============================================" + echo "Upgrading Canon Pixma MG2500 + ppa" + echo "===============================================" + echo + sudo apt upgrade -y cnijfilter-mg2500series scangearmp-mg2500series + echo + echo "Finish! Canon Pixma MG2500 + ppa" + echo +} -apt_install cnijfilter-mg2500series -apt_install scangearmp-mg2500series +remove() { + echo + echo "===============================================" + echo "Removing Canon Pixma MG2500 + ppa" + echo "===============================================" + echo + # sudo apt purge -y cnijfilter-mg2500series scangearmp-mg2500series + sudp dpkg -r cnijfilter-mg2500series + sudp dpkg -r cnijfilter-common + sudp dpkg -r scangearmp-mg2500series + sudp dpkg -r scangearmp-common + sudo add-apt-repository -ry ppa:thierry-f/fork-michael-gruz + echo + echo "Finish!" + echo +} -success "Drivers for Canon Pixma MG2500 installed!" -info "Now you must reboot PC and connect your printer." +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/chrome b/install/chrome index 4fe1cf9..24488e3 100755 --- a/install/chrome +++ b/install/chrome @@ -1,17 +1,56 @@ #!/usr/bin/env bash -##makedesc: Install google chrome (latest) -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +##makedesc: Google Chrome (latest) + +set -eo pipefail # https://t.me/axenov_blog/251 -title +dest="$HOME/install/deb" +deb="$dest/google-chrome.deb" +url="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -mkdir -p "$HOME/install/deb" +install() { + echo + echo "===============================================" + echo "Installing Google Chrome" + echo "===============================================" + echo + mkdir -p "$dest" + wget "$url" -O "$deb" + sudo dpkg -i "$deb" + echo + echo "Finish! $(google-chrome --version)" + echo +} -download "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" \ - "$HOME/install/deb/google-chrome.deb" +upgrade() { + echo + echo "===============================================" + echo "Upgrading Google Chrome" + echo "===============================================" + echo + mkdir -p "$dest" + wget "$url" -O "$deb" + sudo dpkg -i "$deb" + echo + echo "Finish! $(google-chrome --version)" + echo +} -dpkg_install "$HOME/install/deb/google-chrome.deb" +remove() { + echo + echo "===============================================" + echo "Removing Google Chrome" + echo "===============================================" + echo + sudo dpkg -r google-chrome + echo + echo "Finish!" + echo +} -success "Google Chrome installed!" -google-chrome --version +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/clamav b/install/clamav index d8672a4..8cd87d4 100755 --- a/install/clamav +++ b/install/clamav @@ -1,6 +1,56 @@ #!/usr/bin/env bash -##makedesc: ClamAV (WIP) +##makedesc: ClamAV -sudo apt install clamav -y && \ - echo "DatabaseMirror packages.microsoft.com/clamav" | sudo tee -a /etc/clamav/freshclam.conf && \ +set -eo pipefail + +install() { + echo + echo "===============================================" + echo "Installing clamav" + echo "===============================================" + echo + + sudo apt install -y clamav + echo "DatabaseMirror packages.microsoft.com/clamav" \ + | sudo tee -a /etc/clamav/freshclam.conf sudo freshclam + + echo + echo "Finish!" + echo +} + +upgrade() { + echo + echo "===============================================" + echo "Upgrading clamav" + echo "===============================================" + echo + + sudo apt upgrade -y clamav + sudo freshclam + + echo + echo "Finish!" + echo +} + +remove() { + echo + echo "===============================================" + echo "Removing clamav" + echo "===============================================" + echo + + sudo apt purge -y clamav* + + echo + echo "Finish!" + echo +} + +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/docker b/install/docker index 231172f..4530e37 100755 --- a/install/docker +++ b/install/docker @@ -1,39 +1,78 @@ #!/usr/bin/env bash -##makedesc: Install docker (latest) + ppa -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +##makedesc: Docker + ppa # https://docs.docker.com/engine/install/ubuntu/ # https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user -title +set -eo pipefail -for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do - apt_remove $pkg -done +doRemove() { + sudo apt purge -y docker* podman-docker containerd runc +} -require ca-certificates lsb-release -source /etc/os-release +install_() { + echo + echo "===============================================" + echo "Installing Docker" + echo "===============================================" + echo + doRemove + sudo apt install -y ca-certificates lsb-release + source /etc/os-release + codename="$VERSION_CODENAME" + key="/etc/apt/keyrings/docker.asc" + arch=$(dpkg --print-architecture) + sudo install -m 0755 -d /etc/apt/keyrings + curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" -o "$key" + sudo chmod a+r $key + echo "deb [arch=$arch signed-by=$key] https://download.docker.com/linux/ubuntu $codename stable" \ + | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt update + sudo apt install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin + sudo usermod -aG docker "$(whoami)" + newgrp docker + echo + echo "Finish! $(docker --version)" + echo "Probably, you need to relogin to apply 'docker' group permanently." + echo +} -key="/etc/apt/keyrings/docker.asc" +upgrade() { + echo + echo "===============================================" + echo "Upgrading Docker" + echo "===============================================" + echo + sudo apt upgrade -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin + echo + echo "Finish!" + echo +} -sudo install -m 0755 -d /etc/apt/keyrings -sudo cdownload https://download.docker.com/linux/ubuntu/gpg $key -sudo chmod a+r $key +remove() { + echo + echo "===============================================" + echo "Removing Docker" + echo "===============================================" + echo + doRemove + echo + echo "Finish!" + echo +} -echo "deb [arch=$(dpkg_arch) signed-by=$key] https://download.docker.com/linux/ubuntu $VERSION_CODENAME stable" \ - | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - -apt_update -apt_install \ - docker-ce \ - docker-ce-cli \ - containerd.io \ - docker-buildx-plugin \ - docker-compose-plugin - -sudo usermod -aG docker $(whoami) -newgrp docker - -success "Docker installed!" -docker --version -info "Probably, you need to relogin to apply 'docker' group permanently." +case "$1" in + u|upgrade|update) upgrade ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac diff --git a/install/frkn b/install/frkn deleted file mode 100755 index fb100a0..0000000 --- a/install/frkn +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash -##makedesc: Install Wireguard + FRKN (deprecated) -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 - -# https://frkn.org/ru/installation - -title - -mkdir -p "$HOME/install/frkn" -cd "$HOME/install/frkn" - -apt_install wireguard jq - -countries=(jp nl tr at ru se) -for idx in ${!countries[@]}; do - country=${countries[idx]} - info "Downloading config for $country ($(expr $idx + 1)/${#countries[@]})" - - json=$(curl -s "https://api.frkn.org/peer?location=$country" | jq) - - iface_address=$(echo $json | jq -r .iface.address) - iface_privkey=$(echo $json | jq -r .iface.key) - iface_dns=$(echo $json | jq -r .iface.dns) - peer_pubkey=$(echo $json | jq -r .peer.pubkey) - peer_psk=$(echo $json | jq -r .peer.psk) - peer_allowed_ips=$(echo $json | jq -r .peer.allowed_ips) - peer_endpoint=$(echo $json | jq -r .peer.endpoint) - - cat << EOF > "frkn-$country.conf" -[Interface] -Address = $iface_address -DNS = $iface_dns -PrivateKey = $iface_privkey - -[Peer] -PublicKey = $peer_pubkey -PresharedKey = $peer_psk -AllowedIPs = $peer_allowed_ips -Endpoint = $peer_endpoint -PersistentKeepalive = 25 -EOF - -done - -sudo cp frkn-*.conf /etc/wireguard/ - -[ $? = 0 ] && { - echo - success "Wireguard + FRKN installed!" - wg --version - info "Use 'wg-quick (up|down) frkn-($(implode '|' ${countries[@]}))' to control connections" - info "Use 'sudo wg show' to see connection status" -} diff --git a/install/golang b/install/golang index 05be71a..1a12dd5 100755 --- a/install/golang +++ b/install/golang @@ -1,28 +1,55 @@ #!/usr/bin/env bash -##makedesc: Install golang v1.21.0 -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +##makedesc: Install golang # https://go.dev/dl/ # https://golang.org/doc/install -# https://www.vultr.com/docs/install-the-latest-version-of-golang-on-ubuntu +# https://github.com/udhos/update-golang/blob/master/update-golang.sh -[ $1 ] && VERSION="$1" || VERSION="1.23.0" -title "Installing golang v$VERSION..." +set -eo pipefail -FILE="go$VERSION.linux-amd64.tar.gz" -sudo rm -rf /usr/local/go && \ - download "https://golang.org/dl/$FILE" "/tmp/$FILE" && \ - sudo tar -xzf "/tmp/$FILE" -C /usr/local && \ - rm -rf "/tmp/$FILE" && \ - sudo chown $USER: -R /usr/local/go && \ - echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile" && \ - echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile" && \ - source ~/.profile +doRemove() { + [ -d "/usr/local/go" ] && sudo rm -rf "/usr/local/go" +} -[ $? = 0 ] && { +install() { + dlUrl="https://go.dev/dl" + json=$(curl -sSL "$dlUrl/?mode=json") + version=$(echo "$json" | jq -r '.[0].version') echo - success "golang installed!" - info "NOTE: now run 'source ~/.profile' to apply new env vars" + echo "===============================================" + echo "Installing golang v$version" + echo "===============================================" + echo + latestJson=$(echo "$json" | jq -r '.[0].files.[] | select (.kind == "archive" and .os == "linux" and .arch == "amd64")') + fileName=$(echo "$latestJson" | jq -r '.filename') + fileUrl="$dlUrl/$fileName" + downloadPath="$HOME/install" + archivePath="$downloadPath/$fileName" + doRemove + [ -f "$archivePath" ] || wget "$fileUrl" -O "$archivePath" + [ -f "$archivePath" ] && sudo tar -xzf "$archivePath" -C /usr/local + sudo chown "$USER": -R /usr/local/go + echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile" + echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile" + echo + echo "Finish!" go version +} + +remove() { + echo + echo "===============================================" + echo "Removing golang" + echo "===============================================" + echo + doRemove + echo + echo "Finish!" echo } + +case "$1" in + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac + diff --git a/install/jbmono b/install/jbmono deleted file mode 100755 index c36de48..0000000 --- a/install/jbmono +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -##makedesc: Install JetBrains Mono fonts -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 - -# https://www.jetbrains.com/lp/mono/#how-to-install - -title - -require unzip - -mkdir -p "$HOME/install/jbmono" "$HOME/.local/share/fonts/" -download "https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip" "$HOME/install/jbmono.zip" && \ - unzip -oj "$HOME/install/jbmono.zip" "fonts/ttf/*.ttf" -d "$HOME/.local/share/fonts/" && \ - fc-cache -vf "$HOME/.local/share/fonts/" - -[ $? = 0 ] && { - echo - success "JetBrains Mono fonts installed!" - echo -} diff --git a/install/nerd-fonts b/install/nerd-fonts new file mode 100755 index 0000000..e6595ea --- /dev/null +++ b/install/nerd-fonts @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +##makedesc: Install nerd-fonts + +set -eo pipefail + +#TODO nokia-sans + +downloadPath="$HOME/install/nerd-fonts" +installPath="$HOME/.local/share/fonts/" +url="https://github.com/ryanoasis/nerd-fonts/releases/latest/download" + +fonts=( + FiraCode + FiraMono + JetBrainsMono + Meslo + Noto + RobotoMono + Ubuntu + UbuntuMono + UbuntuSans +) + +install() { + echo + echo "===============================================" + echo "Installing nerd-fonts" + echo "===============================================" + echo + + [[ -d "$downloadPath" ]] || mkdir -p "$downloadPath" + + for fontname in "${fonts[@]}"; do + fontdir="$installPath/Nerd-$fontname" + wget "$url/$fontname.tar.xz" -O "$downloadPath/$fontname.tar.xz" + [[ -d "$installPath/$fontname" ]] || mkdir -p "$fontdir" + tar -xJf "$downloadPath/$fontname.tar.xz" -C "$fontdir" + done + + fc-cache -vf "$installPath" + + echo + echo "Finish!" + echo +} + +remove() { + echo + echo "===============================================" + echo "Removing nerd-fonts" + echo "===============================================" + echo + + find "$installPath" -type d -name "Nerd-*" -exec rm -rf {} + + fc-cache -vf "$installPath" + + echo + echo "Finish!" + echo +} + +case "$1" in + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac + diff --git a/install/nvim b/install/nvim index b93beaf..870c9a1 100755 --- a/install/nvim +++ b/install/nvim @@ -1,33 +1,80 @@ #!/usr/bin/env bash ##makedesc: Install nvim + lazyvim -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 +set -eo pipefail # https://www.lazyvim.org/installation # https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/ -title +# TODO https://github.com/rockerBOO/awesome-neovim +# TODO https://docs.astronvim.com -require git +url="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz" +downloadPath="$HOME/install" +downloadTarGz="$downloadPath/nvim.tar.gz" +installPath="/opt/nvim" +cfgPath="$HOME/.config/nvim" +nvimDataPaths=( + "$cfgPath" + "$HOME"/.local/share/nvim + "$HOME"/.local/state/nvim + "$HOME"/.cache/nvim +) -nvimUrl="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz" -installPath="$HOME/install" -installTar="$installPath/nvim.tar.gz" +backup() { + echo "Backup configuration files..." + t=$(date +'%s') + for path in "${nvimDataPaths[@]}"; do + [[ -d "$path" ]] && cp -v "$path" "$path-$t.bak" + done + echo "Done" +} -[ -d "$HOME/.config/nvim" ] && mv "$HOME"/.config/nvim{,.bak} -[ -d "$HOME/.local/share/nvim" ] && mv "$HOME"/.local/share/nvim{,.bak} -[ -d "$HOME/.local/state/nvim" ] && mv "$HOME"/.local/state/nvim{,.bak} -[ -d "$HOME/.cache/nvim" ] && mv "$HOME"/.cache/nvim{,.bak} +install() { + echo + echo "===============================================" + echo "Installing neovim" + echo "===============================================" + echo -download "$nvimUrl" "$installTar" -unpack_targz "$installTar" "$installPath" + backup + wget "$url" -O "$downloadTarGz" + tar -xzf "$downloadTarGz" -C "$downloadPath" -sudo rm -vrf /opt/nvim -sudo mv -v "$installPath/nvim-linux-x86_64" /opt/nvim + sudo rm -rf "$installPath" + sudo mv "$downloadPath/nvim-linux-x86_64" "$installPath" -git.clone_quick https://github.com/LazyVim/starter "$HOME/.config/nvim" -rm -rf "$HOME/.config/nvim/.git" + git clone --depth=1 --single-branch https://github.com/LazyVim/starter "$cfgPath" + rm -rf "$cfgPath/.git" -sudo update-desktop-database && \ + sudo update-desktop-database xdg-desktop-menu forceupdate + echo + echo "Finish!" + nvim -v + echo +} + +remove() { + echo + echo "===============================================" + echo "Removing nerd-fonts" + echo "===============================================" + echo + + find "$downloadPath" -type d -name "Nerd-*" -exec rm -rf {} + + fc-cache -vf "$downloadPath" + + echo + echo "Finish!" + echo +} + +case "$1" in + b|backup) backup ;; + r|remove|d|delete|p|purge) remove ;; + *) install ;; +esac + + # export PATH="$PATH:/opt/nvim-linux-x86_64/bin" diff --git a/scripts/frkn.sh b/scripts/frkn.sh deleted file mode 100755 index d64ba9c..0000000 --- a/scripts/frkn.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash - -function disconnect() { - echo "Disconnecting: $1" - sudo wg-quick down "$1" - sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 - sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 - sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1 - echo -} - -function connect() { - echo "Connecting: frkn-$1" - sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 - sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0 - sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0 - sudo wg-quick up "frkn-$1" - echo -} - -function in_array() { - local find=$1 - shift - for e in "$@"; do - [[ "$e" == "$find" ]] && return 0 - done - return 1 -} - -function update_wg() { - sudo apt install -y wireguard jq && wg --version -} - -function update_frkn() { - local countries=(uk ru nl nl2 ch) - for idx in ${!countries[@]}; do - country=${countries[idx]} - echo "Downloading config for $country ($(expr $idx + 1)/${#countries[@]})" - - json=$(curl -s "https://api.frkn.org/peer?location=$country" | jq) - - iface_address=$(echo $json | jq -r .iface.address) - iface_privkey=$(echo $json | jq -r .iface.key) - iface_dns=$(echo $json | jq -r .iface.dns) - peer_pubkey=$(echo $json | jq -r .peer.pubkey) - peer_psk=$(echo $json | jq -r .peer.psk) - peer_allowed_ips=$(echo $json | jq -r .peer.allowed_ips) - peer_endpoint=$(echo $json | jq -r .peer.endpoint) - - cat << EOF > "./frkn-$country.conf" -[Interface] -Address = $iface_address -DNS = $iface_dns -PrivateKey = $iface_privkey - -[Peer] -PublicKey = $peer_pubkey -PresharedKey = $peer_psk -AllowedIPs = $peer_allowed_ips -Endpoint = $peer_endpoint -PersistentKeepalive = 25 -EOF - done - sudo mv -f ./frkn-*.conf /etc/wireguard/ -} - -command="$1" -countries=() -current=$(sudo wg show | head -n 1 | awk '{print $2}') - -for file in /etc/wireguard/*.conf; do - filename=${file/\/etc\/wireguard\/frkn-} - code=${filename/.conf/} - countries+=($code) -done - -correct=-1 -if [ -z "$command" ] ; then - while [ $correct -lt 0 ]; do - read -rp "Entry on of country code (${countries[*]}): " command - if in_array "$command" ${countries[@]}; then - correct=1 - else - echo "Неверный код страны!" - fi - done -fi - -case "$command" in - "update" ) - if update_wg && update_frkn; then - echo "Wireguard and FRKN updated" - else - echo "Something went wrong" - exit 1 - fi - ;; - - "down" ) - if [ -n "$current" ]; then - disconnect "$current" - fi - ;; - - "show" ) - sudo wg show - ;; - - * ) - if [ -n "$current" ]; then - disconnect "$current" - fi - connect "$command" - ;; -esac diff --git a/uninstall/apache2 b/uninstall/apache2 deleted file mode 100755 index aa232c4..0000000 --- a/uninstall/apache2 +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -##makedesc: Uninstall apache2 -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 - -title - -apt_remove apache2 - -success "apache2 removed!" - diff --git a/uninstall/canon-mg2500 b/uninstall/canon-mg2500 deleted file mode 100755 index 4d9641e..0000000 --- a/uninstall/canon-mg2500 +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -##makedesc: Uninstall Canon Pixma MG2500 + ppa -source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 - -title - -apt_ppa_remove ppa:thierry-f/fork-michael-gruz - -dpkg_remove cnijfilter-mg2500series -dpkg_remove cnijfilter-common -dpkg_remove scangearmp-mg2500series -dpkg_remove scangearmp-common - -success "Drivers for Canon Pixma MG2500 removed!" -