diff --git a/gseeker b/gseeker index d665111..4d14650 100755 --- a/gseeker +++ b/gseeker @@ -2,7 +2,7 @@ ### DEFINE -VERSION="0.1" +VERSION="0.2" GSEEKER_HOME="$HOME/.gseeker" GSEEKER_REPORTS="$GSEEKER_HOME/reports" GSEEKER_TMPDIR="$GSEEKER_HOME/tmp/pid_$$" @@ -190,11 +190,12 @@ rep_stats() { DATE=$(date +%s) echo "date,$DATE" >> $FILE echo "version,$VERSION" >> $FILE - echo "url,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'remote.origin.url=' | cut -f2 -d'=')" >> $FILE - echo "head,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/HEAD' | sed 's/ origin\/HEAD -> origin\///g')" >> $FILE - echo "commit,last,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'commit ' | sed 's/commit //g')" >> $FILE + echo "url,$(cd $GSEEKER_TMPDIR/$1/$2 ; git config --list | grep 'remote.origin.url=' | cut -f2 -d'=')" >> $FILE + echo "head,$(cd $GSEEKER_TMPDIR/$1/$2 ; git branch -r | grep ' origin/HEAD' | sed 's/ origin\/HEAD -> origin\///g')" >> $FILE + echo "commit,last,$(cd $GSEEKER_TMPDIR/$1/$2 ; git log --max-count=1 --pretty=short | grep 'commit ' | sed 's/commit //g')" >> $FILE + echo "size,pack,$(cd $GSEEKER_TMPDIR/$1/$2 ; git count-objects -vH | grep "size-pack" | sed 's/size-pack: //g')" >> $FILE - for BRANCH in $(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/' | grep -v 'HEAD' | sed 's/origin\///g'); do + for BRANCH in $(cd $GSEEKER_TMPDIR/$1/$2 ; git branch -r | grep ' origin/' | grep -v 'HEAD' | sed 's/origin\///g'); do echo "branch,$BRANCH" >> $FILE done @@ -204,55 +205,36 @@ rep_stats() { EMAIL=$(echo $LINE | cut -f2 -d'<' | sed 's/>//g') echo "shortlog,$EMAIL,$NAME,$COMMITS" >> $FILE done - + $(cat $GSEEKER_TRACKER | grep "commit,number," | grep ",$2,$1" | cut -f3 -d, > $GSEEKER_TMPDIR/tracker_$2_$1) $(cd $GSEEKER_TMPDIR/$1/$2 ; git log --oneline | nl | sort -rn | cut -f2 | cut -d" " -f1 > $GSEEKER_TMPDIR/cn_$2_$1) for CNUMBER in $(grep -Fvf $GSEEKER_TMPDIR/tracker_$2_$1 $GSEEKER_TMPDIR/cn_$2_$1); do $(cd $GSEEKER_TMPDIR/$1/$2 ; git checkout $CNUMBER) echo "commit,number,$CNUMBER" >> $FILE - F_PEM=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pem") - - if [[ -n $F_PEM ]]; then - for TF in $F_PEM; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - - F_ZIP=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.zip") - - if [[ -n $F_ZIP ]]; then - for TF in $F_ZIP; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - - F_PUB=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pub") - - if [[ -n $F_PUB ]]; then - for TF in $F_PUB; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - + scan_file_alert $1 $2 echo "commit,number,$CNUMBER,$2,$1" >> $GSEEKER_TRACKER done cp $FILE "$GSEEKER_REPORTS/report-$DATE-$2-$1.gseeker" } +scan_file_alert() { + for FTYPE in "*.pem" "*.zip" "*.pub"; do + FLIST=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name $FTYPE) + + if [[ -n $FLIST ]]; then + for TF in $FLIST; do + HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) + + if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then + echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE + fi + done + fi + done +} + setup() { test -d $GSEEKER_HOME || (mkdir -p $GSEEKER_HOME) test -d $GSEEKER_REPORTS || (mkdir -p $GSEEKER_REPORTS) diff --git a/makefile b/makefile new file mode 100644 index 0000000..0319fbe --- /dev/null +++ b/makefile @@ -0,0 +1,10 @@ +.PHONY: install uninstall +.MAIN: install + +install: + mkdir -p ~/bin + cp -v gseeker ~/bin + chmod +x ~/bin/gseeker + +uninstall: + rm -vf ~/bin/gseeker