mirror of
https://github.com/Llewellynvdm/Tomb.git
synced 2024-11-10 23:20:57 +00:00
Index/Search support over file contents (Swish-e)
This commit is contained in:
parent
5c70938b67
commit
9706ef1ab1
75
tomb
75
tomb
@ -52,6 +52,7 @@ KDF=1
|
|||||||
STEGHIDE=1
|
STEGHIDE=1
|
||||||
MKTEMP=1
|
MKTEMP=1
|
||||||
RESIZER=1
|
RESIZER=1
|
||||||
|
SWISH=1
|
||||||
MOUNTOPTS="rw,noatime,nodev"
|
MOUNTOPTS="rw,noatime,nodev"
|
||||||
|
|
||||||
typeset -A global_opts
|
typeset -A global_opts
|
||||||
@ -274,7 +275,7 @@ EOF
|
|||||||
--kdf seconds generate passwords against dictionary attacks
|
--kdf seconds generate passwords against dictionary attacks
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
-h print this help
|
-h print this help
|
||||||
@ -427,10 +428,10 @@ check_bin() {
|
|||||||
command -v steghide > /dev/null || STEGHIDE=0
|
command -v steghide > /dev/null || STEGHIDE=0
|
||||||
# check for resize
|
# check for resize
|
||||||
command -v e2fsck resize2fs > /dev/null || RESIZER=0
|
command -v e2fsck resize2fs > /dev/null || RESIZER=0
|
||||||
|
|
||||||
# check for KDF auxiliary tools
|
# check for KDF auxiliary tools
|
||||||
command -v tomb-kdb-pbkdf2 > /dev/null || KDF=0
|
command -v tomb-kdb-pbkdf2 > /dev/null || KDF=0
|
||||||
|
# check for Swish-E file content indexer
|
||||||
|
command -v swish-e > /dev/null || SWISH=0
|
||||||
}
|
}
|
||||||
|
|
||||||
# }}} - Commandline interaction
|
# }}} - Commandline interaction
|
||||||
@ -478,7 +479,7 @@ load_key() {
|
|||||||
# this does a check on the file header
|
# this does a check on the file header
|
||||||
if ! is_valid_key ${tombkey}; then
|
if ! is_valid_key ${tombkey}; then
|
||||||
_warning "The key seems invalid, the application/pgp header is missing"
|
_warning "The key seems invalid, the application/pgp header is missing"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
print "$tombkey"
|
print "$tombkey"
|
||||||
return 0
|
return 0
|
||||||
@ -651,17 +652,17 @@ get_lukskey() {
|
|||||||
gpgver=`gpg --version | awk '/^gpg/ {print $3}'`
|
gpgver=`gpg --version | awk '/^gpg/ {print $3}'`
|
||||||
if [ "$gpgver" = "1.4.11" ]; then
|
if [ "$gpgver" = "1.4.11" ]; then
|
||||||
xxx "GnuPG is version 1.4.11 - adopting status fix"
|
xxx "GnuPG is version 1.4.11 - adopting status fix"
|
||||||
|
|
||||||
print ${tombpass} | \
|
print ${tombpass} | \
|
||||||
gpg --batch --passphrase-fd 0 --no-tty --no-options -d "${keyfile}"
|
gpg --batch --passphrase-fd 0 --no-tty --no-options -d "${keyfile}"
|
||||||
ret=$?
|
ret=$?
|
||||||
unset tombpass
|
unset tombpass
|
||||||
|
|
||||||
else # using status-file in gpg != 1.4.12
|
else # using status-file in gpg != 1.4.12
|
||||||
|
|
||||||
res=`safe_filename lukskey`
|
res=`safe_filename lukskey`
|
||||||
{ test $? = 0 } || { unset tombpass; die "Fatal error creating temp file." }
|
{ test $? = 0 } || { unset tombpass; die "Fatal error creating temp file." }
|
||||||
|
|
||||||
print ${tombpass} | \
|
print ${tombpass} | \
|
||||||
gpg --batch --passphrase-fd 0 --no-tty --no-options --status-fd 2 \
|
gpg --batch --passphrase-fd 0 --no-tty --no-options --status-fd 2 \
|
||||||
--no-mdc-warning --no-permission-warning --no-secmem-warning \
|
--no-mdc-warning --no-permission-warning --no-secmem-warning \
|
||||||
@ -669,7 +670,7 @@ get_lukskey() {
|
|||||||
unset tombpass
|
unset tombpass
|
||||||
grep 'DECRYPTION_OKAY' $res
|
grep 'DECRYPTION_OKAY' $res
|
||||||
ret=$?; rm -f $res
|
ret=$?; rm -f $res
|
||||||
|
|
||||||
fi
|
fi
|
||||||
xxx "get_lukskey returns $ret"
|
xxx "get_lukskey returns $ret"
|
||||||
return $ret
|
return $ret
|
||||||
@ -725,7 +726,7 @@ gen_key() {
|
|||||||
pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
|
pbkdf2_iter=`tomb-kdb-pbkdf2-getiter $microseconds`
|
||||||
# We use a length of 64bytes = 512bits (more than needed!?)
|
# We use a length of 64bytes = 512bits (more than needed!?)
|
||||||
tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
|
tombpass=`tomb-kdb-pbkdf2 $pbkdf2_salt $pbkdf2_iter 64 <<<"${tombpass}"`
|
||||||
|
|
||||||
header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
|
header="_KDF_pbkdf2sha1_${pbkdf2_salt}_${pbkdf2_iter}_64\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -830,7 +831,7 @@ exhume_key() {
|
|||||||
res=$?
|
res=$?
|
||||||
|
|
||||||
unset tombpass
|
unset tombpass
|
||||||
|
|
||||||
if [ $res = 0 ]; then
|
if [ $res = 0 ]; then
|
||||||
_success "${tombkey} succesfully decoded"
|
_success "${tombkey} succesfully decoded"
|
||||||
return 0
|
return 0
|
||||||
@ -1556,7 +1557,15 @@ index_tombs() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
yes "Creating and updating search indexes"
|
yes "Creating and updating search indexes"
|
||||||
|
|
||||||
|
# start the LibreOffice document converter if installed
|
||||||
|
{ command -v unoconv >/dev/null } && {
|
||||||
|
unoconv -l 2>/dev/null &
|
||||||
|
xxx "unoconv listener launched"
|
||||||
|
sleep 1 }
|
||||||
|
|
||||||
for t in ${mounted_tombs}; do
|
for t in ${mounted_tombs}; do
|
||||||
mapper=`basename ${t[(ws:;:)1]}`
|
mapper=`basename ${t[(ws:;:)1]}`
|
||||||
tombname=${t[(ws:;:)5]}
|
tombname=${t[(ws:;:)5]}
|
||||||
@ -1564,8 +1573,40 @@ index_tombs() {
|
|||||||
{ test -r ${tombmount}/.noindex } && {
|
{ test -r ${tombmount}/.noindex } && {
|
||||||
say "skipping $tombname (.noindex found)"
|
say "skipping $tombname (.noindex found)"
|
||||||
continue }
|
continue }
|
||||||
say "indexing $tombname"
|
say "indexing $tombname filenames..."
|
||||||
updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
|
updatedb -l 0 -o ${tombmount}/.updatedb -U ${tombmount}
|
||||||
|
|
||||||
|
# here we use swish to index file contents
|
||||||
|
{ test $SWISH = 1 } && {
|
||||||
|
say "indexing $tombname contents..."
|
||||||
|
swishrc=`safe_filename swish`
|
||||||
|
|
||||||
|
cat <<EOF > $swishrc
|
||||||
|
DefaultContents TXT*
|
||||||
|
FileFilter .pdf pdftotext "'%p' -"
|
||||||
|
|
||||||
|
FileFilterMatch unoconv "-d spreadsheet -f csv --stdout %P" /\.xls.*/
|
||||||
|
FileFilterMatch unoconv "-d spreadsheet -f csv --stdout %P" /\.xlt.*/
|
||||||
|
FileFilter .ods unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
FileFilter .ots unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
FileFilter .dbf unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
FileFilter .dif unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
FileFilter .uos unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
FileFilter .sxc unoconv "-d spreadsheet -f csv --stdout %P"
|
||||||
|
|
||||||
|
FileFilterMatch unoconv "-d document -f txt --stdout %P" /\.doc.*/
|
||||||
|
FileFilterMatch unoconv "-d document -f txt --stdout %P" /\.odt.*/
|
||||||
|
FileFilterMatch unoconv "-d document -f txt --stdout %P" /\.rtf.*/
|
||||||
|
|
||||||
|
IndexContents HTML* .htm .html .shtml
|
||||||
|
IndexContents XML* .xml
|
||||||
|
IndexDir $tombmount
|
||||||
|
IndexFile $tombmount/.swish
|
||||||
|
EOF
|
||||||
|
xxx "Using swish-e to create index"
|
||||||
|
swish-e -c $swishrc -S fs -v3
|
||||||
|
rm -f $swishrc
|
||||||
|
}
|
||||||
say "search index updated"
|
say "search index updated"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -1593,15 +1634,23 @@ search_tombs() {
|
|||||||
tombname=${t[(ws:;:)5]}
|
tombname=${t[(ws:;:)5]}
|
||||||
tombmount=${t[(ws:;:)2]}
|
tombmount=${t[(ws:;:)2]}
|
||||||
if [ -r ${tombmount}/.updatedb ]; then
|
if [ -r ${tombmount}/.updatedb ]; then
|
||||||
say "Searching in tomb $tombname"
|
|
||||||
|
# use mlocate to search hits on filenames
|
||||||
|
say "Searching filenames in tomb $tombname"
|
||||||
locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
|
locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
|
||||||
say "Matches found: `locate -d ${tombmount}/.updatedb -e -i -c ${(f)@}`"
|
say "Matches found: `locate -d ${tombmount}/.updatedb -e -i -c ${(f)@}`"
|
||||||
|
|
||||||
|
# use swish-e to search over contents
|
||||||
|
{ test $SWISH = 1 } && { test -r $tombmount/.swish } && {
|
||||||
|
say "Searching contents in tomb $tombname"
|
||||||
|
swish-search -w ${=@} -f $tombmount/.swish -H0 }
|
||||||
|
|
||||||
else
|
else
|
||||||
no "skipping tomb $tombname: not indexed"
|
no "skipping tomb $tombname: not indexed"
|
||||||
no "run 'tomb index' to create indexes"
|
no "run 'tomb index' to create indexes"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
say "Search completed."
|
||||||
}
|
}
|
||||||
|
|
||||||
# }}} - Index and search
|
# }}} - Index and search
|
||||||
|
Loading…
Reference in New Issue
Block a user