summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG3
-rwxr-xr-xpwgrep.sh607
2 files changed, 307 insertions, 303 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fcba7fa..595374b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Sun Mar 10 12:08:16 CET 2013
+* Fix code indention
+
Sun Mar 10 11:57:15 CET 2013
* Released 0.8.1
diff --git a/pwgrep.sh b/pwgrep.sh
index c312d71..532c9a9 100755
--- a/pwgrep.sh
+++ b/pwgrep.sh
@@ -12,13 +12,13 @@
# Usage:
#
# Searching for a database value:
-# ./pwgrep.sh searchstring
+# ./pwgrep.sh searchstring
#
# Editing the database (same but without args):
-# ./pwgrep.sh
+# ./pwgrep.sh
#
# For more reasonable commands the following symlinks are recommended.
-# Take a look at the create-symlinks.sh script.
+# Take a look at the create-symlinks.sh script.
# You can overwrite the default values by setting env. variables
# or by just editing this file.
@@ -37,288 +37,286 @@ DEFAULTFILESTORECATEGORY=default
# From here, do not change stuff! You may edit the content of the file $RCFILE!
-source_config () {
- [ -f $RCFILE ] && source <($SED 's/^/export /' $RCFILE)
+function source_config () {
+ [ -f $RCFILE ] && source <($SED 's/^/export /' $RCFILE)
}
-pwgrep_version () {
- sed -n '/# pwgrep v/ { s/# //; p; q; }' $0
+function pwgrep_version () {
+ sed -n '/# pwgrep v/ { s/# //; p; q; }' $0
}
-configure () {
- # Reading the current configuration
- source_config
-
- # Setting default values if not set in the configuration file already
- (
- [ -z "$SVN_EDITOR" ] && echo 'SVN_EDITOR="ex -c 1"'
- [ -z "$DB" ] && echo DB=$DEFAULTDB
- [ -z "$FILESTOREDIR" ] && echo FILESTOREDIR=$DEFAULTFILESTOREDIR
- [ -z "$FILESTORECATEGORY" ] && echo FILESTORECATEGORY=$DEFAULTFILESTORECATEGORY
-
- # The PWGREPWORDIR should be in its own versioning repository.
- # For password revisions.
- [ -z "$WORKDIR" ] && echo WORKDIR=~/svn/pwdb
-
- # Enter here your GnuPG key ID
- #[ -z "$GPGKEYID" ] && echo GPGKEYID=F4B6FFF0
- [ -z "$GPGKEYID" ] && echo GPGKEYID=37EC5C1D
-
- # Customizing the versioning commands (i.e. if you want to use another
- # versioning system).
- [ -z "$VERSIONCOMMIT" ] && echo 'VERSIONCOMMIT="svn commit"'
- [ -z "$VERSIONUPDATE" ] && echo 'VERSIONUPDATE="svn update"'
- [ -z "$VERSIONADD" ] && echo 'VERSIONADD="svn add"'
- [ -z "$VERSIONDEL" ] && echo 'VERSIONDEL="svn delete"'
- ) >> $RCFILE
-
- # Re-reading the current configuration, because there might be new
- # variables by now
- source_config
+function configure () {
+ # Reading the current configuration
+ source_config
+
+ # Setting default values if not set in the configuration file already
+ (
+ [ -z "$SVN_EDITOR" ] && echo 'SVN_EDITOR="ex -c 1"'
+ [ -z "$DB" ] && echo DB=$DEFAULTDB
+ [ -z "$FILESTOREDIR" ] && echo FILESTOREDIR=$DEFAULTFILESTOREDIR
+ [ -z "$FILESTORECATEGORY" ] && echo FILESTORECATEGORY=$DEFAULTFILESTORECATEGORY
+
+ # The PWGREPWORDIR should be in its own versioning repository.
+ # For password revisions.
+ [ -z "$WORKDIR" ] && echo WORKDIR=~/svn/pwdb
+
+ # Enter here your GnuPG key ID
+ #[ -z "$GPGKEYID" ] && echo GPGKEYID=F4B6FFF0
+ [ -z "$GPGKEYID" ] && echo GPGKEYID=37EC5C1D
+
+ # Customizing the versioning commands (i.e. if you want to use another
+ # versioning system).
+ [ -z "$VERSIONCOMMIT" ] && echo 'VERSIONCOMMIT="svn commit"'
+ [ -z "$VERSIONUPDATE" ] && echo 'VERSIONUPDATE="svn update"'
+ [ -z "$VERSIONADD" ] && echo 'VERSIONADD="svn add"'
+ [ -z "$VERSIONDEL" ] && echo 'VERSIONDEL="svn delete"'
+ ) >> $RCFILE
+
+ # Re-reading the current configuration, because there might be new
+ # variables by now
+ source_config
}
-out () {
- echo "$@" 1>&2
+function out () {
+ echo "$@" 1>&2
}
-info () {
- out "=====> $@"
+function info () {
+ out "=====> $@"
}
-error () {
- echo "ERROR: $@"
- exit 666
+function error () {
+ echo "ERROR: $@"
+ exit 666
}
-findbin () {
- local -r trylist=$1
- found=""
- for bin in $trylist; do
- if [ -z $found ]; then
- which=$(which $bin)
- [ ! -z $which ] && found=$bin
- fi
- done
-
- echo $found
+function findbin () {
+ local -r trylist=$1
+ found=""
+ for bin in $trylist; do
+ if [ -z $found ]; then
+ which=$(which $bin)
+ [ ! -z $which ] && found=$bin
+ fi
+ done
+
+ echo $found
}
-setawkcmd () {
- AWK=$(findbin "$TRYAWKLIST")
- [ -z $AWK ] && error No awk found in $PATH
+function setawkcmd () {
+ AWK=$(findbin "$TRYAWKLIST")
+ [ -z $AWK ] && error No awk found in $PATH
}
-setsedcmd () {
- SED=$(findbin "$TRYSEDLIST")
- [ -z $SED ] && error No sed found in $PATH
+function setsedcmd () {
+ SED=$(findbin "$TRYSEDLIST")
+ [ -z $SED ] && error No sed found in $PATH
}
-setwipecmd () {
- WIPE=$(findbin "$TRYWIPELIST")
+function setwipecmd () {
+ WIPE=$(findbin "$TRYWIPELIST")
- if [ -z $WIPE ]; then
- # FreeBSDs rm includes -P which is secure enough
- if [ $(uname) = 'FreBSD' ]; then
- WIPE="rm -v -P"
- else
- error "No wipe command found in $PATH, please install shred or destroy"
- fi
- fi
+ if [ -z $WIPE ]; then
+ # FreeBSDs rm includes -P which is secure enough
+ if [ $(uname) = 'FreBSD' ]; then
+ WIPE="rm -v -P"
+ else
+ error "No wipe command found in $PATH, please install shred or destroy"
+ fi
+ fi
- info Using $WIPE for secure file deletion
+ info Using $WIPE for secure file deletion
}
-pwgrep () {
- local -r search=$1
- local -a dbs=()
-
- if [ -z "$ALL" ]; then
- dbs=$DB
- else
- dbs=$(_pwdbls | sed 's/$/.gpg/')
- fi
-
- for db in $dbs; do
- info Searching for $search in $db
- gpg --use-agent --decrypt $db | $AWK -v search="$search" '
- BEGIN {
- flag=0
- IGNORECASE=1
- }
- !/^\t/ {
- if (!flag && $0 ~ search) {
- flag=1
- print $0
- } else if (flag && $0 ~ search) {
- print $0
- } else if (flag) {
- flag=0
- }
- } /^\t/ && flag {
- print $0
- }'
- done
+function pwgrep () {
+ local -r search=$1
+ local -a dbs=()
+
+ if [ -z "$ALL" ]; then
+ dbs=$DB
+ else
+ dbs=$(_pwdbls | sed 's/$/.gpg/')
+ fi
+
+ for db in $dbs; do
+ info Searching for $search in $db
+ gpg --use-agent --decrypt $db | $AWK -v search="$search" '
+ BEGIN {
+ flag=0
+ IGNORECASE=1
+ }
+ !/^\t/ {
+ if (!flag && $0 ~ search) {
+ flag=1
+ print $0
+ } else if (flag && $0 ~ search) {
+ print $0
+ } else if (flag) {
+ flag=0
+ }
+ } /^\t/ && flag {
+ print $0
+ }'
+ done
}
-pwupdate () {
- if [ -z "$NOVERSIONING" ]; then
- info Updating repository
- $VERSIONUPDATE 2>&1 >/dev/null
- fi
+function pwupdate () {
+ if [ -z "$NOVERSIONING" ]; then
+ info Updating repository
+ $VERSIONUPDATE 2>&1 >/dev/null
+ fi
}
-pwedit () {
- pwupdate
- cp -vp $DB $DB.$(date +'%s').snap && \
- gpg --decrypt $DB > .database && \
- vim --cmd 'set noswapfile' --cmd 'set nobackup' \
- --cmd 'set nowritebackup' .database && \
- gpg --output .$DB -e -r $GPGKEYID .database && \
- $WIPE .database && \
- mv .$DB $DB && \
- [ -z "$NOVERSIONING" ] && $VERSIONCOMMIT
+function pwedit () {
+ pwupdate
+ cp -vp $DB $DB.$(date +'%s').snap && \
+ gpg --decrypt $DB > .database && \
+ vim --cmd 'set noswapfile' --cmd 'set nobackup' \
+ --cmd 'set nowritebackup' .database && \
+ gpg --output .$DB -e -r $GPGKEYID .database && \
+ $WIPE .database && \
+ mv .$DB $DB && \
+ [ -z "$NOVERSIONING" ] && $VERSIONCOMMIT
}
-_pwdbls () {
- ls *.gpg | sed 's/\.gpg$//'
+function _pwdbls () {
+ ls *.gpg | sed 's/\.gpg$//'
}
-pwdbls () {
- echo Available Databases:
- _pwdbls
- echo Current database: $DB
+function pwdbls () {
+ echo Available Databases:
+ _pwdbls
+ echo Current database: $DB
}
-pwfls () {
- local arg=$1
-
- if [ "$ALL" = "1" ]; then
- ALL=0
- local -r dir=$WORKDIR/$FILESTOREDIR
- [ ! -e $dir ] && error $dir does not exist
-
- info Showing all categories
- ls $dir | while read store; do
- pwfls $store
- done
-
- else
- local dir=$WORKDIR/$FILESTOREDIR
-
- if [ -z "$USEFILESTORECATEGORY" ]; then
- info Available file store categories:
- dir=$WORKDIR/$FILESTOREDIR
- info "(You may use '`basename $0` -d <CATEGORY>' to display containing files.)"
- else
- info Available files in store $FILESTORECATEGORY
- dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
- fi
-
- [ ! -e $dir ] && error "Category ($dir) does not exist"
- ls $dir
- fi
+function pwfls () {
+ local arg=$1
+
+ if [ "$ALL" = "1" ]; then
+ ALL=0
+ local -r dir=$WORKDIR/$FILESTOREDIR
+ [ ! -e $dir ] && error $dir does not exist
+
+ info Showing all categories
+ ls $dir | while read store; do
+ pwfls $store
+ done
+ else
+ local dir=$WORKDIR/$FILESTOREDIR
+
+ if [ -z "$USEFILESTORECATEGORY" ]; then
+ info Available file store categories:
+ dir=$WORKDIR/$FILESTOREDIR
+ info "(You may use '`basename $0` -d <CATEGORY>' to display containing files.)"
+ else
+ info Available files in store $FILESTORECATEGORY
+ dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
+ fi
+
+ [ ! -e $dir ] && error "Category ($dir) does not exist"
+ ls $dir
+ fi
}
-pwfcat () {
- local arg=$1
-
- if [ -z "$arg" ]; then
- error "No file specified (hint: use pwfls)"
-
- else
- local -r dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
- local -r file=$(echo $arg | sed 's/.gpg$//')
-
- [ ! -e $dir ] && error "Category $FILESTORECATEGORY ($dir) does not exist"
- [ ! -e $dir/$file.gpg ] && error "File $file in category $FILESTORECATEGORY does not exist"
- gpg --decrypt $dir/$file.gpg
- fi
+function pwfcat () {
+ local arg=$1
+
+ if [ -z "$arg" ]; then
+ error "No file specified (hint: use pwfls)"
+
+ else
+ local -r dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
+ local -r file=$(echo $arg | sed 's/.gpg$//')
+
+ [ ! -e $dir ] && error "Category $FILESTORECATEGORY ($dir) does not exist"
+ [ ! -e $dir/$file.gpg ] && error "File $file in category $FILESTORECATEGORY does not exist"
+ gpg --decrypt $dir/$file.gpg
+ fi
}
-pwfadd () {
- local -r name=$(echo $1 | sed 's/.gpg$//')
- local srcfile=$1
- local outfile=''
-
- if [ $(echo "$srcfile" | grep -v '^/') ]; then
- srcfile=$CWD/$srcfile
- fi
-
- if [ ! -z $2 ]; then
- outfile=$(basename $2)
- else
- outfile=$(basename $name)
- fi
-
- pwupdate
-
- [ -z "$name" ] && error Missing argument
-
- if [ ! -e $FULLFILESTORE ]; then
- info Creating new category
- [ ! -z "$NOVERSIONING" ] && error Cannot add new category with versioning disabled
- local -r umaskbackup=$(umask)
- umask 0022
- mkdir $FULLFILESTORE && $VERSIONADD $FULLFILESTORE && $VERSIONCOMMIT
- umask $umaskbackup
- fi
-
- [ ! -e $FILESTOREWORKDIR ] && error $FILESTOREWORKDIR does not exist
- gpg --output $FULLFILESTORE/$outfile.gpg -e -r $GPGKEYID $srcfile && \
-
- if [ -z "$NOVERSIONING" ]; then
- $VERSIONADD $FULLFILESTORE/$outfile.gpg && $VERSIONCOMMIT
- fi
+function pwfadd () {
+ local -r name=$(echo $1 | sed 's/.gpg$//')
+ local srcfile=$1
+ local outfile=''
+
+ if [ $(echo "$srcfile" | grep -v '^/') ]; then
+ srcfile=$CWD/$srcfile
+ fi
+
+ if [ ! -z $2 ]; then
+ outfile=$(basename $2)
+ else
+ outfile=$(basename $name)
+ fi
+
+ pwupdate
+
+ [ -z "$name" ] && error Missing argument
+ if [ ! -e $FULLFILESTORE ]; then
+ info Creating new category
+ [ ! -z "$NOVERSIONING" ] && error Cannot add new category with versioning disabled
+ local -r umaskbackup=$(umask)
+ umask 0022
+ mkdir $FULLFILESTORE && $VERSIONADD $FULLFILESTORE && $VERSIONCOMMIT
+ umask $umaskbackup
+ fi
+
+ [ ! -e $FILESTOREWORKDIR ] && error $FILESTOREWORKDIR does not exist
+ gpg --output $FULLFILESTORE/$outfile.gpg -e -r $GPGKEYID $srcfile && \
+
+ if [ -z "$NOVERSIONING" ]; then
+ $VERSIONADD $FULLFILESTORE/$outfile.gpg && $VERSIONCOMMIT
+ fi
}
-pwfdel () {
- local arg=$1
-
- if [ -z "$arg" ]; then
- error "No file specified (hint: use pwfls)"
-
- else
- local -r dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
- local -r file=$(echo $arg | sed 's/.gpg$//')
- local -r filepath=$dir/$file.gpg
-
- [ ! -e $dir ] && error "Category $FILESTORECATEGORY ($dir) does not exist"
- [ ! -e $filepath ] && error "File $file in category $FILESTORECATEGORY does not exist"
-
- if [ -z "$NOVERSIONING" ]; then
- # Wipe even encrypted file securely
- $WIPE $filepath && \
- touch $filepath && $VERSIONCOMMIT && \
- $VERSIONDEL $filepath && $VERSIONCOMMIT
- else
- $WIPE $filepath
- fi
- fi
+function pwfdel () {
+ local arg=$1
+
+ if [ -z "$arg" ]; then
+ error "No file specified (hint: use pwfls)"
+
+ else
+ local -r dir=$WORKDIR/$FILESTOREDIR/$FILESTORECATEGORY
+ local -r file=$(echo $arg | sed 's/.gpg$//')
+ local -r filepath=$dir/$file.gpg
+
+ [ ! -e $dir ] && error "Category $FILESTORECATEGORY ($dir) does not exist"
+ [ ! -e $filepath ] && error "File $file in category $FILESTORECATEGORY does not exist"
+
+ if [ -z "$NOVERSIONING" ]; then
+ # Wipe even encrypted file securely
+ $WIPE $filepath && \
+ touch $filepath && $VERSIONCOMMIT && \
+ $VERSIONDEL $filepath && $VERSIONCOMMIT
+ else
+ $WIPE $filepath
+ fi
+ fi
}
-fwipe () {
- [ -z $1 ] && error Missing argument
- $WIPE $CWD/$1
+function fwipe () {
+ [ -z $1 ] && error Missing argument
+ $WIPE $CWD/$1
}
-pwhelp () {
- info $(pwgrep_version)
- info Possible operations are:
+function pwhelp () {
+ info $(pwgrep_version)
+ info Possible operations are:
cat <<END
- fwipe <FILE> - Wiping a file
- pwdbls - Listing available DBs
- pwedit [OPTS] - Editing current DB
- pwfadd <FILE> - Adding a file to FDB
- pwfcat <NAME> - Printing a file from filestore to stdout
- pwfdel <NAME> - Deleting a file from filestore
- pwgrep [OPTS] <REGEX> - Grepping current DB
- pwldb - Synonym for pwdbls
- pwupdate - Updating FDB and all DBs
- pwhelp - Printing this help screen
+ fwipe <FILE> - Wiping a file
+ pwdbls - Listing available DBs
+ pwedit [OPTS] - Editing current DB
+ pwfadd <FILE> - Adding a file to FDB
+ pwfcat <NAME> - Printing a file from filestore to stdout
+ pwfdel <NAME> - Deleting a file from filestore
+ pwgrep [OPTS] <REGEX> - Grepping current DB
+ pwldb - Synonym for pwdbls
+ pwupdate - Updating FDB and all DBs
+ pwhelp - Printing this help screen
Where OPTS are:
- -o - Offline mode
- -d <DB NAME> - Using a specific DB
- -a - Searching all available DBs or categories at once
+ -o - Offline mode
+ -d <DB NAME> - Using a specific DB
+ -a - Searching all available DBs or categories at once
END
}
@@ -336,36 +334,39 @@ cd $WORKDIR || error "No such file or directory: $WORKDIR"
BASENAME=$(basename $0)
ARGS=$@
-set_opts () {
- case $ARGS in
- -o*)
- # Offlinemode
- NOVERSIONING=1
- ARGS=${ARGS[@]:2}
- set_opts
- ;;
- -d*)
- # Alternate DB
- DB=$(echo $ARGS | $AWK '{ print $2 }')
- FILESTORECATEGORY=$DB
- USEFILESTORECATEGORY=1
- ARGS=$(echo $ARGS | $SED "s/-d $DB//")
- DB=$DB.gpg
- set_opts
- ;;
- -a*)
- # All DBs at once
- which gpg-agent
- if [ $? == "0" ]; then
- ALL=1
- ARGS=${ARGS[@]:2}
- set_opts
- else
- error You need gpg-agent installed
- fi
- ;;
- *)
- esac
+function set_opts () {
+ case $ARGS in
+ -o*)
+ # Offlinemode
+ NOVERSIONING=1
+ ARGS=${ARGS[@]:2}
+ set_opts
+ ;;
+
+ -d*)
+ # Alternate DB
+ DB=$(echo $ARGS | $AWK '{ print $2 }')
+ FILESTORECATEGORY=$DB
+ USEFILESTORECATEGORY=1
+ ARGS=$(echo $ARGS | $SED "s/-d $DB//")
+ DB=$DB.gpg
+ set_opts
+ ;;
+
+ -a*)
+ # All DBs at once
+ which gpg-agent
+ if [ $? == "0" ]; then
+ ALL=1
+ ARGS=${ARGS[@]:2}
+ set_opts
+ else
+ error You need gpg-agent installed
+ fi
+ ;;
+
+ *)
+ esac
}
set_opts $ARGS
@@ -373,38 +374,38 @@ FULLFILESTORE=$FILESTOREDIR/$FILESTORECATEGORY
FILESTOREWORKDIR=$WORKDIR/$FULLFILESTORE
case $BASENAME in
- pwgrep)
- pwgrep $ARGS
- ;;
- pwupdate)
- pwupdate
- ;;
- pwedit)
- pwedit
- ;;
- pwdbls)
- pwdbls
- ;;
- pwldb)
- pwdbls
- ;;
- pwfls)
- pwfls $ARGS
- ;;
- pwfcat)
- pwfcat $ARGS
- ;;
- pwfadd)
- pwfadd $ARGS
- ;;
- pwfdel)
- pwfdel $ARGS
- ;;
- fwipe)
- fwipe $ARGS
- ;;
- *)
- pwhelp
+ pwgrep)
+ pwgrep $ARGS
+ ;;
+ pwupdate)
+ pwupdate
+ ;;
+ pwedit)
+ pwedit
+ ;;
+ pwdbls)
+ pwdbls
;;
+ pwldb)
+ pwdbls
+ ;;
+ pwfls)
+ pwfls $ARGS
+ ;;
+ pwfcat)
+ pwfcat $ARGS
+ ;;
+ pwfadd)
+ pwfadd $ARGS
+ ;;
+ pwfdel)
+ pwfdel $ARGS
+ ;;
+ fwipe)
+ fwipe $ARGS
+ ;;
+ *)
+ pwhelp
+ ;;
esac