commit b46cf2175d7bc545fe4c969f2b982ed8f0cc14c6 Author: Geoff Murphy Date: Sat Oct 21 19:10:43 2023 +1100 Initial commit diff --git a/README.md b/README.md new file mode 100755 index 0000000..c6da2f0 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# FAKE // OS +FAKE//OS system utilities and scripts. + +![demo](src/fake-os/assets/other/demo.png) + +# Philosophy +1. **Standardised:** Functions should work consistently across multiple Operating System Distrobutions. +2. **Repeatable:** Functions should be able to re-run (for ugrade purposes) without destroying already modified system configurations. +3. **Modularity:** Functions should be simple and modular for easy additions and modifications. +3. **Error Handeling:** Functions should have good error handeling for use in automated scripts. + +# Supported Operating Systems +FAKE//OS aims to be system agnostic, and provide a consistent set of functions (especially for scripting) across a variety of Linux distrobutions, which otherwise don't play well togehter. Currently supported distrobutions include: +- Arch Linux _[bash + systemd + pacman/paru]_ +- Artix Linux _[bash + openrc + pacman/paru]_ +- Alpine Linux _[ash + openrc + apk]_ +- Debian Linux _[bash/dash + systemd + apt]_ + +# Basic Ussage +``` bash +FAKE//OS Package and System Manager +----------------------------------- +usage: fake + +Package management commands: + install Install new software packages + update Update installed software packages + remove Remove/Uninstall software packages + search Search repository for software packages + +Init/System management commands + start Start system daemons + stop Stop system daemons + restart Restart system daemons + enable Add system daemons to default startup PID + disable Remove system daemons from default startup PID + flush Clear syste caches + +FAKE//OS commands: + upgrade Upgrade FAKE//OS to latest git version + help Display this help screen +``` + +# Install FAKE // OS +### Automatic Install +Copy and paste the folloing into you're commandline terminal: + +``` bash +curl https://git.fake.onl/fake/fake-os/raw/branch/master/setup.sh | sh +``` + +### Manual Install +For manual installation and access to the source-code run the following commands: + +``` bash +git clone https://git.fake.onl/fake/fake-os.git +cd fake-os +./setup.sh +``` + +### Upgrade Install +Once installed FAKE//OS can be upgraded (install the latest version from git.fake.onl) by running the following command: + +``` bash +fake upgrade +``` diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..8b5d153 --- /dev/null +++ b/setup.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env sh + + + +#--------[ Bootstrap Correct Shell ]--------# +if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then bash setup.sh $@; fi +if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then exit; fi + + + +#--------[ Check Root ]--------# +if [ $(whoami) != "root" ]; then + echo "" + echo "FAKE//OS setup must be run as 'root'" + echo "" + exit 1 +fi + + + +#--------[ Check Install Method ]--------# +if [ ! -d "src/fake-os" ]; then + rm -rf /tmp/fake-os + git clone --depth 1 https://git.fake.onl/fake/fake-os.git /tmp/fake-os + cd /tmp/fake-os +fi + + + +#--------[ Check Version ]--------# +if [ -f "/var/cache/fake-os/fake_version.txt" ]; then + export TMP_VERSION_LOCAL="$(cat /var/cache/fake-os/fake_version.txt)" + export TMP_VERSION_REMOTE="$(git rev-parse HEAD | head -c 10)" + if [ "$TMP_VERSION_LOCAL" == "$TMP_VERSION_REMOTE" ]; then + if [ "$(command -v _fake_layout_message)" ]; then + _fake_layout_message "Version" "$ENV_FAKE_VERSION" "upgrade" "Already up to date..." + else + echo "" + echo "FAKE//OS: Already up to date..." + echo "" + fi + exit 0 + fi + unset TMP_VERSION_LOCAL + unset TMP_VERSION_REMOTE +else + echo "" + cat src/fake-os/assets/logos/logo_full.txt + echo "" + sleep 1 +fi + + + +#--------[ CLI Flag Arguments ]--------# +for ARGV in $@; do + case $ARGV in + -d|--debug) export FAKE_MODE_DEBUG="TRUE" ;; + -v|--quiet) export FAKE_MODE_QUIET="TRUE" ;; + esac +done + + + +#--------[ Copy FAKE//OS Files ]--------# +echo "Copy FAKE//OS Files" +rm -rf /usr/share/fake-os +cp -rv src/fake-os /usr/share +mkdir -p /var/cache/fake-os +echo "" + + + +#--------[ Log FAKE//OS Version Variable ]--------# +echo "$(git rev-parse HEAD | head -c 10)" > /var/cache/fake-os/fake_version.txt + + + +#--------[ Install Dependencies ]--------# +echo "Install FAKE//OS Dependencies" +if [ "$(command -v paru)" ]; then + paru --noconfirm -S curl figlet git lolcat rsync perl sudo vim +elif [ "$(command -v pacman)" ]; then + pacman --noconfirm -S curl figlet git lolcat rsync perl sudo vim +elif [ "$(command -v apt)" ]; then + apt -y install curl figlet git lolcat rsync perl sudo vim +elif [ "$(command -v apk)" ]; then + apk add curl figlet git rsync perl sudo vim +fi + + + +#--------[ Load FAKE//OS Init Script ]--------# +. src/fake-os/fake_init.sh --quiet + + + +#--------[ Copy User RC Init Script ]--------# +mkdir -p /etc/skel + +_fake_layout_heading "Copy InitRC Script" +cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.bashrc +cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.profile + +cp -rv /etc/skel/. /root +for TMP_USER in $(ls /home); do + if [ ! "$(grep -e fake_init /home/$TMP_USER/.bashrc)" ]; then + cp -rv /etc/skel/. /home/$TMP_USER/ + fi +done +unset TMP_USER + + + +#--------[ Clean Up Junk Files ]--------# +_fake_layout_heading "Clean-Up Distro OS Files" + +_fake_utils_config_replace src/fake-os/assets/configs/issue/issue.txt /etc/issue +_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue" +_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue" + +_fake_utils_config_replace src/fake-os/assets/configs/issue/issue-net.txt /etc/issue.net +_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue.net" +_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue.net" + +rm -rf /etc/motd +echo 'rm -rf /etc/motd' + + + +#--------[ Setup Complete ]--------# +_fake_layout_heading "FAKE//OS Setup Complete!" diff --git a/src/fake-os/assets/configs/initrc/initrc_ash.sh b/src/fake-os/assets/configs/initrc/initrc_ash.sh new file mode 100755 index 0000000..ac3043f --- /dev/null +++ b/src/fake-os/assets/configs/initrc/initrc_ash.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env ash + + +#--------[ FAKE//OS Init Bootstrap ]--------# +. /usr/share/fake-os/fake_init.sh $@ diff --git a/src/fake-os/assets/configs/initrc/initrc_bash.sh b/src/fake-os/assets/configs/initrc/initrc_bash.sh new file mode 100755 index 0000000..5ff8494 --- /dev/null +++ b/src/fake-os/assets/configs/initrc/initrc_bash.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + + +#--------[ FAKE//OS Init Bootstrap ]--------# +. /usr/share/fake-os/fake_init.sh $@ diff --git a/src/fake-os/assets/configs/issue/issue-net.txt b/src/fake-os/assets/configs/issue/issue-net.txt new file mode 100644 index 0000000..f150dc1 --- /dev/null +++ b/src/fake-os/assets/configs/issue/issue-net.txt @@ -0,0 +1,4 @@ + +%ENV_DISTRO: \r (\l) [remote] +FAKE//OS Version: %ENV_FAKE_VERSION + diff --git a/src/fake-os/assets/configs/issue/issue.txt b/src/fake-os/assets/configs/issue/issue.txt new file mode 100644 index 0000000..8b6bd00 --- /dev/null +++ b/src/fake-os/assets/configs/issue/issue.txt @@ -0,0 +1,4 @@ + +%ENV_DISTRO: \r (\l) +FAKE//OS Version: %ENV_FAKE_VERSION + diff --git a/src/fake-os/assets/logos/logo.txt b/src/fake-os/assets/logos/logo.txt new file mode 100644 index 0000000..39d1522 --- /dev/null +++ b/src/fake-os/assets/logos/logo.txt @@ -0,0 +1,9 @@ + .^!?JJ?7^. + ^YB#GPYYYPGG?: + .5&&J^ .~Y5! + Y@&~ !P~ +:#@B .GP. + P@&? !GY + :P@@B5J?!: .7P5. + 7G&@@@@@7 :!?~ + ^7JYJ7. . diff --git a/src/fake-os/assets/logos/logo_full.txt b/src/fake-os/assets/logos/logo_full.txt new file mode 100644 index 0000000..48ea8ba --- /dev/null +++ b/src/fake-os/assets/logos/logo_full.txt @@ -0,0 +1,9 @@ + .. + .:xKX0O00d, _____ _ _ _______ ____ ___ ____ + dNKc. 'od' | ___/ \ | |/ / ____| / / / / _ \/ ___| + kWO .d, | |_ / _ \ | ' /| _| / / / | | | \___ \ +.WWc oO | _/ ___ \| . \| |___ / / / | |_| |___) | + 0WX. .kx |_|/_/ \_\_|\_\_____| /_/_/ \___/|____/ + xWWKOxo; 'xd --------------------------------------------- + 'oKWWWX' .. Fake Operating System + .. diff --git a/src/fake-os/assets/logos/logo_text.txt b/src/fake-os/assets/logos/logo_text.txt new file mode 100644 index 0000000..cdf67b3 --- /dev/null +++ b/src/fake-os/assets/logos/logo_text.txt @@ -0,0 +1,7 @@ + _____ _ _ _______ ____ ___ ____ +| ___/ \ | |/ / ____| / / / / _ \/ ___| +| |_ / _ \ | ' /| _| / / / | | | \___ \ +| _/ ___ \| . \| |___ / / / | |_| |___) | +|_|/_/ \_\_|\_\_____| /_/_/ \___/|____/ +--------------------------------------------- + Fake Operating System setup diff --git a/src/fake-os/assets/other/demo.png b/src/fake-os/assets/other/demo.png new file mode 100644 index 0000000..3d4be02 Binary files /dev/null and b/src/fake-os/assets/other/demo.png differ diff --git a/src/fake-os/fake_init.sh b/src/fake-os/fake_init.sh new file mode 100755 index 0000000..abe5f6c --- /dev/null +++ b/src/fake-os/fake_init.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env sh + + + +#--------[ Master Paths ]--------# +if ! [ "$(echo $PATH | grep sbin)" ]; then + export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin" +fi +if ! [ "$(echo $PATH | grep games)" ]; then + export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/games" +fi + + + +#--------[ System Variables ]--------# +export VISUAL=emacs +export EDITOR=vim + + + +#--------[ CLI Flag Arguments ]--------# +for ARGV in $@; do + case $ARGV in + -d|--degub) export FAKE_MODE_DEBUG="TRUE" ;; + -q|--quiet) export FAKE_MODE_QUIET="TRUE" ;; + esac +done + + + +#--------[ Terminal Colours ]--------# +FCOL0="\e[0m" +FCOL1="\e[37m\033[38;5;166m" +FCOL2="\e[37m\033[38;5;204m" +FCOL3="\e[37m\033[38;5;170m" +FCOLGRAD="lolcat -p 4 -S 6 -F 0.1" +FCOLBOLD="\e[1m" +FCOLITAL="\e[2;3m" + + + +#--------[ Load Core Modules ]--------# +for MODULE in $(find /usr/share/fake-os/modules -name "*.sh"); do + . $MODULE +done +unset MODULE + + + +#--------[ Load User Modules ]--------# +if [ ! -d ~/.local/share/fake-os/modules ]; then + mkdir -p ~/.local/share/fake-os/modules; +fi +for MODULE in $(find ~/.local/share/fake-os/modules -name "*.sh"); do + . $MODULE +done +unset MODULE + + + +#--------[ CLI Prompt ]--------# +if [ $(whoami) != "root" ]; then + PS1="\[${FCOL0}\]\[[${FCOL3}\]\u\[${FCOL0}\]@\[${FCOL3}\]\h\[${FCOL0}\]] \W \$ " +else + PS1="\[${FCOL0}\]\[[${FCOL1}\]\u\[${FCOL0}\]@\[${FCOL1}\]\h\[${FCOL0}\]] \W \$ " +fi + + + + +#--------[ Login Display ]--------# +echo "" +if [ ! "$FAKE_MODE_QUIET" ]; then + + +#--------[ Local Login ]--------# + if [ "$ENV_LOGIN" == "local" ]; then + if [ "$(command -v lolcat)" ]; then + cat /usr/share/fake-os/assets/logos/logo_full.txt | $FCOLGRAD + else + cat /usr/share/fake-os/assets/logos/logo_full.txt + fi + + + #--------[ SSH Login ]--------# + else + if [ "$(command -v figlet)" ]; then + figlet -w 1000 $(cat /etc/hostname) + else + echo "FAKE//OS Login: $(cat /etc/hostname)" + fi + fi + + + #--------[ Login Info ]--------# + echo "" + echo -e "${FCOL1}user:${FCOL0} $(whoami) ${FCOL2}login:${FCOL0} $ENV_LOGIN ${FCOL3}system:${FCOL0} $ENV_ARCH $ENV_DISTRO $ENV_VTAG" + echo "" +fi diff --git a/src/fake-os/modules/debug/fake_debug.sh b/src/fake-os/modules/debug/fake_debug.sh new file mode 100755 index 0000000..df2721c --- /dev/null +++ b/src/fake-os/modules/debug/fake_debug.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + + + +#---------[ Fake Debug Pause Function ]--------# +_fake_debug () { + if [ "$FAKE_MODE_DEBUG" ]; then + echo "" + read -n 1 -p "Debug Break: Press key to continue..." VOID && echo "" + elif [ "$FAKE_MODE_SLOW" ]; then + sleep 3 + fi +} diff --git a/src/fake-os/modules/debug/fake_debug_error_pause.sh b/src/fake-os/modules/debug/fake_debug_error_pause.sh new file mode 100755 index 0000000..b486ced --- /dev/null +++ b/src/fake-os/modules/debug/fake_debug_error_pause.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + + + +#--------[ Error Basic Message Function ]--------# +_fake_debug_error_pause () { + if [ "$FAKE_MODE_DEBUG" ]; then + read -n 1 -p "Error: Press any key to continue..." VOID && echo "" + elif [ "$FAKE_MODE_SLOW" ]; then + sleep 3 + fi +} diff --git a/src/fake-os/modules/environment/hw_bootloader.sh b/src/fake-os/modules/environment/hw_bootloader.sh new file mode 100755 index 0000000..0efacb0 --- /dev/null +++ b/src/fake-os/modules/environment/hw_bootloader.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Bootloader Type ]--------# +if [ -d "/sys/firmware/efi" ]; then + export ENV_BOOTLOADER="UEFI" +else + export ENV_BOOTLOADER="BIOS" +fi diff --git a/src/fake-os/modules/environment/hw_cpu_arch.sh b/src/fake-os/modules/environment/hw_cpu_arch.sh new file mode 100755 index 0000000..983ec55 --- /dev/null +++ b/src/fake-os/modules/environment/hw_cpu_arch.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Detect CPU Architecture ]--------# +export ENV_ARCH=$(uname -m) diff --git a/src/fake-os/modules/environment/hw_cpu_make.sh b/src/fake-os/modules/environment/hw_cpu_make.sh new file mode 100755 index 0000000..70ab467 --- /dev/null +++ b/src/fake-os/modules/environment/hw_cpu_make.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + + + +#--------[ Detect CPU Make ]--------# +if [ "$(command -v lscpu)" ]; then + if [ "$(lscpu | grep Intel)" ]; then export ENV_CPU="intel"; + elif [ "$(lscpu | grep AMD)" ]; then export ENV_CPU="amd"; + elif [ "$(lscpu | grep ARM)" ]; then export ENV_CPU="arm"; + else export ENV_CPU="unkown"; fi +else export ENV_CPU="unkown"; fi diff --git a/src/fake-os/modules/environment/hw_gpu_make.sh b/src/fake-os/modules/environment/hw_gpu_make.sh new file mode 100755 index 0000000..983e454 --- /dev/null +++ b/src/fake-os/modules/environment/hw_gpu_make.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + + + +#--------[ Detect GPU Make ]--------# +if [ -d "/proc/bus/pci" ] && [ "$(command -v lspci)" ]; then + if [ "$(lspci | grep VGA | grep Intel)" ]; then export ENV_GPU="intel"; + elif [ "$(lspci | grep VGA | grep GeForce)" ]; then export ENV_GPU="nvidia"; + elif [ "$(lspci | grep VGA | grep AMD)" ]; then export ENV_GPU="amd"; + else export ENV_GPU="unkown" + fi +else export ENV_GPU="unknown"; fi diff --git a/src/fake-os/modules/environment/hw_mb_chipset.sh b/src/fake-os/modules/environment/hw_mb_chipset.sh new file mode 100755 index 0000000..8a7103b --- /dev/null +++ b/src/fake-os/modules/environment/hw_mb_chipset.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Motherboard Chipset ]--------# +if [ -d "/sys/devices/virtual/dmi/id" ]; then + export ENV_MAKE=$(cat /sys/devices/virtual/dmi/id/sys_vendor) + export ENV_MODEL=$(cat /sys/devices/virtual/dmi/id/product_family) +elif [ -f "/proc/device-tree/model" ]; then + if [ "$(tr -d '\0' < /proc/device-tree/model | grep -a PineTab)" ]; then + export ENV_MAKE="Pine64" + export ENV_MODEL="PineTab" + elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a PinePhone)" ]; then + export ENV_MAKE="Pine64" + export ENV_MODEL="PinePhonePro" + elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Zero W')" ]; then + export ENV_MAKE="RaspberryPi" + export ENV_MODEL="RPi-Zero-W" + elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Pi 2')" ]; then + export ENV_MAKE="RaspberryPi" + export ENV_MODEL="RPi-2" + elif [ "$(tr -d '\0' < /proc/device-tree/model | grep -a 'Pi 4')" ]; then + export ENV_MAKE="RaspberryPi" + export ENV_MODEL="RPi-4" + else + export ENV_MAKE="unknown" + export ENV_MODEL="unknown" + fi +else + export ENV_MAKE="unknown" + export ENV_MODEL="unknown" +fi diff --git a/src/fake-os/modules/environment/hw_memory.sh b/src/fake-os/modules/environment/hw_memory.sh new file mode 100755 index 0000000..27e0ae6 --- /dev/null +++ b/src/fake-os/modules/environment/hw_memory.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Memory Amount ]--------# +export ENV_MEMORY=$(free -h | grep 'Mem\|Speicher' | awk '{print $2}') diff --git a/src/fake-os/modules/environment/hw_network_type.sh b/src/fake-os/modules/environment/hw_network_type.sh new file mode 100755 index 0000000..02ef7c5 --- /dev/null +++ b/src/fake-os/modules/environment/hw_network_type.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Network Type ]--------# +export ENV_NETWORK="none" +if [ "$(ip addr | grep inet | grep wlan)" ]; then export ENV_NETWORK="wlan"; fi +if [ "$(ip addr | grep inet | grep eth)" ]; then export ENV_NETWORK="eth"; fi +if [ "$(ip addr | grep inet | grep enp)" ]; then export ENV_NETWORK="eth"; fi diff --git a/src/fake-os/modules/environment/hw_virtual.sh b/src/fake-os/modules/environment/hw_virtual.sh new file mode 100755 index 0000000..80f2d04 --- /dev/null +++ b/src/fake-os/modules/environment/hw_virtual.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Virtual/Container Environment ]--------# +if [ ! "$(cat /proc/1/environ 2>&1 | tr -d '\0' | grep denied)" ]; then + if [ "$(cat /proc/1/environ | tr -d '\0' | grep lxc)" ]; then + export ENV_VIRTUAL="LXC" + export ENV_VTAG="[LXC]" + elif [ "$ENV_MAKE" == "QEMU" ]; then + export ENV_VIRTUAL="VM" + export ENV_VTAG='[QEMU]' + else + export ENV_VIRTUAL="REAL" + fi + echo $ENV_VIRTUAL > /var/cache/fake-os/env_virtual.txt +else + if [ -f /var/cache/fake-os/env_virtual.txt ]; then + export ENV_VIRTUAL="$(cat /var/cache/fake-os/env_virtual.txt)" + if [ "$ENV_VIRTUAL" != "REAL" ]; then ENV_VTAG="[$ENV_VIRTUAL]"; fi + else + export ENV_VIRTUAL="UNKNOWN" + fi +fi diff --git a/src/fake-os/modules/environment/os_distro.sh b/src/fake-os/modules/environment/os_distro.sh new file mode 100755 index 0000000..4921752 --- /dev/null +++ b/src/fake-os/modules/environment/os_distro.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Operating System Distro ]--------# +export ENV_DISTRO=$(cat /etc/os-release | grep "^NAME=" | sed 's/^NAME="\(.*\)"$/\1/g') +if [ "$(command -v proxmox-boot-tool)" ]; then export ENV_DISTRO="Proxmox (Debian)"; fi +if [ "$(command -v raspi-config)" ]; then export ENV_DISTRO="RaspberryOS (Debian)"; fi + + +# "Arch Linux" +# "Artix Linux" +# "Debian GNU/Linux" +# "Fedora Linux" +# "Proxmox (Debian)" +# "RaspberryOS (Debian)" diff --git a/src/fake-os/modules/environment/os_fake_version.sh b/src/fake-os/modules/environment/os_fake_version.sh new file mode 100755 index 0000000..84561af --- /dev/null +++ b/src/fake-os/modules/environment/os_fake_version.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Fake Version ]--------# +export ENV_FAKE_VERSION="$(cat /var/cache/fake-os/fake_version.txt)" diff --git a/src/fake-os/modules/environment/os_hostname.sh b/src/fake-os/modules/environment/os_hostname.sh new file mode 100755 index 0000000..c015822 --- /dev/null +++ b/src/fake-os/modules/environment/os_hostname.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Detect System Hostname ]--------# +export ENV_HOSTNAME=$(uname -n) diff --git a/src/fake-os/modules/environment/os_init_system.sh b/src/fake-os/modules/environment/os_init_system.sh new file mode 100755 index 0000000..12846f1 --- /dev/null +++ b/src/fake-os/modules/environment/os_init_system.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Init System ]--------# +if [ "$(command -v systemctl)" ]; then export ENV_INIT="systemd"; +elif [ "$(command -v rc-service)" ]; then export ENV_INIT="openrc"; +else export ENV_INIT="unknown"; +fi diff --git a/src/fake-os/modules/environment/os_login_type.sh b/src/fake-os/modules/environment/os_login_type.sh new file mode 100755 index 0000000..4eddc82 --- /dev/null +++ b/src/fake-os/modules/environment/os_login_type.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + + + +#--------[ Dettect Session Login Type ]--------# +if [ "$SSH_TTY" ]; then + ENV_LOGIN="ssh"; +else + ENV_LOGIN="local"; +fi diff --git a/src/fake-os/modules/environment/os_package_manager.sh b/src/fake-os/modules/environment/os_package_manager.sh new file mode 100755 index 0000000..9cd1f50 --- /dev/null +++ b/src/fake-os/modules/environment/os_package_manager.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh + + + +#--------[ Package Manager ]--------# +if [ "$(command -v paru)" ]; then export ENV_MANAGER="paru"; +elif [ "$(command -v pacman)" ]; then export ENV_MANAGER="pacman"; +elif [ "$(command -v apt)" ]; then export ENV_MANAGER="apt"; +elif [ "$(command -v apk)" ]; then export ENV_MANAGER="apk"; +elif [ "$(command -v dnf)" ]; then export ENV_MANAGER="dnf"; +elif [ "$(command -v yum)" ]; then export ENV_MANAGER="yum"; +else export ENV_MANAGER="unknown"; fi diff --git a/src/fake-os/modules/environment/os_shell.sh b/src/fake-os/modules/environment/os_shell.sh new file mode 100755 index 0000000..d0c0da7 --- /dev/null +++ b/src/fake-os/modules/environment/os_shell.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Detect Shell ]--------# +export ENV_SHELL="$(echo $SHELL | sed 's/^\/.*\///g')" diff --git a/src/fake-os/modules/environment/os_users.sh b/src/fake-os/modules/environment/os_users.sh new file mode 100755 index 0000000..83b08d0 --- /dev/null +++ b/src/fake-os/modules/environment/os_users.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh + + + +#--------[ Detect System Users ]--------# +export ENV_USERS=$( echo root $(ls /home/)) diff --git a/src/fake-os/modules/layout/fake_layout_heading.sh b/src/fake-os/modules/layout/fake_layout_heading.sh new file mode 100755 index 0000000..a2b6eb8 --- /dev/null +++ b/src/fake-os/modules/layout/fake_layout_heading.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + + + +#--------[ Fake Layout Heading ]--------# +_fake_layout_heading () { + PADDING=$(perl -E "say \"─\" x $(echo $1 | wc -c)") + echo "" + echo "┌──$PADDING─┐" + echo -e "│ ${FCOLBOLD}$1${FCOL0} │" + echo "└──$PADDING─┘" + echo "" + if [ "$FAKE_MODE_SLOW" ]; then sleep 2; fi +} diff --git a/src/fake-os/modules/layout/fake_layout_message.sh b/src/fake-os/modules/layout/fake_layout_message.sh new file mode 100755 index 0000000..fbd083a --- /dev/null +++ b/src/fake-os/modules/layout/fake_layout_message.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env sh + + + +#--------[ Fake Layout Message ]--------# +_fake_layout_message () { + echo "" + + + + #--------[ 6 Arg Message ]--------# + if [ "$8" ]; then + echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2" + echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}"; + echo -e "[$5]:${FCOLITAL} $6 ${FCOL0}"; + echo -e "[$7]:${FCOLITAL} $8 ${FCOL0}"; + echo "" + + + + #--------[ 6 Arg Message ]--------# + elif [ "$6" ]; then + echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2" + echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}"; + echo -e "[$5]:${FCOLITAL} $6 ${FCOL0}"; + echo "" + + + + #--------[ 4 Arg Message ]--------# + elif [ "$4" ]; then + echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1: $2" + echo -e "[$3]:${FCOLITAL} $4 ${FCOL0}"; + echo "" + + + #--------[ 2 Argument Message ]--------# + elif [ "$2" ]; then + echo -e "${FCOLBOLD}FAKE//OS${FCOL0} $1:${FCOLITAL} $2 ${FCOL0}" + + + #--------[ 1 Argument Message ]--------# + else + echo -e "${FCOLBOLD}FAKE//OS${FCOL0}: $1" + fi + + + + #--------[ Debug Mode ]--------# + if [ "$1" == "Error" ] && [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/layout/fake_layout_subheading.sh b/src/fake-os/modules/layout/fake_layout_subheading.sh new file mode 100755 index 0000000..f5f3b20 --- /dev/null +++ b/src/fake-os/modules/layout/fake_layout_subheading.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + + + +#--------[ Fake Layout Sub-Heading ]--------# +_fake_layout_subheading () { + echo "" + echo -e "--------[${FCOLBOLD} $1 ${FCOL0}]--------" + if [ "$FAKE_MODE_DEBUG" ]; then sleep 1; fi +} diff --git a/src/fake-os/modules/layout/fake_layout_submessage.sh b/src/fake-os/modules/layout/fake_layout_submessage.sh new file mode 100644 index 0000000..0943936 --- /dev/null +++ b/src/fake-os/modules/layout/fake_layout_submessage.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + + + +#--------[ Fake Layout Message ]--------# +_fake_layout_submessage () { + echo -e "[$1]:${FCOLITAL} $2 ${FCOL0}"; +} diff --git a/src/fake-os/modules/manager/fake_manager.sh b/src/fake-os/modules/manager/fake_manager.sh new file mode 100755 index 0000000..ebd32a6 --- /dev/null +++ b/src/fake-os/modules/manager/fake_manager.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env sh + + + +#--------[ Determin Base Distro Package Manager ]--------# +if [ $(command -v apt) ]; then FAKE_MANAGER=apt; fi +if [ $(command -v apk) ]; then FAKE_MANAGER=apk; fi +if [ $(command -v dnf) ]; then FAKE_MANAGER=dnf; fi +if [ $(command -v pacman) ]; then FAKE_MANAGER=pacman; fi +if [ $(command -v paru) ] && [ "$(whoami)" != "root" ]; then FAKE_MANAGER=paru; fi + + + +#--------[ FAKE//OS Package/System Manager ]--------# +fake () { + + + + #--------[ Package Management ]--------# + if [ "$1" == "update" ]; then _fake_manager_package_update $@; + elif [ "$1" == "install" ]; then _fake_manager_package_install $@; + elif [ "$1" == "remove" ]; then _fake_manager_package_remove $@; + elif [ "$1" == "search" ]; then _fake_manager_package_search $@; + + + + #--------[ Init/System Management ]--------# + elif [ "$1" == "status" ]; then _fake_manager_system_status $@; + elif [ "$1" == "start" ]; then _fake_manager_system_start $@; + elif [ "$1" == "stop" ]; then _fake_manager_system_stop $@; + elif [ "$1" == "restart" ]; then _fake_manager_system_restart $@; + elif [ "$1" == "enable" ]; then _fake_manager_system_enable $@; + elif [ "$1" == "disable" ]; then _fake_manager_system_disable $@; + elif [ "$1" == "flush" ]; then _fake_utils_linux_flushcache $@; + + + + #--------[ FAKE//OS Commandes ]--------# + elif [ "$1" == "upgrade" ]; then _fake_manager_upgrade $@; + elif [ "$1" == "help" ]; then _fake_manager_help $@; + + + + #--------[ Error Catch-All ]--------# + else + _fake_layout_message "$1" "Unrecognised command..." + fi + + + + #--------[ Debug Pause ]--------# + if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/manager/fake_manager_help.sh b/src/fake-os/modules/manager/fake_manager_help.sh new file mode 100755 index 0000000..543abd7 --- /dev/null +++ b/src/fake-os/modules/manager/fake_manager_help.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Help ]--------# +_fake_manager_help () { + echo "" + echo "FAKE//OS [version] $ENV_FAKE_VERSION" + echo "-----------------------------------" + echo "usage: fake " + echo "" + echo "Package management commands:" + echo " install Install new software packages" + echo " update Update installed software packages" + echo " remove Remove/Uninstall software packages" + echo " search Search repository for software packages" + echo "" + echo "Init/System management commands" + echo " start Start system daemons" + echo " stop Stop system daemons" + echo " restart Restart system daemons" + echo " enable Add system daemons to default startup PID" + echo " disable Remove system daemons from default startup PID" + echo " flush Clear system caches" + echo "" + echo "FAKE//OS commands:" + echo " upgrade Upgrade FAKE//OS to latest git version" + echo " help Display this help screen" + echo "" +} diff --git a/src/fake-os/modules/manager/fake_manager_upgrade.sh b/src/fake-os/modules/manager/fake_manager_upgrade.sh new file mode 100755 index 0000000..4fd7370 --- /dev/null +++ b/src/fake-os/modules/manager/fake_manager_upgrade.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Upgrade FAKE//OS ]--------# +_fake_manager_upgrade () { + curl https://git.fake.onl/fake/fake-os/raw/branch/master/setup.sh | sudo $ENV_SHELL +} diff --git a/src/fake-os/modules/manager/package/fake_manager_package_automation.sh b/src/fake-os/modules/manager/package/fake_manager_package_automation.sh new file mode 100755 index 0000000..f12b2c0 --- /dev/null +++ b/src/fake-os/modules/manager/package/fake_manager_package_automation.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Automation Function ]--------# +_fake_manager_package_automation () { + + + + #--------[ Parse Input Command ]--------# + FAKE_CMD="$@" + + + + #--------[ 4x Automatic Attmepts ]--------# + FAKE_RETRY=0 + until $FAKE_CMD; do + ((FAKE_RETRY=FAKE_RETRY+1)) + if [ $FAKE_RETRY -eq 4 ]; then break; fi + _fake_layout_message "Error" "Auto-Retry -> Attempt $FAKE_RETRY..." "retry" "$FAKE_CMD" + done + + + + #--------[ 1x Manual Attempt ]--------# + if [ $FAKE_RETRY -eq 4 ]; then + FAKE_CMD=$(echo $FAKE_CMD | sed -e 's/--noconfirm//g') + FAKE_CMD=$(echo $FAKE_CMD | sed -e 's/-y//g') + _fake_layout_message "Error" "Auto-Retry -> Attempt 4 [FINAL]..." "retry" "$FAKE_CMD" + $FAKE_CMD + + + + #--------[ Autmation Failure ]--------# + if [ $? -ne 0 ]; then + ((FAKE_RETRY=FAKE_RETRY+1)) + _fake_layout_message "Error" "$FAKE_CMD" "message" "Failed after 4x Auto and 1x Manual attempts..." + __fake_debug_error_pause + fi + fi + + + +} diff --git a/src/fake-os/modules/manager/package/fake_manager_package_install.sh b/src/fake-os/modules/manager/package/fake_manager_package_install.sh new file mode 100755 index 0000000..856d0b3 --- /dev/null +++ b/src/fake-os/modules/manager/package/fake_manager_package_install.sh @@ -0,0 +1,120 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Install Software ]--------# +_fake_manager_package_install () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify packages..." + + + + #--------[ Parse Package Arguments ]--------# + else + FAKE_PACKAGES=$(echo "$@" | sed -e 's/^install\ //g') + + + + #--------[ Get Pre-Installed System Pacakges ]--------# + SYS_PACKAGES="" + case $FAKE_MANAGER in + apt) SYS_PACKAGES="$(apt list --installed 2>/dev/null)" ;; + apk) SYS_PACKAGES="$(apk list --installed)" ;; + dnf) SYS_PACKAGES="$(dnf list --installed)" ;; + pacman) SYS_PACKAGES="$(pacman -Qq)" ;; + paru) SYS_PACKAGES="$(paru -Qq)" ;; + esac + + + + #--------[ Sort Packages Already Pre-Installed ]--------# + FAKE_PACKAGES_NEW="" + FAKE_PACKAGES_OLD="" + for TMP_PACKAGE in $FAKE_PACKAGES; do + if [ "$(echo $SYS_PACKAGES | grep $TMP_PACKAGE)" ]; then + FAKE_PACKAGES_OLD="$FAKE_PACKAGES_OLD $TMP_PACKAGE" + else + FAKE_PACKAGES_NEW="$FAKE_PACKAGES_NEW $TMP_PACKAGE" + fi + done + + + + #--------[ Determin Available Packages ]--------# + FAKE_PACKAGES_UNAVAILABLE="" + FAKE_PACKAGES_INSTALL="" + for TMP_PACKAGE in $FAKE_PACKAGES_NEW; do + TMP_FOUND=FALSE + case $FAKE_MANAGER in + apk) + if [ "$(apk search --exact $TMP_PACKAGE)" ];then TMP_FOUND=TRUE; fi + ;; + apt) + if [ "$(apt-cache search --names-only $TMP_PACKAGE | grep ^$TMP_PACKAGE\ )" ];then TMP_FOUND=TRUE; fi + ;; + pacman) + if [ "$(pacman -Ssq $TMP_PACKAGE | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi + if [ "$(pacman -Sg $TMP_PACKAGE | awk '{print $1}' | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi + ;; + paru) + if [ "$(paru -Ssq $TMP_PACKAGE | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi + if [ "$(paru -Sg $TMP_PACKAGE | awk '{print $1}' | grep ^$TMP_PACKAGE$)" ];then TMP_FOUND=TRUE; fi + ;; + esac + if [ "$TMP_FOUND" == "TRUE" ]; then + FAKE_PACKAGES_INSTALL="$FAKE_PACKAGES_INSTALL $TMP_PACKAGE" + else + FAKE_PACKAGES_UNAVAILABLE="$FAKE_PACKAGES_UNAVAILABLE $TMP_PACKAGE" + fi + done + + + + #--------[ Build Install Command ]--------# + FAKE_CMD="" + case $FAKE_MANAGER in + apt) FAKE_CMD="sudo apt -y install $FAKE_PACKAGES_INSTALL" ;; + apk) FAKE_CMD="sudo apk add $FAKE_PACKAGES_INSTALL" ;; + dnf) FAKE_CMD="sudo dnf -y install $FAKE_PACKAGES_INSTALL" ;; + pacman) FAKE_CMD="sudo pacman --noconfirm -S $FAKE_PACKAGES_INSTALL" ;; + paru) FAKE_CMD="paru --noconfirm -S $FAKE_PACKAGES_INSTALL" ;; + esac + + + + #--------[ Skip Pre-Installed Pacakges ]--------# + if [ ! "$FAKE_PACKAGES_INSTALL" ]; then + _fake_layout_message "Install" "No new packages..." + if [ "$FAKE_PACKAGES_UNAVAILABLE" ]; then + _fake_layout_submessage "unavailable" "$FAKE_PACKAGES_UNAVAILABLE"; + _fake_debug_error_pause + fi + if [ "$FAKE_PACKAGES_OLD" ]; then _fake_layout_submessage "up to date" "$FAKE_PACKAGES_OLD"; fi + echo "" + fi + + + + #--------[ Install New Packages ]--------# + if [ "$FAKE_PACKAGES_INSTALL" ]; then + _fake_layout_message "Install" "$FAKE_CMD" + if [ "$FAKE_PACKAGES_UNAVAILABLE" ]; then + _fake_layout_submessage "unavailable" "$FAKE_PACKAGES_UNAVAILABLE" + _fake_debug_error_pause + fi + if [ "$FAKE_PACKAGES_OLD" ]; then _fake_layout_submessage "up to date" "$FAKE_PACKAGES_OLD"; fi + _fake_layout_submessage "installing" "$FAKE_PACKAGES_INSTALL" + echo "" + if [ "$FAKE_MODE_DEBUG" ] || [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi + _fake_manager_package_automation "$FAKE_CMD" + _fake_debug + fi + + + + fi +} diff --git a/src/fake-os/modules/manager/package/fake_manager_package_remove.sh b/src/fake-os/modules/manager/package/fake_manager_package_remove.sh new file mode 100755 index 0000000..e986145 --- /dev/null +++ b/src/fake-os/modules/manager/package/fake_manager_package_remove.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Remove/Uninstall Software ]--------# +_fake_manager_package_remove () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify packages..." + + + + #--------[ Parse Package Arguments ]--------# + else + FAKE_PACKAGES=$(echo "$@" | sed -e 's/^remove\ //g') + + + + #--------[ Compile Command ]--------# + FAKE_CMD="" + case $FAKE_MANAGER in + apt) FAKE_CMD="sudo apt -y remove $FAKE_PACKAGES" ;; + apk) FAKE_CMD="sudo apk del $FAKE_PACKAGES" ;; + yum) FAKE_CMD="sudo yum -y remove $FAKE_PACKAGES" ;; + pacman) FAKE_CMD="sudo pacman --noconfirm -R $FAKE_PACKAGES" ;; + paru) FAKE_CMD="paru --noconfirm -R $FAKE_PACKAGES" ;; + esac + + + + #--------[ Print Info ]--------# + _fake_layout_message "Remove" "$FAKE_CMD" "remove" "$FAKE_PACKAGES" + + + + + #--------[ Run Command ]--------# + $FAKE_CMD + + + + fi +} diff --git a/src/fake-os/modules/manager/package/fake_manager_package_search.sh b/src/fake-os/modules/manager/package/fake_manager_package_search.sh new file mode 100755 index 0000000..a3c1dc3 --- /dev/null +++ b/src/fake-os/modules/manager/package/fake_manager_package_search.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Search Packages ]--------# +_fake_manager_package_search () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify packages..." + + + + #--------[ Parse Package Arguments ]--------# + else + FAKE_PACKAGES=$(echo "$@" | sed -e 's/^search\ //g') + + + + #--------[ Compile Command ]--------# + FAKE_CMD="" + case $FAKE_MANAGER in + apt) FAKE_CMD="apt-cache search $FAKE_PACKAGES" ;; + apk) FAKE_CMD="sudo apk search $FAKE_PACKAGES" ;; + dnf) FAKE_CMD="sudo dnf search $FAKE_PACKAGES" ;; + pacman) FAKE_CMD="pacman -Ss $FAKE_PACKAGES" ;; + paru) FAKE_CMD="paru -Ss $FAKE_PACKAGES" ;; + esac + + + + #--------[ Print Info ]--------# + _fake_layout_message "Search" "$FAKE_CMD" "search" "$FAKE_PACKAGES" + + + + #--------[ Run Command ]--------# + $FAKE_CMD + + + + fi +} diff --git a/src/fake-os/modules/manager/package/fake_manager_package_update.sh b/src/fake-os/modules/manager/package/fake_manager_package_update.sh new file mode 100755 index 0000000..97df590 --- /dev/null +++ b/src/fake-os/modules/manager/package/fake_manager_package_update.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env sh + + + +#--------[ FAKE//OS Manager: Update Software ]--------# +_fake_manager_package_update () { + + + + #--------[ Configure Packages And Command ]--------# + FAKE_PACKAGES="" + FAKE_CMD="" + if [ "$(whoami)" != "root" ]; then echo && echo -n -e "${FCOLBOLD}FAKE//OS${FCOL0} Update "; fi + case $FAKE_MANAGER in + apt) + sudo apt -y update + FAKE_CMD="sudo apt -y upgrade" + FAKE_PACKAGES="$(apt list --upgradable 2>/dev/null | grep -v 'Listing' | sed -e 's/\/.*$//g' | tr '\n' ' ')" + ;; + apk) + sudo apk update + FAKE_CMD="sudo apk upgrade" + FAKE_PACKAGES="$(apk list --upgradable | awk '{print $1}' | tr '\n' ' ')" + ;; + dnf) + sudo dnf -y update + FAKE_CMD="sudo yum -y upgrade" + ;; + pacman) + sudo pacman -Syyy + FAKE_CMD="sudo pacman --noconfirm -Su" + FAKE_PACKAGES="$(pacman -Quq | tr '\n' ' ')" + ;; + paru) + paru -Syyy + FAKE_CMD="paru --noconfirm -Su" + FAKE_PACKAGES="$(paru -Quq | tr '\n' ' ')" + ;; + esac + + + + #--------[ Run Command ]--------# + if [ "$FAKE_PACKAGES" ]; then + _fake_layout_message "Update" "$FAKE_CMD" "update" "$FAKE_PACKAGES" + _fake_manager_package_automation "$FAKE_CMD" + else + _fake_layout_message "Update" "$FAKE_CMD" "update" "No package updates available..." + fi + + + + #--------[ Update Other Non-Managed Software ]--------# + if [ "$(command -v pihole)" ]; then + pihole -up + fi + + + + echo "" +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_disable.sh b/src/fake-os/modules/manager/system/fake_manager_system_disable.sh new file mode 100755 index 0000000..0137265 --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_disable.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh + + + +#--------[ Disable Default System Daemons ]--------# +_fake_manager_system_disable () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@" | sed -e 's/^disable\ //g') + + + + #--------[ Print Command information ]--------# + _fake_layout_message "Disable Default Init Deamon(s)" "$TMP_DAEMONS" + + + + #--------[ Loop Through Daemons ]--------# + for TMP_DAEMON in $TMP_DAEMONS; do + case $ENV_INIT in + "systemd") sudo systemctl disable $TMP_DAEMON ;; + "openrc") sudo rc-update del $TMP_DAEMON ;; + esac + done + + + + fi +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_enable.sh b/src/fake-os/modules/manager/system/fake_manager_system_enable.sh new file mode 100755 index 0000000..883a95e --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_enable.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh + + + +#--------[ Enable Default System Daemons ]--------# +_fake_manager_system_enable () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@" | sed -e 's/^enable\ //g') + + + + #--------[ Print Command information ]--------# + _fake_layout_message "Enable Default Init Deamon(s)" "$TMP_DAEMONS" + + + + #--------[ Loop Through Daemons ]--------# + for TMP_DAEMON in $TMP_DAEMONS; do + case $ENV_INIT in + "systemd") sudo systemctl enable $TMP_DAEMON ;; + "openrc") sudo rc-update add $TMP_DAEMON ;; + esac + done + + + + fi +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_restart.sh b/src/fake-os/modules/manager/system/fake_manager_system_restart.sh new file mode 100755 index 0000000..0eff478 --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_restart.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env sh + + + +#--------[ Restart System Daemons ]--------# +_fake_manager_system_restart () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@" | sed -e 's/^restart\ //g') + + + + #--------[ Print Command information ]--------# + _fake_layout_message "Restart System Deamon(s)" "$TMP_DAEMONS" + + + + #--------[ Run Restart ]--------# + _fake_manager_system_stop "$@" + _fake_manager_system_start "$@" + echo "" + + + fi +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_start.sh b/src/fake-os/modules/manager/system/fake_manager_system_start.sh new file mode 100755 index 0000000..aa276dd --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_start.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + + + +#--------[ Start System Daemons ]--------# +_fake_manager_system_start () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@") + TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^start\ //g') + TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^restart\ //g') + + + + #--------[ Print Command information ]--------# + if [ "$1" == "start" ]; then _fake_layout_message "Start Deamon(s)" "$TMP_DAEMONS"; fi + + + + #--------[ Loop Through Daemons ]--------# + for TMP_DAEMON in $TMP_DAEMONS; do + case $ENV_INIT in + "systemd") sudo systemctl start $TMP_DAEMON ;; + "openrc") sudo rc-service $TMP_DAEMON start ;; + esac + done + if [ "$1" == "start" ]; then echo ""; fi + + + + fi +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_status.sh b/src/fake-os/modules/manager/system/fake_manager_system_status.sh new file mode 100755 index 0000000..07c7596 --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_status.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + + + +#--------[ Start System Daemons ]--------# +_fake_manager_system_status () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + echo "" + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@") + TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^status\ //g') + + + + #--------[ Print Command information ]--------# + + + + #--------[ Loop Through Daemons ]--------# + for TMP_DAEMON in $TMP_DAEMONS; do + _fake_layout_message "Daemon Status" "$TMP_DAEMON" + case $ENV_INIT in + "systemd") systemctl status $TMP_DAEMON ;; + "openrc") rc-service $TMP_DAEMON status ;; + esac + echo "" + done + + + + fi +} diff --git a/src/fake-os/modules/manager/system/fake_manager_system_stop.sh b/src/fake-os/modules/manager/system/fake_manager_system_stop.sh new file mode 100755 index 0000000..077f852 --- /dev/null +++ b/src/fake-os/modules/manager/system/fake_manager_system_stop.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env sh + + + +#--------[ Stop System Daemons ]--------# +_fake_manager_system_stop () { + + + + #--------[ Basic Error Handeling ]--------# + if [ ! "$2" ]; then + _fake_layout_message "Error" "Must specify system daemon(s)..." + + + + #--------[ Parse System Daemons ]--------# + else + TMP_DAEMONS=$(echo "$@") + TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^stop\ //g') + TMP_DAEMONS=$(echo "$TMP_DAEMONS" | sed -e 's/^restart\ //g') + + + + #--------[ Print Command information ]--------# + if [ "$1" == "stop" ]; then _fake_layout_message "Stop System Deamon(s)" "$TMP_DAEMONS"; fi + + + + #--------[ Loop Through Daemons ]--------# + for TMP_DAEMON in $TMP_DAEMONS; do + case $ENV_INIT in + "systemd") sudo systemctl stop $TMP_DAEMON ;; + "openrc") sudo rc-service $TMP_DAEMON stop ;; + esac + done + if [ "$1" == "stop" ]; then echo ""; fi + + + + fi +} diff --git a/src/fake-os/modules/utils/alias/fake_alias_ls.sh b/src/fake-os/modules/utils/alias/fake_alias_ls.sh new file mode 100755 index 0000000..f7d3684 --- /dev/null +++ b/src/fake-os/modules/utils/alias/fake_alias_ls.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + + + +#--------[ LS Alias ]--------# +if [ ! "$(command -v busybox)" ]; then + alias ls='ls --color=auto' # Colorise LS + alias ll="ls -alh" # LL functionality + alias ip="ip -c" # Colorise IP +fi diff --git a/src/fake-os/modules/utils/config/fake_utils_config_add.sh b/src/fake-os/modules/utils/config/fake_utils_config_add.sh new file mode 100755 index 0000000..13a2cb1 --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_add.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env sh + + + +# $1 - New FAKE//OS config file +# $2 - System config file location + + + +#--------[ Add To Config File ]--------# +_fake_utils_config_add () { + + + + #--------[ Bakup Original Config ]--------# + _fake_utils_config_backup ${2} + + + + #--------[ Message Output ]--------# + _fake_layout_message "Append Config" "${2}" "new" "${1}" "cat" "${2}.original + ${2}.fake > ${2}" + + + + #--------[ Append Config ]--------# + mkdir -p $(dirname $2) + cp -r "${1}" "${2}.fake" + cat "${2}.original" > "${2}" + cat "${2}.fake" >> "${2}" + echo "" + + + + #--------[ Debugging ]--------# + if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/utils/config/fake_utils_config_backup.sh b/src/fake-os/modules/utils/config/fake_utils_config_backup.sh new file mode 100755 index 0000000..a81ab9d --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_backup.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + + + +# $1 - System config file location + + + +#--------[ Backup Config File ]-------- +_fake_utils_config_backup () { + if [ -f "${1}" ] && [ ! -f "${1}.original" ]; then + cp -rv "${1}" "${1}.original" + fi +} diff --git a/src/fake-os/modules/utils/config/fake_utils_config_pull.sh b/src/fake-os/modules/utils/config/fake_utils_config_pull.sh new file mode 100755 index 0000000..8bfcce7 --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_pull.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env sh + + + +# $1 - New FAKE//OS config file +# $2 - System config file location + + + +#--------[ Pull Remote Config Files ]--------# +_fake_utils_config_pull () { + + + + #--------[ Git Clone ]--------# + if [ "$(echo $1 | grep 'git')" ]; then + rm -rf $2 + mkdir -p $2 + git clone --depth 1 $1 $2 + _fake_layout_message "Git Pull" "$1 -> $2" "output" "$(ls $2 | tr '\n' ' ')" + + + + #--------[ Curl Tar.Gz Pull ]--------# + elif [ "$(echo $1 | grep 'tar.gz')" ]; then + if [ ! "$(curl -Is $1 | grep '200 OK')" ]; then + _fake_layout_message "Error" "Remote file missing..." "missing" "$1" + else + mkdir -p $2 + curl $1 | tar xzf - -C $2/ + _fake_layout_message "Curl Pull" "$1 -> $2" "output" "$(ls $2 | tr '\n' ' ')" + fi + fi + + + + #--------[ Debugging ]--------# + if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/utils/config/fake_utils_config_regex.sh b/src/fake-os/modules/utils/config/fake_utils_config_regex.sh new file mode 100644 index 0000000..8c621a9 --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_regex.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env sh + + + +# $1 - Search String +# $2 - Replace String +# $3 - System config file location + + + +#--------[ Regex Find/Replace Config File ]--------# +_fake_utils_config_regex () { + + + + #--------[ Backup Original Config ]--------# + _fake_utils_config_backup ${3} + + + + #--------[ Message Output ]--------# + _fake_layout_message "Regex Find and Repalce" "${3}" "search" "${1}" "replace" "${2}" + + + + #--------[ Parse and Clean Variables ]--------# + TMP_SEARCH="$1" + TMP_SEARCH="$(echo $TMP_SEARCH | sed 's/\//\\\//g' )" + TMP_SEARCH="$(echo $TMP_SEARCH | sed 's/\%/\\\%/g' )" + + TMP_REPLACE="$2" + TMP_REPLACE="$(echo $TMP_REPLACE | sed 's/\//\\\//g' )" + TMP_REPLACE="$(echo $TMP_REPLACE | sed 's/\%/\\\%/g' )" + + TMP_PATH="$3" + + + + #--------[ Regex Find/Replace Config ]--------# + sed -i "s/$TMP_SEARCH/$TMP_REPLACE/g" $TMP_PATH + echo "" + + + + #--------[ Debugging ]--------# + if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/utils/config/fake_utils_config_replace.sh b/src/fake-os/modules/utils/config/fake_utils_config_replace.sh new file mode 100755 index 0000000..784b26c --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_replace.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env sh + + + +# $1 - New FAKE//OS config file +# $2 - System config file location + + + +#--------[ Replace Config File ]--------# +_fake_utils_config_replace () { + + + + #--------[ Backup Original Config ]--------# + _fake_utils_config_backup ${2} + + + + #--------[ Message Output ]--------# + _fake_layout_message "Replace Config" "${2}" "new" "${1}" + + + + #--------[ Replace Config ]--------# + mkdir -p $(dirname $2) + cp -rv "${1}" "${2}.fake" + cp -rv "${1}" "${2}" + echo "" + + + + #--------[ Debugging ]--------# + if [ "$FAKE_MODE_SLOW" ]; then sleep 3; fi +} diff --git a/src/fake-os/modules/utils/config/fake_utils_config_restore.sh b/src/fake-os/modules/utils/config/fake_utils_config_restore.sh new file mode 100755 index 0000000..5ecf77c --- /dev/null +++ b/src/fake-os/modules/utils/config/fake_utils_config_restore.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh + + + +# $1 - New FAKE//OS config file +# $2 - System config file location + + + +#--------[ Restore Config File ]-------- +_fake_utils_config_restore () { + if [ -f "${1}.original" ]; then + cp -r "${1}" "${1}.original" + if [ $? == 0 ]; then + _fake_layout_message "Restore Config" "${1}" "backup" "${1}.original" + cp -rv "${1}.original" "${1}" + fi + else + _fake_layout_message "Error" "No backup avaiable" "missing" "${1}.original" + fi +} diff --git a/src/fake-os/modules/utils/environment/fake_environment_print.sh b/src/fake-os/modules/utils/environment/fake_environment_print.sh new file mode 100755 index 0000000..f1d6a60 --- /dev/null +++ b/src/fake-os/modules/utils/environment/fake_environment_print.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env sh + + + +#--------[ Print Environment Variables ]--------# +_fake_environment_print () { + echo "" + echo "$ENV_DISTRO [$ENV_INIT] $ENV_MANAGER" + echo "-------------------------------------" + echo "$ENV_MAKE $ENV_MODEL" + echo "" + if [ "$FAKE_MODE_DEBUG" ]; then echo "MODE_DEBUG"; fi + if [ "$FAKE_MODE_FAST" ]; then echo "MODE_FAST"; fi + if [ "$FAKE_MODE_SLOW" ]; then echo "MODE_SLOW"; fi + echo "" + if [ "$ENV_VIRTUAL" == "LXC" ]; then + echo "cpu: $ENV_CPU $ENV_ARCH $ENV_VTAG" + elif [ "$ENV_VIRTUAL" == "VM" ]; then + echo "cpu: $ENV_CPU $ENV_ARCH $ENV_VTAG" + else + echo "cpu: $ENV_CPU $ENV_ARCH" + fi + echo "mem: $ENV_MEMORY" + echo "gpu: $ENV_GPU" + echo "net: $ENV_NETWORK" +} diff --git a/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh b/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh new file mode 100755 index 0000000..ecc605e --- /dev/null +++ b/src/fake-os/modules/utils/gnome/fake_utils_gnome_extensions.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + + + +#--------[ Gnome Extensions ]--------# +_fake_utils_gnome_extensions () { + echo " - enable [$1]" + if [ "$(_fake_utils_linux_status gdm | grep started)" ]; then + gnome-extensions enable "$1" + else + dbus-launch --exit-with-session gnome-extensions enable "$1" + fi +} diff --git a/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh b/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh new file mode 100755 index 0000000..b131709 --- /dev/null +++ b/src/fake-os/modules/utils/gnome/fake_utils_gnome_settings.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh + + + +#--------[ Gnome Settings ]--------# +_fake_utils_gnome_settings () { + if [ "$(_fake_utils_linux_status gdm | grep started)" ]; then + if [ "$3" ]; then + gsettings set "$1" "$2" "$3" + echo " - set [$2] $3" + else + echo "Graphical" + fi + else + if [ "$3" ]; then + dbus-launch --exit-with-session gsettings set "$1" "$2" "$3" + echo " - set [$2] $3" + else + echo "Terminal" + fi + fi +} diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh new file mode 100755 index 0000000..562cbda --- /dev/null +++ b/src/fake-os/modules/utils/linux/fake_utils_linux_appdata.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env sh + + + +#--------[ Cache Clear ]--------# +_fake_utils_linux_appdata () { + if [ ! -L $1 ]; then + _fake_layout_message "Move and link" "$1 -> /data/$2" + mv -v $1 /data/$2 + ln -sfv /data/$2 $1 + echo "" + else + _fake_layout_message "$1" "Symlink already exists..." + fi +} diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh new file mode 100755 index 0000000..3771245 --- /dev/null +++ b/src/fake-os/modules/utils/linux/fake_utils_linux_flushcache.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env sh + + + +#--------[ Cache Clear ]--------# +_fake_utils_linux_flushcache () { + + + + #--------[ Flush System Cache In Memory ]--------# + TMP_MEM_PRE=$(free -h | grep 'Mem:' | awk '{ print $4}') + echo "" + sudo -u root $ENV_SHELL -c "sync; echo 3 > /proc/sys/vm/drop_caches" + TMP_MEM_POST=$(free -h | grep 'Mem:' | awk '{ print $4}') + _fake_layout_message "Clear Cache" "echo 3 > /proc/sys/vm/drop_caches" "free memory" "$TMP_MEM_PRE -> $TMP_MEM_POST" + + + + #--------[ Flush DNS Cache ]--------# + if [ "$(command -v systemctl)" ]; then + sudo systemd-resolve --flush-caches + sudo resolvectl flush-caches + elif [ "$(command -v ndsmasq)" ]; then + sudo killall -HUP dnsmasq + fi +} diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh new file mode 100755 index 0000000..93ce80a --- /dev/null +++ b/src/fake-os/modules/utils/linux/fake_utils_linux_shellstrap.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env sh + + + +# $1 - System user +# $2 - Command + + + +#--------[ Bootstrap User Shell ]--------# +_fake_utils_linux_shellstrap () { + + sudo -u "$1" $ENV_SHELL -c ". /usr/share/fake-os/fake_init.sh --quiet && $2" + +} diff --git a/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh b/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh new file mode 100755 index 0000000..15b2771 --- /dev/null +++ b/src/fake-os/modules/utils/linux/fake_utils_linux_status.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env sh + + + +# $1 - Init System Daemon + + + +#--------[ Cache Clear ]--------# +_fake_utils_linux_status () { + + + + #--------[ Get SystemD Data ]--------# + if [ "$ENV_INIT" == "systemd" ]; then + TMP_ENABLED="$(systemctl status $1 | grep -e 'Loaded' | grep -e 'enabled;')" + TMP_STARTED="$(systemctl status $1 | grep -e 'Active' | grep -e 'running')" + + + + #--------[ Get OpenRC Data ]--------# + elif [ "$ENV_INIT" == "openrc" ]; then + TMP_ENABLED="$(rc-update -a | grep gdm | grep -e 'boot' -e 'default' -e 'sysinit')" + TMP_STARTED="$(rc-service $1 status | grep started)" + fi + + + + #--------[ Output Data ]--------# + if [ "$TMP_ENABLED" ] && [ "$TMP_STARTED" ]; then echo "enabled started"; fi + if [ ! "$TMP_ENABLED" ] && [ "$TMP_STARTED" ]; then echo "disabled started"; fi + if [ "$TMP_ENABLED" ] && [ ! "$TMP_STARTED" ]; then echo "enabled stopped"; fi + if [ ! "$TMP_ENABLED" ] && [ ! "$TMP_STARTED" ]; then echo "disabled stopped"; fi +}