#!/bin/bash
# Debian-IPC - Setupscript
clear
TITLE="IPC Installation (Update) / V11.3 $(date +"%d.%m.%Y %H:%M")"
URL="http://ipc.pebkac.at/ipc"
PAK="ipc-113.tgz"
DIR=$PWD
SUDOER="www-data ALL=NOPASSWD:/bin/c,/bin/o,/bin/n,/bin/i,/etc/init.d/cron,/usr/bin/last,/tmp/reboot"
SUDOERfile="/etc/sudoers"
if test -f "$0.1"; then
echo "$TITLE"
echo "==============================================================================="
echo ""
echo "Alte Setupscripts entfernt, starte Download und Setup erneut"
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
rm $0*
exit 1
fi
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 ""
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 ""
echo " OScam Version einstellbar"
echo " OScam-compile OScam kompilieren"
echo " NewCS 1.67 RC1"
echo ""
echo "-------------------------------------------------------------------------------"
echo "Bei Erstinstallation muessen die benoetigten Pakete mit installiert werden!"
echo "-------------------------------------------------------------------------------"
echo ""
echo -en "\033[0;33m[P]akete und IPC installieren | IPC [I]nstallieren | []Beenden: \033[0m"
read key
case $key in
[Ii])
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
;;
[Pp])
clear
echo "$TITLE"
echo "==============================================================================="
echo "Installiere von IPC benoetigte Pakete, bitte warten .."
echo "-------------------------------------------------------------------------------"
echo ""
apt-get autoclean && apt-get update
apt-get install -y openssh-server nano less locales dialog console-tools console-data console-common rsyslog logrotate
apt-get install -y apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi
apt-get install -y tofrodos locate htop lm-sensors ncftp sendEmail libpcsclite1 nfs-common portmap sudo
echo "-------------------------------------------------------------------------------"
echo "Paketinstallation abgeschlossen, bitte warten .."
echo "-------------------------------------------------------------------------------"
sleep 3
;;
*)
echo ""
echo "IPC Installation vorzeitig beendet"
echo "-------------------------------------------------------------------------------"
echo ""
exit 0
;;
esac
#Pruefe Argumente
[ "$1" = "32" ] && SYSBIT="32"
[ "$1" = "64" ] && SYSBIT="64"
#pruefe System ob 32 oder 64 bit
if [ "$SYSBIT" = "" ]; then
if [ `uname -m` = 'x86_64' ]; then
SYSBIT="64"
else
SYSBIT="32"
fi
fi
#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
#Pruefe v11.2 -> v11.3 upgrade paket: sudo
if [ ! -f "/usr/bin/sudo" ]; then
echo -n "Benoetigtes Paket 'sudo' wird installiert.."
apt-get clean >/dev/null
echo -n "."
apt-get install sudo -y >/dev/null
echo "."
fi
TIMESTAMP=`date +"%Y%m%d_%H%M"`
IPCBAK=/var/backups/ipc/forsetup_$TIMESTAMP
#Konfiguration sichern?
if [ -f /var/etc/CCcam.cfg ] ; then
clear
echo "$TITLE"
echo "==============================================================================="
echo -e "\033[1;31mCCcam.cfg 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 ""
sleep 2
fi
echo "Jetzt gehts los.."
echo ""
cd /
#rm -f /$PAK
#echo "Download.."
#wget $URL/$PAK
if test -f "$PAK"; then
dummy="1"
else
echo "Download nicht moeglich, Abbruch!"
exit 1
fi
echo "Cron wird beendet.."
/etc/init.d/cron stop > /dev/null 2>&1
sleep 1
if [ "$NEWINST" == "1" ] ; then
echo "CCcam wird beendet.."
echo "OK" >> /var/log/CCcam.OK
[ "$SYSBIT" == "32" ] && pkill CCcam.x86
[ "$SYSBIT" == "64" ] && pkill CCcam.x86_64
sleep 1
if [ "$SYSBIT" == "32" ]; then
if [ ! "`pgrep -x oscam.x86`" = "" ]; then
echo "OScam wird beendet.."
pkill oscam.x86
fi
if [ ! "`pgrep -x newcs.i686`" = "" ]; then
echo "NewCS wird beendet.."
pkill oscam.x86
fi
elif [ "$SYSBIT" == "64" ]; then
if [ ! "`pgrep -x oscam.x86_64`" = "" ]; then
echo "OScam wird beendet.."
pkill oscam.x86_64
fi
if [ ! "`pgrep -x newcs.x86_64`" = "" ]; then
echo "NewCS wird beendet.."
pkill oscam.x86_64
fi
fi
sleep 1
fi
echo "Sichern.."
[ ! -d $IPCBAK ] && mkdir -p $IPCBAK
#Verzeichnisse
cp -R --parents /var/emu $IPCBAK > /dev/null 2>&1
cp -R --parents /var/etc $IPCBAK > /dev/null 2>&1
cp -R --parents /var/keys $IPCBAK > /dev/null 2>&1
cp -R --parents /var/www $IPCBAK > /dev/null 2>&1
#Dateien
cp --parents /root/.bashrc $IPCBAK > /dev/null 2>&1
cp --parents /etc/crontab $IPCBAK > /dev/null 2>&1
cp --parents /etc/motd $IPCBAK > /dev/null 2>&1
cp --parents /etc/rc.local $IPCBAK > /dev/null 2>&1
cp --parents /etc/rsyslog.conf $IPCBAK > /dev/null 2>&1
cp --parents /etc/logrotate.d/rsyslog $IPCBAK > /dev/null 2>&1
#Apache
cp --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
echo "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
sleep 1
echo "Entpacken.."
sleep 1
tar -xPzvf $PAK > /dev/null 2>&1
#EMU-Konfiguration zuruecksichern?
if [ "$CONFIGSAVE" == "1" ] ; then
echo "EMU-Konfiguration wird wiederhergestellt.."
#Verzeichnisse
cp -fR $IPCBAK/var/etc /var > /dev/null 2>&1
cp -fR $IPCBAK/var/keys /var > /dev/null 2>&1
cp -fR $IPCBAK/var/emu/tmp /var/emu > /dev/null 2>&1
#Dateien
cp -f $IPCBAK/var/emu/cccam/CCcam.x* /var/emu/cccam > /dev/null 2>&1
cp -f $IPCBAK/var/emu/oscam/oscam.x* /var/emu/oscam > /dev/null 2>&1
cp -f $IPCBAK/var/emu/newcs/newcs.x* /var/emu/oscam > /dev/null 2>&1
cp -f $IPCBAK/var/emu/conf/.webaccess /var/emu/conf > /dev/null 2>&1
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 "IPC-Konfiguration wird wiederhergestellt.."
cp -f $IPCBAK/var/emu/conf/ipc.cfg /var/emu/conf > /dev/null 2>&1
cp -f $IPCBAK/etc/rc.local /etc > /dev/null 2>&1
cp -f $IPCBAK/etc/crontab /etc > /dev/null 2>&1
cp -f $IPCBAK/etc/apache2/sites-available/default /etc/apache2/sites-available > /dev/null 2>&1
cp -f $IPCBAK/etc/logrotate.d/rsyslog /etc/logrotate.d > /dev/null 2>&1
cp -f $IPCBAK/var/www/ipc/phpsysinfo/config.php /var/www/ipc/phpsysinfo > /dev/null 2>&1
sleep 2
fi
fi
echo "Tempdir setzen.."
[ ! -d /var/emu/tmp/infophp ] && mkdir -p /var/emu/tmp/infophp
# Pruefe tmpfs in fstab, falls CF-System...
if [ ! "`grep -i 'tmpfs' /etc/fstab`" = "" ] ; then
mkdir -p /var/emu/tmp > /dev/null 2>&1
mkdir -p /var/emu/tmp.save > /dev/null 2>&1
fi
echo "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
echo "Rechte setzen.."
chmod 755 -R /var/emu > /dev/null 2>&1
chmod 777 -R /var/emu/tmp > /dev/null 2>&1
chmod 755 /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/
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
echo "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
[ ! -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
ln -f -s /var/emu/tools/srp_tools_x86 /bin/smargo
ln -f -s /var/emu/tools/list_smargo /bin/smargolist
sleep 1
echo "System pruefen (32/64 Bit).."
if [ "$SYSBIT" = "64" ]; then
CCVersion="CCcam.x86_64"
OSVersion="oscam.x86_64"
NSVersion="newcs.x86_64"
mv -f /var/emu/script/functions.sh_64 /var/emu/script/functions.sh
rm -f /var/emu/cccam/CCcam.x86
rm -f /var/emu/oscam/oscam.x86
rm -f /var/emu/newcs/newcs.i686
rm -f /var/emu/tools/srp_tools_x86
else
CCVersion="CCcam.x86"
OSVersion="oscam.x86"
NSVersion="newcs.i686"
rm -f /var/emu/script/functions.sh_64
rm -f /var/emu/cccam/CCcam.x86_64
rm -f /var/emu/oscam/oscam.x86_64
rm -f /var/emu/newcs/newcs.x86_64
fi
echo " System ist : $SYSBIT-Bit"
echo " CCcam ist : $CCVersion"
echo " OSCam ist : $OSVersion"
echo " NewCS ist : $NSVersion"
sleep 1
#Aufraeumen
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
#Neue functions und IPC Variablen einlesen
. /var/emu/script/functions.sh
sleep 1
readipccfg
# .webaccess mit Daten aus ipc.cfg schreiben
htpasswd -bc /var/emu/conf/.webaccess $HTTPUSER $HTTPPASS >/dev/null 2>&1
echo "Syslog neustarten.."
/etc/init.d/rsyslog restart > /dev/null 2>&1
sleep 1
echo "Webserver neustarten.."
[ ! -s /etc/apache2/httpd.conf ] && echo "Servername localhost" > /etc/apache2/httpd.conf
/etc/init.d/apache2 restart > /dev/null 2>&1
sleep 1
echo "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
sleep 1
if [ "$NEWINST" == "1" ] ; then
echo "CCcam starten.."
echo "OK" >> /var/log/CCcam.OK
cccam restart > /dev/null 2>&1
sleep 1
rm -f /var/log/CCcam.OK
fi
#InfoPHP Konfiguration
tempdir
readcccamcfg
infophpconfwrite
setrights
sleep 1
echo "Cron starten.."
/etc/init.d/cron start > /dev/null 2>&1
/etc/init.d/cron reload > /dev/null 2>&1
sleep 2
#Profil Aenderungen einlesen
. /root/.bashrc
#IP-auslesen
IPADR=$(ifconfig | grep -i 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
if [ "$IPADR" = "" ]; then
IPADR=$(ifconfig | grep -i 'inet adresse:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
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')
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
clear
echo "$TITLE"
echo "==============================================================================="
echo ""
echo "Installation abgeschlossen"
echo "Die IPC Konfiguration bearbeiten mit Befehl : [ipc cfg]"
echo "Die CCcam Konfiguration bearbeiten mit Befehl : [cccam cfg]"
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
echo "Die wichtigsten Befehle (Kurzbefehle) : [ipc] (i)"
echo " [cccam] (c)"
echo " [oscam] (o)"
echo " [newcs] (n)"
echo ""
echo -e "Administrations-Webseite ist : \033[1;32mhttp://$IPADR\033[0m"
echo -e "\`- Username und Password : $LoginInfos"
echo -e "\033[1;37mHilfe zur Ersteinrichtung auf der Administrations-Webseite\033[0m"
echo -e "\033[1;31mIPC Forum\033[0m: $FMURL2"
echo ""
echo "-------------------------------------------------------------------------------"
exit 0