From c74613075ed777b4a1287b64bf675de89d724c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=A9vius?= <16948665+maevius669@users.noreply.github.com> Date: Tue, 5 Dec 2023 07:02:23 +0200 Subject: [PATCH] Add files via upload --- age-decrypt.desktop | 14 ++++++++++++++ age-encrypt.desktop | 19 +++++++++++++++++++ age-mime.xml | 9 +++++++++ install.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 age-decrypt.desktop create mode 100644 age-encrypt.desktop create mode 100644 age-mime.xml create mode 100644 install.sh diff --git a/age-decrypt.desktop b/age-decrypt.desktop new file mode 100644 index 0000000..ea32a20 --- /dev/null +++ b/age-decrypt.desktop @@ -0,0 +1,14 @@ +[Desktop Entry] +Actions=DecryptAGE +Type=Service +Icon=preferences-security +ServiceTypes=KonqPopupMenu/Plugin +MimeType=application/age +X-KDE-Priority=TopLevel +X-KDE-StartupNotify=true +X-KDE-Submenu=AGE Encryption + +[Desktop Action DecryptAGE] +Name=Decrypt +Icon=preferences-security +Exec=age -d -i ~/.age-key/"$(whoami)".age-key %f > %f.tmp && rename 's/(.*).{8}/$1/' *.age.tmp diff --git a/age-encrypt.desktop b/age-encrypt.desktop new file mode 100644 index 0000000..a765663 --- /dev/null +++ b/age-encrypt.desktop @@ -0,0 +1,19 @@ +[Desktop Entry] +Actions=tarEncryptAGE;EncryptAGE +Type=Service +Icon=preferences-security +ServiceTypes=KonqPopupMenu/Plugin +MimeType=all/all +X-KDE-Priority=TopLevel +X-KDE-StartupNotify=true +X-KDE-Submenu=AGE Encryption + +[Desktop Action tarEncryptAGE] +Name=Compress & Encrypt +Icon=preferences-security +Exec=tar -pzcf "%f.tar.gz" %f && age -R ~/.age-key/"$(whoami)" "%f.tar.gz" > "%f.tar.gz.age" && rm -f "%f.tar.gz" + +[Desktop Action EncryptAGE] +Name=Encrypt +Icon=preferences-security +Exec=age -R ~/.age-key/"$(whoami)" %f > "%f.age" diff --git a/age-mime.xml b/age-mime.xml new file mode 100644 index 0000000..a344d3c --- /dev/null +++ b/age-mime.xml @@ -0,0 +1,9 @@ + + + + AGE Encrypted File + + + + + diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..70d6e43 --- /dev/null +++ b/install.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +check() { + command -v $1 &> /dev/null +} + +# Check if Curl is installed +if ! check "curl"; then + echo "Installing Curl.." + if command -v apt &> /dev/null; then + sudo apt update && sudo apt install -y curl + elif command -v pacman &> /dev/null; then + sudo pacman -Sy --noconfirm curl + elif command -v yum &> /dev/null || command -v dnf &> /dev/null; then + sudo yum -y install curl + else + echo "System not supported. Install curl manually." + exit 1 + fi +fi + +# Check if AGE is installed +if ! check "age"; then + echo "Installing AGE encryption tool.." + sudo curl -s https://api.github.com/repos/FiloSottile/age/releases/latest | grep "browser_download_url.*linux-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | wget -qi - -O - | tar -xz -C /tmp + sudo mv /tmp/age/age /usr/bin/ + sudo mv /tmp/age/age-keygen /usr/bin/ + echo "AGE installed successfully." +fi + +# Copy files to their respective directories. +# .desktop files are copied to ServiceMenus dir for context menu on Dolphin +# and an XML file to MIME dir for files with .age extension to distinguish with an icon and a description. +echo "Copying files.." +cp age-encrypt.desktop ~/.local/share/kservices5/ServiceMenus/ +cp age-decrypt.desktop ~/.local/share/kservices5/ServiceMenus/ +xdg-mime install --mode user --novendor age-mime.xml + +# Create AGE key for current user at home folder .age-key +echo "Generating AGE key.." +mkdir -p ~/.age-key && age-keygen -o ~/.age-key/"$(whoami).age-key" +sed -n '2p' ~/.age-key/"$(whoami).age-key" > ~/.age-key/"$(whoami).pk" && sed 's/# public key: //' ~/.age-key/"$(whoami).pk" > ~/.age-key/"$(whoami)" && rm -f ~/.age-key/"$(whoami).pk" && sed -i '1i\# '$(whoami) ~/.age-key/"$(whoami)" +echo "Installation completed."