#!/bin/bash
# Debian-IPC - Setupscript
clear
TITLE="IPC Installation (Update) / V11.6                          $(date +"%d.%m.%Y %H:%M")"
URL="https://ipc.pebkac.at/ipc"
PAK="ipc-116.tgz"
DIR=$PWD
SUDOER="www-data ALL=NOPASSWD:/var/emu/script/sudowebscript.sh,/usr/bin/last"
SUDOERfile="/etc/sudoers"
SupportedCams="OScam CCcam Camd3 NewCS sBox OSEmu gbox"
DEFAULTcams="OScam OSEmu"
RPI="0"
POGO="0"
phppath="/etc/php/7.4/apache2"

#Debian Bullseye Standard Pakete
NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
NP2="apache2 libapache2-mod-php7.4 php7.4 php7.4-cli php7.4-common php7.4-cgi php7.4-sqlite3 php7.4-curl php7.4-xml php7.4-mbstring"
NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpdate dialog libusb-dev sqlite3 coreutils gcc"
NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
NP="logrotate libusb-1.0-0-dev w3m"
NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""

if test -f "$0.1"; then
	echo ""
	echo "$TITLE"
	echo "==============================================================================="
	echo ""
	echo "Alte Setupscripts entfernt, starte Download und Setup erneut."
	echo ""
	echo "==============================================================================="
	echo ""
	rm $0*
	exit 1
fi

if [[ $EUID -ne 0 ]]; then
	echo ""
	echo "$TITLE"
	echo "==============================================================================="
	echo ""
	echo "Dieses Script muss entweder als root oder mit sudo-Rechten ausgeführt werden" 
	echo ""
	echo "==============================================================================="
	echo ""
	exit 1
fi


#Pruefe Argumente
[ "$1" = "32" ] && SYSBIT="32"
[ "$1" = "64" ] && SYSBIT="64"

#pruefe System ob 32 oder 64 bit

if [ -z "$SYSBIT" ]; then
	if [ `uname -m` = 'x86_64' ]; then
		SYSBIT="64"
		ENDUNG="x86_64"
	else
		SYSBIT="32"
		ENDUNG="x86"
	fi
fi

#pruefe System ob ARM oder ARM64
[[ "$(uname -m)" = "arm"* ]] && ARM=$(uname -m) || ARM=""
[[ "$(uname -m)" = "aarch64"* ]] && ARM=$(uname -m)
CPU=$(cat /proc/cpuinfo|grep Model|cut -c 10-18)

#Wenn ARM dann Endung zuweisen
if [ ! -z "$ARM" ]; then
        if [ ! "$ARM" = "aarch64" ]; then
                ENDUNG="armel"
        else
                ENDUNG="aarch64"
        fi
		#Erkunnung von RPi und Pogo
        if [ "$CPU" = "Raspberry" ]; then
                RPI="1"
        fi
        if [ "$ARM" = "armv5tel" ]; then
                POGO="1"
        fi
fi

#Linux Version? (Debian/Ubuntu)
if [ -f /usr/bin/lsb_release ]; then
	LSB=$(/usr/bin/lsb_release -d)
	_LINUX=$(echo $LSB|cut -d":" -f2|awk {'print $1'})
	if [ "$_LINUX" = "Debian" ]; then
		LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $3'})
	elif [ "$_LINUX" = "Ubuntu" ]; then
		LINUXVERSION=$(echo $LSB|cut -d":" -f2|awk {'print $2'})
	fi
else
	_LINUX="Debian"
fi
if [ -z "$LINUXVERSION" ]; then
	[ -f /etc/debian_version ] && LINUXVERSION=$(cat /etc/debian_version)
fi

#needed Packs passend fuer die Distribution/Version

# PHP 8.4 bei Debian Trixie
if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "13" ] ; then
        NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
        NP2="apache2 libapache2-mod-php8.4 php8.4 php8.4-cli php8.4-common php8.4-cgi php8.4-sqlite3 php8.4-curl php8.4-xml php8.4-mbstring"
        NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpsec-ntpdate dialog libusb-dev sqlite3 coreutils gcc"
        NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
        NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
        NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
        NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
        NP="logrotate libusb-1.0-0-dev w3m"
        NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""
        phppath="/etc/php/8.4/apache2"
        SupportedCams="OScam CCcam Camd3 NewCS sBox"
fi

# PHP 8.2 bei Debian Bookworm
if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "12" ] ; then
        NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
		NP2="apache2 libapache2-mod-php8.2 php8.2 php8.2-cli php8.2-common php8.2-cgi php8.2-sqlite3 php8.2-curl php8.2-xml php8.2-mbstring"
        NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpdate dialog libusb-dev sqlite3 coreutils gcc"
        NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
        NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
        NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
        NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
        NP="logrotate libusb-1.0-0-dev w3m"
        NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""
        phppath="/etc/php/8.2/apache2"
	SupportedCams="OScam CCcam Camd3 NewCS sBox"
fi

# PHP 8.5 bei Ubuntu 26.04:
if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "26" ] ; then
        NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
        NP2="apache2 libapache2-mod-php8.5 php8.5 php8.5-cli php8.5-common php8.5-cgi php8.5-sqlite3 php8.5-curl php8.5-xml php8.5-mbstring"
        NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpsec-ntpdate dialog libusb-dev sqlite3 coreutils gcc"
        NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
        NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
        NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
        NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
        NP="logrotate libusb-1.0-0-dev w3m"
        NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""
        phppath="/etc/php/8.5/apache2"
        SupportedCams="OScam CCcam Camd3 NewCS sBox"
fi

# PHP 8.1 bei Ubuntu 22.04:
if [ "$_LINUX" = "Ubuntu" ]; then
        if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "22" ] ; then
        NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
        NP2="apache2 libapache2-mod-php8.1 php8.1 php8.1-cli php8.1-common php8.1-cgi php8.1-sqlite3 php8.1-curl php8.1-xml php8.1-mbstring"
        NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpdate dialog libusb-dev sqlite3 coreutils gcc"
        NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
        NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
        NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
        NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
        NP="logrotate libusb-1.0-0-dev w3m"
        NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""
        phppath="/etc/php/8.1/apache2"
        SupportedCams="OScam CCcam Camd3 NewCS sBox"
        fi
fi

# PHP 8.3 bei Ubuntu 24.04:
if [ "$_LINUX" = "Ubuntu" ]; then
        if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "24" ] ; then
        NP1="openssh-server locales console-data console-common rsyslog nfs-common portmap bc"
        NP2="apache2 libapache2-mod-php8.3 php8.3 php8.3-cli php8.3-common php8.3-cgi php8.3-sqlite3 php8.3-curl php8.3-xml php8.3-mbstring"
        NP3="tofrodos htop ncftp libpcsclite1 pcscd sudo ntpdate dialog libusb-dev sqlite3 coreutils gcc"
        NP4="tar gzip nano less lm-sensors locate sendemail libnet-ssleay-perl libio-socket-ssl-perl"
        NP5="build-essential autoconf automake cmake make patch gcc g++ pkg-config git"
        NP6="libccid libtool libglib2.0-dev libssl-dev libpcsclite1 libpcsclite-dev libusb-dev libusb-1.0-0-dev"
        NP7="gettext tar bzip2 gzip ncurses-bin flex bison wget libpng-dev zlib1g-dev sudo"
        NP="logrotate libusb-1.0-0-dev w3m"
        NeedPacks=""$NP1" "$NP2" "$NP3" "$NP4" "$NP5" "$NP6" "$NP7""
        phppath="/etc/php/8.3/apache2"
        SupportedCams="OScam CCcam Camd3 NewCS sBox"
        fi
fi

# Skript Installation libdvbcsa
function install_libdvbcsa_from_source () {
    echo -e "\nInstalling libdvbcsa from source...\n"
    FLAGS="$(cat /proc/cpuinfo | grep -im1 flags | awk -F':' '{print $2}')"
    FLAGS+="$(cat /proc/cpuinfo | grep -im1 features | awk -F':' '{print $2}')"

    #autodetect optimization
    echo "$FLAGS" | grep -qiw 'altivec' && optimization="--enable-altivec"
    [ -z "$optimization" ] && echo "$FLAGS" | grep -qiw "avx2" && optimization="--enable-avx2"
    [ -z "$optimization" ] && echo "$FLAGS" | grep -qiw "ssse3" && optimization="--enable-ssse3"
    [ -z "$optimization" ] && echo "$FLAGS" | grep -qiw "sse2" && optimization="--enable-sse2"
    [ -z "$optimization" ] && echo "$FLAGS" | grep -qiw "mmx" && optimization="--enable-mmx"
    if [ -z "$optimization" ]; then
        if [ "$ENDUNG" == "aarch64" ]; then
            optimization="--enable-uint64"
        elif [ -n "$(find "/usr/lib" -name "arm_neon.h" -type f -print -quit)" ]; then
            echo "$FLAGS" | grep -qiw "neon\|simd" && optimization="--enable-neon"
        fi
    fi
    [ -z "$optimization" ] && optimization="--enable-uint32"

    #gettings sources
    cd /tmp && rm -rf /tmp/libdvbcsa
    git clone https://github.com/oe-mirrors/libdvbcsa.git /tmp/libdvbcsa
    cd /tmp/libdvbcsa

    echo -e "\nlibdvbcsa optimization autodetection: $optimization\n"
    sleep 5

    #compile & install
    ./bootstrap && \
    ./configure $optimization
    make -j$(nproc)
    make install

    #update library cache
    ldconfig

    #cleanup
    cd /tmp && rm -rf /tmp/libdvbcsa
}

function _error () {
	if [ $1 -gt 0 ]; then
		echo -e "\033[500C\033[8D\033[1;37;40m\0133\033[1;31;40m FAIL \033[1;37;40m\0135\033[0m"
		echo -e "\t\033[1;31;40mAbbruch\033[0m"
		exit 1
	fi
	echo -e "\033[500C\033[8D\033[1;37;40m\0133\033[1;32;40m DONE \033[1;37;40m\0135\033[0m"
}

function _cleanup () {
	apt-get --yes --purge autoremove >/dev/null
	apt-get clean >/dev/null
	rm -f $PAK && rm -f /$PAK && rm -f /tmp/$PAK && rm -f /root/$PAK
	rm -f $0 && rm -f /$0 && rm -f /tmp/$0 && rm -f /root/$0 && rm -f $DIR/$0 rm -f /$grenze
}

function collect_needed_packs () {
	if [ -z "$1" ]; then
		NEEDPACK=${NeedPacks[*]}
		if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) == "9" ]; then
			NEEDPACK=$NeedPacks
		fi
		if [ ! "$_LINUX"="Debian" ]; then
			if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) -gt "15" ]; then
				NEEDPACK=$NeedPacks
			fi
		fi
		if [ "$SYSBIT" == "64" ]; then
			if [ "$(echo $LINUXVERSION|cut -c1)" == "6" ]; then
				NEEDPACK="$NEEDPACK ia32-libs"
			fi
			if [ "$(echo $LINUXVERSION|cut -c1)" == "8" ]; then
				NEEDPACK="$NEEDPACK lib32z1 lib32ncurses5"
			fi
		fi
	else
		NEEDPACK=$1
	fi
	InstallPAK=""
	for PACK in $NEEDPACK; do
		if [ -z "$(dpkg -l | grep "ii" | awk {'print $2'} | grep -xi $PACK)" ]; then
			[ -z "$InstallPAK" ] && InstallPAK="$PACK" || InstallPAK+=" $PACK"
		fi
	done
}

function apache_check_version () {
#Apache Version ermitteln

if [ -f /usr/sbin/apachectl ]; then
	apachelang=$(/usr/sbin/apachectl -v)
	apachekurz=$(echo $apachelang|cut -c 24-26|awk {'print $1'})
fi

#www-root und php.ini aendern
if [ "$apachekurz" = "2.4" ]; then
	sed -i s:"DocumentRoot /var/www/html":"DocumentRoot /var/www/":g  /etc/apache2/sites-enabled/000-default.conf
	sed -i s:"short_open_tag = Off":"short_open_tag = On":g $phppath/php.ini
fi

#PHP Version ermitteln
phpversion=$(php -v|head -n1|cut -c 5-7)
grenze=5.4

if [ "$phpversion" > "$grenze" ]; then
	sed -i s:"short_open_tag = Off":"short_open_tag = On":g $phppath/php.ini
fi

#Uploadgroesse fuer IPC-Recover bei Debian 8 & 9) anpassen
if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) -gt "8" ]; then
	sed -i s/"upload_max_filesize = 2M"/"upload_max_filesize = 15M"/g $phppath/php.ini
	sed -i s/"post_max_size = 8M"/"post_max_size = 15M"/g $phppath/php.ini
fi
if [ ! "$_LINUX"="Debian" ]; then
	if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) -gt "15" ]; then
		sed -i s/"upload_max_filesize = 2M"/"upload_max_filesize = 15M"/g $phppath/php.ini
		sed -i s/"post_max_size = 8M"/"post_max_size = 15M"/g $phppath/php.ini
	fi
fi
[ ! -s /etc/apache2/httpd.conf ] && echo "ServerName 127.0.0.1" >/etc/apache2/httpd.conf
[ "`grep "^Include httpd.conf" /etc/apache2/apache2.conf`" = "" ] && echo "Include httpd.conf" >> /etc/apache2/apache2.conf

#Apache neu starten
systemctl stop apache2 >/dev/null
sleep 30
systemctl start apache2 >/dev/null
_error $?
}

echo "$TITLE"
echo "==============================================================================="
echo ""
echo " IPC-Tools                 EMUs-Autostart, Putty, SCP, Smargo, Firmware"
echo " IPC-Website               InfoPHP, Control, Editor, htaccess, SSH-Java, Sysinfo"
echo " IPC-Scripts               Watchdog- und Backupscripts"
echo ""
if [ -z "$ARM" ]; then
	echo " CCcam                     Version einstellbar"
	echo " CCcam-Cronjobs            Watchdog, Load Newconfig, Backups"
	echo " CCcam-Logfilter           Illegal-User, Bad-Commands, Crashlog, Log-Rotation"
	echo " CCcam-Console             Infos, CCcam-Konfiguration"
	echo " CCcam-fail2ban            fail2ban Ueberwachung von CCcam"
	echo ""
fi
echo " OScam                     Version einstellbar"
echo " OScam-compile             OScam kompilieren"
if [ ! -z "$ARM" ]; then
	if [ "$RPI" = "1" ] || [ "$ARM" = "armv5tel" ]; then
		echo " gbox.net.git811.K.public1 Zum Einlesen von HD03/HD04"
	fi
fi
if [ -z "$ARM" ]; then
	echo " Camd3                     v3.898"
fi
if [ "$RPI" = "1" ] || [ "$ARM" = "armv5tel" ]; then
	echo " NewCS                     1.67 RC1"
fi
if [ "$RPI" = "1" ]; then
	echo " sBox                      v0.0.2 9"
fi
#echo " OSemu                     Version einstellbar"
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
echo -en "\033[0;33mIPC [I]nstallieren  |  []Beenden: \033[0m"
read key
case $key in
	[Ii])
	echo ""
	echo "-------------------------------------------------------------------------------"
	echo ""

	#Paketliste sichern
	echo ""
	echo -e "\033[1;33mBackup der aktuellen Paketliste!\033[0m"
	echo ""
	echo ""
	if [ -f "/etc/apt/ipc-paket.list" ]; then
		echo -e "\033[1;31mDas Backup wurde bereits durch eine vorherige installation von IPC\033[0m"
		echo -e "\033[1;31merstellt und die zusätzlich installierten Pakete wurden nicht deinstalliert\033[0m"
	else
		echo -e "\n\033[1;32mBackup der Paketliste wird durch IPC erstellt!\033[0m"
		dpkg -l | grep ^ii | tr -s " " | cut -d " " -f 2 > /etc/apt/ipc-paket.list
	fi
	echo ""
	echo ""
	echo "-------------------------------------------------------------------------------"
	echo ""
	echo ""
	echo "Pruefe die von IPC benoetigten Pakete, bitte warten .."
	collect_needed_packs
	if [ ! -z "$InstallPAK" ]; then
		echo -n "Installiere die von IPC benoetigten Pakete, bitte warten .."
		apt-get clean
		echo -e "\033[1;32m .\033[0m"
		# Wheezy (final) + Jessie 64bit fix so CCcam 32bit works again
		if [ "$SYSBIT" == "64" ]; then
			if [[ "$(echo $LINUXVERSION|cut -c1)" -lt "9" ]] ; then
				dpkg --add-architecture i386
				[ -z "$InstallPAK" ] && InstallPAK="lib32stdc++6" || InstallPAK+=" lib32stdc++6"
			fi
		fi
		apt-get update
		apt-get install -y $InstallPAK
		apt-get install -qq $InstallPAK
		sleep 3
		install_libdvbcsa_from_source
		sleep 3
	else
		echo "Alle zur IPC installation benoetigten Pakete sind bereits installiert.."
	fi
	echo ""
	sleep 1
	;;
	*)
		echo ""
		echo "IPC Installation vorzeitig beendet"
		echo ""
		echo "-------------------------------------------------------------------------------"
		echo ""
		exit 0
   ;;
esac

#Pruefe Apache
if [ ! -d "/etc/apache2" ] ; then
	echo -e "\033[1;31mKein Apache installiert, Setup wird beendet!\033[0m"
	echo "Siehe Systemvorraussetzungen in der Setupanleitung."
	exit 1
fi

#Pruefe Rsyslog und Logrotate
if [ ! -f /usr/sbin/logrotate -o  ! -f /usr/sbin/rsyslogd ] ; then
	echo -e "\033[1;31mKein Rsyslog bzw. Logrotate installiert, Setup wird beendet!\033[0m"
	echo "Siehe Systemvorraussetzungen in der Setupanleitung."
	exit 1
fi

TIMESTAMP=`date +"%Y%m%d_%H%M"`
IPCBAK=/var/backups/ipc/forsetup_$TIMESTAMP

#Konfiguration sichern?
CAMConfigs="CCcam.cfg oscam.conf newcs.xml sbox.conf camd3.config"
CCfound="0"
for CC in $CAMConfigs; do [ -f "/var/etc/$CC" ] && CCfound="1"; done
if [ $CCfound == 1 ] ; then
	clear
	echo "$TITLE"
	echo "==============================================================================="
	echo -e "\033[1;31mEMU Konfiguration ist bereits vorhanden!\033[0m"
	echo "-------------------------------------------------------------------------------"
	echo ""
	echo -e "\033[1;37mEMU-Konfiguration beibehalten?\033[0m"
	echo " Dies sind: /var/etc/*  und  /var/keys/*"
	echo ""
	echo -e "\033[1;33mDie IPC-Konfiguration bleibt nur bei Update selber Versionsnummer erhalten!\033[0m"
	echo " Ansonsten sind IPC, Autostart und Jobs neu einzustellen."
	echo ""
	echo -en "\033[1;37mKonfiguration beibehalten? (j/n): \033[0m"
	read x
	case $x in
	[YyJj])
		CONFIGSAVE="1"
		echo ""
		echo "Update wird gestartet..."
	;;
	[Nn])
		echo ""
		echo "Neuinstallation wird gestartet..."
		NEWINST="1"
	;;
	*)
	echo ""
	echo -e "\033[1;31mUngueltige Eingabe, Installation beendet!\033[0m"
	echo ""
	exit 1
	;;
	esac
	echo "-------------------------------------------------------------------------------"
	echo ""
fi

echo "Jetzt gehts los..."
echo ""
rm -f -r /var/www/ipc/phpsysinfo

cd /
rm -f /$PAK
if [ ! -f /$PAK ]; then
	echo -n "Download... ($PAK)"
	wget -q $URL/$PAK
	_error $?
fi
[ ! -f /$PAK ] && echo "Download nicht moeglich, Abbruch!" && exit 1

echo -n "Cron wird beendet..."
systemctl start cron >/dev/null 2>&1
_error 0

if [ "$NEWINST" == "1" ] ; then
	if [ "$SYSBIT" == "32" ]; then
		if [ ! "`pgrep -x CCcam.x86`" = "" ]; then
			echo -n "CCcam wird beendet..."
			echo "OK" >> /var/log/CCcam.OK
			pkill CCcam.x86
			_error $?
		fi
		if [ ! "`pgrep -x oscam.x86`" = "" ]; then
			echo -n "OScam wird beendet..."
			pkill oscam.x86
			_error $?
		fi
		if [ ! "`pgrep -x newcs.i686`" = "" ]; then
			echo -n "NewCS wird beendet..."
			pkill newcs.i686
			_error $?
		fi
		if [ ! "`pgrep -x sbox.x86`" = "" ]; then
			echo -n "sBox wird beendet..."
			pkill sbox.x86
			_error $?
		fi
		if [ ! "`pgrep -x osemu`" = "" ]; then
			echo -n "osemu wird beendet..."
			pkill osemu
			_error $?
		fi
#64bit
	elif [ "$SYSBIT" == "64" ]; then
		if [ ! "`pgrep -x CCcam.x86_64`" = "" ]; then
			echo -n "CCcam wird beendet..."
			echo "OK" >> /var/log/CCcam.OK
			pkill CCcam.x86_64
			_error $?
		fi
		if [ ! "`pgrep -x oscam.x86_64`" = "" ]; then
			echo -n "OScam wird beendet..."
			pkill oscam.x86_64
			_error $?
		fi
		if [ ! "`pgrep -x newcs.x86_64`" = "" ]; then
			 echo -n "NewCS wird beendet..."
			 pkill newcs.x86_64
			 _error $?
		fi
		if [ ! "`pgrep -x sbox.x86_64`" = "" ]; then
			echo -n "sBox wird beendet..."
			pkill sbox.x86_64
			_error $?
		fi
		if [ ! "`pgrep -x osemu.x86_64`" = "" ]; then
			echo -n "osemu wird beendet..."
			pkill osemu
			_error $?
		fi
	fi
	if [ ! "`pgrep -x camd3.x86`" = "" ]; then
		echo -n "Camd3 wird beendet..."
		pkill camd3.x86
		_error $?
	fi
	elif [ -z "$ARM" ]; then
		if [ ! "`pgrep -x oscam.$ENDUNG`" = "" ]; then
			echo -n "OScam wird beendet..."
			pkill oscam.$ENDUNG
			_error $?
		fi
		if [ ! "`pgrep -x newcs.$ENDUNG`" = "" ]; then
			echo -n "NewCS wird beendet..."
			pkill newcs.$ENDUNG
			_error $?
		fi
		if [ ! "`pgrep -x osemu.$ENDUNG`" = "" ]; then
			echo -n "osemu wird beendet..."
			pkill osemu.$ENDUNG
			_error $?
		fi
		if [ ! "`pgrep -x gbox.$ENDUNG`" = "" ]; then
			echo -n "gbox wird beendet..."
			pkill gbox.$ENDUNG
			_error $?
		fi
fi

sleep 1

echo -n "Sichern... (-> $IPCBAK)"
[ ! -d $IPCBAK ] && mkdir -p $IPCBAK
#Verzeichnisse
cp -Rp --parents /var/emu $IPCBAK/ >/dev/null 2>&1
cp -Rp --parents /var/etc $IPCBAK/ >/dev/null 2>&1
cp -Rp --parents /var/keys $IPCBAK/ >/dev/null 2>&1
cp -Rp --parents /var/www $IPCBAK/ >/dev/null 2>&1
#Dateien
cp -p --parents /root/.bashrc $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/crontab $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/motd $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/rc.local $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/rsyslog.conf $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/logrotate.d/rsyslog $IPCBAK/ >/dev/null 2>&1
cp -p --parents /etc/sudoers $IPCBAK/ >/dev/null 2>&1
#Apache
cp -p --parents /etc/apache2/sites-available/default $IPCBAK/ >/dev/null 2>&1
mv /var/www/index.html /var/www/index.html.org >/dev/null 2>&1
sleep 1
_error 0

echo -n "Saeubern..."
rm -fr /var/etc >/dev/null 2>&1
rm -fr /var/emu >/dev/null 2>&1
rm -fr /var/keys >/dev/null 2>&1
rm -fr /var/www/cccam >/dev/null 2>&1
rm -fr /var/www/ipc >/dev/null 2>&1

rm -f /var/log/CCcam* >/dev/null 2>&1
rm -f /var/log/cccam* >/dev/null 2>&1
rm -f /var/log/oscam* >/dev/null 2>&1
rm -f /var/log/newcs* >/dev/null 2>&1
rm -f /var/log/IPC* >/dev/null 2>&1
rm -rf /var/log/ipc >/dev/null 2>&1
sleep 1
_error 0

echo -n "Entpacken..."
tar -xPzf $PAK >/dev/null 2>&1
_error $?
sleep 1

#PHPSysInfo fuer Ubuntu 18 fixen
if [ "$_LINUX" = "Ubuntu" ]; then
	if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c 1-2) -gt "17" ]; then
		chmod 644 /proc/net/ip_tables_names
	fi
fi

#EMU-Konfiguration zuruecksichern?
if [ "$CONFIGSAVE" == "1" ] ; then
	echo -n "EMU-Konfiguration wird wiederhergestellt..."
	if [ -f /var/emu/osemu/OSEmu.$ENDUNG ]; then
		mv /var/emu/osemu/OSEmu.$ENDUNG /var/emu/osemu/osemu.$ENDUNG
	fi
	#Verzeichnisse
	cp -fRp $IPCBAK/var/etc /var/ >/dev/null 2>&1
	cp -fRp $IPCBAK/var/keys /var/ >/dev/null 2>&1
	cp -fRp $IPCBAK/var/emu/tmp /var/emu/ >/dev/null 2>&1
	#Dateien
	cp -fp $IPCBAK/var/emu/cccam/CCcam.* /var/emu/cccam/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/oscam/oscam.* /var/emu/oscam/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/newcs/newcs.* /var/emu/newcs/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/camd3/camd3.* /var/emu/camd3/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/sbox/sbox.* /var/emu/sbox/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/osemu/osemu.$ENDUNG /var/emu/osemu/osemu.$ENDUNG >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/gbox/gbox.* /var/emu/gbox/gbox.* >/dev/null 2>&1

	cp -fp $IPCBAK/var/www/ipc/phpsysinfo/config.php /var/www/ipc/phpsysinfo/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/www/ipc/page/graph.php /var/www/ipc/page/graph.php >/dev/null 2>&1
	cp -fRp $IPCBAK/var/www/ui /var/www/ui >/dev/null 2>&1
	cp -fRp $IPCBAK/var/www/oscaminfo /var/www/oscaminfo >/dev/null 2>&1
	chown -R www-data:www-data /var/www/{ipc,ui,oscaminfo} >/dev/null 2>&1

	#DDNSupdater
	[ -f "$IPCBAK/var/emu/script/DDNSupdater.sh" ] && cp -fp $IPCBAK/var/emu/script/DDNSupdater.sh /var/emu/script/ >/dev/null 2>&1
	[ -f "$IPCBAK/var/emu/script/DDNSupdater2.sh" ] && cp -fp $IPCBAK/var/emu/script/DDNSupdater2.sh /var/emu/script/ >/dev/null 2>&1
	#.webaccess wird weiterhin fuer oscam-UI benoetigt
	cp -fp $IPCBAK/var/emu/conf/.webaccess /var/emu/conf/ >/dev/null 2>&1
	cp -fp $IPCBAK/var/emu/conf/.webmenueaccess /var/emu/conf/ >/dev/null 2>&1
	[ -f "$IPCBAK/var/emu/conf/addons.info" ] && cp -fp $IPCBAK/var/emu/conf/addons.info /var/emu/conf/ >/dev/null 2>&1
	sleep 0.5
	_error 0
fi

#IPC-Konfiguration zuruecksichern?  (nur wenn selbe Versionsnummer!)
if [ "$CONFIGSAVE" == "1" ] ; then
	IPCVERSION="$(cat /var/emu/conf/version)"
	IPCVBACKUP="$(cat $IPCBAK/var/emu/conf/version)"
	if [ "$IPCVERSION" = "$IPCVBACKUP" ] ; then
		echo -n "IPC-Konfiguration wird wiederhergestellt..."
		cp -fp $IPCBAK/var/emu/conf/ipc.cfg /var/emu/conf/ >/dev/null 2>&1
		cp -fp $IPCBAK/etc/rc.local /etc/ >/dev/null 2>&1
		cp -fp $IPCBAK/etc/crontab /etc/ >/dev/null 2>&1
		cp -fp $IPCBAK/etc/apache2/sites-available/default /etc/apache2/sites-available/ >/dev/null 2>&1
		cp -fp $IPCBAK/etc/logrotate.d/rsyslog /etc/logrotate.d/ >/dev/null 2>&1
		if [ -f "$IPCBAK/var/www/ipc/page/include/config.php" ]; then
			CONFPHPdiff=$(diff -q $IPCBAK/var/www/ipc/page/include/config.php /var/www/ipc/page/include/config.php)
		fi
		if [ ! -z "$CONFPHPdiff" ]; then
			echo -e "\n\033[1;31mDie Dateien\033[0m"
			echo -e "$IPCBAK/var/www/ipc/page/include/config.php \033[1;31mund\033[0m /var/www/ipc/page/include/config.php"
			echo -e "\033[1;31msind unterschiedlich!\033[0m"
			echo -e "\033[1;31mBitte manuell die Aenderungen oder bereits gemachten Einstellungen nachtragen!\033[0m"
			sleep 5
		else
			cp -fp $IPCBAK/var/www/ipc/page/include/config.php /var/www/ipc/page/include/ >/dev/null 2>&1
		fi
		# insert useEDITOR setting if not exists..
		if [ "`grep "^ useEDITOR" /var/emu/conf/ipc.cfg`" = "" ]; then
		INSERTnum=$(sed -ne '/^ BACKUPMAIL=.*/=' /var/emu/conf/ipc.cfg)
		sed -i -e "$INSERTnum a \
		#Favorit Editor? (nano/vi/joe usw)" /var/emu/conf/ipc.cfg
        INSERTnum=$(expr $INSERTnum + 1)
        sed -i -e "$INSERTnum a \ useEDITOR='nano'" /var/emu/conf/ipc.cfg
		fi
		# insert SMTPTLS setting if not exists..
		if [ "`grep "^ SMTPTLS" /var/emu/conf/ipc.cfg`" = "" ]; then
			INSERTnum=$(sed -ne '/^ SMTPPASS=.*/=' /var/emu/conf/ipc.cfg)
			sed -i -e "$INSERTnum a SMTPTLS='0'" /var/emu/conf/ipc.cfg
		fi
		sleep 0.5
		_error 0
	fi
fi

function check4addon () {
	AlreadyAdded=""
	if [ -f "/var/emu/conf/addons.info" ]; then
		[ ! -z "$(grep -w "$1" /var/emu/conf/addons.info)" ] && AlreadyAdded=1
	fi
	echo "$AlreadyAdded"
}

#re-detect addons..
l=20
echo "Addons ermitteln..."
#tmp2ram.sh
if [ -f "/etc/init.d/varlog" ]&&[ -z "$(check4addon tmp2ram)" -o -z "$(check4addon tmp2ram.sh)" ]; then
	S="tmp2ram.sh"
	A=$(stat -c %y /etc/init.d/varlog|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#oscam-infophp.sh
if [ -d "/var/www/oscaminfo" ]&&[ -z "$(check4addon oscam-infophp)" -o -z "$(check4addon oscam-infophp.sh)" ]; then
	S="oscam-infophp.sh"
	A=$(stat -c %y /var/www/oscaminfo|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#oscam-ui.sh
if [ -d "/var/www/ui" ]&&[ -z "$(check4addon oscam-ui)" -o -z "$(check4addon oscam-ui.sh)" ]; then
	S="oscam-ui.sh"
	A=$(stat -c %y /var/www/ui|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#fail2ban.sh
f2bd=/etc/fail2ban/filter.d
foundfail2ban=0
for cf in "$f2bd/cccam-command.conf $f2bd/cccam-signature.conf $f2bd/cccam-login.conf $f2bd/cccam-illegal.conf"; do
	[ -f "$cf" ] && foundfail2ban=1
done
if [ "$foundfail2ban" == 1 ]&&[ -z "$(check4addon fail2ban)" -o -z "$(check4addon fail2ban.sh)" ]; then
	S="fail2ban.sh"
	A=$(stat -c %y /etc/fail2ban/jail.conf|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#addon_munin.sh
if [ -d "/etc/munin/plugins/" ]&&[ -z "$(check4addon addon_munin)" -o -z "$(check4addon addon_munin.sh)" ]; then
	S="addon_munin.sh"
	A=$(stat -c %y /etc/munin/plugins/|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#DDNSupdater.sh
if [ -f "/var/emu/script/DDNSupdater.sh" ]&&[ -z "$(check4addon 'DDNSupdater')" -o -z "$(check4addon 'DDNSupdater.sh')" ]; then
	S="DDNSupdater.sh"
	A=$(stat -c %y /var/emu/script/DDNSupdater.sh|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi
#DDNSupdater2.sh
if [ -f "/var/emu/script/DDNSupdater2.sh" ]&&[ -z "$(check4addon 'DDNSupdater2')" -o -z "$(check4addon 'DDNSupdater2.sh')" ]; then
	S="DDNSupdater2.sh"
	A=$(stat -c %y /var/emu/script/DDNSupdater2.sh|tr "." " "|cut -d" " -f1-2)
	echo "$S;$A" >> /var/emu/conf/addons.info
	echo -en "\t $S"
	printf "%b%-#$(($l - ${#S}))s" "" "" "installed at: $A"; echo ""
fi

echo -n "Tempdir setzen..."
[ ! -d /var/emu/tmp/infophp ] && mkdir -p /var/emu/tmp/infophp
_error 0

sleep 1

echo -n "Logfiles erstellen..."
[ ! -d /var/log/ipc ] && mkdir -p /var/log/ipc >/dev/null 2>&1
[ ! -f /var/log/ipc/CCcam-changes.log ] && touch /var/log/ipc/CCcam-changes.log
[ ! -f /var/log/ipc/CCcam-iusers.log ] && touch /var/log/ipc/CCcam-iusers.log
[ ! -f /var/log/ipc/CCcam-bcommands.log ] && touch /var/log/ipc/CCcam-bcommands.log
sleep 1
_error 0

echo -n "Rechte setzen..."
chmod 755 -R /var/emu >/dev/null 2>&1
chmod 777 -R /var/emu/tmp >/dev/null 2>&1
chmod 744 /etc/rc.local >/dev/null 2>&1
chown www-data:www-data /var/etc/CCcam.cfg >/dev/null 2>&1
chown www-data:www-data -R /var/emu/tmp/infophp >/dev/null 2>&1
chown www-data:www-data /var/www/ipc/infophp/config.php >/dev/null 2>&1
chown www-data:www-data -R /var/www/ipc/ >/dev/null 2>&1
if [ "`grep "^www-data ALL=NOPASSWD" $SUDOERfile`" = "" ]; then
	echo "$SUDOER" >> $SUDOERfile
else
	SUDOnum=$(sed -ne '/^www-data ALL=NOPASSWD.*/=' $SUDOERfile)
	if [ ! -z "$SUDOnum" ]; then
		sed -i -e "$SUDOnum d" $SUDOERfile
		echo "$SUDOER" >> $SUDOERfile
	fi
fi
usermod -G adm -a www-data >/dev/null 2>&1
sleep 1
_error 0

echo -n "Symlinks setzen..."

rm -f /bin/cc
ln -f -s /var/emu/script/ipc /bin/ipc
ln -f -s /var/emu/script/cccam /bin/cccam
ln -f -s /var/emu/script/oscam /bin/oscam
ln -f -s /var/emu/script/newcs /bin/newcs
ln -f -s /var/emu/script/camd3 /bin/camd3
ln -f -s /var/emu/script/sbox /bin/sbox
ln -f -s /var/emu/script/osemu /bin/osemu
ln -f -s /var/emu/script/gbox /bin/gbox
[ ! -f /bin/i ] && ln -f -s /var/emu/script/ipc /bin/i
[ ! -f /bin/c ] && ln -f -s /var/emu/script/cccam /bin/c
[ ! -f /bin/o ] && ln -f -s /var/emu/script/oscam /bin/o
[ ! -f /bin/n ] && ln -f -s /var/emu/script/newcs /bin/n
[ ! -f /bin/c3 ] && ln -f -s /var/emu/script/camd3 /bin/c3
[ ! -f /bin/s ] && ln -f -s /var/emu/script/sbox /bin/s
[ ! -f /bin/oe ] && ln -f -s /var/emu/script/osemu /bin/oe
[ ! -f /bin/gb ] && ln -f -s /var/emu/script/gbox /bin/gb
ln -f -s /var/emu/tools/srp_tools_x86 /bin/smargo
ln -f -s /var/emu/tools/list_smargo /bin/smargolist
#camd3 symlinks
if [ -z "$ARM" ]; then
	ln -sf /var/keys/camd3.map /var/etc/camd3.map
	ln -sf /var/keys/camd3.keys /var/etc/camd3.keys
	ln -sf /var/keys/eep120.bin /var/etc/eep120.bin
	ln -sf /var/keys/rom120.bin /var/etc/rom120.bin
	sleep 1
fi
_error 0

echo "Systemarchitektur pruefen..."
if [ ! "$SYSBIT" = "32" ]; then
	rm -f /var/emu/cccam/CCcam.x86
	rm -f /var/emu/newcs/newcs.i686
	rm -f /var/emu/sbox/sbox.x86
	#functions.sh anpassen
	sed -i s:CCcam.x86:CCcam.x86_64:g  /var/emu/script/functions.sh
	sed -i s:osemu.x86:osemu.x86_64:g  /var/emu/script/functions.sh
	sed -i s:oscam.x86:oscam.x86_64:g  /var/emu/script/functions.sh
	sed -i s:sbox.x86:sbox.x86_64:g  /var/emu/script/functions.sh
	sed -i s:newcs.i686:newcs.x86_64:g  /var/emu/script/functions.sh
	if [ "$SYSBIT" = "64" ]; then
		touch /var/emu/oscam/oscam.x86_64
		touch /var/emu/osemu/osemu.x86_64
		#Softlink fuer NewCS
		if [ ! -f /usr/lib/libssl.so.0.9.8 ]; then
			ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/libssl.so.0.9.8
		fi
		if [ ! -f /lib/libcrypto.so.0.9.8 ]; then
			ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so /lib/libcrypto.so.0.9.8
		fi
	fi
fi
if [ ! "$SYSBIT" = "64" ]; then
	rm -f /var/emu/cccam/CCcam.x86_64
	rm -f /var/emu/newcs/newcs.x86_64
	rm -f /var/emu/sbox/sbox.x86_64
	if [ "$SYSBIT" = "32" ]; then
		if [ -z "$ARM" ]; then
			touch /var/emu/oscam/oscam.x86
			touch /var/emu/osemu/osemu.x86
			#Softlink fuer NewCS
			ln -s /usr/lib/i386-linux-gnu/libssl.so /usr/lib/libssl.so.0.9.8
			ln -s /usr/lib/i386-linux-gnu/libcrypto.so /lib/libcrypto.so.0.9.8
		fi
	fi
fi

if [ -z "$ARM" ]; then
	echo "$SYSBIT-Architektur erkannt"
	rm -f /var/emu/newcs/newcs.armel
	rm -f /var/emu/sbox/sbox.armel
	rm -rf /var/emu/gbox
else
	echo "$ARM-Architektur erkannt"
fi

#Ubuntu
if [ "$_LINUX" = "Ubuntu" ]; then
	#Cron Reload anpassen
    sed -i 's:/etc/init\.d/cron reload:service cron reload \nsleep 2\necho "Cron neu gestartet.."':g /var/emu/script/ipc-jobs.sh
	echo "Installation erfolgreich"
fi

#pruefe System ob ARM (Raspberry)
if [ ! -z "$ARM" ]; then
	#ntpdate fix.. (disable)
	sed -e "/^[^#].*ntpdate -s/s/^/#/" /etc/crontab >/tmp/crontab && mv /tmp/crontab /etc/crontab
	#apache2 fix..
	mv -f /etc/rc2.d/S??apache2 /etc/rc2.d/S99apache2 >/dev/null 2>&1
	mv -f /etc/rc3.d/S??apache2 /etc/rc3.d/S99apache2 >/dev/null 2>&1
	mv -f /etc/rc4.d/S??apache2 /etc/rc4.d/S99apache2 >/dev/null 2>&1
	mv -f /etc/rc5.d/S??apache2 /etc/rc5.d/S99apache2 >/dev/null 2>&1
	#varlog fix
	mv -f /etc/rc2.d/S??varlog /etc/rc2.d/S01varlog >/dev/null 2>&1
	mv -f /etc/rc3.d/S??varlog /etc/rc3.d/S01varlog >/dev/null 2>&1
	mv -f /etc/rc4.d/S??varlog /etc/rc4.d/S01varlog >/dev/null 2>&1
	mv -f /etc/rc5.d/S??varlog /etc/rc5.d/S01varlog >/dev/null 2>&1
	mv -f /etc/rc6.d/S??varlog /etc/rc6.d/S01varlog >/dev/null 2>&1
	mv -f /etc/rc0.d/K??varlog /etc/rc0.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc1.d/K??varlog /etc/rc1.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc2.d/K??varlog /etc/rc2.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc3.d/K??varlog /etc/rc3.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc4.d/K??varlog /etc/rc4.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc5.d/K??varlog /etc/rc5.d/K99varlog >/dev/null 2>&1
	mv -f /etc/rc6.d/K??varlog /etc/rc6.d/K99varlog >/dev/null 2>&1
	#oscam , osemu, newcs fix..
	rm -f /var/emu/newcs/newcs.x* >/dev/null 2>&1
	OSVERSIONnum=$(sed -ne '/^OSVERSION=.*/=' /var/emu/script/functions.sh)
	OSVERSIONnum2=$(expr $OSVERSIONnum - 1)
	OEVERSIONnum=$(sed -ne '/^OEVERSION=.*/=' /var/emu/script/functions.sh)
	OEVERSIONnum2=$(expr $OEVERSIONnum - 1)
	NCSVERSIONnum=$(sed -ne '/^NCSVERSION=.*/=' /var/emu/script/functions.sh)
	NCSVERSIONnum2=$(expr $NCSVERSIONnum - 1)
	#Wenn System ARM64
	if [ "$ARM" = "aarch64" ]; then
		sed -i s/"OScam CCcam Camd3 NewCS sBox OSEmu gbox"/"OScam OSEmu"/g var/emu/script/functions.sh
		sed -i -e "$OSVERSIONnum d" -e "$OSVERSIONnum2 a OSVERSION=\"oscam.aarch64\"" /var/emu/script/functions.sh
		sed -i s/osemu.x86/osemu.aarch64/g /var/emu/script/functions.sh
		touch /var/emu/oscam/oscam.aarch64
		touch /var/emu/osemu/osemu.aarch64
	fi
	#Wenn System Raspberry
	if [ "$RPI" = "1" ]; then
		sed -i s/"OScam CCcam Camd3 NewCS sBox OSEmu gbox"/"OScam NewCS sBox OSEmu gbox"/g var/emu/script/functions.sh
		sed -i s/SENSOR_PROGRAM=false/SENSOR_PROGRAM="PiTemp"/g /var/www/ipc/phpsysinfo/phpsysinfo.ini
	fi
	#Wenn System Pogoplug E02
	if [ "$POGO" = "1" ]; then
		sed -i s/"OScam CCcam Camd3 NewCS sBox OSEmu gbox"/"OScam NewCS OSEmu gbox"/g var/emu/script/functions.sh
		rm -f /var/emu/sbox/sbox.armel
		sed -i '/sBox/d' /var/www/ipc/page/include/config.php
	fi
	#restliche ARM-Platinen:
	if [ "$RPI" = "0" ]&&[ "$POGO" = "0" ]; then
		sed -i s/"OScam CCcam Camd3 NewCS sBox OSEmu gbox"/"OScam OSEmu"/g var/emu/script/functions.sh
		rm -r /var/emu/gbox
		rm -r /var/emu/sbox
		rm -r /var/emu/newcs
		sed -i '/NewCS/d' /var/www/ipc/page/include/config.php
		sed -i '/sBox/d' /var/www/ipc/page/include/config.php
	fi
	sed -i -e "$OSVERSIONnum d" -e "$OSVERSIONnum2 a OSVERSION=\"oscam.$ENDUNG\"" /var/emu/script/functions.sh
	sed -i s/osemu.x86/osemu.$ENDUNG/g /var/emu/script/functions.sh
	sed -i s/sbox.x86/sbox.$ENDUNG/g /var/emu/script/functions.sh
	touch /var/emu/oscam/oscam.$ENDUNG
	touch /var/emu/osemu/osemu.$ENDUNG
	sed -i s/newcs.i686/newcs.$ENDUNG/g /var/emu/script/functions.sh

	#delete cccam libs..
	rm -rf /var/emu/libs/32 >/dev/null 2>&1
	#x86 CAMs loeschen:
	rm -f /var/emu/cccam/CCcam.x86
	rm -f /var/emu/newcs/newcs.i686
	rm -f /var/emu/sbox/sbox.x86
	rm -f /var/emu/camd3/camd3.x86
	rm -f /var/emu/camd3/pcamd
	#Editor im WebIf anpassen
	sed -i '/CCcam/d' /var/www/ipc/page/include/config.php
	sed -i '/Camd3/d' /var/www/ipc/page/include/config.php
else
	sed -i s/"OScam CCcam Camd3 NewCS sBox OSEmu gbox"/"OScam CCcam Camd3 NewCS sBox OSEmu"/g var/emu/script/functions.sh
	rm -rf /var/emu/libs/ld-2.21.so
	rm -rf /var/emu/libs/libnxpl.so
	rm -rf var/keys/gbox.cfg
	rm -rf /var/keys/gbox.cfg
	rm -rf /var/keys/softcam.cfg
fi

## Welche CAMs sollen installiert sein?
/var/emu/script/ipc-cams.sh
echo ""

#PHP Pfad ändern:
if [ -d "/etc/php/7.0/apache2" ]; then
	sed -i s:"/etc/php5/apache2":"/etc/php/7.0/apache2":g /var/emu/script/functions.sh
fi

#Neue functions und IPC Variablen einlesen
. /var/emu/script/functions.sh
readipccfg
setrights

# SQLite3 datenbanken/tables erstellen
echo -n "Erstelle SQLite3 Datenbank... "
sqlite_create_auth_db
_error $?
echo -n "Erstelle/Pruefe SQLite3 Tabellen... "
SQLiteTables=$(sqlite_create_tables)
_error $?

# transfer webif.db..
if [ "$CONFIGSAVE" == "1" ]&&[ -f "$IPCBAK/var/www/ipc/page/include/webif.db" ]; then
	echo -n "Uebertrage alte webif.db in neue SQLite3 Datenbank... "
	echo "<?php" > /tmp/tmp.php
	echo "\$oldDB=\"$IPCBAK/var/www/ipc/page/include/webif.db\";" >> /tmp/tmp.php
	echo "\$newDB=\"$WEBIF_SQLITEdb\";" >> /tmp/tmp.php
	cat <<\EOF >> /tmp/tmp.php
$olddb = new PDO("sqlite:$oldDB");
$olddb->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$olddb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$newdb = new PDO("sqlite:$newDB");
$newdb->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
$newdb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
# auth
$query = $olddb->query("SELECT * FROM auth WHERE 1");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   $user = isset($row["user"]) ? $row["user"] : "";
   $pass = isset($row["pass"]) ? $row["pass"] : "";
   $created = isset($row["created"]) ? $row["created"] : "";
   $lastvisit = isset($row["lastvisit"]) ? $row["lastvisit"] : "";
   $ip = isset($row["ip"]) ? $row["ip"] : "";
   $lastlogin = isset($row["lastlogin"]) ? $row["lastlogin"] : "";
   $VALUES = "'".$user."','".$pass."','".$created."','".$lastvisit."','0','".$ip."','".$lastlogin."'";
   $insert = $newdb->query("INSERT INTO auth (user,pass,created,lastvisit,online,ip,lastlogin) VALUES ($VALUES)");
}
# pm
$query = $olddb->query("SELECT * FROM pm WHERE 1");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   $fromid = isset($row["fromid"]) ? $row["fromid"] : "";
   $toid = isset($row["toid"]) ? $row["toid"] : "";
   $created = isset($row["created"]) ? $row["created"] : "";
   $message = isset($row["message"]) ? $row["message"] : "";
   $VALUES = "'".$fromid."','".$toid."','".$created."','".$message."'";
   $insert = $newdb->query("INSERT INTO pm (fromid,toid,created,message) VALUES ($VALUES)");
}
# settings
$query = $olddb->query("SELECT * FROM settings WHERE 1");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   $user_id = isset($row["user_id"]) ? $row["user_id"] : "";
   $setting = isset($row["setting"]) ? $row["setting"] : "";
   $value = isset($row["value"]) ? $row["value"] : "";
   $VALUES = "'".$user_id."','".$setting."','".$value."'";
   $insert = $newdb->query("INSERT INTO settings (user_id,setting,value) VALUES ($VALUES)");
}
# emails
$query = $olddb->query("SELECT * FROM emails WHERE 1");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   $user = isset($row["user"]) ? $row["user"] : "";
   $email = isset($row["email"]) ? $row["email"] : "";
   $grp = isset($row["grp"]) ? $row["grp"] : "";
   $VALUES = "'".$user."','".$email."','".$grp."'";
   $insert = $newdb->query("INSERT INTO emails (user,email,grp) VALUES ($VALUES)");
}
?>
EOF
	php -f /tmp/tmp.php
	_error $?
	rm -f /tmp/tmp.php
fi

# EMails.db in sqlite db uebertragen..
if [ "$CONFIGSAVE" == "1" ]&&[ -f "$IPCBAK/var/www/ipc/page/include/EMails.db" ]; then
	echo -n "Uebertrage altes EMails.db file in SQLite3 Datenbank... "
	while read line; do
		[ -z "$line" ] && continue
		line=$(echo $line|tr ":" " ")
		USER=$(echo $line|awk {'print $1'})
		EMAIL=$(echo $line|awk {'print $2'})
		GRP=$(echo $line|awk {'print $3'})
		sqlite3 $WEBIF_SQLITEdb "INSERT INTO emails (user,email,grp) VALUES (\"$USER\",\"$EMAIL\",\"$GRP\");"
	done < $IPCBAK/var/www/ipc/page/include/EMails.db
	_error $?
fi

#tmp2ram entfernt, da teilweise nicht mehr gewuenscht

echo -n "Syslog neustarten..."
systemctl restart rsyslog >/dev/null
_error $?


#fix apache2 ssl
APACHE2ssl="/etc/apache2/sites-available/default-ssl"
if [ -f "$APACHE2ssl" ]; then
	Lnum=""
	Lnum=$(sed -ne '/AllowOverride None/I=' $APACHE2ssl|head -n1)
	if [ -n "$Lnum" ]; then
		Lnum2=$(expr $Lnum - 1)
		sed -i -e "$Lnum d" -e "$Lnum2 a AllowOverride All" $APACHE2ssl
	fi
fi
echo -n "Webserver neustarten..."
apache_check_version
echo ""
echo -n "Changelog erstellen..."
[ ! -f /var/log/ipc/CCcam-changes.log ] && echo "" >/var/log/ipc/CCcam-changes.log
chown www-data:www-data /var/log/ipc/CCcam-changes.log >/dev/null 2>&1
_error $?

sleep 1

#InfoPHP Konfiguration
tempdir
readcccamcfg
infophpconfwrite

echo -n "Cron starten..."
systemctl start cron >/dev/null

#Profilaenderungen einlesen
. /root/.bashrc

#IP Adresse bei verschiedenen Betriebssystemen ermitteln
if [ "$_LINUX" = "Debian" ] || [ "$_LINUX" = "Raspbian" ]; then
	if [ -n "$LINUXVERSION" ] || [ "$RPI" = "1" ]; then
		IPADR=$(ifconfig  | grep -i 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
		if [ "$IPADR" = "" ]; then
			if [ "$RPI" = "1" ]; then
				if [ $(echo $LINUXVERSION|cut -c1) -lt "9" ]; then
					IPADR=$(ifconfig  | grep -i 'inet adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
				else
					INET=$(ip -c a| grep -i 'inet'| grep -v '127.0.0.1' | grep -v 'inet6')
					IPADR=$(echo $INET|cut -d " " -f2)
					IPADR=${IPADR::-3} #Subnetzmaske abschneiden
				fi
			else
				IPADR=$(ifconfig  | grep -i 'inet adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
			fi
		fi
	fi


	#IP ermitteln wenn Debian 9:
	if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c 1) -gt "8" ]&&[ "$RPI" = "0" ]; then
		INET=$(ip -c a| grep -i 'inet'| grep -v '127.0.0.1' | grep -v 'inet6')
		IPADR=$(echo $INET|cut -d " " -f2)
		IPADR=${IPADR::-3} #Subnetzmaske abschneiden
	fi

	#IP ermitteln wenn Debian >10:
	if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) == "10" ]; then
		INET=$(ip -c a| grep -i 'inet'| grep -v '127.0.0.1' | grep -v 'inet6')
		IPADR=$(echo $INET|cut -d " " -f2)
		IPADR=${IPADR::-3} #Subnetzmaske abschneiden
	fi

	#IP ermitteln wenn Debian >10:
	if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1-2) -gt "10" ]; then
		INET=$(ip -c a| grep -i 'inet'| grep -v '127.0.0.1' | grep -v 'inet6')
		IPADR=$(echo $INET|cut -d " " -f2)
		IPADR=${IPADR::-3} #Subnetzmaske abschneiden
	fi
fi

if [ "$_LINUX" = "Ubuntu" ]; then
	INET=$(ip -c a| grep -i 'inet'| grep -v '127.0.0.1' | grep -v 'inet6')
	IPADR=$(echo $INET|cut -d " " -f2)
	IPADR=${IPADR::-3} #Subnetzmaske abschneiden
fi

#OSCam Logfilepfad anpassen
if [ ! "`grep -i 'log/os' /var/etc/oscam.conf`" = "" ] ; then
   sed -i /var/etc/oscam.conf -e "s_log/[Oo][Ss]_log/ipc/OS_g"
fi

#NewCS Logfilepfad anpassen
if [ ! "`grep -i 'log/newcs' /var/etc/newcs.xml`" = "" ] ; then
   sed -i /var/etc/newcs.xml -e "s_log/[Nn][Ee][Ww][Cc][Ss]_log/ipc/newcs_g"
fi

#Tools ausgelagert
[ -d "/var/www/ipc/downloads" ] && rm -rf /var/www/ipc/downloads >/dev/null 2>&1

FMURL2=$(echo $FMURL | sed -e 's/\/forum//g')

#i cfg erstmals starten
/var/emu/script/ipc-cfg.sh

# webaccess in sqlite db uebertragen..
if [ "$CONFIGSAVE" == "1" ]&&[ -f "$IPCBAK/var/emu/conf/.webaccess" ]; then
	echo -n "Uebertrage altes webaccess file in SQLite3 Datenbank..."
	while read line; do
		[ -z "$line" ] && continue
		line=$(echo $line|tr ":" " ")
		USER=$(echo $line|awk {'print $1'})
		PASS=$(echo $line|awk {'print $2'})
		sqlite_write_userpass "$USER" "$PASS"
	done < $IPCBAK/var/emu/conf/.webaccess
	_error $?
fi

#Onlinversion ermitteln
php /var/www/ipc/page/update-check.php > /dev/null

#Aufraeumen
_cleanup

readipccfg
if [ "$HTTPUSER" = "$HTTPPASS" ]; then
	LoginInfos="\033[1;31m$HTTPUSER\033[0m"
else
	LoginInfos="\033[1;31m$HTTPUSER\033[0m / \033[1;31m$HTTPPASS\033[0m"
fi

echo "$TITLE"
echo "==============================================================================="
echo ""
echo "Installation abgeschlossen"
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
echo "Die wichtigsten Befehle (Kurzbefehle)         : [ipc]      (i)"
if [ -f "/var/emu/cccam/CCcam.x86" ] || [ -f "/var/emu/cccam/CCcam.x86_64" ]; then
	echo "                                                [cccam]    (c)"
fi
if [ -f "/var/emu/oscam/oscam.x86" ] || [ -f "/var/emu/oscam/oscam.x86_64" ] || [ -f "/var/emu/oscam/oscam.armel" ]; then
	echo "                                                [oscam]    (o)"
fi
if [ -f "/var/emu/newcs/newcs.x86" ] || [ -f "/var/emu/newcs/newcs.x86_64" ] || [ -f "/var/emu/newcs/newcs.armel" ]; then
	echo "                                                [newcs]    (n)"
fi
if [ -f "/var/emu/camd3/camd3.x86" ]; then
	echo "                                                [camd3]    (c3)"
fi
if [ -f "/var/emu/sbox/sbox.x86" ] || [ -f "/var/emu/sbox/sbox.x86_64" ] || [ -f "/var/emu/sbox/sbox.armel" ]; then
	echo "                                                [sbox]     (s)"
fi
if [ -f "/var/emu/osemu/osemu.x86" ] || [ -f "/var/emu/osemu/osemu.x86_64" ] || [ -f "/var/emu/osemu/osemu.armel" ]; then
	echo "                                                [osemu]    (oe)"
fi
if [ -f "/var/emu/gbox/gbox.armel" ]; then
	echo "                                                [gbox]     (gb)"
fi
echo ""
if [ -n "$LINUXVERSION" ]&&[ ! $(echo $LINUXVERSION|cut -c 1) == "9" ] || [ -n "$LINUXVERSION" ]&&[ ! $(echo $LINUXVERSION|cut -c 1-2) == "15" ]; then
	echo -e "Administrations-Webseite ist   : \033[1;32mhttp://$IPADR\033[0m"
fi
echo -e "Username und Password          : $LoginInfos"
echo ""
echo -e "\033[1;37mHilfe zur Ersteinrichtung auf der Administrations-Webseite\033[0m"
echo ""
echo -e "\033[1;31mIPC Forum\033[0m: $FMURL2"
echo ""
echo -e "\033[1;33mtmp2ram wird aktuell nicht mehr mitinstalliert, kann aber über die\033[0m"
echo -e "\033[1;33mOnlinescripte nachinstalliert werden\033[0m"
echo ""
echo "-------------------------------------------------------------------------------"

exit 0
