HEX
Server: Apache/2.4.38 (Debian)
System: Linux mtefpls 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
User: www-data (33)
PHP: 7.3.31-1~deb10u1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //etc/alternatives/bf_compact
#! /bin/sh

#  bf_compact source_dir [wordlist_name...]
#
#    use to compact wordlist.db
#    replaces original directory with new one
#    renames original directory with '.old' extension

# $Id: bf_compact.in 6749 2008-10-15 23:08:06Z clint $

set -e # die on errors

: ${BOGOFILTER:=bogofilter}
: ${BOGOUTIL:=bogoutil}

if [ -z "$1" ] ; then
    echo 'usage: bf_compact source_dir [wordlist_name...]'
    exit 1
fi

# extract home directory
BOGOHOME="$1"
shift

if [ ! -d "$BOGOHOME" ] ; then
    echo "$BOGOHOME must be a directory, not a file"
    exit 1
fi

# strip trailing slashes
while true; do
    case "$BOGOHOME" in
	*/) BOGOHOME=${BOGOHOME%/} ;;
	*)  break ;;
    esac
done

export BOGOHOME

# find wordlists
if [ -n "$1" ] ; then
    FILES="$@"
else
    DIR=$($BOGOFILTER -QQ | grep ^bogofilter_dir | awk '{print $3}')
    if [ "$BOGOHOME" != "$DIR" ] ; then
	FILES=$(ls "$BOGOHOME"/*.db)
    else
	FILES=$($BOGOFILTER -QQ | grep ^wordlist | cut -f3 -d,)
    fi
fi

BOGOTEMP="bf_compact.$$"

mkdir "$BOGOTEMP" || {
    echo "Cannot create directory $BOGOTEMP. Abort."
    exit 1
}

# copy Berkeley DB configuration if present
if test -f "$BOGOHOME"/DB_CONFIG ; then
    cp -p "$BOGOHOME"/DB_CONFIG "$BOGOTEMP"/
fi

case "$($BOGOFILTER -V | grep Database:)" in
    *"Berkeley DB"*)
    # determine transactions
	if test "$(find "$BOGOHOME/" -name "log.??????????" -print)" = "" ; then
	    TXN=no
	else
	    TXN=yes
	fi
    ;;
    *)
	TXN=noarg
    ;;
esac

# reload files
for FILE in $FILES ; do
    NAME="$(basename $FILE)"
    $BOGOUTIL --db-verify "$FILE" \
	|| { echo "$FILE corrupted, aborting." ; rm -r "$BOGOTEMP" ; exit 1 ; }
    $BOGOUTIL -d "$FILE" | case $TXN in 
	no|yes) $BOGOUTIL --db-transaction=no -l "$BOGOTEMP/$NAME" ;;
	noarg)  $BOGOUTIL                     -l "$BOGOTEMP/$NAME" ;;
    esac
done

if [ $TXN = "yes" ] ; then
    #create database environment files
    $BOGOFILTER -e -C -d "$BOGOTEMP" --db-transaction=yes < /dev/null
fi

# remove $BOGOHOME.old so we don't move the new backup *into* it
# rather than renaming the backup to it.
rm -rf "$BOGOHOME.old"
mv "$BOGOHOME" "$BOGOHOME.old"
mv "$BOGOTEMP" "$BOGOHOME"