Further sanitization of variables; checks out with shellcheck.net now
This commit is contained in:
62
sns.sh
62
sns.sh
@@ -4,15 +4,17 @@
|
||||
# Copyright 2014, Xenese Labs/Sicron-Perion XNF
|
||||
#==========================================================
|
||||
|
||||
if [ -z "$HOME" ]; then HOME=/home/$(whoami); fi
|
||||
|
||||
PROD_STR="Simple Note System"
|
||||
VER_STR="v2.0a5"
|
||||
ROOTDIR=$HOME/.config/sns
|
||||
ROOTDIR="$HOME"/.config/sns
|
||||
BASEDIR="$ROOTDIR"/notes
|
||||
CONFIGURATION="$ROOTDIR/sns.conf"
|
||||
|
||||
# Section: Functions
|
||||
function w_conf {
|
||||
if [ ! -r "$ROOTDIR" ]; then mkdir -p $ROOTDIR; fi
|
||||
if [ ! -r "$ROOTDIR" ]; then mkdir -p "$ROOTDIR"; fi
|
||||
cat > "$CONFIGURATION" << EOF
|
||||
#==========================================================
|
||||
# Simple Note System Config, v2.0a5
|
||||
@@ -54,11 +56,11 @@ function help {
|
||||
echo " -h | --help : Display this message"
|
||||
echo " -p | --print : Print note to console"
|
||||
echo " -l | --list : List all notes in NOTEBOOK"
|
||||
echo " -w | --wconf : Write default configuration to ~/.sns (useful for Encryption)"
|
||||
echo " -w | --wconf : Rewrite default configuration"
|
||||
echo ""
|
||||
}
|
||||
function p_header(){
|
||||
printf "TITLE: $NAME\nDATE: $(date)\n"
|
||||
printf "TITLE: %s\nDATE: %s\n" "$NAME" "$(date)"
|
||||
}
|
||||
function encrypt(){
|
||||
openssl enc -aes-256-cbc -salt -in "$TARGET" -out "$NOTE" -pass pass:"$ENC_KEY"
|
||||
@@ -95,7 +97,7 @@ function decrypt(){
|
||||
#}
|
||||
|
||||
function create(){
|
||||
if [ -e "$NOTE" -o -e ${NOTE%.*} ]; then
|
||||
if [ -e "$NOTE" -o -e "${NOTE%.*}" ]; then
|
||||
printf "\nERROR: Note already exists\nHint: use -e to edit the note.\n"
|
||||
exit
|
||||
else
|
||||
@@ -103,22 +105,22 @@ function create(){
|
||||
fi
|
||||
|
||||
if [ -z "$ENCRYPTION" ]; then
|
||||
echo "TITLE: $NAME" > $NOTE
|
||||
echo "DATE: $(date)" >> $NOTE
|
||||
echo "TITLE: $NAME" > "$NOTE"
|
||||
echo "DATE: $(date)" >> "$NOTE"
|
||||
elif [ "$ENCRYPTION" == "TRUE" ]; then
|
||||
touch "$NOTE"
|
||||
echo "$(p_header)" | openssl enc -aes-256-cbc -salt -out "$NOTE"\
|
||||
-pass pass:$ENC_KEY
|
||||
p_header | openssl enc -aes-256-cbc -salt -out "$NOTE"\
|
||||
-pass pass:"$ENC_KEY"
|
||||
fi
|
||||
echo "$NOTE"
|
||||
}
|
||||
function delete(){
|
||||
if [ "$DELETE" == "TRUE" ]; then
|
||||
if [ -e $NOTE -o -e ${NOTE%.*} ]; then
|
||||
if [ -e "$NOTE" -o -e "${NOTE%.*}" ]; then
|
||||
if [ "$ENCRYPTION" == "TRUE" ]; then
|
||||
rm ${NOTE%.*}
|
||||
rm "${NOTE%.*}"
|
||||
else
|
||||
rm $NOTE
|
||||
rm "$NOTE"
|
||||
fi
|
||||
echo ""
|
||||
echo "Deleted note: $NOTEBOOK/$SECTION$NAME."
|
||||
@@ -140,9 +142,7 @@ if [ "$ENCRYPTION" == "TRUE" ]; then decrypt
|
||||
else TARGET="$NOTE"; fi
|
||||
|
||||
|
||||
if [ -z "$CREATE" ]; then printf "\nEDIT $(date)" >> "$TARGET"; fi
|
||||
|
||||
|
||||
if [ -z "$CREATE" ]; then printf "\nEDIT %s" "$(date)" >> "$TARGET"; fi
|
||||
|
||||
"$EDITOR" "$TARGET"
|
||||
|
||||
@@ -153,13 +153,13 @@ if [ "$ENCRYPTION" == "TRUE" ]; then encrypt; fi
|
||||
}
|
||||
function print(){
|
||||
if [ "$PRINT" == "TRUE" ]; then
|
||||
if [ -r "$NOTE" -o -r ${NOTE%.*} ]; then
|
||||
if [ -r "$NOTE" -o -r "${NOTE%.*}" ]; then
|
||||
if [ -z "$CREATE" ]; then
|
||||
if [ "$ENCRYPTION" == "TRUE" ]; then
|
||||
openssl enc -d -aes-256-cbc -in ${NOTE%.*} -pass pass:$ENC_KEY
|
||||
openssl enc -d -aes-256-cbc -in "${NOTE%.*}" -pass pass:"$ENC_KEY"
|
||||
else
|
||||
cat $NOTE
|
||||
echo "" >> $NOTE
|
||||
cat "$NOTE"
|
||||
echo "" >> "$NOTE"
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
@@ -172,23 +172,21 @@ function print(){
|
||||
}
|
||||
function list(){
|
||||
if [ -d "$BASEDIR"/"$NOTEBOOK" ]; then
|
||||
echo ""
|
||||
printf "Notes in $(basename $NOTEBOOK):"
|
||||
echo ""
|
||||
printf "\nNotes in %s:\n" "$(basename "$NOTEBOOK")"
|
||||
|
||||
NOTES=( $(find $BASEDIR/$NOTEBOOK -name "*.$EXT" -print0 | sed s:$BASEDIR/$NOTEBOOK/:" ":g | sed -e s:".$EXT"::g | tr "/" " ") )
|
||||
NOTES=( $(find "$BASEDIR"/"$NOTEBOOK" -name "*.$EXT" -print0 | sed s:"$BASEDIR"/"$NOTEBOOK"/: " " :g | sed -e s:".$EXT"::g | tr "/" " ") )
|
||||
let i=0
|
||||
for NOTE in ${NOTES[@]}; do
|
||||
if [ -d $BASEDIR/$NOTEBOOK/$NOTE ]; then
|
||||
for NOTE in "${NOTES[@]}"; do
|
||||
if [ -d "$BASEDIR"/"$NOTEBOOK"/"$NOTE" ]; then
|
||||
if [ "$LAST_SECTION" != "$NOTE" ]; then
|
||||
printf " Section: $NOTE\n"
|
||||
printf " Section: %s\n" "$NOTE"
|
||||
fi
|
||||
LAST_SECTION=$NOTE
|
||||
LAST_SECTION="$NOTE"
|
||||
else
|
||||
#if [ $(($i % 1)) -eq 0 ]; then
|
||||
# printf "\n "
|
||||
#fi
|
||||
printf " $NOTE\n"
|
||||
printf " %s\n" "$NOTE"
|
||||
fi
|
||||
let i++
|
||||
done
|
||||
@@ -252,7 +250,7 @@ SECTION=""
|
||||
if [ -z "$1" ]; then help; exit 20
|
||||
else
|
||||
ARGS=( "$@" )
|
||||
for ARG in ${ARGS[@]}; do
|
||||
for ARG in "${ARGS[@]}"; do
|
||||
if [ "$ARG" = "-c" -o "$ARG" = "--create" ]; then CREATE="TRUE"
|
||||
elif [ "$ARG" = "-d" -o "$ARG" = "--delete" ]; then DELETE="TRUE"
|
||||
elif [ "$ARG" = "-e" -o "$ARG" = "--edit" ]; then EDIT="TRUE"
|
||||
@@ -262,9 +260,9 @@ else
|
||||
elif [ "$ARG" = "-h" -o "$ARG" == "--help" ]; then help; exit 0
|
||||
elif [ "$ARG" = "-w" -o "$ARG" == "--wconf" ]; then w_conf; exit 0
|
||||
else
|
||||
if [ -z "$NAME" -a -n $ARG ]; then NAME="$ARG"
|
||||
elif [ -z "$NOTEBOOK" -a -n $ARG ]; then NOTEBOOK="$ARG"
|
||||
elif [ -z "$SECTION" -a -n $ARG ]; then SECTION="$ARG"
|
||||
if [ -z "$NAME" -a -n "$ARG" ]; then NAME="$ARG"
|
||||
elif [ -z "$NOTEBOOK" -a -n "$ARG" ]; then NOTEBOOK="$ARG"
|
||||
elif [ -z "$SECTION" -a -n "$ARG" ]; then SECTION="$ARG"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user