Further sanitization of variables; checks out with shellcheck.net now
This commit is contained in:
@@ -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
62
sns.sh
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
function p_header(){
|
function p_header(){
|
||||||
printf "TITLE: $NAME\nDATE: $(date)\n"
|
printf "TITLE: %s\nDATE: %s\n" "$NAME" "$(date)"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 ""
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user