#!/bin/sh

if [ "$1" = "--daemon" -o "$1" = "-d" ];then
FGDEF=""
FGRED="" 
FGGRN="" 
FGBRN=""

BGRED="" 
BGGRN="" 
BGBRN="" 
BGBLU=""
ECHO=logger
E=""
NE=""
else
FGDEF="\\033[0;39m"
FGRED="\\033[1;31m" 
FGGRN="\\033[1;32m" 
FGBRN="\\033[1;33m"

BGRED="\\033[1;41m" 
BGGRN="\\033[1;42m" 
BGBRN="\\033[1;43m" 
BGBLU="\\033[1;44m"
ECHO=echo
E="-e "
NE="-ne "
fi

SRCLIST="/var/lib/urpmi/list.update_source"
GETLIST="/var/cache/autoupdater/list"
UPDTSRC="ftp://ftp.blackpanther.hu/blackPanther/OS/updates"

copy=" )---- blackPanther OS System Updates Autochecker by Vector ---- ("
ok="${FGGRN}OK${FGDEF}"
fals="${FGRED}False${FGDEF}"
chknet=" * Checking Internet Access:"
dlfrom="Download from:"
updfound="New updates found your system!"
updnotf=" * New updates not found..."
updavail="System Updates Available!"
updavmsg=" * Available updates:"
clckop="Click here to open.."
chkaccess=" * Checking System Access: "
syschkmsg=" * Checking System Files:   "
ormsg="or run RPManager"
systat=" * Sytem Updated State:"
appfresh="Autoupdater refresh done!"
exiting=" [Exiting]"
end=" (--------- blackPanther OS AutoUpdater Work End ---------)"

srclstnot="Update source list file not available, please add to system with edit-urpm-media command with 'update_source' name!"
srccfgnot="Update source config file not available, please remove and readd to system with edit-urpm-media command with 'update_source' name or please reinstall system or system files!"
conferr="Although source list file to exist but error found in configuration files, please run edit-urpm-media application and remove update_source in list after readd again with this:"

case $LANGUAGE in
    hu* )	
	ok="${FGGRN}OK${FGDEF}"
	fals="${FGRED}Hiba${FGDEF}"
	chknet=" * Internet kapcsolat ellenrzse:  "
	dlfrom=" * Letlts innen:"
	updfound=" ! j frisstsek elrhetek !"
	updnotf=" * Nincs j elrhet frissts..."
	updavail="Rendszer frissts tallhat!"
	updavmsg=" * Elrhet frisstsek:"
	clckop="Kattnintson ide a megnytshoz.."
	chkaccess=" * Rendszer hozzfrs ellenrzse:"
	syschkmsg=" * Rendszerfjlok ellenrzse:      "
	ormsg="vagy futtassa az RPManager-t"
	appfresh="Autoupdater frisstse ksz!"
	systat=" * Rendszer frissts llapota:    "
	exiting=" [Kilps]"

	srclstnot="Frisstsi forrslista fjl nem elrhet, krem adja hozz a rendszerhez az edit-urpm-media programmal 'update_source' nven!"
	srccfgnot="Frisstsi forrs konfigfjla nem elrhet, krem tvoltsa el s jra adja hozz a rendszerhez az edit-urpm-media programmal 'update_source' nven vagy teleptse jra a rendszer vagy a hinyz fjlokat!"
	conferr="Habr a forrslista fjl ltezik, valamilyen hiba van a konfigurciban. Futtassa az edit-urpm-media programot majd trlje az update_source bejegyzst s adja hozz jra ezzel a cmmel:"
esac

access() {
if [ "$UID" = "0" ];then
    $ECHO $E "[  $ok  ]"
    $ECHO $NE "${FGBRN}$chknet${FGDEF}"
    netcheck
 else
    $ECHO $E "[ $fals ]"
    $ECHO ""
    $ECHO "	 S O R R Y! 
    You are not an admin"    
    $ECHO ""
    exit
fi
}

netcheck() {
    if [ -n "`ping -c 1 www.google.com | grep 'icmp_seq'`" ]; then 
	$ECHO $E "[  $ok  ]"
	syschk
     else 
	$ECHO $E "[ $fals ]"
	exit
    fi
}
syschk() {
$ECHO $NE "${FGBRN}$syschkmsg${FGDEF}"
if [ ! -f $SRCLIST ];then
    $ECHO $E [ $fals ]
    $ECHO ""
    $ECHO $E "${BGRED}ERROR:${BGBLU}[ ${FGRED}$srclstnot${FGDEF} ]"
    $ECHO ""
    exit
    
fi

if [ ! -f /etc/urpmi/urpmi.cfg ];then
    $ECHO $E [ $fals ]
    $ECHO ""
    $ECHO $E "${BGRED}ERROR:${BGBLU}[ ${FGRED}$srccfgnot${FGDEF} ]"
    $ECHO ""
    exit
 else
    confok=`cat  /etc/urpmi/urpmi.cfg | grep update_source`
    if [ ! -n "$confok" ];then
	getver
	$ECHO $E [ $fals ]
	$ECHO ""
	$ECHO $E "${BGRED}ERROR:${BGBLU}[ ${FGRED}$conferr $UPDTSRC/v${RELEASE}\("${RELNAME}"\)/${FGDEF} ]"
	$ECHO ""
     exit
    fi
fi
$ECHO $E "[  $ok  ]" 
getver

}
getver() {
    RELEASE=`sed "s/.*release \([0-9.]*\).*/\1/g" /etc/blackPanther-release 2> /dev/null`
    RELNAME=`sed 's/.*release \([0-9.]*\)/\1/g' /etc/blackPanther-release | awk '{ print $2 }' | perl -pi -e 's|\)||g'| perl -pi -e 's|\(||g' `
}

getlist() {
$ECHO ""
$ECHO $E "${FGBRN}$dlfrom${FGDEF} \n${BGBLU}$UPDTSRC/v"${RELEASE}\(${RELNAME}\)"/list${FGDEF}"
$ECHO ""
rm -f /tmp/list
cd /tmp
wget $UPDTSRC/v"$RELEASE"\("$RELNAME"\)/list 2>/dev/null
if [ -f /tmp/list ];then
    rm -f /var/cache/autoupdater/list
    cat /tmp/list | sort > /var/cache/autoupdater/list
    chkdiff
    rm -f /tmp/list
fi
}

chkdiff() {
if [ -f /var/cache/autoupdater/list ];then
    SEDSRC=`head -n 1 $SRCLIST | awk -F\)/ '{ print $1 ")" }'`
    DIFFLIST=/var/cache/autoupdater/list.src
    sed "s|$SEDSRC/||g" $SRCLIST | sort > $DIFFLIST

    ret=`diff -q $DIFFLIST $GETLIST 2>/dev/null`
    if [ -n "$ret" ] ;then 
	$ECHO $E "${FGBRN}$systat${FGDEF} [ $fals ]"
	$ECHO ""
	$ECHO "  ----------------------------------"    
	$ECHO $E "  | ${FGRED}$updfound${FGDEF} |"
	$ECHO "  ----------------------------------"
	$ECHO ""
	showmsg
     else
	$ECHO $E "${FGBRN}$systat${FGDEF} [ $ok ]"
	$ECHO $E "${FGGRN}$updnotf${FGDEF} $exiting"
	$ECHO ""
	$ECHO $E "$end"
	$ECHO ""
    fi

fi

touch /var/run/autoupdater.pid

}
playsnd() {
if (pidof artsd &>/dev/null);then
    #player=artsplay
    player=play
 else
    player=play
fi
$player /usr/share/sounds/KDE_Beep_Digital_2.ogg &

}

showmsg() {
list=`echo $(diff -y --suppress-common-lines $DIFFLIST $GETLIST | sed 's|.i586.rpm| \]|'| sed 's|.noarch.rpm| \]|'| sed 's|./||'| perl -pi -e 's|\>|\[|' | sort)`

urpmi.update -q update_source 2>/dev/null
chkfix=`cat /etc/urpmi/urpmi.cfg | grep HASH`
if [ -n $chkfix ];then
    perl -pi -e 's|: HASH\(.*\)|ignore|' /etc/urpmi/urpmi.cfg
fi
if [ -n $DISPLAY ];then
    if [ -x /usr/bin/bubbled ];then 
	bubblemsg other "$updavail" "<font color=red>$list</font><br /><a href=$SEDSRC>$clckop</a> $ormsg" 10 >/dev/null
	playsnd
     else
	bubblemsg "$updavail" "$list"
	playsnd
    fi
 else
 	$ECHO $E "${FGBRN}$updavmsg${FGDEF} ${FGRED} $list${FGDEF}"
	$ECHO ""
fi

updaterapp="autoupdater"
autofresh=`cat "$GETLIST" | grep $updaterapp`
if [ -n $autofresh ];then
    chkrpm=`urpmq -u $updaterapp 2>/dev/null`
 if [ -n "$chkrpm" ];then
    $ECHO $NE "Installing Autoupdater never version..."
    urpmi $updaterapp -q --update --allow-force --allow-nodeps 2>&1 >/dev/null
    #$ECHO $E "[  $ok  ]" 
    if [ ! -n $DISPLAY ];then
	if [ -x /usr/bin/bubbled ];then 
	    bubblemsg other "$appfresh" "DONE"
	 else
	    bubblemsg other "$appfresh : OK "
	fi
     else 
        $ECHO $NE "${FGBRN} * $apprefresh${FGDEF} :"
	$ECHO $E "[  $ok  ]" 
    fi
    playsnd
 fi
fi
	$ECHO $E "$end"
	$ECHO ""

}

if [ ! -d /var/cache/autoupdater ];then
    mkdir -p  /var/cache/autoupdater
fi
find /var/run/ -type f -ctime +1 -name autoupdater.pid -exec rm -f \{\} \; 2>/dev/null
if [ -f /var/run/autoupdater.pid ]&&[ "$1" = "-d" -o "$1" = "--daemon" ];then
    exit
fi
rm -f ${GETLIST}
$ECHO ""
$ECHO $E "$copy"
$ECHO ""
$ECHO $NE"${FGBRN}$chkaccess${FGDEF} "

access
getlist 
