#!/bin/bash

# Copyright 2016-2020  Jay Flood, SP, Brasil
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Author: brokenman@porteus.org
#
# This is a script to update web browsers

# Source porteus-functions
. /usr/share/porteus/porteus-functions
get_colors

# Check for root
SCRIPT="$(cd "${0%/*}" 2>/dev/null; echo "$PWD"/"${0##*/}")"
if [ `whoami` != "root" ]; then
	echo "Only root can run this script."
	exit
fi

cleanup(){
[ -d $TMPDIR ] && rm -rf $TMPDIR
exit	
}
trap cleanup SIGHUP SIGINT SIGTERM

# Set variables
TMPDIR=/tmp/.bundle.$$
TARG=$TMPDIR/ch.$$
SERVER=`awk -F= '/SERVER=/{print$NF}' /etc/porteus.conf`
[ `uname -m` != "x86_64" ] && ARCH=i586 || ARCH=x86_64
CWD=`pwd`
PVER=`< /etc/porteus-version`
BUNDLES=$SERVER/$ARCH/$PVER/bundles

get_desktop
mkdir $TMPDIR

echo
green "####################################"
echo " Welcome to the porteus bundle manager"

# Get a list of available packages
echo
echo "Updating list of packages ..."
download $BUNDLES $TMPDIR
[ ! -e $TMPDIR/bundles ] && { red "Could not download package list."; cleanup; }
#RESULT=`awk -F'"' '/xzm/{print$6}' $TMPDIR/bundles | egrep "$ARCH|alldesktops" | egrep "$DESKTOP|alldesktops"`
RESULT=`grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]' $TMPDIR/bundles | \
sed -e 's/^<a href=["'"'"']//' -e 's/["'"'"']$//' | \
egrep "$ARCH|alldesktops" | egrep "$DESKTOP|alldesktops" | egrep ".xzm"`
[ -z "$RESULT" ] && { red "Nothing was found for your desktop $DESKTOP"; cleanup; }
menu_from_variable $RESULT
echo "You have chosen: $CHOICE"
echo
read -e -p "Type a path to download the file to: " TARG

## Test target
if [ ! -d $TARG ]||[ ! -w $TARG ]; then
	echo
	red "Target does not exist or is not writable."
	cleanup
fi

download $BUNDLES/$CHOICE $TARG
SUM1=`lynx -dump -dont_wrap_pre $SERVER/$ARCH/$PVER/bundles/md5sums.txt | grep $CHOICE | cut -d" " -f1`
SUM2=`md5sum $TARG/$CHOICE | cut -d" " -f1`

echo "Verifying download integrity.."
echo "Server  : $SUM1"
echo "Download: $SUM2"
if [ "$SUM1" = "$SUM2" ]; then 
     echo "Module verified." 
else 
     echo "Integrity check failed. Your Module in $TARG may be corrupt."
     cleanup 
fi
echo
echo "Success. Your file is at: $TARG"
cleanup
