From: xf0r3m Date: Sat, 22 Nov 2025 15:36:10 +0000 (+0100) Subject: Cleansing - 22.11 X-Git-Url: https://gitweb.morketsmerke.org/?a=commitdiff_plain;h=c6b2d4fb425ff7ce48cbcb1689924e179bf44b46;p=immudex.git Cleansing - 22.11 --- diff --git a/README.md b/README.md index 17ede2e..11f7a0b 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ przed stworzeniem obrazu płyty nie jest póki co wymagane. ``` $ git clone https://github.com/xf0r3m/immudex $ cd immudex - $ ./immudex-build -- -- + $ ./immudex-build -- -- [nazwa_obrazu] [wersja_obrazu] ``` ### Zastrzeżenia i uznanie autorstwa: diff --git a/addons/atheros b/addons/atheros new file mode 100644 index 0000000..ff5dc07 --- /dev/null +++ b/addons/atheros @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e + +if [ ! -d /boot ]; then + mkdir /boot; + apt purge linux-image* --purge -y; + apt install linux-image-amd64; +fi + +cp -vv /etc/apt/sources.list /etc/apt/sources.list.d/atheros.list; +sed -e 's/main/contrib non-free non-free-firmware/g' -i /etc/apt/sources.list.d/atheros.list; + +apt update; +apt install firmware-atheros -y; +rm /etc/apt/sources.list.d/atheros.list; +apt update; + +apt-get autoclean; +apt-get autoremove; +apt-get clean; diff --git a/addons/chirp b/addons/chirp new file mode 100644 index 0000000..0af1418 --- /dev/null +++ b/addons/chirp @@ -0,0 +1,12 @@ +#!/bin/bash + +cd /tmp +mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.old +#wget https://archive.chirpmyradio.com/chirp_next/next-20240319/chirp-20240319-py3-none-any.whl +chirpURL="https://ftp.morketsmerke.org/chirp/chirp-20240419-py3-none-any.whl" +wget ${chirpURL}; +pip3 install $(basename $chirpURL); +apt install -y python-wxtools + +wget https://ftp.morketsmerke.org/chirp/chirp.desktop -O /usr/share/applications/chirp.desktop; +wget https://ftp.morketsmerke.org/chirp/chirp.png -O /usr/share/pixmaps/chirp.png; diff --git a/addons/displaylink b/addons/displaylink new file mode 100644 index 0000000..b35bb9d --- /dev/null +++ b/addons/displaylink @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ $(uname -m) = "x86_64" ]; then + INSTALLED_KERNEL_VERSION="$(apt-cache policy linux-image-amd64 | sed -n '2p' | awk '{printf $2}')"; + RUNNING_KERNEL_VERSION="$(uname -v | awk '{printf $5}')"; + + if [ ! "$INSTALLED_KERNEL_VERSION" = "$RUNNING_KERNEL_VERSION" ]; then + echo "You need up to date your kernel first."; + exit 1; + else + if $(mount > /dev/null 2>&1); then + mkdir /tmp/displaylink; + cd /tmp/displaylink; + wget "https://ftp.morketsmerke.org/displaylink/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu6.0-EXE.zip"; + unzip "DisplayLink USB Graphics Software for Ubuntu6.0-EXE.zip" + chmod 775 displaylink-driver-6.0.0-24.run; + ./displaylink-driver-6.0.0-24.run; + else + echo "Compilation requires primary system interfaces as /dev /dev/pts /proc /run and /sys"; + exit 1; + fi + fi +fi diff --git a/addons/iwlwifi b/addons/iwlwifi index fbeb47b..f69e181 100644 --- a/addons/iwlwifi +++ b/addons/iwlwifi @@ -12,7 +12,7 @@ cp -vv /etc/apt/sources.list /etc/apt/sources.list.d/iwlwifi.list; sed -e 's/main/contrib non-free non-free-firmware/g' -i /etc/apt/sources.list.d/iwlwifi.list; apt update; -apt install firmware-iwlwifi; +apt install firmware-iwlwifi -y; rm /etc/apt/sources.list.d/iwlwifi.list; apt update; diff --git a/addons/kvm b/addons/kvm index 4f9b529..dce0afd 100755 --- a/addons/kvm +++ b/addons/kvm @@ -1,6 +1,12 @@ #!/bin/bash -apt install -y qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager; +apt install -y qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager libosinfo-bin; + +cp -vv ~/immudex/tools/bin/immudex-kvm /usr/local/bin; u=$(grep '1000' /etc/passwd | cut -d ":" -f 1) usermod -aG libvirt,libvirt-qemu $u; + +if [ "$DEBVER" = "stable" ]; then + sed -i '554i dynamic_ownership = 0' /etc/libvirt/qemu.conf; +fi diff --git a/addons/lampstack b/addons/lampstack index 454f01e..792263b 100644 --- a/addons/lampstack +++ b/addons/lampstack @@ -1,6 +1,6 @@ #!/bin/bash -#Anti-Frankenstein policy - 13.05.2024 +#Polityka antyfrankenstainowa - 13.05.2024 if [ "$DEBVER" != "testing" ]; then #baseVersion=$(head -1 /etc/apt/sources.list | awk '{print $3}') @@ -25,5 +25,4 @@ if [ "$DEBVER" != "testing" ]; then rm mysql-apt-config_0.8.29-1_all.deb; else echo "Lampstack installation is not supported for Debian testing."; - exit 1; fi diff --git a/addons/librewolf b/addons/librewolf index cd58976..32749ca 100644 --- a/addons/librewolf +++ b/addons/librewolf @@ -1,21 +1,26 @@ #!/bin/bash set -e -#Anti-Frankenstein policy - 13.05.2024 -#if [ "$DEBVER" = "stable" ]; then +#Polityka antyfrankenstainowa - 13.05.2024 +if [ "$DEBVER" != "testing" ]; then if [ "$(uname -m)" != "x86_64" ]; then echo "Other architectures than x86_64 (amd64) is not supported by this script"; - exit 1; - fi + fi - wget https://deb.librewolf.net/pool/bookworm/ -O /tmp/index.html; + if [ "$DEBVER" = "stable" ]; then + LibreWolfRepo="https://deb.librewolf.net/pool/bookworm/"; + else + LibreWolfRepo="https://deb.librewolf.net/pool/bullseye/"; + fi + + wget $LibreWolfRepo -O /tmp/index.html; latestLink=$(grep -o '' /tmp/index.html | sed 's/>/ /g' | cut -d " " -f 2 | sed -n '2,$p' | sed 's/"/ /g' | cut -d " " -f 2 | tail -1); filename=$(basename $latestLink); wget https://deb.librewolf.net${latestLink} -O /tmp/${filename}; apt install -y lsb-release libgdk-pixbuf2.0-0; dpkg -i /tmp/${filename}; -#else -# exit 1; -#fi +else + echo "LibreWolf installation is not supported for Debian testing."; +fi diff --git a/addons/ncspot b/addons/ncspot index 1785d2a..935bc55 100644 --- a/addons/ncspot +++ b/addons/ncspot @@ -1,24 +1,18 @@ #!/bin/bash - -#Anti-Frankenstein policy - 13.05.2024 -#if [ "$DEBVER" = "stable" ]; then - wget https://github.com/hrkfdn/ncspot/releases.atom - ver=$(grep 'title' releases.atom | sed -n '2p' | sed -e 's,,,g' -e 's,,,g' -e 's,^[[:space:]]*,,g') - sourceURL="https://github.com/hrkfdn/ncspot/archive/refs/tags/v${ver}.tar.gz"; - wget $sourceURL - tar -xf $(basename $sourceURL) - cd ncspot-${ver} - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - sudo apt install libdbus-1-dev libncursesw5-dev libpulse-dev libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev pkg-config build-essential -y - $HOME/.cargo/bin/cargo build --release - mv target/release/ncspot /usr/local/bin/ - echo "0.0.0.0 apresolve.spotify.com" | sudo tee -a /etc/hosts; - if [ $? -eq 0 ]; then - cd ..; - rm -rf ncspot-${ver}; - rm $(basename $sourceURL); - rm releases.atom; - fi -#else -# exit 1; -#fi +wget https://github.com/hrkfdn/ncspot/releases.atom +ver=$(grep 'title' releases.atom | sed -n '2p' | sed -e 's,,,g' -e 's,,,g' -e 's,^[[:space:]]*,,g') +sourceURL="https://github.com/hrkfdn/ncspot/archive/refs/tags/v${ver}.tar.gz"; +wget $sourceURL +tar -xf $(basename $sourceURL) +cd ncspot-${ver} +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +sudo apt install libdbus-1-dev libncursesw5-dev libpulse-dev libssl-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev pkg-config build-essential -y +$HOME/.cargo/bin/cargo build --release +mv target/release/ncspot /usr/local/bin/ +echo "0.0.0.0 apresolve.spotify.com" | sudo tee -a /etc/hosts +if [ $? -eq 0 ]; then + cd ..; + rm -rf ncspot-${ver}; + rm $(basename $sourceURL); + rm releases.atom; +fi diff --git a/addons/nushell b/addons/nushell index dfd8adb..23c6b0c 100644 --- a/addons/nushell +++ b/addons/nushell @@ -1,23 +1,17 @@ #!/bin/bash - -#Anti-Frankenstein policy - 13.05.2024 -#if [ "$DEBVER" = "stable" ]; then - wget https://github.com/nushell/nushell/releases.atom - ver=$(grep 'title' releases.atom | sed -n '2p' | sed -e 's,,,g' -e 's,,,g' -e 's,^[[:space:]]*,,g') - sourceURL="https://github.com/nushell/nushell/archive/refs/tags/${ver}.tar.gz"; - wget $sourceURL - tar -xf $(basename $sourceURL) - cd nushell-${ver} - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - sudo apt install libssl-dev pkg-config build-essential -y - $HOME/.cargo/bin/cargo build --release - mv target/release/nu /usr/local/bin/ - if [ $? -eq 0 ]; then +wget https://github.com/nushell/nushell/releases.atom +ver=$(grep 'title' releases.atom | sed -n '2p' | sed -e 's,,,g' -e 's,,,g' -e 's,^[[:space:]]*,,g') +sourceURL="https://github.com/nushell/nushell/archive/refs/tags/${ver}.tar.gz"; +wget $sourceURL +tar -xf $(basename $sourceURL) +cd nushell-${ver} +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +sudo apt install libssl-dev pkg-config build-essential -y +$HOME/.cargo/bin/cargo build --release +mv target/release/nu /usr/local/bin/ +if [ $? -eq 0 ]; then cd ..; rm -rf nushell-${ver}; rm $(basename $sourceURL); rm releases.atom; - fi -#else -# exit 1; -#fi +fi diff --git a/addons/realtek b/addons/realtek new file mode 100644 index 0000000..8d94f12 --- /dev/null +++ b/addons/realtek @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e + +if [ ! -d /boot ]; then + mkdir /boot; + apt purge linux-image* --purge -y; + apt install linux-image-amd64; +fi + +cp -vv /etc/apt/sources.list /etc/apt/sources.list.d/realtek.list; +sed -e 's/main/contrib non-free non-free-firmware/g' -i /etc/apt/sources.list.d/realtek.list; + +apt update; +apt install firmware-realtek -y; +rm /etc/apt/sources.list.d/realtek.list; +apt update; + +apt-get autoclean; +apt-get autoremove; +apt-get clean; diff --git a/addons/virt_manager b/addons/virt_manager index 96524d7..7e2ba81 100644 --- a/addons/virt_manager +++ b/addons/virt_manager @@ -1,3 +1,6 @@ #!/bin/bash apt install -y --no-install-recommends virt-manager; +apt install -y libosinfo-bin + +cp -vv ~/immudex/tools/bin/immudex-kvm /usr/local/bin; diff --git a/files/autostart-x4notes.desktop b/files/autostart-x4notes.desktop deleted file mode 100644 index 49544be..0000000 --- a/files/autostart-x4notes.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Version=0.9.4 -Type=Application -Name=autostart-x4notes -Comment=Uruchamianie xfce4-notes w cryptfs -Exec=/usr/local/bin/immudex-autostart-x4notes -OnlyShowIn=XFCE; -RunHook=0 -StartupNotify=false -Terminal=false -Hidden=false - diff --git a/files/config b/files/config deleted file mode 100644 index a6a5b59..0000000 --- a/files/config +++ /dev/null @@ -1,322 +0,0 @@ -servers = ( - { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, - { - address = "ssl.efnet.org"; - chatnet = "EFNet"; - port = "9999"; - use_tls = "yes"; - }, - { - address = "irc.esper.net"; - chatnet = "EsperNet"; - port = "6697"; - use_tls = "yes"; - tls_verify = "yes"; - }, - { - address = "chat.freenode.net"; - chatnet = "Freenode"; - port = "6697"; - use_tls = "yes"; - tls_verify = "yes"; - }, - { - address = "irc.gamesurge.net"; - chatnet = "GameSurge"; - port = "6667"; - }, - { - address = "eu.irc6.net"; - chatnet = "IRCnet"; - port = "6667"; - use_tls = "yes"; - }, - { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, - { - address = "irc.ircsource.net"; - chatnet = "IRCSource"; - port = "6667"; - }, - { address = "irc.netfuze.net"; chatnet = "NetFuze"; port = "6667"; }, - { - address = "irc.oftc.net"; - chatnet = "OFTC"; - port = "6697"; - use_tls = "yes"; - tls_verify = "yes"; - }, - { - address = "irc.quakenet.org"; - chatnet = "QuakeNet"; - port = "6667"; - }, - { - address = "irc.rizon.net"; - chatnet = "Rizon"; - port = "6697"; - use_tls = "yes"; - tls_verify = "yes"; - }, - { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, - { - address = "irc.undernet.org"; - chatnet = "Undernet"; - port = "6667"; - }, - { - address = "irc.morketsmerke.org"; - chatnet = "morketsmerke.org"; - port = "6697"; - use_tls = "yes"; - tls_verify = "yes"; - tls_capath = "/etc/ssl/certs"; - autoconnect = "yes"; - } -); - -chatnets = { - DALnet = { - type = "IRC"; - max_kicks = "4"; - max_msgs = "20"; - max_whois = "30"; - }; - EFNet = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "4"; - max_whois = "1"; - }; - EsperNet = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "4"; - max_whois = "1"; - }; - Freenode = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "4"; - max_whois = "1"; - }; - GameSurge = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - IRCnet = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - IRCSource = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "4"; - max_whois = "1"; - }; - NetFuze = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - OFTC = { type = "IRC"; max_kicks = "1"; max_msgs = "1"; max_whois = "1"; }; - QuakeNet = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - Rizon = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - SILC = { type = "SILC"; }; - Undernet = { - type = "IRC"; - max_kicks = "1"; - max_msgs = "1"; - max_whois = "1"; - }; - "morketsmerke.net" = { type = "IRC"; }; - "morketsmerke.org" = { type = "IRC"; }; -}; - -channels = ( - { name = "#lobby"; chatnet = "EsperNet"; autojoin = "No"; }, - { name = "#freenode"; chatnet = "Freenode"; autojoin = "No"; }, - { name = "#irssi"; chatnet = "Freenode"; autojoin = "No"; }, - { name = "#gamesurge"; chatnet = "GameSurge"; autojoin = "No"; }, - { name = "#irssi"; chatnet = "IRCNet"; autojoin = "No"; }, - { name = "#ircsource"; chatnet = "IRCSource"; autojoin = "No"; }, - { name = "#netfuze"; chatnet = "NetFuze"; autojoin = "No"; }, - { name = "#oftc"; chatnet = "OFTC"; autojoin = "No"; }, - { name = "silc"; chatnet = "SILC"; autojoin = "No"; }, - { - name = "#general"; - chatnet = "morketsmerke.net"; - autojoin = "yes"; - } -); - -aliases = { - ATAG = "WINDOW SERVER"; - ADDALLCHANS = "SCRIPT EXEC foreach my \\$channel (Irssi::channels()) { Irssi::command(\"CHANNEL ADD -auto \\$channel->{visible_name} \\$channel->{server}->{tag} \\$channel->{key}\")\\;}"; - B = "BAN"; - BACK = "AWAY"; - BANS = "BAN"; - BYE = "QUIT"; - C = "CLEAR"; - CALC = "EXEC - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi"; - CHAT = "DCC CHAT"; - DATE = "TIME"; - DEHIGHLIGHT = "DEHILIGHT"; - DESCRIBE = "ACTION"; - DHL = "DEHILIGHT"; - EXEMPTLIST = "MODE $C +e"; - EXIT = "QUIT"; - GOTO = "SCROLLBACK GOTO"; - HIGHLIGHT = "HILIGHT"; - HL = "HILIGHT"; - HOST = "USERHOST"; - INVITELIST = "MODE $C +I"; - J = "JOIN"; - K = "KICK"; - KB = "KICKBAN"; - KN = "KNOCKOUT"; - LAST = "LASTLOG"; - LEAVE = "PART"; - M = "MSG"; - MUB = "UNBAN *"; - N = "NAMES"; - NMSG = "^MSG"; - P = "PART"; - Q = "QUERY"; - RESET = "SET -default"; - RUN = "SCRIPT LOAD"; - SAY = "MSG *"; - SB = "SCROLLBACK"; - SBAR = "STATUSBAR"; - SIGNOFF = "QUIT"; - SV = "MSG * Irssi $J ($V) - https://irssi.org"; - T = "TOPIC"; - UB = "UNBAN"; - UMODE = "MODE $N"; - UNSET = "SET -clear"; - W = "WHO"; - WC = "WINDOW CLOSE"; - WG = "WINDOW GOTO"; - WJOIN = "JOIN -window"; - WI = "WHOIS"; - WII = "WHOIS $0 $0"; - WL = "WINDOW LIST"; - WN = "WINDOW NEW HIDDEN"; - WQUERY = "QUERY -window"; - WW = "WHOWAS"; -}; - -statusbar = { - - items = { - - barstart = "{sbstart}"; - barend = "{sbend}"; - - topicbarstart = "{topicsbstart}"; - topicbarend = "{topicsbend}"; - - time = "{sb $Z}"; - user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}"; - - window = "{sb $winref:$tag/$itemname{sbmode $M}}"; - window_empty = "{sb $winref{sbservertag $tag}}"; - - prompt = "{prompt $[.15]itemname}"; - prompt_empty = "{prompt $winname}"; - - topic = " $topic"; - topic_empty = " Irssi v$J - https://irssi.org"; - - lag = "{sb Lag: $0-}"; - act = "{sb Act: $0-}"; - more = "-- more --"; - }; - - default = { - - window = { - - disabled = "no"; - type = "window"; - placement = "bottom"; - position = "1"; - visible = "active"; - - items = { - barstart = { priority = "100"; }; - time = { }; - user = { }; - window = { }; - window_empty = { }; - lag = { priority = "-1"; }; - act = { priority = "10"; }; - more = { priority = "-1"; alignment = "right"; }; - barend = { priority = "100"; alignment = "right"; }; - }; - }; - - window_inact = { - - type = "window"; - placement = "bottom"; - position = "1"; - visible = "inactive"; - - items = { - barstart = { priority = "100"; }; - window = { }; - window_empty = { }; - more = { priority = "-1"; alignment = "right"; }; - barend = { priority = "100"; alignment = "right"; }; - }; - }; - - prompt = { - - type = "root"; - placement = "bottom"; - position = "100"; - visible = "always"; - - items = { - prompt = { priority = "-1"; }; - prompt_empty = { priority = "-1"; }; - input = { priority = "10"; }; - }; - }; - - topic = { - - type = "root"; - placement = "top"; - position = "1"; - visible = "always"; - - items = { - topicbarstart = { priority = "100"; }; - topic = { }; - topic_empty = { }; - topicbarend = { priority = "100"; alignment = "right"; }; - }; - }; - }; -}; -settings = { - core = { real_name = "Unknown"; user_name = "xf0r3m"; nick = "xf0r3m"; }; - "fe-text" = { actlist_sort = "refnum"; }; -}; diff --git a/files/default.theme b/files/default.theme deleted file mode 100644 index 79b1af5..0000000 --- a/files/default.theme +++ /dev/null @@ -1,295 +0,0 @@ -# When testing changes, the easiest way to reload the theme is with /RELOAD. -# This reloads the configuration file too, so if you did any changes remember -# to /SAVE it first. Remember also that /SAVE overwrites the theme file with -# old data so keep backups :) - -# TEMPLATES: - -# The real text formats that irssi uses are the ones you can find with -# /FORMAT command. Back in the old days all the colors and texts were mixed -# up in those formats, and it was really hard to change the colors since you -# might have had to change them in tens of different places. So, then came -# this templating system. - -# Now the /FORMATs don't have any colors in them, and they also have very -# little other styling. Most of the stuff you need to change is in this -# theme file. If you can't change something here, you can always go back -# to change the /FORMATs directly, they're also saved in these .theme files. - -# So .. the templates. They're those {blahblah} parts you see all over the -# /FORMATs and here. Their usage is simply {name parameter1 parameter2}. -# When irssi sees this kind of text, it goes to find "name" from abstracts -# block below and sets "parameter1" into $0 and "parameter2" into $1 (you -# can have more parameters of course). Templates can have subtemplates. -# Here's a small example: -# /FORMAT format hello {colorify {underline world}} -# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } -# When irssi expands the templates in "format", the final string would be: -# hello %G%Uworld%U%n -# ie. underlined bright green "world" text. -# and why "$0-", why not "$0"? $0 would only mean the first parameter, -# $0- means all the parameters. With {underline hello world} you'd really -# want to underline both of the words, not just the hello (and world would -# actually be removed entirely). - -# COLORS: - -# You can find definitions for the color format codes in docs/formats.txt. - -# There's one difference here though. %n format. Normally it means the -# default color of the terminal (white mostly), but here it means the -# "reset color back to the one it was in higher template". For example -# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would -# print yellow "foo" (as set with %Y) but "bar" would be green, which was -# set at the beginning before the {foo} template. If there wasn't the %g -# at start, the normal behaviour of %n would occur. If you _really_ want -# to use the terminal's default color, use %N. - -############################################################################# - -# default foreground color (%N) - -1 is the "default terminal color" -default_color = "-1"; - -# print timestamp/servertag at the end of line, not at beginning -info_eol = "false"; - -# these characters are automatically replaced with specified color -# (dark grey by default) -replaces = { "[]=" = "%K$*%n"; }; - -abstracts = { - ## - ## generic - ## - - # text to insert at the beginning of each non-message line - line_start = "%B-%n!%B-%n "; - - # timestamp styling, nothing by default - timestamp = "$*"; - - # any kind of text that needs hilighting, default is to bold - hilight = "%_$*%_"; - - # any kind of error message, default is bright red - error = "%R$*%n"; - - # channel name is printed - channel = "%_$*%_"; - - # nick is printed - nick = "%_$*%_"; - - # nick host is printed - nickhost = "[$*]"; - - # server name is printed - server = "%_$*%_"; - - # some kind of comment is printed - comment = "[$*]"; - - # reason for something is printed (part, quit, kick, ..) - reason = "{comment $*}"; - - # mode change is printed ([+o nick]) - mode = "{comment $*}"; - - ## - ## channel specific messages - ## - - # highlighted nick/host is printed (joins) - channick_hilight = "%C$*%n"; - chanhost_hilight = "{nickhost %c$*%n}"; - - # nick/host is printed (parts, quits, etc.) - channick = "%c$*%n"; - chanhost = "{nickhost $*}"; - - # highlighted channel name is printed - channelhilight = "%c$*%n"; - - # ban/ban exception/invite list mask is printed - ban = "%c$*%n"; - - ## - ## messages - ## - - # the basic styling of how to print message, $0 = nick mode, $1 = nick - msgnick = "%K<%n$0$1-%K>%n %|"; - - # message from you is printed. "ownnick" specifies the styling of the - # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the - # whole line. - - # Example1: You want the message text to be green: - # ownmsgnick = "{msgnick $0 $1-}%g"; - # Example2.1: You want < and > chars to be yellow: - # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; - # (you'll also have to remove <> from replaces list above) - # Example2.2: But you still want to keep <> grey for other messages: - # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; - # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; - # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; - # ownprivmsgnick = "%K{msgnick $*%K}%n"; - # privmsgnick = "%K{msgnick %R$*%K}%n"; - - # $0 = nick mode, $1 = nick - ownmsgnick = "{msgnick $0 $1-}"; - ownnick = "%_$*%n"; - - # public message in channel, $0 = nick mode, $1 = nick - pubmsgnick = "{msgnick $0 $1-}"; - pubnick = "%N$*%n"; - - # public message in channel meant for me, $0 = nick mode, $1 = nick - pubmsgmenick = "{msgnick $0 $1-}"; - menick = "%Y$*%n"; - - # public highlighted message in channel - # $0 = highlight color, $1 = nick mode, $2 = nick - pubmsghinick = "{msgnick $1 $0$2-%n}"; - - # channel name is printed with message - msgchannel = "%K:%c$*%n"; - - # private message, $0 = nick, $1 = host - privmsg = "[%R$0%K(%r$1-%K)%n] "; - - # private message from you, $0 = "msg", $1 = target nick - ownprivmsg = "[%r$0%K(%R$1-%K)%n] "; - - # own private message in query - ownprivmsgnick = "{msgnick $*}"; - ownprivnick = "%_$*%n"; - - # private message in query - privmsgnick = "{msgnick %R$*%n}"; - - ## - ## Actions (/ME stuff) - ## - - # used internally by this theme - action_core = "%_ * $*%n"; - - # generic one that's used by most actions - action = "{action_core $*} "; - - # own action, both private/public - ownaction = "{action $*}"; - - # own action with target, both private/public - ownaction_target = "{action_core $0}%K:%c$1%n "; - - # private action sent by others - pvtaction = "%_ (*) $*%n "; - pvtaction_query = "{action $*}"; - - # public action sent by others - pubaction = "{action $*}"; - - - ## - ## other IRC events - ## - - # whois - whois = "%# $[8]0 : $1-"; - - # notices - ownnotice = "[%r$0%K(%R$1-%K)]%n "; - notice = "%K-%M$*%K-%n "; - pubnotice_channel = "%K:%m$*"; - pvtnotice_host = "%K(%m$*%K)"; - servernotice = "%g!$*%n "; - - # CTCPs - ownctcp = "[%r$0%K(%R$1-%K)] "; - ctcp = "%g$*%n"; - - # wallops - wallop = "%_$*%n: "; - wallop_nick = "%n$*"; - wallop_action = "%_ * $*%n "; - - # netsplits - netsplit = "%R$*%n"; - netjoin = "%C$*%n"; - - # /names list - names_prefix = ""; - names_nick = "[%_$0%_$1-] "; - names_nick_op = "{names_nick $*}"; - names_nick_halfop = "{names_nick $*}"; - names_nick_voice = "{names_nick $*}"; - names_users = "[%g$*%n]"; - names_channel = "%G$*%n"; - - # DCC - dcc = "%g$*%n"; - dccfile = "%_$*%_"; - - # DCC chat, own msg/action - dccownmsg = "[%r$0%K($1-%K)%n] "; - dccownnick = "%R$*%n"; - dccownquerynick = "%_$*%n"; - dccownaction = "{action $*}"; - dccownaction_target = "{action_core $0}%K:%c$1%n "; - - # DCC chat, others - dccmsg = "[%G$1-%K(%g$0%K)%n] "; - dccquerynick = "%G$*%n"; - dccaction = "%_ (*dcc*) $*%n %|"; - - ## - ## statusbar - ## - - # default background for all statusbars. You can also give - # the default foreground color for statusbar items. - sb_background = "%4%w"; - window_border = "%4%w"; - - # default backround for "default" statusbar group - #sb_default_bg = "%4"; - # background for prompt / input line - sb_prompt_bg = "%n"; - # background for info statusbar - sb_info_bg = "%8"; - # background for topicbar (same default) - #sb_topic_bg = "%4"; - - # text at the beginning of statusbars. "sb" already puts a space there, - # so we don't use anything by default. - sbstart = ""; - # text at the end of statusbars. Use space so that it's never - # used for anything. - sbend = " "; - - topicsbstart = "{sbstart $*}"; - topicsbend = "{sbend $*}"; - - prompt = "[$*] "; - - sb = " %c[%n$*%c]%n"; - sbmode = "(%c+%n$*)"; - sbaway = " (%GzZzZ%n)"; - sbservertag = ":$0 (change with ^X)"; - sbnickmode = "$0"; - - # activity in statusbar - - # ',' separator - sb_act_sep = "%c$*"; - # normal text - sb_act_text = "%c$*"; - # public message - sb_act_msg = "%W$*"; - # hilight - sb_act_hilight = "%M$*"; - # hilight with specified color, $0 = color, $1 = text - sb_act_hilight_color = "$0$1-%n"; -}; diff --git a/files/gtk-main.css b/files/gtk-main.css deleted file mode 100644 index 6d9d648..0000000 --- a/files/gtk-main.css +++ /dev/null @@ -1,168 +0,0 @@ -@define-color notes_bg_color #343434; -@define-color theme_base_color #343434; -@define-color theme_text_color #eeeeec; -@define-color theme_bg_color @theme_base_color; -@define-color theme_fg_color shade (@theme_base_color, 0.3); -@define-color theme_selected_bg_color shade (@theme_base_color, 0.8); -@define-color theme_selected_fg_color shade (@theme_base_color, 1.4); -@define-color insensitive_bg_color shade (@theme_bg_color, 1.1); -@define-color insensitive_fg_color shade (@theme_fg_color, 1.8); - -@define-color borders shade (@theme_base_color, 0.8); -@define-color frame_color shade (@theme_base_color, 0.7); -@define-color notebook_active_tab_border shade (@theme_base_color, 1.1); -@define-color notebook_selected_tab_color shade (@theme_base_color, 0.9); - -* { - border-width: 0px; -} - -/* window and frame */ -window { - /* - background-image: linear-gradient(to bottom, - shade (@theme_base_color, 0.8), - shade (@theme_base_color, 0.95) 87px); - */ -} - -window frame { - padding: 1px 2px 4px 2px; - border: 1px solid shade (@theme_base_color, 0.7); -} - -/* icon buttons in window title bar */ -window widget#notes-icon-button { - color: #eeeeec; - background-color: transparent; -} -/* -window widget#notes-icon-button:active { - color: lighter (@theme_fg_color); - text-shadow: 1px 1px darker (@theme_bg_color); -} -*/ -window widget#notes-icon-button:disabled { - color: shade (#343434, 1.2); -} -window widget#notes-icon-button:hover { - color: shade (#eeeeec, 1.4); -} - -/* notebook */ -notebook > header { - background: transparent; -} -notebook > header.top { - border-bottom: 2px solid @theme_selected_bg_color; -} -notebook > header.bottom { - border-top: 2px solid @theme_selected_bg_color; -} -notebook > header.left { - border-right: 2px solid @theme_selected_bg_color; -} -notebook > header.right { - border-left: 2px solid @theme_selected_bg_color; -} - -/* notebook tab style */ -notebook > header.top tab, notebook > header.bottom tab { - padding: 0px 4px; -} -notebook > header.right tab, notebook > header.left tab { - padding: 4px 0px; -} - -notebook > header tab { - box-shadow: none; - color: @insensitive_fg_color; - background: transparent; -} -notebook > header tab:checked { - color: shade (@theme_text_color, 0.8); -} -notebook > header tab.dnd { - background: @theme_selected_bg_color; -} - -notebook > header.top > tabs > tab:checked { - box-shadow: inset 0px -3px shade (@theme_selected_bg_color, 1.3), 0px 2px 3px @theme_selected_bg_color; -} -notebook > header.top > tabs > tab:checked:hover { - box-shadow: inset 0px -2px shade (@theme_selected_bg_color, 1.3), 0px 2px 3px @theme_selected_bg_color; - background: @theme_selected_bg_color; /* NOTE: must be set before .dnd */ -} -notebook > header.top > tabs > tab:hover { - box-shadow: inset 0px -2px shade (@theme_selected_bg_color, 1.3); -} - -notebook > header.bottom > tabs > tab:checked { - box-shadow: inset 0px 3px shade (@theme_selected_bg_color, 1.3), 0px -2px 3px @theme_selected_bg_color; -} -notebook > header.bottom > tabs > tab:checked:hover { - box-shadow: inset 0px 2px shade (@theme_selected_bg_color, 1.3), 0px -2px 3px @theme_selected_bg_color; - background: @theme_selected_bg_color; -} -notebook > header.bottom > tabs > tab:hover { - box-shadow: inset 0px 2px shade (@theme_selected_bg_color, 1.3); -} - -notebook > header.left > tabs > tab:checked { - box-shadow: inset -3px 0px shade (@theme_selected_bg_color, 1.3), 0px 0px 3px @theme_selected_bg_color; -} -notebook > header.left > tabs > tab:checked:hover { - box-shadow: inset -2px 0px shade (@theme_selected_bg_color, 1.3), 0px 0px 3px @theme_selected_bg_color; - background: @theme_selected_bg_color; -} -notebook > header.left > tabs > tab:hover { - box-shadow: inset -2px 0px shade (@theme_selected_bg_color, 1.3); -} - -notebook > header.right > tabs > tab:checked { - box-shadow: inset 3px 0px shade (@theme_selected_bg_color, 1.3), 0px 0px 3px @theme_selected_bg_color; -} -notebook > header.right > tabs > tab:checked:hover { - box-shadow: inset 2px 0px shade (@theme_selected_bg_color, 1.3), 0px 0px 3px @theme_selected_bg_color; - background: @theme_selected_bg_color; -} -notebook > header.right > tabs > tab:hover { - box-shadow: inset 2px 0px shade (@theme_selected_bg_color, 1.3); -} - -textview > text { - color: @theme_text_color; - - background-image: linear-gradient(to bottom, - shade (@theme_bg_color, 1.2), - shade (@theme_bg_color, 1.3) 20em); - background-size: cover; - font-weight: bold; -} - -textview > text > selection { - color: #343434; - background-color: #eeeeec; -} - -scrollbar { - background-color: transparent; -} -scrollbar slider { - background-color: shade (@theme_bg_color, 0.55); - min-width: 8px; -} -scrollbar slider:hover { - background-color: shade (@theme_bg_color, 0.7); - transition: 400ms; -} -scrollbar slider:hover:active { - background-color: shade (@theme_bg_color, 0.55); - transition: 200ms; -} - -tooltip, tooltip * { - margin: 0px; - padding: 0px; -} - diff --git a/files/immudex_updates.service b/files/immudex_updates.service deleted file mode 100644 index abaaf3b..0000000 --- a/files/immudex_updates.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Refresh Debian packages list -After=network-online.target -Wants=network-online.target -Before=display-manager.service -[Service] -Type=OneShot -ExecStart=/usr/local/sbin/immudex-packages-update -RemainAfterExit=yes -[Install] -WantedBy=multi-user.target diff --git a/files/mozilla.tgz b/files/mozilla.tgz deleted file mode 100644 index 540acda..0000000 Binary files a/files/mozilla.tgz and /dev/null differ diff --git a/immudex-build b/immudex-build index 2dca94b..fa08174 100755 --- a/immudex-build +++ b/immudex-build @@ -1,6 +1,8 @@ #!/bin/bash +RED="\e[31m"; GREEN="\e[32m"; +YELLOW="\e[33m"; ENDCOLOR="\e[0m"; set -e @@ -41,12 +43,38 @@ case $2 in *) help; exit 1;; esac +if [ "$3" ]; then export cname=$3; fi +if [ "$4" ]; then export version=$4; fi + if [ ! -f /sbin/debootstrap ]; then create_enviroment fi #Removing old immudex build directory structure: if [ -d ${HOME}/build/immudex-${debver}/${arch} ]; then + #Unmounting potentialy mounted system interfaces: + echo "Unmount system interfaces..."; + for i in /dev/pts /proc /run /sys /dev; do + if [ "$i" = "/run" ]; then + #number of Elements + if [ "$debver" = "oldstable" ]; then + noE=8; + else + noE=9; + fi + elif [ "$i" = "/dev" ]; then + noE=14; + else + noE=0; + fi + if [ $(ls ${HOME}/build/immudex-${debver}/${arch}/chroot$i | wc -w ) -gt $noE ]; then + sudo umount ${HOME}/build/immudex-${debver}/${arch}/chroot$i >> /dev/null 2>&1; + echo -e "Umount system interface: ${i} [ ${YELLOW}Unmounted${ENDCOLOR} ]"; + else + echo -e "System interface: ${i} [ ${GREEN}Not mounted${ENDCOLOR} ]"; + fi + done + echo -e "Unmount system interfaces...[ ${GREEN}OK${ENDCOLOR} ]"; echo -n "Removing old immudex build directory structure..."; sudo rm -rvf ${HOME}/build/immudex-${debver}/${arch} >> immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi @@ -69,9 +97,19 @@ echo -n "Copying chroot script to chroot directory..."; sudo cp -vv ${HOME}/immudex/versions/base.sh ${HOME}/build/immudex-${debver}/${arch}/chroot >> immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi +#Mount system interfaces - required for build some addons. +for i in /dev /dev/pts /proc /run /sys; do + sudo mount -B $i ${HOME}/build/immudex-${debver}/${arch}/chroot$i; +done + #Executing chroot script, at least i trying: sudo chroot ${HOME}/build/immudex-${debver}/${arch}/chroot /bin/bash /base.sh $debver; +#Try to umount system interfaces it may fail. +for i in /dev/pts /proc /run /sys /dev; do + sudo umount ${HOME}/build/immudex-${debver}/${arch}/chroot$i; +done + #Removing chroot script. echo -n "Remove chroot script..."; sudo rm -vf ${HOME}/build/immudex-${debver}/${arch}/chroot/base.sh >> immudex_build.log 2>&1; @@ -93,24 +131,21 @@ cp -v $(ls -v ${HOME}/build/immudex-${debver}/${arch}/chroot/boot/vmlinuz-* | ta cp -v $(ls -v ${HOME}/build/immudex-${debver}/${arch}/chroot/boot/initrd.img-* | tail -1) ${HOME}/build/immudex-${debver}/${arch}/staging/live/initrd >> immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi -#Setting version for this image: -echo "-==Setting version for immudex image: $(date)==-" >> immudex_build.log; -echo -n "Setting version for this immudex image..."; -(cd ${HOME}/immudex && git log --pretty=oneline) | head -1 | awk '{printf $1}' | tee ${HOME}/build/immudex-${debver}/${arch}/staging/live/version >> immudex_build.log 2>&1; -echo >> immudex_build.log; -versionShort=$(cut -c 1-7 ${HOME}/build/immudex-${debver}/${arch}/staging/live/version); -if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi +export FILE="${HOME}/build/immudex-${debver}/${arch}/staging/live/changelog"; +export arch2=$(echo $1 | sed 's/-//g'); -#Setting compilation date for this image: -echo "-==Setting compilaztion date for immudex image: $(date)==-" >> immudex_build.log; -echo -n "Setting compilation date for this immudex image..."; -date | tee ${HOME}/build/immudex-${debver}/${arch}/staging/live/compilation_date >> immudex_build.log 2>&1; +#Setting changelog file for this image: +echo "-==Setting changelog file for this image: $(date)==-" >> immudex_build.log; +echo -n "Setting changelog file for this image..."; +(source ${HOME}/immudex/versions/template.sh; make_changelog_file $arch2;) if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi +eval $(grep '^COMMIT' $FILE); +versionShort=$(echo $COMMIT | awk '{printf $1}' | cut -c 1-7); + #Getting and copying bootloader files echo "-==Getting and copying bootloader files: $(date)==-" >> immudex_build.log; echo -n "Copying bootloader files..."; -arch2=$(echo $1 | sed 's/-//g'); cp -v ${HOME}/immudex/isolinux/${arch2}/* ${HOME}/build/immudex-${debver}/${arch}/staging/isolinux >> immudex_build.log 2>&1; cp -v ${HOME}/immudex/grub/${arch2}/* ${HOME}/build/immudex-${debver}/${arch}/staging/boot/grub >> immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi @@ -166,8 +201,16 @@ sudo mmd -i efiboot.img efi efi/boot >> ${oldcwd}/immudex_build.log 2>&1; sudo mcopy -vi efiboot.img ${HOME}/build/immudex-${debver}/${arch}/staging/EFI/boot/bootx64.efi ::efi/boot >> ${oldcwd}/immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi +if [ "$cname" ] && [ "$version" ]; then + isofilename="immudex-${debver}${arch}_${cname}_${version}.iso"; +elif [ "$cname" ]; then + isofilename="immudex-${debver}${arch}_${cname}.iso"; +else + isofilename="immudex-${debver}${arch}_${versionShort}.iso"; +fi +volid="$(basename $isofilename .iso)"; #Create iso image: cd $oldcwd; echo -n "Creating iso image..."; -xorriso as mkisofs -iso-level 3 -o "immudex-${debver}${arch}_${versionShort}.iso" -full-iso9660-filenames -volid "immudex-${debver}${arch}_${versionShort}" -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -eltorito-boot isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table --eltorito-catalog isolinux/isolinux.cat -eltorito-alt-boot -e /boot/grub/efiboot.img -no-emul-boot -isohybrid-gpt-basdat -append_partition 2 0xef ${HOME}/build/immudex-${debver}/${arch}/staging/boot/grub/efiboot.img ${HOME}/build/immudex-${debver}/${arch}/staging >> immudex_build.log 2>&1; +xorriso as mkisofs -iso-level 3 -o "${isofilename}" -full-iso9660-filenames -volid "${volid}" -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -eltorito-boot isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table --eltorito-catalog isolinux/isolinux.cat -eltorito-alt-boot -e /boot/grub/efiboot.img -no-emul-boot -isohybrid-gpt-basdat -append_partition 2 0xef ${HOME}/build/immudex-${debver}/${arch}/staging/boot/grub/efiboot.img ${HOME}/build/immudex-${debver}/${arch}/staging >> immudex_build.log 2>&1; if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi diff --git a/tools/bin/immudex-branch b/tools/bin/immudex-branch index a933ef8..1893bc1 100755 --- a/tools/bin/immudex-branch +++ b/tools/bin/immudex-branch @@ -1,8 +1,8 @@ #!/bin/bash -if grep -q 'trixie' /etc/os-release; then +if grep -q 'forky' /etc/os-release; then echo -n '-testing'; -elif grep -q 'bookworm' /etc/os-release; then +elif grep -q 'trixie' /etc/os-release; then echo -n '-stable'; else echo -n '-oldstable'; diff --git a/tools/bin/immudex-cdrip b/tools/bin/immudex-cdrip new file mode 100755 index 0000000..fc3cf0b --- /dev/null +++ b/tools/bin/immudex-cdrip @@ -0,0 +1,126 @@ +#!/bin/bash + +function XMLScrap() { + echo -n $(grep -o "<${1}>.*" $2 \ + | sed "s,<${1}>,," \ + | sed "s,,," \ + | sed 's,&,and,g'); +} + +function help() { + echo "immudex-cdrip - bash script for collection audio tracks from Audio CD."; + echo "morketsmerke.org @ 2025"; + echo; + echo "Usage:"; + echo " $ immudex-cdrip --rip-n-rename"; + echo; + echo "Options:"; + echo " --rip-only - Rips audio tracks from Audio CD, without quering CDIndex"; + echo " (MusicBrainz) database."; + echo; + echo " --get-disc-info - Getting info from CDIndex (MusicBrainz) database"; + echo " about Audio CD without ripping."; + echo; + echo " --rip-n-rename - Rips audio tracks from Audio CD, create Artist/Album folders"; + echo " and rename tracks according to data get CDIndex (MusicBrainz)"; + echo " database (normal usage)."; + echo; + echo "Script using CDDA2WAV tool from icedax package and libparanoia library (GNU/Linux Debian)."; +} + +function multipleArtistDisc() { + + FILE="$1"; + ARTIST="VA"; + ALBUM=$(XMLScrap "Title" $FILE); + NUMTRACKS=$(XMLScrap "NumTracks" $FILE); + TRACKPATH="${ARTIST} - ${ALBUM}"; + + mkdir -vp "${TRACKPATH}"; + + i=1; + while [ $i -le $NUMTRACKS ]; do + artist=$(grep -o ".*" $FILE \ + | sed -n "${i}p" \ + | sed 's,,,' \ + | sed 's,,,'); + + trackName=$(grep -o ".*" $FILE \ + | sed -n "${i}p" \ + | sed 's,,,' \ + | sed 's,,,'); + + if [ $i -lt 10 ]; then + trackNumber="0${i}"; + else + trackNumber=${i}; + fi + + audioFilename="audio_${trackNumber}.wav"; + infFilename=$(echo $audioFilename | sed 's/wav/inf/'); + + mv -v $audioFilename "${TRACKPATH}/${trackNumber}. ${artist} - ${trackName}.wav"; + rm -v ${infFilename}; + i=$(expr $i + 1); + done + + rm -v audio.cddb; + rm -v ${FILE}; +} + +if [ ! -x /usr/bin/cdda2wav ]; then + sudo apt-get install icedax cdparanoia -y; +fi + +if [ "$1" ] && [ "$1" = "--rip-only" ]; then + cdda2wav -vall cddb=-1 speed=4 -paranoia paraopts=no-verify -B -D /dev/sr0; + exit 0; +fi + +if [ "$1" ] && [ "$1" = "--get-disc-info" ]; then + cdda2wav -J -D /dev/sr0; + exit 0; +fi + +if [ "$1" ] && [ "$1" = "--rip-n-rename" ]; then + cdda2wav -vall cddb=1 speed=4 -paranoia paraopts=no-verify -B -D /dev/sr0; + + FILE="audio.cdindex"; + + if $(grep -q '' $FILE); then + multipleArtistDisc $FILE; + else + ARTIST=$(XMLScrap "Artist" $FILE); + ALBUM=$(XMLScrap "Title" $FILE); + NUMTRACKS=$(XMLScrap "NumTracks" $FILE); + TRACKPATH="${ARTIST}/${ALBUM}"; + + mkdir -vp "${TRACKPATH}"; + + i=1; + while [ $i -le $NUMTRACKS ]; do + trackName=$(grep -o ".*" $FILE \ + | sed -n "${i}p" \ + | sed 's,,,' \ + | sed 's,,,'); + + if [ $i -lt 10 ]; then + audioFilename="audio_0${i}.wav"; + trackNumber="0${i}"; + else + audioFilename="audio_${i}.wav"; + trackNumber="${i}"; + fi + infFilename=$(echo "$audioFilename" | sed 's/wav/inf/'); + mv -v $audioFilename "${TRACKPATH}/${trackNumber}. ${ARTIST} - ${trackName}.wav"; + rm -v $infFilename; + i=$(expr $i + 1); + done + + rm -v audio.cddb; + rm -v audio.cdindex; + fi + exit 0; +fi + +help; diff --git a/tools/bin/immudex-import-sshkeys b/tools/bin/immudex-import-sshkeys index 3cb56ad..345aebc 100755 --- a/tools/bin/immudex-import-sshkeys +++ b/tools/bin/immudex-import-sshkeys @@ -1,12 +1,44 @@ #!/bin/bash +function help() { + echo "immudex-import-sshkeys - script for copying ssh keys into user native home directory."; + echo "@ 2025 morketsmerke.org"; + echo; + echo "Usage:"; + echo "$ immudex-import-sshkeys" + echo "This comman should be run in other home directory, where ssh keys are stored."; + echo; + echo "Options:"; + echo " --help - print this message."; + echo " --import-hosts - import hostnames and adresses to /etc/host file (sudo required)"; + echo " from SSH config file if exist."; +} + +if [ "$1" ] && [ "$1" = "--help" ]; then + help; + exit 1; +fi + if $(ls $HOME | grep -q '.*_rsa.*'); then if [ -d /home/$USER/.ssh ]; then - cp -v ~/*_rsa* /home/$USER/.ssh; + cp -v ~/*_rsa* /home/$USER/.ssh; else mkdir /home/$USER/.ssh; chmod 700 /home/$USER/.ssh; cp -v ~/*_rsa* /home/$USER/.ssh; fi fi - +if $(ls -w1 $HOME | grep -q '^config$'); then + cp -v ~/config /home/$USER/.ssh; + if [ "$1" ] && [ "$1" = "--import-hosts" ]; then + i=1; + hostsCount=$(grep -o "Host .*" ~/config | wc -l); + while [ $i -le $hostsCount ]; do + host=$(grep -o "Host .*" ~/config | sed -n "${i}p" | awk '{printf $2}'); + hostName=$(grep -o "HostName .*" ~/config | sed -n "${i}p" | awk '{printf $2}'); + echo -e "${host}\t${hostName}" | sudo tee -a /etc/hosts; + i=$(expr $i + 1); + done + fi + chmod 600 /home/$USER/.ssh/config; +fi diff --git a/tools/bin/immudex-motd2 b/tools/bin/immudex-motd2 index 8dd29b6..d9fce1e 100755 --- a/tools/bin/immudex-motd2 +++ b/tools/bin/immudex-motd2 @@ -28,6 +28,7 @@ if $(df -h 2> /dev/null | grep -q '/dev/mapper'); then else echo -e " \tCRYPT_PART: N/A"; fi +echo -e " \tIP: $(ip addr show $(sed -n '2p' /proc/net/route | awk '{printf $1}') | grep 'inet\ ' | awk '{printf $2"\n"}')"; echo -e " \tPROCESSES: $(ps -aux | wc -l | awk '{printf $1}')"; if $(uptime | grep -q 'day'); then utime=$(uptime | awk '{printf $3" "$4" "$5}' | sed -e 's/\,$//' -e 's,:,h ,'); @@ -40,8 +41,8 @@ else echo -e " \tUPTIME: 0h ${utime}m"; fi fi -echo -e " \t$(uptime | grep -o "load.*$" | tr [a-z] [A-Z])"; +echo -e " \t$(uptime | grep -o "load.*$" | tr '[a-z]' '[A-Z]')"; echo; -echo -e "morketsmerke.org @ 2023 https://github.com/xf0r3m/immudex"; +echo -e "morketsmerke.org @ 2025 https://github.com/xf0r3m/immudex"; echo; echo "===================================================================="; diff --git a/tools/bin/immudex-padlock b/tools/bin/immudex-padlock index 902ce97..59343d7 100755 --- a/tools/bin/immudex-padlock +++ b/tools/bin/immudex-padlock @@ -1,7 +1,5 @@ #!/bin/bash -source /usr/local/bin/library.sh; - launcher="/home/${USER}/.config/xfce4/panel/launcher-14/16844255236.desktop"; function main_unlock() { @@ -42,7 +40,7 @@ function lock() { if [ "$mapperDeviceList" ]; then for dmDevice in $mapperDeviceList; do if sudo cryptsetup status /dev/mapper/${dmDevice} > /dev/null 2>&1; then - mountPoint=$(df --output=source,target /media/${USER}/${dmDevice} | tail -n 1 | awk '{printf $2}'); + mountPoint=$(df --output=source,target /dev/mapper/${dmDevice} | tail -n 1 | awk '{printf $2}'); if [ "$mountPoint" ]; then if $(sudo lsof $mountPoint > /dev/null 2>&1); then notify-send "Padlock" "The /dev/mapper/${dmDevice} cannot be unmount, because there are opened file or running proceses." --icon=dialog-error; @@ -50,13 +48,10 @@ function lock() { sudo umount $mountPoint; if [ $? -ne 0 ]; then notify-send "Padlock" "The /dev/mapper/${dmDevice} cannot be unmount, because there are other filesystem is mounted in." --icon=dialog-error; - else - deactivate_lvm_w_swap $dmDevice; - sudo cryptsetup close /dev/mapper/${dmDevice}; fi + sudo cryptsetup close /dev/mapper/${dmDevice}; fi else - deactivate_lvm_w_swap $dmDevice; sudo cryptsetup close /dev/mapper/${dmDevice}; fi fi diff --git a/tools/bin/immudex-run b/tools/bin/immudex-run new file mode 100755 index 0000000..aa30089 --- /dev/null +++ b/tools/bin/immudex-run @@ -0,0 +1,43 @@ +#!/bin/bash + +function help() { + echo "immudex-run - execute external apps which require home dir configuration"; + echo "@ 2025 morketsmerke.org"; + echo; + echo "Database and its configuration: "; + echo "By default immudex-run database is shell script file, containing 4 variables"; + echo "NATIVE_HOME_DIR - pointing normal user home dirs - /home/USER"; + echo "WORKING_HOME_DIR - pointing first immudex-crypt device - /ic0"; + echo "APPS - array, containing apps commands configured to execute via immudex-run"; + echo "CONFIG_DIRS - array, with app configuration path, usually stored in user home dir"; + echo; + echo "Usage: "; + echo "$ immudex-run "; +} + +if [ "$1" ]; then + EXE_APP=$1; + source /usr/local/share/immudex-run/immudex-run.base; + i=0; + for a in ${APPS[@]}; do + if [ "$a" = "$EXE_APP" ]; then + index=$i; + configDirsList=$(echo ${CONFIG_DIRS[$index]} | sed 's/,/\ /g'); + for configDir in $configDirsList; do + cp -prvv ${WORKING_HOME_DIR}/$configDir ${NATIVE_HOME_DIR}/${configDir}; + done + export HOME=$WORKING_HOME_DIR; + $EXE_APP; + fi + i=$(expr $i + 1); + done + if [ ! "$index" ]; then + echo "Application doesn't appear in database."; + echo "Configure /usr/local/share/immudex-run/immudex-run.base file"; + exit 1; + fi + #echo "index: $index"; +else + help; + exit 1; +fi diff --git a/tools/bin/immudex-secured-librewolf b/tools/bin/immudex-secured-librewolf new file mode 100755 index 0000000..5e4416b --- /dev/null +++ b/tools/bin/immudex-secured-librewolf @@ -0,0 +1,9 @@ +#!/bin/bash + +if [ ! -d /tmp/${USER} ]; then + mkdir /tmp/${USER} + cp -prvv /home/${USER}/.librewolf /tmp/${USER} +fi + +eth0=$(ip route show | grep 'default' | awk '{printf $5}'); +firejail --private=/tmp/${USER} --net=$eth0 /usr/lib/librewolf/librewolf diff --git a/tools/bin/immudex-version b/tools/bin/immudex-version index 6cfc89b..67be301 100755 --- a/tools/bin/immudex-version +++ b/tools/bin/immudex-version @@ -1,3 +1,4 @@ #!/bin/bash -cat /run/live/medium/live/version | cut -c 1-7 +eval $(grep '^COMMIT' /run/live/medium/live/changelog) +echo $COMMIT | awk '{printf $1}' | cut -c 1-7 diff --git a/tools/bin/immudex-ytplay2 b/tools/bin/immudex-ytplay2 new file mode 100755 index 0000000..2ccf90e --- /dev/null +++ b/tools/bin/immudex-ytplay2 @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +import sys +import subprocess +from youtube_search import YoutubeSearch + +def usage(): + + print( + ''' + immudex-ytplay - script which could play a video or audio track from youtube + @ 2023 (original bash script), 2025 (python script) morketsmerke.org + Options: + -s - search given keyword on youtube. + -v - play youtube video. + -a - play only youtube video audiotrack + Ommiting -s option, assume you are give a yt video link. + You have to put -v or -a before you paste a yt video link + When you put keywords in -s option, you need to choose + that you want listening an audiotrack (-a) oraz watch video (-v) + Usage: + $ immudex-ytplay -s -a [-f ytdl-format] 'lofi' + $ immudex-ytplay -v https://youtube.com/watch?v=... [-f ytdl-format] + $ immudex-ytplay -a https://youtube.com/watch?v=... [-f ytdl-format] + You can search again the same keywords puting 'r' or 'R' instead + of video numer + ''') + +def ytSearch(keywords, maxResults=15): + + i = "r" + while isinstance(i, str) and (i == "r" or i == "R"): + subprocess.run('clear') + results = YoutubeSearch(keywords, max_results=maxResults).to_dict() + + index = 1 + for video in results: + print(f"\033[1m\033[91m{index}\033[0m. Title: \033[92m{video['title']}\033[0m") + print(f" Channel: \033[93m{video['channel']}\033[0m, Duration: \033[94m{video['duration']}\033[0m, PubDate: \033[95m{video['publish_time']}\033[0m") + index += 1 + + i = input("Put number of video you wanna watch or put 'r' to reload search result: ") + + i = int(i) - 1 + return(results[i]['id'], results[i]['title'], results[i]['channel'], results[i]['duration'], results[i]['publish_time']); + +if sys.argv[1] == '-s': + if len(sys.argv) > 2: + if sys.argv[2] == '-v': + mode = "video" + elif sys.argv[2] == '-a': + mode = "audio" + else: + usage() + sys.exit(2) + if len(sys.argv) > 3: + if sys.argv[3][0:5] == "best[": + ytFormat=sys.argv[3] + else: + ytFormat = "best" + keywords=sys.argv[3] + if len(sys.argv) > 4: + keywords = sys.argv[4] + + #link = f"https://youtube.com/watch?v={ytSearch(keywords)}" + video = ytSearch(keywords) + #print(video) + subprocess.run('clear') + print(f"\033[91m1\033[0m. Title: \033[92m{video[1]}\033[0m") + print(f" Channel: \033[93m{video[2]}\033[0m, Duration: \033[94m{video[3]}\033[0m, PubDate: \033[95m{video[4]}\033[0m") + print("===================================================================") + if mode == 'audio': + ytFormat = "--no-video" + else: + ytFormat = "--ytdl-format=" + ytFormat + + subprocess.run(['mpv', ytFormat, 'ytdl://' + video[0]]) + +elif sys.argv[1] == '-a': + if len(sys.argv) > 2: + link=sys.argv[2] + ytFormat="--no-video" + subprocess.run(['mpv', ytFormat, 'ytdl://' + link]) + else: + usage() + sys.exit(2) + +elif sys.argv[1] == '-v': + if len(sys.argv) > 2: + link=sys.argv[2] + if len(sys.argv) > 3: + ytFormat="--ytdl-format=" + sys.argv[3] + else: + ytFormat="--ytdl-format=best" + subprocess.run(['mpv', ytFormat, 'ytdl://' + link]) + else: + usage() + sys.exit(2) diff --git a/tools/bin/library.sh b/tools/bin/library.sh index 01d711b..2e50210 100755 --- a/tools/bin/library.sh +++ b/tools/bin/library.sh @@ -57,22 +57,3 @@ function ascii_colors() { echo -e "${ENDCOLOR}"; } - -function deactivate_lvm_w_swap() { - if $(sudo blkid | grep "$1" | grep -q 'LVM2_member'); then - vgName=$(sudo pvs | grep "$1" | awk '{printf $2}' | sed 's/-/--/g'); - swapFile=$(cat /proc/swaps | sed -n 2p | awk '{printf $1}'); - if [ "$swapFile" ]; then - if $(ls -l /dev/mapper | grep "$(basename $swapFile)" | grep -q "$vgName"); then - sudo swapoff $swapFile; - fi - fi - sudo vgchange -a n; - fi -} - -function deactivate_lvm() { - if $(sudo blkid | grep "$1" | grep -q 'LVM2_member'); then - sudo vgchange -a n; - fi -} diff --git a/tools/sbin/immudex-create-media b/tools/sbin/immudex-create-media index 37c0d58..79cef35 100755 --- a/tools/sbin/immudex-create-media +++ b/tools/sbin/immudex-create-media @@ -92,7 +92,7 @@ if [ "$target" = "i386-efi" ]; then if [ $? -eq 0 ]; then echo -e "[${GREEN}OK${ENDCOLOR}]"; fi echo -n "Umounting all mounted filesystems..."; - umount /mnt/* > /dev/null 2>&1; + umount /mnt/usb /mnt/iso > /dev/null 2>&1; if [ $? -eq 0 ]; then echo -e "[${GREEN}OK${ENDCOLOR}]"; fi elif [ "$target" = "nuke" ]; then diff --git a/tools/sbin/immudex-crypt b/tools/sbin/immudex-crypt index ed8c76a..964558d 100755 --- a/tools/sbin/immudex-crypt +++ b/tools/sbin/immudex-crypt @@ -15,15 +15,6 @@ function help() { echo "# immudex-crypt create "; echo "# immudex-crypt open "; echo "# immudex-crypt close immudex-crypt[0-9] | ic[0-9] | [0-9]"; - echo "LVM prep:"; - echo "It's possible to mount EXT4 LV with your data, behind LUKS. For now"; - echo "only open function works, so you need prepare whole LVM structure on"; - echo "your disk or partition even with file system instalation. If there is"; - echo "only one EXT4 LV it will be mounted automaticly, but if there is more"; - echo "than one, you will be asked to choose which one shoud be mounted."; - echo "LVM behind LUKS, can be used for swap. Turning on swap partition is up"; - echo "to you, but close function check is there any swap partition in use"; - echo "and turn off swap before deactivating volume group and close LUKS."; } function list() { @@ -43,11 +34,7 @@ function list() { if [ "$mountPoint" ] && [ "$mountPoint" != "/dev" ]; then echo -e "$device\t /dev/mapper/${dmDevice}\t$mountPoint"; else - if $(sudo blkid | grep "${dmDevice}" | grep -q "LVM2_member"); then - echo -e "$device\t /dev/mapper/${dmDevice}\tNot mounted (LVM2_member)"; - else - echo -e "$device\t /dev/mapper/${dmDevice}\tNot mounted"; - fi + echo -e "$device\t /dev/mapper/${dmDevice}\tNot mounted"; fi fi done @@ -91,42 +78,18 @@ function open() { lastField=$(ls -l /dev/mapper/immudex-crypt${index} | grep -o ' ' | wc -l); dmDevice=$(ls -al /dev/mapper/immudex-crypt${index} | cut -d " " -f ${lastField}- | cut -d "/" -f2); if ! $(sudo file -s /dev/${dmDevice} | grep -q 'ext4'); then - if $(sudo file -s /dev/${dmDevice} | grep -q 'LVM'); then - lvm_member=0; - else - echo "Could not determine filesystem of unlocked device."; - echo -n "Format this device to ext4? (y/n): " - read format; - if [ "$format" = "y" ]; then - mkfs.ext4 /dev/mapper/immudex-crypt${index}; - else - echo "Refuse to mount."; - cryptsetup close immudex-crypt${index}; - exit 1; - fi - fi - fi - if [ "$lvm_member" ]; then - luksDeviceName="immudex-crypt${index}"; - vgName=$(sudo pvs | grep "$luksDeviceName" | awk '{printf $2}'); - extLVS=$(sudo blkid | grep "$(echo "$vgName" | sed 's,-,--,g')" | grep 'ext4' | sed 's/://g' | awk '{printf $1" "}'); - if [ $(echo $extLVS | wc -w) -gt 0 ]; then - if [ $(echo $extLVS | wc -w) -gt 1 ]; then - select extLV in $extLVS; do - break; - done - mount $extLV /media/${USER}/immudex-crypt${index}; - else - mount $extLVS /media/${USER}/immudex-crypt${index}; - fi + echo "Could not determine filesystem of unlocked device."; + echo -n "Format this device to ext4? (y/n): " + read format; + if [ "$format" = "y" ]; then + mkfs.ext4 /dev/mapper/immudex-crypt${index}; else echo "Refuse to mount."; cryptsetup close immudex-crypt${index}; exit 1; - fi - else - mount /dev/mapper/immudex-crypt${index} /media/${USER}/immudex-crypt${index}; + fi fi + mount /dev/mapper/immudex-crypt${index} /media/${USER}/immudex-crypt${index}; if [ ! -e /ic${index} ]; then ln -s /media/${USER}/immudex-crypt${index} /ic${index}; fi @@ -146,24 +109,11 @@ function close() { cryptfsName=$1; fi if cryptsetup status /dev/mapper/${cryptfsName} > /dev/null 2>&1; then - mountPoint=$(df --output=source,target /media/${USER}/${cryptfsName} | tail -1 | awk '{printf $2}'); + mountPoint=$(df --output=source,target /dev/mapper/${cryptfsName} | tail -1 | awk '{printf $2}'); if [ "$mountPoint" ] && [ "$mountPoint" != "/dev" ]; then umount -R $mountPoint; - if $(sudo blkid | grep "$cryptfsName" | grep -q 'LVM2_member'); then - vgName=$(sudo pvs | grep "$cryptfsName" | awk '{printf $2}' | sed 's/-/--/g'); - swapFile=$(cat /proc/swaps | sed -n 2p | awk '{printf $1}'); - if [ "$swapFile" ]; then - if $(ls -l /dev/mapper | grep "$(basename $swapFile)" | grep -q "$vgName"); then - sudo swapoff $swapFile; - fi - fi - sudo vgchange -a n; - fi cryptsetup close ${cryptfsName}; else - if $(sudo blkid | grep "${cryptfsName}" | grep -q 'LVM2_member'); then - sudo vgchange -a n; - fi cryptsetup close ${cryptfsName}; fi else diff --git a/tools/sbin/immudex-distrobox-swap-root b/tools/sbin/immudex-distrobox-swap-root deleted file mode 100755 index 1112c54..0000000 --- a/tools/sbin/immudex-distrobox-swap-root +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -if [ ! -d ${1}/containers ]; then - sudo cp -prvv /var/lib/containers ${1}; -fi - -sudo mount -B ${1}/containers /var/lib/containers; diff --git a/tools/sbin/immudex-docker-swap-root b/tools/sbin/immudex-docker-swap-root deleted file mode 100755 index fad8295..0000000 --- a/tools/sbin/immudex-docker-swap-root +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -sudo systemctl stop docker.socket -sudo systemctl stop docker.service -sudo systemctl stop containerd.service - -sudo sed -i "s,dockerd,dockerd --data-root=${1}/docker," /lib/systemd/system/docker.service - -if [ ! -d ${1}/docker ]; then sudo cp -prvv /var/lib/docker ${1}; fi - -sudo systemctl daemon-reload - -sudo systemctl start containerd.service -sudo systemctl start docker.socket -sudo systemctl start docker.service diff --git a/tools/sbin/immudex-nf b/tools/sbin/immudex-nf new file mode 100755 index 0000000..1653e1f --- /dev/null +++ b/tools/sbin/immudex-nf @@ -0,0 +1,108 @@ +#!/bin/bash + +RED="\e[31m"; +GREEN="\e[32m"; +YELLOW="\e[33m"; +ENDCOLOR="\e[0m"; + +function fillTo8bits() { + OCT_BITS=$2; + FLAG=0; + if [ $OCT_BITS -lt 8 ]; then + while [ $OCT_BITS -lt 8 ]; do + if [ $FLAG -eq 1 ]; then + OCT="0${OCT}"; + else + OCT="0${1}"; + fi + OCT_BITS=$(echo -n $OCT | wc -c | awk '{printf $1}'); + FLAG=1; + done + echo "$OCT"; + else + echo "$OCT"; + fi +} + +function getBinaryOCT() { + OCT=$(echo "obase=2;${1}" | bc); + OCT_BITS=$(echo -n $OCT | wc -c | awk '{printf $1}'); + echo "$(fillTo8bits $OCT $OCT_BITS)"; +} + +function printHelp() { + echo "immudex-nf - script to search host in network by IP or MAC address"; + echo "morketsmerke.org @ 2025"; + echo; + echo "Options: "; + echo " --is-free - SYN and UDP scan for check is given IP address is free and useable"; + echo; + echo "Usage: "; + echo "# immudex-nf "; +} + +if [ "$1" ]; then + + if [ "$1" = "--is-free" ]; then + echo "Scanning..."; + sudo nmap -sS $2 | sudo tee /tmp/immudex-nf_syn.txt > /dev/null 2>&1; + if [ $? -eq 0 ]; then echo -e "SYN Scanning...[ ${GREEN}OK${ENDCOLOR} ]"; fi + sudo nmap -sU $2 | sudo tee /tmp/immudex-nf-udp.txt > /dev/null 2>&1; + if [ $? -eq 0 ]; then echo -e "UDP Scanning...[ ${GREEN}OK${ENDCOLOR} ]"; fi + cat /tmp/immudex-nf_syn.txt /tmp/immudex-nf-udp.txt; + else + IFACE=$(cat /proc/net/route | sed -n '2p' | awk '{printf $1}'); + IP=$(ip addr show dev ${IFACE} | grep 'inet\ ' | awk '{printf $2}' | cut -d "/" -f 1); + CIDR=$(ip addr show dev ${IFACE} | grep 'inet\ ' | awk '{printf $2}' | cut -d "/" -f 2); + + OCT1=$(getBinaryOCT $(echo $IP | grep -o '[0-9]*' | sed -n '1p')); + OCT2=$(getBinaryOCT $(echo $IP | grep -o '[0-9]*' | sed -n '2p')); + OCT3=$(getBinaryOCT $(echo $IP | grep -o '[0-9]*' | sed -n '3p')); + OCT4=$(getBinaryOCT $(echo $IP | grep -o '[0-9]*' | sed -n '4p')); + + binIP="${OCT1}${OCT2}${OCT3}${OCT4}"; + ipAfterCut=$(echo -n $binIP | cut -c 1-$CIDR); + netBinIPBits=$CIDR; + + netBinIP=$ipAfterCut; + while [ $netBinIPBits -lt 32 ]; do + netBinIP="${netBinIP}0"; + netBinIPBits=$(echo -n $netBinIP | wc -c | awk '{printf $1}'); + done + + netOCT1=$(echo -n $netBinIP | cut -c 1-8); + netOCT2=$(echo -n $netBinIP | cut -c 9-16); + netOCT3=$(echo -n $netBinIP | cut -c 17-24); + netOCT4=$(echo -n $netBinIP | cut -c 25-32); + + networkBinIP="${netOCT1}.${netOCT2}.${netOCT3}.${netOCT4}"; + #echo $networkBinIP; + + netDecOCT1=$(echo "ibase=2;${netOCT1}" | bc); + netDecOCT2=$(echo "ibase=2;${netOCT2}" | bc); + netDecOCT3=$(echo "ibase=2;${netOCT3}" | bc); + netDecOCT4=$(echo "ibase=2;${netOCT4}" | bc); + + networkIP="${netDecOCT1}.${netDecOCT2}.${netDecOCT3}.${netDecOCT4}"; + echo "Network IP: $networkIP"; + echo "Scanning..."; + file="/tmp/immudex-nf_result.txt"; + sudo nmap -sP "${networkIP}/${CIDR}" | sudo tee ${file} >> /dev/null; + if [ $? -eq 0 ]; then echo -e "Scanning...[ ${GREEN}OK${ENDCOLOR} ]"; fi + query=$1; + if $(echo $query | grep -q '\:'); then + offset="- 2"; + field=5; + else + offset="+ 2"; + field="3-"; + fi + + foundLine=$(grep -n $query $file | cut -d ":" -f 1); + lineNumber=$(expr $foundLine $offset); + result=$(sed -n "${lineNumber}p" $file | cut -d " " -f ${field}); + echo "Result: $result"; + fi +else + printHelp; +fi diff --git a/tools/sbin/immudex-packages-update b/tools/sbin/immudex-packages-update deleted file mode 100755 index 18f625b..0000000 --- a/tools/sbin/immudex-packages-update +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -apt-get update; diff --git a/tools/bin/immudex-updates b/tools/sbin/immudex-updates similarity index 66% rename from tools/bin/immudex-updates rename to tools/sbin/immudex-updates index 2f80683..d91a67d 100755 --- a/tools/bin/immudex-updates +++ b/tools/sbin/immudex-updates @@ -5,6 +5,8 @@ GREEN="\e[32m"; YELLOW="\e[33m"; ENDCOLOR="\e[0m"; +#FILE="/tmp/immudex-updates.txt"; + function getVerFromRSSFeed() { URL=$1; echo $(curl $URL 2> /dev/null | grep '' | sed -n '2p' | sed -e 's/<title>//g' -e 's,,,g' | awk '{printf $1}') @@ -14,7 +16,7 @@ echo " |"; if [ -x /usr/bin/librewolf ]; then URL="https://codeberg.org/librewolf/source/releases.rss"; newLibrewolfVer=$(getVerFromRSSFeed $URL); - currentLibrewolfVer=$(librewolf -V | awk '{printf $3}'); + currentLibrewolfVer=$(apt list --installed 2>/dev/null | grep 'librewolf' | awk '{printf $2}'); if ! [ "$currentLibrewolfVer" = "$newLibrewolfVer" ]; then echo -e " \`- New Librewolf version (${GREEN}${newLibrewolfVer}${ENDCOLOR}) is available."; echo " |"; @@ -41,14 +43,27 @@ if [ -x /usr/local/bin/nu ]; then fi fi +if [ -x /usr/local/bin/nextcloud ]; then + currentNextcloudVersion=$(/usr/local/bin/nextcloud -v 2> /dev/null | grep '^Nextcloud version' | awk '{printf $3}'); + URL="https://github.com/nextcloud-releases/desktop/releases.atom"; + newNextcloudVersion=$(curl $URL 2> /dev/null | grep -o '.*' | grep -v 'rc' | sed -n '2p' | sed -e 's,,,' -e 's,,,' | awk '{printf $2}'); + if ! [ "$currentNextcloudVersion" = "$newNextcloudVersion" ]; then + echo -e " \`- New Nextcloud version (${GREEN}${newNextcloudVersion}${ENDCOLOR}) is available."; + echo " |"; + fi +fi + debianVersion=$(cut -d "." -f 1 /etc/debian_version); URL="https://micronews.debian.org/feeds/feed.rss"; newDebianVersion=$(curl $URL 2>/dev/null | grep -o "Updated Debian ${debianVersion}: ${debianVersion}.[0-9]*" | sed -n '1p' | awk '{printf $4}'); -if ! [ "$newDebianVersion" = "$(cat /etc/debian_version)" ]; then - echo -e " \`- New Debian version (${YELLOW}${newDebianVersion}${ENDCOLOR})."; - echo " |"; +if [ "$newDebianVersion" ]; then + if ! [ "$newDebianVersion" = "$(cat /etc/debian_version)" ]; then + echo -e " \`- New Debian version (${YELLOW}${newDebianVersion}${ENDCOLOR})."; + echo " |"; + fi fi +sudo apt update > /dev/null 2>&1; packagesToUpdate=$(expr $(apt list --upgradable 2> /dev/null | wc -l) - 1); if [ $packagesToUpdate -lt 0 ]; then packagesToUpdate=0; fi diff --git a/tools/sbin/immudex-upgrade b/tools/sbin/immudex-upgrade index fea7981..c1507fa 100755 --- a/tools/sbin/immudex-upgrade +++ b/tools/sbin/immudex-upgrade @@ -17,7 +17,8 @@ function help() { echo "Options:"; echo " --check - check there are upgrades for immudex"; echo " --upgrade - upgrade immudex from given source"; - echo " --myversion - prints images current commit message"; + #echo " --myversion - prints images current commit message"; + echo " --myversion - prints image details"; echo " --compilation-date - prints date of image creation"; echo " --packages-upgradable [--security] - updates apt (packages) list and"; echo " prints available to upgrade packages, with --security modificator"; @@ -97,12 +98,13 @@ if [ "$1" ]; then fi fi elif [ "$1" ] && [ "$1" = "--myversion" ]; then - if [ -d /tmp/immudex ]; then - (cd /tmp/immudex && git pull > /dev/null 2>&1) - else - git clone https://github.com/xf0r3m/immudex /tmp/immudex; - fi - (cd /tmp/immudex && git show $(cat /run/live/medium/live/version)) + #if [ -d /tmp/immudex ]; then + # (cd /tmp/immudex && git pull > /dev/null 2>&1) + #else + # git clone https://github.com/xf0r3m/immudex /tmp/immudex; + #fi + #(cd /tmp/immudex && git show $(cat /run/live/medium/live/version)) + cat /run/live/medium/live/changelog; elif [ "$1" ] && [ "$1" = "--packages-upgradable" ]; then apt update; if [ "$2" ] && [ "$2" = "--security" ]; then @@ -111,7 +113,8 @@ if [ "$1" ]; then apt list --upgradable; fi elif [ "$1" ] && [ "$1" = "--compilation-date" ]; then - echo "Image was created: $(cat /run/live/medium/live/compilation_date)"; + eval $(grep '^COMPILATION_DATE' /run/live/medium/live/changelog); + echo "Image was created: $COMPILATION_DATE"; else help; exit 1; diff --git a/tools/sbin/immudex-upgrade_ b/tools/sbin/immudex-upgrade_ deleted file mode 100755 index 32a8ae0..0000000 --- a/tools/sbin/immudex-upgrade_ +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/bash - -set -e - -source library.sh - -RED="\e[31m"; -GREEN="\e[32m"; -YELLOW="\e[33m"; -ENDCOLOR="\e[0m"; -root="/run/live/medium"; - -function help() { - echo "immudex-upgrade - script for searching upgrades and upgrade immudex"; - echo "@ 2025 morketsmerke.org"; - echo "Superuser (root) privileges are required."; - echo "Options:"; - #echo " --check - check there are upgrades for immudex"; - echo " --upgrade - upgrade immudex from given source"; - #echo " --myversion - prints images current commit message"; - #echo " --myversion - prints image details"; - #echo " --compilation-date - prints date of image creation"; - #echo " --packages-upgradable [--security] - updates apt (packages) list and"; - #echo " prints available to upgrade packages, with --security modificator"; - #echo " prints only pacakages from security repository branch"; -} - -if [ $UID -ne 0 ]; then - echo "Permission denied!"; - help; - exit 1; -fi - -if [ "$1" ]; then - if [ "$1" ] && [ "$1" = "--check" ]; then - if check_distro_commit; then - echo -e "${GREEN}This${ENDCOLOR} is the latest version of immudex"; - else - echo -e "There is a ${RED}new${ENDCOLOR} version of immudex:"; - echo "==================================================="; - check_distro_commit --print; - fi - elif [ "$1" ] && [ "$1" = "--upgrade" ]; then - echo "Upgrading immudex..."; - part=$(blkid | grep 'LABEL="immudex"' | awk '{printf $1}' | cut -d ":" -f 1); - if mount | grep -q "$part"; then - echo -n " Mounting iso image..."; - mount $2 /mnt > /dev/null 2>&1; - if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi - mountPointList=$(mount | grep "$part" | awk '{printf $3" "}'); - for mountPoint in $mountPointList; do - echo -n " Unlocking $mountPoint ..."; - mount $part $mountPoint -o remount,rw > /dev/null 2>&1; - if [ $? -eq 0 ]; then - echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; - else - echo -e "[ ${RED}FAIL${ENDCOLOR} ]"; - fi - done - echo " Copying immudex files to the disk..."; - cp -vv /mnt/live/* ${mountPoint}/live; - if [ $? -eq 0 ]; then - echo -e " Copying immudex files to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; - else - echo -e " Copying immudex files to the disk...[ ${RED}FAIL${ENDCOLOR} ]"; - fi - else - echo -n " Mounting immudex partition..."; - mount $part /mnt >> /dev/null 2>&1; - if [ $? -eq 0 ]; then echo -e "[ ${GREEN}OK${ENDCOLOR} ]"; fi - if [ "$2" ] && $(echo "$2" | grep -q '^http'); then - URL="$2"; - wget ${URL}/live/vmlinuz -O /mnt/live/vmlinuz 2>/dev/null; - if [ $? -eq 0 ]; then echo -e " Copying immudex kernel to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; fi - wget ${URL}/live/initrd -O /mnt/live/initrd 2>/dev/null; - if [ $? -eq 0 ]; then echo -e " Copying immudex initrd to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; fi - wget ${URL}/live/filesystem.squashfs -O /mnt/live/filesystem.squashfs 2>/dev/null; - if [ $? -eq 0 ]; then echo -e " Copying immudex filesystem.squashfs to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; fi - wget ${URL}/live/changelog -O /mnt/live/changelog 2>/dev/null; - if [ $? -eq 0 ]; then echo -e " Copying immudex changelog file to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; fi - else - echo " Copying immudex files to the disk..."; - cp -vv /run/live/medium/live/* /mnt/live; - if [ $? -eq 0 ]; then - echo -e " Copying immudex files to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; - else - echo -e " Copying immudex files to the disk...[ ${RED}FAIL${ENDCOLOR} ]"; - fi - fi - fi - if $(sudo efibootmgr > /dev/null 2>&1); then - echo " Copying grub config to the disk..."; - if [ "$mountPoint" ]; then - cp -vv /mnt/boot/grub/grub.cfg ${mountPoint}/boot/grub/grub.cfg; - if [ $? -eq 0 ]; then - echo -e " Copying grub config to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; - sed -i '/set\ timeout=/ s/30/5/' ${mountPoint}/boot/grub/grub.cfg; - sed -i 's/bootfrom=removable //g' ${mountPoint}/boot/grub/grub.cfg; - else - echo -e " Copying grub config to the disk...[ ${RED}FAIL${ENDCOLOR} ]"; - fi - else - if [ "$2" ] && $(echo "$2" | grep -q '^http'); then - wget ${URL}/live/grub.cfg -O /mnt/boot/grub/grub.cfg 2>/dev/null; - if [ $? -eq 0 ]; then echo -e " Downloading immudex GRUB config...[ ${GREEN}OK${ENDCOLOR} ]"; fi - echo -e " Copying grub config to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; - else - cp -vv /run/live/medium/boot/grub/grub.cfg /mnt/boot/grub/grub.cfg; - if [ $? -eq 0 ]; then - echo -e " Copying grub config to the disk...[ ${GREEN}OK${ENDCOLOR} ]"; - else - echo -e " Copying grub config to the disk...[ ${RED}FAIL${ENDCOLOR} ]"; - fi - fi - sed -i '/set\ timeout=/ s/30/5/' /mnt/boot/grub/grub.cfg; - sed -i 's/bootfrom=removable //g' /mnt/boot/grub/grub.cfg; - fi - fi - umount -R /mnt; - if [ $? -eq 0 ]; then echo -e " Unmount immudex partition...[ ${GREEN}OK${ENDCOLOR} ]"; fi - echo -e "Upgrading immudex...[ ${GREEN}OK${ENDCOLOR} ]"; - elif [ "$1" ] && [ "$1" = "--myversion" ]; then - #if [ -d /tmp/immudex ]; then - # (cd /tmp/immudex && git pull > /dev/null 2>&1) - #else - # git clone https://github.com/xf0r3m/immudex /tmp/immudex; - #fi - #(cd /tmp/immudex && git show $(cat /run/live/medium/live/version)) - cat /run/live/medium/live/changelog; - elif [ "$1" ] && [ "$1" = "--packages-upgradable" ]; then - apt update; - if [ "$2" ] && [ "$2" = "--security" ]; then - apt list --upgradable | grep 'security'; - else - apt list --upgradable; - fi - elif [ "$1" ] && [ "$1" = "--compilation-date" ]; then - eval $(grep '^COMPILATION_DATE' /run/live/medium/live/changelog); - echo "Image was created: $COMPILATION_DATE"; - else - help; - exit 1; - fi -else - help; - exit 1; -fi diff --git a/versions/base.sh b/versions/base.sh index a77fe84..6aa7db9 100644 --- a/versions/base.sh +++ b/versions/base.sh @@ -12,8 +12,8 @@ else fi cd; -if [ -x /usr/bin/git ]; then git clone https://git.morketsmerke.org/git/immudex; -else apt install git -y && git clone https://git.morketsmerke.org/git/immudex; +if [ -x /usr/bin/git ]; then git clone https://github.com/xf0r3m/immudex; +else apt install git -y && git clone https://github.com/xf0r3m/immudex; fi source ~/immudex/versions/template.sh; @@ -38,44 +38,26 @@ dpkg-reconfigure console-setup; install_packages task-desktop task-xfce-desktop; -install_packages firejail ufw cryptsetup lsof extlinux grub-efi-amd64 efibootmgr bash-completion etherwake wakeonlan cifs-utils wget figlet mpv vim-gtk3 redshift irssi nmap nfs-common remmina python3-pip ffmpeg debootstrap squashfs-tools xorriso syslinux-efi grub-pc-bin grub-efi-amd64-bin mtools dosfstools chrony python3-venv isolinux rsync mutt gimp openvpn netselect-apt gvfs-backends dnsutils lolcat make; - -#Missing packages -#Anti-Frankenstein policy - 13.05.2024; -if [ "$DEBVER" = "testing" ]; then - install_packages xfce4-notes-plugin yt-dlp; - - #head -1 /etc/apt/sources.list | sed "s/${DEBVER}/stable/" > /etc/apt/sources.list.d/stable.list; - #apt update; - #install_packages newsboat; - #rm /etc/apt/sources.list.d/stable.list; - #apt update; -else - install_packages newsboat; +#Usunięcie pakietów make oraz gimp - 22.11.2025; +install_packages firejail ufw cryptsetup lsof extlinux grub-efi-amd64 efibootmgr bash-completion etherwake wakeonlan cifs-utils wget figlet vim-gtk3 redshift irssi nmap nfs-common remmina python3-pip ffmpeg debootstrap squashfs-tools xorriso syslinux-efi grub-pc-bin grub-efi-amd64-bin mtools dosfstools chrony python3-venv isolinux rsync mutt openvpn netselect-apt gvfs-backends dnsutils lolcat cdparanoia icedax; - #head -1 /etc/apt/sources.list | sed "s/${DEBVER}/testing/" > /etc/apt/sources.list.d/testing.list; - #apt update; - #install_packages xfce4-notes-plugin yt-dlp; - #rm /etc/apt/sources.list.d/testing.list; - #apt update; -fi if [ -f /usr/bin/youtube-dl ]; then rm /usr/bin/youtube-dl; fi ytdlpVer=$(curl https://github.com/yt-dlp/yt-dlp/releases.atom 2>/dev/null | grep '.*$' | sed -n '2p' | sed 's/\ /\n/g' | tail -1 | sed 's,,,'); wget https://github.com/yt-dlp/yt-dlp/releases/download/${ytdlpVer}/yt-dlp -O /usr/bin/yt-dlp -#Anti-Frankenstein policy - 13.05.2024; +#Polityka antyfrankensteinowa - 13.05.2024 ln -s /usr/bin/yt-dlp /usr/bin/youtube-dl; cd; -git clone https://git.morketsmerke.org/git/xfcedebian-d13; -cd xfcedebian-d13; -bash install.sh; +git clone https://github.com/xf0r3m/xfcedebian; +cd xfcedebian; +bash install.sh --immudex; cd; -cp -vv ~/immudex/tools/bin/immudex-autostart-x4notes /usr/local/bin; +#Wyłączenie narzędzia immudex-autostart-x4notes - 22.11.2025 cp -vv ~/immudex/tools/bin/immudex-branch /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-import-gpgkeys /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-import-sshkeys /usr/local/bin; @@ -85,19 +67,21 @@ cp -vv ~/immudex/tools/bin/immudex-motd2 /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-padlock /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-pl /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-secured-firefox /usr/local/bin; -cp -vv ~/immudex/tools/bin/immudex-protected /usr/local/bin; -cp -vv ~/immudex/tools/bin/immudex-protected-firefox /usr/local/bin; +#Wyłączenie narzędzia immudex-protected - 22.11.2025 cp -vv ~/immudex/tools/bin/immudex-shoutcasts /usr/local/bin; cp -vv ~/immudex/tools/bin/immudex-version /usr/local/bin; - -#Anti-Frankenstein policy - 14.05.2024 -if [ "$DEBVER" != "oldstable" ]; then - install_packages fzf jq ueberzug; - git clone https://github.com/pystardust/ytfzf /tmp/ytfzf; - (cd /tmp/ytfzf && make install doc) -else - cp -vv ~/immudex/tools/bin/immudex-ytplay /usr/local/bin; -fi +#Nowe narzędzie immudex-cdrip - 27.08.2025; +cp -vv ~/immudex/tools/bin/immudex-cdrip /usr/local/bin; +#Wyłaczenie immudex-run - 22.11.2025 + +#Właczenie nowej wersji immudex-ytplay (immudex-ytplay2) - 13.09.2025 +pythonVersion=$(python3 -V | awk '{printf $2}' | cut -d "." -f 1-2); +mv /usr/lib/python${pythonVersion}/EXTERNALLY-MANAGED /usr/lib/python${pythonVersion}/EXTERNALLY-MANAGED.old; +wget https://ftp.morketsmerke.org/youtube-search/youtube_search-2.1.2-py3-none-any.whl -O /tmp/youtube_search-2.1.2-py3-none-any.whl; +pip install /tmp/youtube_search-2.1.2-py3-none-any.whl; +mv /usr/lib/python${pythonVersion}/EXTERNALLY-MANAGED.old /usr/lib/python${pythonVersion}/EXTERNALLY-MANAGED; +cp -vv ~/immudex/tools/bin/immudex-ytplay2 /usr/local/bin; +ln -s /usr/local/bin/immudex-ytplay2 /usr/local/bin/immudex-ytplay; cp -vv ~/immudex/tools/bin/library.sh /usr/local/bin; cp -vv ~/immudex/tools/bin/idle-clic /usr/local/bin; @@ -109,13 +93,10 @@ cp -vv ~/immudex/tools/sbin/immudex-crypt /usr/local/sbin; cp -vv ~/immudex/tools/sbin/immudex-hostname /usr/local/sbin; cp -vv ~/immudex/tools/sbin/immudex-install /usr/local/sbin; cp -vv ~/immudex/tools/sbin/immudex-upgrade /usr/local/sbin; +#Wyłączenie narzędzi immudex-update i immudex-nf - 22.11.2025 chown root:root /usr/local/sbin/*; chmod 544 /usr/local/sbin/*; -mkdir /etc/skel/.irssi - -cp -vv ~/immudex/files/config /etc/skel/.irssi; -cp -vv ~/immudex/files/default.theme /etc/skel/.irssi; cp -rvv ~/immudex/files/libreoffice /etc/skel/.config; cp -vv ~/immudex/files/firejail.config /etc/firejail; cp -vv ~/immudex/files/redshift.conf /etc/skel/.config; @@ -123,8 +104,8 @@ cp -vv ~/immudex/files/redshift.desktop /etc/skel/.config/autostart; cp -rvv ~/immudex/files/sync.sh /usr/share; -#Anti-Frankenstein policy - 13.05.2024 -if [ "$DEBVER" = "testing" ]; then +#Polityka antyfrankensteinowa - 13.05.2024 +if [ "$DEBVER" = "testing" ]; then cp -vv ~/immudex/files/gtk-main.css /usr/share/xfce4/notes/gtk-3.0/gtk.css; fi @@ -133,20 +114,9 @@ if [ -f /usr/share/applications/qmmp.desktop ]; then fi cp -vv ~/immudex/files/immudex_hostname.service /etc/systemd/system; -tar -xf ~/immudex/files/mozilla.tgz -C /etc/skel; - cp -vv ~/immudex/launchers/16844254192.desktop /etc/skel/.config/xfce4/panel/launcher-5; -update-alternatives --remove x-www-browser /usr/bin/firefox-esr - -mv /usr/bin/firefox /usr/bin/firefox.old -chmod -x /usr/bin/firefox.old -rm /usr/bin/firefox-esr -ln -s /usr/local/bin/immudex-protected-firefox /usr/bin/firefox-esr -sed -i "s,Exec=/usr/lib/firefox-esr/firefox-esr %u,Exec=/usr/local/bin/immudex-protected /usr/lib/firefox-esr/firefox-esr," /usr/share/applications/firefox-esr.desktop -sed -i "s,Exec=exo-open --launch WebBrowser %u,Exec=/usr/local/bin/immudex-protected /usr/lib/firefox-esr/firefox-esr,g" /usr/share/applications/xfce4-web-browser.desktop -update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/local/bin/immudex-protected-firefox 70 - +#tar -xzvf ~/immudex/files/mozilla.tgz -C /etc/skel; systemctl enable immudex_hostname.service; @@ -159,7 +129,7 @@ EOL echo "alias immudex-chhome='export HOME=\$(pwd)'" >> /etc/bash.bashrc; echo "alias immudex-changelogs='immudex-upgrade --check --print'" >> /etc/bash.bashrc; -echo "alias immudex-version='immudex-upgrade --myversion'" >> /etc/bash.bashrc; +echo "alias immudex-version='cat /run/live/medium/live/changelog'" >> /etc/bash.bashrc; chmod u+s /usr/bin/ping; diff --git a/versions/template.sh b/versions/template.sh index 0a17e65..28147d8 100644 --- a/versions/template.sh +++ b/versions/template.sh @@ -50,3 +50,24 @@ function set_default_wallpaper() { ln -s /usr/share/images/desktop-base/$1 /usr/share/images/desktop-base/default; } +function make_changelog_file() { + ARCH=$1; + DEBVER=$debver; + COMPILATION_DATE=$(date); + COMMIT=$(cd ${HOME}/immudex && git log --pretty=oneline | head -1); + ADDONS=$(grep 'bash ~/immudex/addons' ${HOME}/immudex/versions/base.sh | grep -v '^#' | cut -d "/" -f4 | sed 's/;//g' | awk '{printf $1" "}'); + + echo "ARCH=\"${ARCH}\"" > $FILE; + echo "DEBVER=\"${DEBVER}\"" >> $FILE; + if [ "$cname" ]; then + echo "CANONICAL_NAME=\"${cname}\"" >> $FILE; + fi + if [ "$version" ]; then + echo "VERSION=\"${version}\"" >> $FILE; + fi + echo "COMPILATION_DATE=\"${COMPILATION_DATE}\"" >> $FILE; + echo "COMMIT=\"${COMMIT}\"" >> $FILE; + echo "ADDONS=\"${ADDONS}\"" >> $FILE; + echo "-== Diffrences in version file ==-" >> $FILE; + (cd ${HOME}/immudex; git diff versions/base.sh) >> $FILE; +}