Compare commits

...

11 Commits

8 changed files with 208 additions and 31 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.venv

View File

@ -1,4 +1,26 @@
# scripts
# Scripts
- [Configure SSH connection helper (remote pc not server)](#configure-ssh-connection-helper-remote-pc-not-server)
- [Docker commands](#docker-commands)
- [Remove every user R packages](#remove-every-user-r-packages)
- [Setup Git SSH key](#setup-git-ssh-key)
- [Font ligature test](#font-ligature-test)
- [QEMU cheat sheet](#qemu-cheat-sheet)
- [Share internet between two Linux interfaces using connman](#share-internet-between-two-linux-interfaces-using-connman)
- [IP Host (eth1 has internet, eth0 is remote)](#ip-host-eth1-has-internet-eth0-is-remote)
- [IP Remote](#ip-remote)
- [Remove DRM from Adobe Digital Editions](#remove-drm-from-adobe-digital-editions)
- [Prerequisites](#prerequisites)
- [Setting up Calibre](#setting-up-calibre)
- [Getting the DRM-free PDF](#getting-the-drm-free-pdf)
- [Loop devices](#loop-devices)
- [Install img.xz](#install-imgxz)
- [Raise Linux open files limits](#raise-linux-open-files-limits)
- [Verify a PGP Signature](#verify-a-pgp-signature)
- [Self-signed OpenSSL](#self-signed-openssl)
- [interactive](#interactive)
- [non-interactive and 10 years expiration](#non-interactive-and-10-years-expiration)
- [Bind to port 80 or 443](#bind-to-port-80-or-443)
## Configure SSH connection helper (remote pc not server)
@ -82,7 +104,7 @@ qemu-system-x86_64 $DISK_NAME.img \
-name $VM_NAME &
```
## Share internet between two linux interfaces using connman
## Share internet between two Linux interfaces using connman
### IP Host (eth1 has internet, eth0 is remote)
@ -115,7 +137,7 @@ config <eth0> --ipv4 manual 192.168.137.2 255.255.255.0 192.168.137.1 --nameserv
### Prerequisites
In Windows you must have _Adobe Digital Editions_ and _Calibre_ using Chocolatey
On Windows, you must have _Adobe Digital Editions_ and _Calibre_ using Chocolatey
```sh
choco install -y adobedigitaleditions calibre
@ -125,11 +147,11 @@ choco install -y adobedigitaleditions calibre
- Download the DeDRM plugin on [GitHub](https://github.com/noDRM/DeDRM_tools).
- Extract the plugin archive
- Install the plugin in Calibre -> Preferences -> Plugins -> Add from file
- Install the plugin in Calibre Preferences Plugins Add from file
### Getting the DRM-free pdf
### Getting the DRM-free PDF
- Open the pdf using _Adobe Digital Editions_
- Open the PDF using _Adobe Digital Editions_
- Navigate to C:/Users/\<USER\>/My\ Digital\ Editions
- Add the PDF to calibre
- The DRM free PDF is available at C:/Users/\<USER\>/Calibre\ Library
@ -157,7 +179,7 @@ rm $BLOCK_PATH
xzcat $IMG_FILE | dd of=/dev/$DEVICE bs=64k oflag=dsync status=progress
```
## Raise linux open files limits
## Raise Linux open files limits
In the file /etc/security/limits.conf add this :
@ -193,4 +215,5 @@ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 3
## Bind to port 80 or 443
[Is there a way for non-root processes to bind to "privileged" ports on Linux?](https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-on-linux)
[Allow non-root process to bind to port 80 and 443?](https://superuser.com/questions/710253/allow-non-root-process-to-bind-to-port-80-and-443)

View File

@ -1,6 +1,7 @@
#!/usr/bin/env bash
# Print out escape sequences usable for coloured text on tty.
# shellcheck disable=2016
printf 'Colour escapes are %s\n' '\e[${value};...;${value}m'
printf 'Values 30..37 are \e[33mforeground colours\e[m\n'
printf 'Values 40..47 are \e[43mbackground colours\e[m\n'
@ -17,17 +18,58 @@ for fgc in {30..37}; do
fgc=${fgc#37} # white
bgc=${bgc#40} # black
vals="${fgc:+$fgc;}${bgc}"
vals="${fgc:+$fgc};${bgc}"
vals=${vals%%;}
seq0="${vals:+\e[${vals}m}"
printf " %-9s" "${seq0:-(default)}"
echo -e -n " ${seq0}TEXT\e[m"
echo -e -n " \e[${vals:+${vals+$vals;}}1mBOLD\e[m"
echo -e -n " \e[${vals:+${vals+$vals;}}2mDIM\e[m"
echo -e -n " \e[${vals:+${vals+$vals;}}3mITA\e[m"
echo -e -n " \e[${vals:+${vals+$vals;}}4mUND\e[m"
echo -e -n " \e[${vals:+${vals+$vals;}}5mBLI\e[m"
echo -en " ${seq0}TEXT\e[m"
echo -en " \e[${vals:+${vals+$vals}};1mBOLD\e[m"
echo -en " \e[${vals:+${vals+$vals}};2mDIM\e[m"
echo -en " \e[${vals:+${vals+$vals}};3mITA\e[m"
echo -en " \e[${vals:+${vals+$vals}};4mUND\e[m"
echo -en " \e[${vals:+${vals+$vals}};5mBLI\e[m"
done
echo; echo
done
rainbowColor() {
local h=$(($1 / 43))
local f=$(($1 - 43 * h))
local t=$((f * 255 / 43))
local q=$((255 - t))
if [ $h -eq 0 ]
then
echo "255 $t 0"
elif [ $h -eq 1 ]
then
echo "$q 255 0"
elif [ $h -eq 2 ]
then
echo "0 255 $t"
elif [ $h -eq 3 ]
then
echo "0 $q 255"
elif [ $h -eq 4 ]
then
echo "$t 0 255"
elif [ $h -eq 5 ]
then
echo "255 0 $q"
else
# execution should never reach here
echo '0 0 0'
fi
}
rf(){ echo "$1" 0 0; }; gf(){ echo 0 "$1" 0; }; bf(){ echo 0 0 "$1"; }
for f in rf gf bf rainbowColor; do
for s in "$(seq 0 127)" "$(seq 255 -1 128)"; do
for i in $s; do
# shellcheck disable=2183,2046
printf '\x1b[48;2;%s;%s;%sm ' $($f "$i")
done
echo -en "\x1b[0m\n"
done
done

65
docker_build Executable file
View File

@ -0,0 +1,65 @@
#!/bin/sh
repeat_char(){
end="$1"
for _ in $(seq 1 "$end") ; do
printf '%s' "$2";
done
}
header(){
env printf "┌$(repeat_char 40 ─)┐\n"
env printf '│ %-38s │\n' "$1"
env printf "└$(repeat_char 40 '─')┘\n"
}
base_images_cache=''
pull_base_images(){
base_images=$(echo "$1" | sed 's/ /\n/g' | rg -v "^($(printf '%s' "$base_images_cache" | sed -s 's/ /\|/g'))$" | paste -sd ' ')
# echo "BASE: $base_images"
# echo "CACHE: $base_images_cache"
if [ -n "$base_images" ]; then
base_images_cache="$base_images_cache $base_images"
echo 'Downloading base images'
echo "$base_images" | xargs -n1 docker pull
fi
}
build(){
[ ! -d "$1" ] && return 0
header "$(basename "$1")"
pull_base_images "$(fd Dockerfile "$1" -x rg FROM | cut -d ' ' -f 2 | sort | uniq | paste -sd ' ')"
echo 'Building...'
if [ -z "$2" ]; then
(cd "$1" && docker compose pull)
(cd "$1" && docker compose build)
else
(cd "$1" && docker compose build "$2")
fi
}
if ! rc-service docker status > /dev/null; then
echo 'Docker is not started, exiting'
return 1
fi
build /home/_aspil0w/git/3d-playground
build /home/_aspil0w/git/CoverLetter
build /home/_aspil0w/git/CurriculumVitae
build /home/_aspil0w/git/dotfiles
build /home/_aspil0w/git/ESP32Manager
build /home/_aspil0w/git/haskell_playground
build /home/_aspil0w/git/IntershipReport
build /home/_aspil0w/git/notebook
build /home/_aspil0w/git/portfolio no_ssl
build /home/_aspil0w/git/portfolio_ivo no-ssl
build /home/_aspil0w/git/SimpleGradientDescent
build /home/_aspil0w/git/sorting_algorithms
build /home/_aspil0w/git/VariationalAutoEncoder
build /home/_aspil0w/git/ViolaJones
build /home/_aspil0w/git/wgan-gp
build /home/_aspil0w/git/WGAN-GP_Pytorch
build /home/_aspil0w/git/workspace/Data\ analysis/Speed\ dating\ experiment
build /home/_aspil0w/git/workspace/Miage/M2/Implementation\ de\ l\'IA
build /usr/local/src/Ventoy

View File

@ -7,6 +7,9 @@ rm -rf /tmp/proton-ge-custom
mkdir /tmp/proton-ge-custom
cd /tmp/proton-ge-custom
echo 'Creating Steam directory if it does not exist...'
mkdir -p ~/.steam/root/compatibilitytools.d
echo 'Getting ProtonGE metadata'
METADATA=$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4)
test -n "$METADATA"
@ -15,6 +18,8 @@ test -n "$METADATA"
echo 'Fetching tarball URL...'
TARBALL_URL=$(echo "$METADATA" | grep .tar.gz)
TARBALL_NAME=$(basename "$TARBALL_URL")
VERSION_NAME=$(echo "$TARBALL_NAME" | sed 's/.tar.gz//')
test -d ~/.steam/root/compatibilitytools.d/"$VERSION_NAME" && echo "Version $VERSION_NAME already present, aborting" && exit 0
echo "Downloading tarball: $TARBALL_NAME..."
curl -# -L "$TARBALL_URL" -o "$TARBALL_NAME" --no-progress-meter
@ -28,9 +33,6 @@ echo "Verifying tarball $TARBALL_NAME with checksum $CHECKSUM_NAME..."
sha512sum -c "$CHECKSUM_NAME"
# If result is ok, continue
echo 'Creating Steam directory if it does not exist...'
mkdir -p ~/.steam/root/compatibilitytools.d
echo "Extracting $TARBALL_NAME to Steam directory..."
tar -xf "$TARBALL_NAME" -C ~/.steam/root/compatibilitytools.d/
echo 'All done :)'

17
pull.sh
View File

@ -12,23 +12,12 @@ cd ..
for d in *; do
cd "$d" || continue
#PULL_LOG=$(script -q /dev/null -c 'git pull')
#if [ "$PULL_LOG" != "$(env printf 'Already up to date.\r\n')" ]; then
# env printf "┌$(__r__ 40 ─)┐\n"
# env printf "│ %-38s │\n" "$d"
# env printf "└$(__r__ 40 '─')┘\n"
# echo "$PULL_LOG"
#fi
# git gc
# git clean -fx
STATUS_LOG=$(script -q /dev/null -c 'git status -s')
if [ -n "$STATUS_LOG" ]; then
PULL_LOG=$(script -q /dev/null -c 'git pull')
if [ "$PULL_LOG" != "$(env printf 'Already up to date.\r\n')" ]; then
env printf "$(__r__ 40)┐\n"
env printf "│ %-38s │\n" "$d"
env printf "$(__r__ 40 '─')┘\n"
echo "$STATUS_LOG"
echo "$PULL_LOG"
fi
cd ..

24
status.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
__r__(){
end="$1"
for _ in $(seq 1 "$end"); do
printf '%s' "$2";
done
}
cd ..
for d in *; do
cd "$d" || continue
STATUS_LOG=$(script -q /dev/null -c 'git status -s')
if [ -n "$STATUS_LOG" ]; then
env printf "$(__r__ 40)┐\n"
env printf "│ %-38s │\n" "$d"
env printf "$(__r__ 40 '─')┘\n"
echo "$STATUS_LOG"
fi
cd ..
done

31
update_req.sh Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
set -e
repeat_char(){
end="$1"
for _ in $(seq 1 "$end") ; do
printf '%s' "$2";
done
}
header(){
env printf "$(repeat_char 150)┐\n"
env printf '│ %-148s │\n' "$1"
env printf "$(repeat_char 150 '─')┘\n"
}
VENV_PATH='./.venv'
python -m venv --upgrade-deps "$VENV_PATH"
# shellcheck disable=1091
if [ -f "$VENV_PATH"/Scripts/activate ]; then . "$VENV_PATH"/Scripts/activate
elif [ -f "$VENV_PATH"/bin/activate ]; then . "$VENV_PATH"/bin/activate
else exit 1; fi
pip install --disable-pip-version pur
fd requirements.txt ~ | while read -r filename; do
header "$(realpath "$filename" | sed "s,$HOME,~,")"
pur -r "$filename"
done
deactivate
rm -rf "$VENV_PATH"