Further sanitization of variables; checks out with shellcheck.net now

This commit is contained in:
Jon-William Lewis
2015-06-10 08:35:16 -05:00
parent 9334f3ba45
commit 121abb1df7
10 changed files with 60 additions and 64 deletions

View File

@@ -4,8 +4,10 @@
# Copyright 2014, Xenese Labs/Sicron-Perion XNF # Copyright 2014, Xenese Labs/Sicron-Perion XNF
#========================================================== #==========================================================
if [ -z "$HOME" ]; then HOME=/home/$(whoami); fi
PROD_STR="Simple Note System" PROD_STR="Simple Note System"
VER_STR="v2.0a5" VER_STR="v2.0a5"
ROOTDIR=$HOME/.config/sns ROOTDIR="$HOME"/.config/sns
BASEDIR="$ROOTDIR"/notes BASEDIR="$ROOTDIR"/notes
CONFIGURATION="$ROOTDIR/sns.conf" CONFIGURATION="$ROOTDIR/sns.conf"

62
sns.sh
View File

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

View File

@@ -25,7 +25,7 @@
#} #}
function create(){ 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" printf "\nERROR: Note already exists\nHint: use -e to edit the note.\n"
exit exit
else else
@@ -33,12 +33,12 @@ function create(){
fi fi
if [ -z "$ENCRYPTION" ]; then if [ -z "$ENCRYPTION" ]; then
echo "TITLE: $NAME" > $NOTE echo "TITLE: $NAME" > "$NOTE"
echo "DATE: $(date)" >> $NOTE echo "DATE: $(date)" >> "$NOTE"
elif [ "$ENCRYPTION" == "TRUE" ]; then elif [ "$ENCRYPTION" == "TRUE" ]; then
touch "$NOTE" touch "$NOTE"
echo "$(p_header)" | openssl enc -aes-256-cbc -salt -out "$NOTE"\ p_header | openssl enc -aes-256-cbc -salt -out "$NOTE"\
-pass pass:$ENC_KEY -pass pass:"$ENC_KEY"
fi fi
echo "$NOTE" echo "$NOTE"
} }

View File

@@ -1,10 +1,10 @@
function delete(){ function delete(){
if [ "$DELETE" == "TRUE" ]; then if [ "$DELETE" == "TRUE" ]; then
if [ -e $NOTE -o -e ${NOTE%.*} ]; then if [ -e "$NOTE" -o -e "${NOTE%.*}" ]; then
if [ "$ENCRYPTION" == "TRUE" ]; then if [ "$ENCRYPTION" == "TRUE" ]; then
rm ${NOTE%.*} rm "${NOTE%.*}"
else else
rm $NOTE rm "$NOTE"
fi fi
echo "" echo ""
echo "Deleted note: $NOTEBOOK/$SECTION$NAME." echo "Deleted note: $NOTEBOOK/$SECTION$NAME."

View File

@@ -8,9 +8,7 @@ if [ "$ENCRYPTION" == "TRUE" ]; then decrypt
else TARGET="$NOTE"; fi 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" "$EDITOR" "$TARGET"

View File

@@ -1,22 +1,20 @@
function list(){ function list(){
if [ -d "$BASEDIR"/"$NOTEBOOK" ]; then if [ -d "$BASEDIR"/"$NOTEBOOK" ]; then
echo "" printf "\nNotes in %s:\n" "$(basename "$NOTEBOOK")"
printf "Notes in $(basename $NOTEBOOK):"
echo ""
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 let i=0
for NOTE in ${NOTES[@]}; do for NOTE in "${NOTES[@]}"; do
if [ -d $BASEDIR/$NOTEBOOK/$NOTE ]; then if [ -d "$BASEDIR"/"$NOTEBOOK"/"$NOTE" ]; then
if [ "$LAST_SECTION" != "$NOTE" ]; then if [ "$LAST_SECTION" != "$NOTE" ]; then
printf " Section: $NOTE\n" printf " Section: %s\n" "$NOTE"
fi fi
LAST_SECTION=$NOTE LAST_SECTION="$NOTE"
else else
#if [ $(($i % 1)) -eq 0 ]; then #if [ $(($i % 1)) -eq 0 ]; then
# printf "\n " # printf "\n "
#fi #fi
printf " $NOTE\n" printf " %s\n" "$NOTE"
fi fi
let i++ let i++
done done

View File

@@ -1,3 +1,3 @@
function p_header(){ function p_header(){
printf "TITLE: $NAME\nDATE: $(date)\n" printf "TITLE: %s\nDATE: %s\n" "$NAME" "$(date)"
} }

View File

@@ -1,12 +1,12 @@
function print(){ function print(){
if [ "$PRINT" == "TRUE" ]; then if [ "$PRINT" == "TRUE" ]; then
if [ -r "$NOTE" -o -r ${NOTE%.*} ]; then if [ -r "$NOTE" -o -r "${NOTE%.*}" ]; then
if [ -z "$CREATE" ]; then if [ -z "$CREATE" ]; then
if [ "$ENCRYPTION" == "TRUE" ]; 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 else
cat $NOTE cat "$NOTE"
echo "" >> $NOTE echo "" >> "$NOTE"
fi fi
else else
echo "" echo ""

View File

@@ -1,5 +1,5 @@
function w_conf { function w_conf {
if [ ! -r "$ROOTDIR" ]; then mkdir -p $ROOTDIR; fi if [ ! -r "$ROOTDIR" ]; then mkdir -p "$ROOTDIR"; fi
cat > "$CONFIGURATION" << EOF cat > "$CONFIGURATION" << EOF
#========================================================== #==========================================================
# Simple Note System Config, v2.0a5 # Simple Note System Config, v2.0a5

View File

@@ -8,7 +8,7 @@ SECTION=""
if [ -z "$1" ]; then help; exit 20 if [ -z "$1" ]; then help; exit 20
else else
ARGS=( "$@" ) ARGS=( "$@" )
for ARG in ${ARGS[@]}; do for ARG in "${ARGS[@]}"; do
if [ "$ARG" = "-c" -o "$ARG" = "--create" ]; then CREATE="TRUE" if [ "$ARG" = "-c" -o "$ARG" = "--create" ]; then CREATE="TRUE"
elif [ "$ARG" = "-d" -o "$ARG" = "--delete" ]; then DELETE="TRUE" elif [ "$ARG" = "-d" -o "$ARG" = "--delete" ]; then DELETE="TRUE"
elif [ "$ARG" = "-e" -o "$ARG" = "--edit" ]; then EDIT="TRUE" elif [ "$ARG" = "-e" -o "$ARG" = "--edit" ]; then EDIT="TRUE"
@@ -18,9 +18,9 @@ else
elif [ "$ARG" = "-h" -o "$ARG" == "--help" ]; then help; exit 0 elif [ "$ARG" = "-h" -o "$ARG" == "--help" ]; then help; exit 0
elif [ "$ARG" = "-w" -o "$ARG" == "--wconf" ]; then w_conf; exit 0 elif [ "$ARG" = "-w" -o "$ARG" == "--wconf" ]; then w_conf; exit 0
else else
if [ -z "$NAME" -a -n $ARG ]; then NAME="$ARG" if [ -z "$NAME" -a -n "$ARG" ]; then NAME="$ARG"
elif [ -z "$NOTEBOOK" -a -n $ARG ]; then NOTEBOOK="$ARG" elif [ -z "$NOTEBOOK" -a -n "$ARG" ]; then NOTEBOOK="$ARG"
elif [ -z "$SECTION" -a -n $ARG ]; then SECTION="$ARG" elif [ -z "$SECTION" -a -n "$ARG" ]; then SECTION="$ARG"
fi fi
fi fi
done done
@@ -34,7 +34,7 @@ else
fi fi
# Note: w_conf and help have highest priority, as they are the only functions # Note: w_conf and help have highest priority, as they are the only functions
# that can work without any parameters. # that can work without any arguments.
#============================================================================== #==============================================================================
# End Section: Argument Parsing # End Section: Argument Parsing