1st commit

This commit is contained in:
2025-01-03 07:39:33 +01:00
commit 9336502f68
6 changed files with 496 additions and 0 deletions

193
certifs_info.sh Executable file
View File

@@ -0,0 +1,193 @@
#!/usr/bin/env bash
redbold="\033[1;31m"
red="\033[0;31m"
greenbold="\033[1;32m"
green="\033[0;32m"
yellowbold="\033[1;33m"
yellow="\033[0;33m"
bold="\033[1m"
#bold_under="\033[1;4m"
italic="\033[3m"
underline="\033[4m"
reset="\033[0m"
# Requierements:
# - script must run with sudo
# - jq 1.7.1 mini (/bin/jq = 1.5 (dsm 7.2.2); /opt/bin/jq = 1.7.1 (opkg))
if [[ $EUID -ne 0 ]]; then
echo "$0 is not running as root. Try using sudo."
exit 2
fi
dsm=$(cat /etc.defaults/VERSION)
build=$(echo "$dsm" | grep buildnumber | awk -F"=" '{print $2}')
os=$(echo "$dsm" | grep os_name | awk -F"=" '{print $2}')
version=$(echo "$dsm" | grep productversion | awk -F"=" '{print $2}')
information="${os//\"/} ${version//\"/} build ${build//\"/}"
echo -e "$information"
# Supprimer les ""
#display_name="${display_name//\"/}"
vers_jq=$(jq -V | awk -F"-" '{print $2}')
echo -e "jq version ${vers_jq}\n"
# GNU sort
version_greater_equal() {
printf '%s\n%s\n' "$2" "$1" | sort --check=quiet --version-sort
}
version_greater_equal "${vers_jq}" 1.7.1 || { echo -e "Need ${italic}jq v1.7.1${reset} or above !"; echo -e "Maybe you should use ${italic}opkg install jq${reset}"; exit 1; }
certifs_archive=/usr/syno/etc/certificate/_archive
#certifs_archive=/Users/bruno/Downloads
#services="$certifs_archive/SERVICES"
#[ -f "$services" ] && ser=$(cat "$services") || { echo -e "${red}No $services file found !${reset}"; exit 1; }
info="$certifs_archive/INFO"
[ -f "$info" ] && inf=$(cat "$info") || { echo -e "${red}No $info file found !${reset}"; exit 1; }
default="$certifs_archive/DEFAULT"
[ -f "$default" ] && def=$(cat "$default") || { echo -e "${red}No $default file found !${reset}"; exit 1; }
rp=()
ap=()
ot=()
echo -e "${greenbold}Reading $info${reset}\n"
echo -e "${yellow}Certificates's list...${reset}\n"
liste_cert=$(echo "$inf" | jq -r 'keys[]')
printf "| ${bold}%-7s${reset} | ${bold}%-53s${reset} | ${bold}%-25s${reset} \n" "Certif." "Description" "Date limite"
while read certif; do
filter=".$certif"
desc=$(echo "$inf" | jq -r $filter | jq -r '.desc')
ssl=$(openssl x509 -enddate -subject -noout -in $certifs_archive/$certif/cert.pem)
notafter=$(echo "$ssl" | grep notAfter | awk -F"=" '{print $2}')
subject=$(echo "$ssl" | grep subject | awk -F"=" '{print $1}')
timestamp_current=$(date +"%s")
timestamp_end=$(date --date="$notafter" +"%s")
left=$(($((timestamp_end - timestamp_current))/(60*60*24)))
end="$notafter ($left days left)"
[ "$certif" == "$def" ] && printf "| ${green}%-7s${reset} | ${green}%-53s${reset} | ${green}%-25s${reset} \n" "$certif" "$desc" "$end (default)" || printf "| %-7s | %-53s | %-25s \n" "$certif" "$desc" "$end"
if [ "$certif" == "$def" ]; then
echo
ls -ld "$certifs_archive/$def"/*
# ls -ld * .*
echo
echo -e "${italic}cert.pem${reset} est le certificat de l'utilisateur final."
echo -e "${italic}chain.pem${reset} est le reste de la chaîne. Il s'agit uniquement du certificat racine de LetsEncrypt."
echo -e "${italic}fullchain.pem${reset} est cert.pem et chain.pem combinés."
echo -e "${italic}privkey.pem${reset} est une clé privée RSA générée avec le certificat."
fi
done <<< "$liste_cert"
echo -e "\n\n${yellow}Certificates and Subscriber...${reset}\n"
while read certif; do
filter=".$certif"
desc=$(echo "$inf" | jq -r $filter | jq -r '.desc')
printf "| ${yellowbold}%-7s${reset} | ${yellowbold}%-60s${reset} \n" "Certif." "Description"
printf "| ${yellowbold}%-7s${reset} | ${yellowbold}%-60s${reset} \n\n" "$certif" "$desc" # ok
serv=$(echo "$inf" | jq -r $filter | jq -r '.services[]')
printf "|${bold} %-40s ${reset}|${bold} %-20s ${reset}|${bold} %-60s ${reset}\n" "Display_name" "Subscriber" "Service"
while read line; do
display_name=$(echo "$line" | jq -r '.display_name')
service=$(echo "$line" | jq -r '.service')
subscriber=$(echo "$line" | jq -r '.subscriber')
#echo "$display_name"
#echo "$service"
#echo "$subscriber"
printf "| %-40s | %-20s | %-60s \n" "$display_name" "$subscriber" "$service"
if [[ "$subscriber" == *ReverseProxy* ]]; then
rp+=("$display_name")
elif [[ "$subscriber" == *AppPortal* ]]; then
if [[ "$display_name" == *photos-nas.ovh* ]]; then
a=$(echo "$display_name" | awk -F" - " '{print $1}' | xargs)
b=$(echo "$display_name" | awk -F" - " '{print $2}' | xargs)
ap+=("$a")
rp+=("$b")
fi
else
if [[ "$display_name" == *photos-nas.ovh* ]]; then
if [[ "$display_name" =~ :[0-9]{1,5}$ ]]; then
c=$(echo "$display_name" | awk -F":" '{print $1}')
rp+=("$c")
else
rp+=("$display_name")
fi
else
ot+=("$display_name")
fi
fi
done < <(jq -c <<< "$serv")
echo -e "\n\n"
done <<< "$liste_cert"
echo -e "\n\n"
IFS=$'\n'
reverseproxy=($(sort <<<"${rp[*]}"))
appportal=($(sort <<<"${ap[*]}"))
others=($(sort <<<"${ot[*]}"))
unset IFS
printf "| %-3s | ${bold}%-60s${reset} \n" "" "Reverse Proxy"
i=1
for val in ${!reverseproxy[@]}
do
printf "| %-3s | %-60s \n" "$i" "${reverseproxy[$val]}"
((i++))
done
echo -e "${italic}${#reverseproxy[@]} lines${reset}\n"
printf "| %-3s | ${bold}%-60s${reset} \n" "" "AppPortal"
i=1
for val in ${!appportal[@]}
do
printf "| %-3s | %-60s \n" "$i" "${appportal[$val]}"
((i++))
done
echo -e "${italic}${#appportal[@]} lines${reset}\n"
printf "| %-3s | ${bold}%-60s${reset} \n" "" "Others"
i=1
for val in ${!others[@]}
do
printf "| %-3s | %-60s \n" "$i" "${others[$val]}"
((i++))
done
echo -e "${italic}${#others[@]} lines${reset}\n"

98
certifs_services.sh Executable file
View File

@@ -0,0 +1,98 @@
#!/usr/bin/env bash
red="\033[1;31m"
greenbold="\033[1;32m"
green="\033[0;32m"
yellow="\033[0;33m"
bold="\033[1m"
#bold_under="\033[1;4m"
italic="\033[3m"
underline="\033[4m"
reset="\033[0m"
services=/Users/bruno/Downloads/SERVICES
info=/Users/bruno/Downloads/INFO
ser=$(cat "$services")
inf=$(cat "$info")
rp=()
ap=()
ot=()
echo -e "${greenbold}Reading $services${reset}\n"
printf "|${bold} %-40s ${reset}|${bold} %-20s ${reset}|${bold} %-60s ${reset}\n" "Display_name" "Subscriber" "Service"
while read line; do
display_name=$(echo "$line" | jq -r '.display_name')
subscriber=$(echo "$line" | jq -r '.subscriber')
service=$(echo "$line" | jq -r '.service')
# Supprimer les ""
#display_name="${display_name//\"/}"
printf "| %-40s | %-20s | %-60s \n" "$display_name" "$subscriber" "$service"
if [[ "$subscriber" == *ReverseProxy* ]]; then
rp+=("$display_name")
elif [[ "$subscriber" == *AppPortal* ]]; then
if [[ "$display_name" == *photos-nas.ovh* ]]; then
a=$(echo "$display_name" | awk -F" - " '{print $1}' | xargs)
b=$(echo "$display_name" | awk -F" - " '{print $2}' | xargs)
ap+=("$a")
rp+=("$b")
fi
else
if [[ "$display_name" == *photos-nas.ovh* ]]; then
if [[ "$display_name" =~ :[0-9]{1,5}$ ]]; then
c=$(echo "$display_name" | awk -F":" '{print $1}')
rp+=("$c")
else
rp+=("$display_name")
fi
else
ot+=("$display_name")
fi
fi
done < <(jq -c '.[]' <<< "$ser")
echo -e "\n\n"
IFS=$'\n'
reverseproxy=($(sort <<<"${rp[*]}"))
appportal=($(sort <<<"${ap[*]}"))
others=($(sort <<<"${ot[*]}"))
unset IFS
printf "| %-3s | ${bold}%-60s${reset} \n" "" "Reverse Proxy"
i=1
for val in ${!reverseproxy[@]}
do
printf "| %-3s | %-60s \n" "$i" "${reverseproxy[$val]}"
((i++))
done
echo -e "${italic}${#reverseproxy[@]} lines${reset}\n"
printf "| %-3s | ${bold}%-60s${reset} \n" "" "AppPortal"
i=1
for val in ${!appportal[@]}
do
printf "| %-3s | %-60s \n" "$i" "${appportal[$val]}"
((i++))
done
echo -e "${italic}${#appportal[@]} lines${reset}\n"
printf "| %-3s | ${bold}%-60s${reset} \n" "" "Others"
i=1
for val in ${!others[@]}
do
printf "| %-3s | %-60s \n" "$i" "${others[$val]}"
((i++))
done
echo -e "${italic}${#others[@]} lines${reset}\n"

65
dsm7-gitea-update.sh Normal file
View File

@@ -0,0 +1,65 @@
#!/bin/bash
GITEA_BIN=`which gitea`
if [ "$GITEA_BIN" == "*gitea*" ]; then
echo "Gitea is not installed..."
exit 0
fi
GITEA_INSTALLED=`$GITEA_BIN --version | cut -d \ -f 3`
LATEST_URL=`curl -Ls -o /dev/null -w %{url_effective} https://github.com/go-gitea/gitea/releases/latest`
#https://github.com/go-gitea/gitea/releases/tag/v1.11.3
#echo LATEST_URL = ${LATEST_URL}
GITEA_VERSION=${LATEST_URL##*/v}
if [ "${GITEA_INSTALLED}" != "${GITEA_VERSION}" ]; then
echo "No update available..."
exit 0
else
echo "Installed: "${GITEA_INSTALLED}
echo "Latest: "${GITEA_VERSION}
a=$(echo -e "Do you wanna update Gitea to ${GITEA_VERSION} ? (y/n)")
read -p "$a" choice
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
rm -rf /tmp/gitea
mkdir /tmp/gitea
cd /tmp/gitea
sudo systemctl stop gitea
echo "Download latest Gitea..."
GITEA_ARCHIVE=gitea-${GITEA_VERSION}-linux-amd64.xz
#DOWNLOAD_URL=https://github.com/go-gitea/gitea/releases/download/v${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64.xz
DOWNLOAD_URL=https://github.com/go-gitea/gitea/releases/download/v${GITEA_VERSION}/${GITEA_ARCHIVE}
echo ${DOWNLOAD_URL}
wget -P /tmp/gitea ${DOWNLOAD_URL}
# sudo opkg install xz
# sudo opkg install tar (sinon tar: unrecognized option '--exclude=INFO.in')
xz --decompress ${GITEA_ARCHIVE}
echo "Installing Gitea ${GITEA_VERSION}..."
filename="${GITEA_ARCHIVE%.*}"
if [[ "$filename" =~ gitea ]]; then
mv $filename gitea
sudo mv gitea `dirname "$GITEA_BIN"`
fi
sudo chmod +x ${GITEA_BIN}
sudo chown root:root ${GITEA_BIN}
sudo systemctl start gitea
sudo systemctl status gitea
fi
fi
exit 1

84
ffmpeg-convertMP4.sh Normal file
View File

@@ -0,0 +1,84 @@
#!/bin/bash
# run: sh ffmpeg-convertMP4v6.sh /volume1/video/TV_ts /volume1/video/TV
#v5: notifications, logs
#v6: modif date dans les logs
#v7 supprime ( GR1_B SMR6 Nat CNH Multi4 NTN MHD7 )
LOG=/volume1/homes/bruno/logs # dossier du fichier .log
ENREGISTREMENTS=/volume1/video/TV_2
TABLEAU=( GR1_B SMR6 Nat CNH Multi4 NTN MHD7 )
# http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/
timestamp()
{
date +"%d-%m-%Y %T"
}
# création du fichier log
touch $LOG/ffmpeg.log
echo $(timestamp) "Demarrage du script" >> $LOG/ffmpeg.log
# Variables Section
#==============================================================
# list process to monitor in the variable below.
PROGRAM1=ffmpeg
# APPCHK varible checks to see if $PROGRAM1 is running.
APPCHK=$(ps -ea | grep $PROGRAM1 | grep -v grep | wc -l)
#==================================================================
# The if statement below checks to see if the process is running
# with the ps command. If the value is returned as a 0 then
# a message is prompted
if [ $APPCHK -eq 0 ];
then
cd "$1"
for FILE in *;
do
#on supprime les espaces dans les noms de fichiers
# on supprime ( GR1_B SMR6 Nat CNH Multi4 NTN MHD7 )
#RENAME=$(echo "$FILE" | sed -e 's/[[:blank:]]/_/g');
RENAME=$(echo "$FILE" | sed -e '{s/[[:blank:]]/_/g;s/(\(GR1_B\|SMR6\|Nat\|CNH\|Multi4\|NTN\|MHD7\))//g}')
if [ -e "$RENAME" ];then
echo "">/dev/null;
else
mv "$FILE" "$RENAME";
fi
#on récupère le nom sans extension
NAME=$(echo "$RENAME" | sed 's/\.[^\.]*$//')
#nom des fichiers
INPUT_FILE="$1/$RENAME"
OUTPUT_FILE=$(echo "$2/$NAME.mp4")
#if [ "$NAME" != "@eaDir" -a ! -f "$OUTPUT_FILE" ];
if [ "$NAME" != "@eaDir" ];
then
echo "Conversion du fichier: $OUTPUT_FILE"
#echo "$JOUR Debut conversion du fichier $FILE" >> $LOG/ffmpeg.log
echo "$(timestamp) Debut conversion du fichier $FILE" >> $LOG/ffmpeg.log
#/volume1/homes/bruno/scripts/ffmpeg -i "$INPUT_FILE" -map 0:0 -map 0:1 -c:a aac -strict -2 -async 1 -c:v libx264 -crf 20 -r 25 -s 1920x1080 -aspect 16:9 -qmin 3 -qmax 51 -qdiff 4 -y "$OUTPUT_FILE"
/volume1/homes/bruno/scripts/ffmpeg -i "$INPUT_FILE" -map 0:0 -map 0:1 -c:a aac -b:a 160k -async 1 -c:v libx264 -crf 20 -r 25 -s 1280x720 -aspect 16:9 -y "$OUTPUT_FILE"
#les originaux sont déplacés dans $ENREGISTREMENTS
mv "$INPUT_FILE" "$ENREGISTREMENTS/"
#echo "$JOUR Conversion du fichier $NAME.mp4 terminee" >> $LOG/ffmpeg.log
echo "$(timestamp) Conversion du fichier $NAME.mp4 terminee" >> $LOG/ffmpeg.log
synodsmnotify @administrators "[ffmpeg-convertMP4.sh]" "Conversion du fichier $FILE terminee"
fi
done
else
#echo “$PROGRAM1 is running”
#echo "$JOUR $PROGRAM1 est deja actif" >> $LOG/ffmpeg.log
echo "$(timestamp) $PROGRAM1 est deja actif" >> $LOG/ffmpeg.log
synodsmnotify @administrators "[ffmpeg-convertMP4.sh]" "$PROGRAM1 est deja actif"
fi
#echo $JOUR "Fin du script" >> $LOG/ffmpeg.log
echo "$(timestamp) Fin du script" >> $LOG/ffmpeg.log
exit

1
kymsu_dsm Submodule

Submodule kymsu_dsm added at 40040c264b

55
opkg.sh Normal file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
#!/bin/su root
# iPKG plugin for KYMSU
# https://github.com/welcoMattic/kymsu
# No distract mode
no_distract=false
if [[ $1 == "--nodistract" ]]; then
no_distract=true
fi
#tester si lancer en root, sinon quit
if [ "$UID" -ne "0" ]
then
echo ""
echo "📦 _opkg doit être lancé en root !"
echo "Si vous lancez kymsu avec ssh, connectez-vous d'abord en ssh, puis lancez kymsu"
echo ""
exit 1
fi
echo ""
echo "📦 oPKG"
echo ""
/opt/bin/opkg update
echo ""
# ipkg list-installed
opkg_outdated=$(/opt/bin/opkg list-upgradable)
upd3=$(echo "$opkg_outdated" | awk '{print $1}')
if [ -n "$upd3" ]; then
if [ "$no_distract" = false ]; then
a=$(echo -e "Do you wanna run \033[1moPKG upgrade "$upd3"\033[0m? (y/n)")
read -p "$a" choice
case "$choice" in
y|Y ) echo "$opkg_outdated" | awk '{print $1}' | xargs -p -n 1 /opt/bin/opkg upgrade ;;
n|N ) echo "Ok, let's continue";;
* ) echo "invalid";;
esac
else
echo "$opkg_outdated" | awk '{print $1}' | xargs -n 1 /opt/bin/opkg upgrade
fi
else
echo -e "\033[4mNo availables updates.\033[0m"
fi
echo ""