#!/bin/sh
#
# pureadminsearch - Helper program for Pureadmin used to locate the various external resources
# required by pureadmin to run.

# Set this to "false" if you don't want Pureadmin to backup your files if needed. NOT RECOMMENDED!
DO_BACKUP="true";

# Ensure that the PATH-variable is somewhat sane
PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin

BACKUP_DIR="/etc/pureadmin-backup";
mkdir -p $BACKUP_DIR 2> /dev/null || DO_BACKUP="false";

PURE_PW=`which pure-pw 2> /dev/null`
if [ -n "$PURE_PW" ]; then
    echo "pure-pw:$PURE_PW";
fi

PURE_FTPWHO=`which pure-ftpwho 2> /dev/null`;
if [ -n "$PURE_FTPWHO" ]; then
    echo "pure-ftpwho:$PURE_FTPWHO";
fi


GROUPADD=`which groupadd 2> /dev/null`
if [ -n "$GROUPADD" ]; then
    echo "groupadd:$GROUPADD";
fi

USERADD=`which useradd 2> /dev/null`
if [ -n "$USERADD" ]; then
    echo "useradd:$USERADD";
fi


RUNTIME_FILE_PATH="/var/run /var/run/pure-ftpd"
for dir in $RUNTIME_FILE_PATH; do
    if [ -r "$dir/pure-ftpd.pid" ]; then
	PID=`cat $dir/pure-ftpd.pid`;
	echo "pidfile:$dir/pure-ftpd.pid";
	echo "processid:$PID"
	if [ -e "/proc/$PID" ]; then
	    if [ "`cat /proc/$PID/cmdline`" == "pure-ftpd (SERVER)" ];then
		echo "status:running";
	    else
		echo "status:not running";
	    fi;
	fi;
	break;
    fi;
done;


CONFPATH=`locate pure-ftpd.conf 2> /dev/null`;
CONFPATH="/etc/pure-ftpd.conf /usr/etc/pure-ftpd.conf $CONFPATH";
for conf in $CONFPATH; do
    if [ -r $conf ]; then
	echo "config:$conf";
	break;
    fi;
done;

FTPGROUP=`grep ftpgroup /etc/group | cut -d : -f 3`
if [ -z "$FTPGROUP" ]; then
    FTPGROUP="NOT FOUND";
fi

echo "ftpgroup:$FTPGROUP";

FTPUSER=`grep ftpuser /etc/passwd | cut -d : -f 3`
if [ -z "$FTPUSER" ]; then
    FTPUSER="NOT FOUND";
fi

echo "ftpuser:$FTPUSER";

HOMEDIRS="/home/ftpusers /home/ftpuser";
for home in $HOMEDIRS; do
    if [ -d $home ]; then
	echo "ftpuserhome:$home";
	break;
    fi;
done;

BACKUPS="NO";

PASSWD_FILES="$PURE_PASSWDFILE /etc/pureftpd.passwd";
for pwfile in $PASSWD_FILES; do
    if [ -e "$pwfile" ]; then
	echo "pwfile:$pwfile"
	if [ "$DO_BACKUP" == "true" -a -d $BACKUP_DIR -a ! -e "$BACKUP_DIR/pureftpd.passwd"  ]; then
	    cp /etc/pureftpd.passwd $BACKUP_DIR && BACKUPS=$BACKUP_DIR;
	fi;
	break;
    fi;
done;

PDB_FILES="$PURE_DBFILE /etc/pureftpd.pdb";
for pdbfile in $PDB_FILES; do
    if [ -e "$pdbfile" ]; then
	echo "pdbfile:$pdbfile";
	if [ "$DO_BACKUP" == "true" -a -d $BACKUP_DIR -a ! -e "$BACKUP_DIR/pureftpd.pdb"  ]; then
	    cp $pdbfile $BACKUP_DIR && BACKUPS=$BACKUP_DIR;
	fi;
	break;
    fi;
done;
echo "backups:$BACKUPS";

startupscripts="/etc/rc.d/rc.pure-ftpd /etc/rc.d/init.d/pure-ftpd /etc/rc.d/rc.pureftpd";
for script in $startupscripts; do
    if [ -x "$script" ]; then
	echo "startupscript:$script";
	break;
    fi;
done;

    