Compare commits
No commits in common. "main" and "monosphere-bastion-3.5.0" have entirely different histories.
main
...
monosphere
114
admin_menu.sh
114
admin_menu.sh
@ -6,99 +6,39 @@ if [[ -n ${SSH_ORIGINAL_COMMAND} ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
function secure_file_editor() {
|
function secure_file_editor() {
|
||||||
local file_path="${*}"
|
File_Path="${*}"
|
||||||
local -a lines=()
|
echo -e "\n=====SECURE=FILE=EDITOR====="
|
||||||
local cmd rest line_num new_content modified=0
|
if [[ -e ${File_Path} ]]; then
|
||||||
|
echo "Le fichier selectionne existe et a pour contenu :"
|
||||||
|
cat "${File_Path}"
|
||||||
|
read -r -p 'Souhaitez vous modifier le contenu du fichier ? (y/n) : ' choice
|
||||||
|
else
|
||||||
|
echo "Creation d un nouveau fichier \"${File_Path}\"."
|
||||||
|
touch "${File_Path}"
|
||||||
|
choice="y"
|
||||||
|
fi
|
||||||
|
case ${choice} in
|
||||||
|
|
||||||
if [[ -f ${file_path} ]]; then
|
"y" | "Y")
|
||||||
while IFS= read -r line; do
|
printf '%s\n' " Consignes d'utilisation de cet editeur : - Lorsque l'edition du fichier est achevee, entrez ctrl-d sur une ligne vide pour sortir. - ATTENTION : Copiez les lignes que vous souhaitez garder intactes, le contenu du fichier complet sera ecrase par ce qui suit. - Tout fichier vide sera supprime. :"
|
||||||
lines+=("${line}")
|
New_Content+=$(xargs -0)
|
||||||
done < "${file_path}"
|
echo "${New_Content}" >"${File_Path}"
|
||||||
fi
|
;;
|
||||||
|
|
||||||
echo ""
|
"n" | "N")
|
||||||
echo "===== SECURE FILE EDITOR ====="
|
echo "Edition du fichier abandonnee."
|
||||||
echo "Fichier : ${file_path}"
|
;;
|
||||||
echo ""
|
|
||||||
|
|
||||||
set +H
|
|
||||||
while true; do
|
|
||||||
echo "--- Lignes ${#lines[@]} ---"
|
|
||||||
if [[ ${#lines[@]} -eq 0 ]]; then
|
|
||||||
echo "(fichier vide)"
|
|
||||||
else
|
|
||||||
for i in "${!lines[@]}"; do
|
|
||||||
printf '%3d: %s\n' $((i + 1)) "${lines[${i}]}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
echo "---------------------------"
|
|
||||||
echo "e <n> <texte> - Remplacer la ligne n"
|
|
||||||
echo "i <n> <texte> - Inserer apres la ligne n (0 = debut)"
|
|
||||||
echo "d <n> - Supprimer la ligne n"
|
|
||||||
echo "wq - Enregistrer et quitter"
|
|
||||||
echo "q! - Quitter sans enregistrer"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
read -r -p "> " input
|
|
||||||
cmd="${input%% *}"
|
|
||||||
rest="${input#* }"
|
|
||||||
|
|
||||||
case "${cmd}" in
|
|
||||||
e)
|
|
||||||
line_num="${rest%% *}"
|
|
||||||
new_content="${rest#* }"
|
|
||||||
if [[ ${line_num} =~ ^[0-9]+$ ]] && (( line_num >= 1 && line_num <= ${#lines[@]} )); then
|
|
||||||
lines[$((line_num - 1))]="${new_content}"
|
|
||||||
modified=1
|
|
||||||
else
|
|
||||||
echo "Ligne invalide (1-${#lines[@]})."
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
i)
|
|
||||||
line_num="${rest%% *}"
|
|
||||||
new_content="${rest#* }"
|
|
||||||
if [[ ${line_num} =~ ^[0-9]+$ ]] && (( line_num >= 0 && line_num <= ${#lines[@]} )); then
|
|
||||||
lines=("${lines[@]:0:line_num}" "${new_content}" "${lines[@]:line_num}")
|
|
||||||
modified=1
|
|
||||||
else
|
|
||||||
echo "Position invalide (0-${#lines[@]})."
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
d)
|
|
||||||
line_num="${rest}"
|
|
||||||
if [[ ${line_num} =~ ^[0-9]+$ ]] && (( line_num >= 1 && line_num <= ${#lines[@]} )); then
|
|
||||||
unset 'lines[$((line_num - 1))]'
|
|
||||||
lines=("${lines[@]}")
|
|
||||||
modified=1
|
|
||||||
else
|
|
||||||
echo "Ligne invalide (1-${#lines[@]})."
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
wq)
|
|
||||||
if [[ ${modified} -eq 1 ]] || [[ ! -f ${file_path} ]]; then
|
|
||||||
printf '%s\n' "${lines[@]}" > "${file_path}"
|
|
||||||
if [[ ${#lines[@]} -eq 0 ]]; then
|
|
||||||
rm -f "${file_path}"
|
|
||||||
echo "Fichier vide, supprime."
|
|
||||||
else
|
|
||||||
echo "Fichier enregistre (${#lines[@]} lignes)."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Aucune modification."
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
q|'q!')
|
|
||||||
echo "Abandon."
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
echo "Commandes : e <n> <txt>, i <n> <txt>, d <n>, wq, q!"
|
clear
|
||||||
|
echo "Selection invalide."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
echo ""
|
|
||||||
done
|
unset New_Content
|
||||||
echo ""
|
unset File_Path
|
||||||
|
echo "Modifications appliquées."
|
||||||
|
echo -e "=====SECURE=FILE=EDITOR=====\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
function sessions_viewer() {
|
function sessions_viewer() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user