#!/bin/bash
### MODUL-NR. 019 ###
# (c) August 2008 Stefan Schäfer / FSP Computer & Netzwerke
# (c) 2009-2018 Stefan Schäfer / invis-server.org / stefan@invis-server.org
# (c) 2013,2014 Dimitri Asarowski / invis-server.org / dimitri@invis-server.org
# (c) 2013-2017 Ingo Göppert / invis-server.org / ingo@invis-server.org

# License: GPLv3
# Questions: info@invis-server.org

# ISDN Faxserver Installation mit capisuite/Faxgate

# ISDN Faxserver setup with capisuite/Faxgate

# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der 
# GNU General Public License, wie von der Free Software Foundation veröffentlicht,
# weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder
# (nach Ihrer Option) jeder späteren Version.

# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
# von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite 
# Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 
# Details finden Sie in der GNU General Public License.

# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem 
# Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. 

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# include functions
source $SINEINCLUDEDIR/functions

modulename=`basename $0`

clear
windowtitle="Faxserver Setup"
pgsubtitle="Capisuite with Faxgate Extension"

dialog --backtitle "$DIALOGTITLE - Modul: $modulename" --title "$windowtitle" --exit-label "Weiter" --textbox "$INFODIR/faxgate.txt" 38 90 --and-widget --backtitle "$dialogtitle" --title "$windowtitle"  --defaultno --yesno "Möchten Sie Faxgate installieren?" 0 0
cont=${?}

if [[ $cont == "0" ]]; then
    ok=0
    while [[ $ok != "1" ]]; do
	dialog --backtitle "$DIALOGTITLE - Modul: $modulename" --title "$windowtitle" --inputbox "Geben Sie bitte Ihre Telefonvorwahl ein." 0 0 \
	2>$SINEWORKINGDIR/sine_temp
	exitcode=${?}
	vorwahl=`cat $SINEWORKINGDIR/sine_temp`

	if [[ $vorwahl =~ ^[0-9]{3,7}$ ]] ;then
	    ok=1
	fi
    done
    # Treiber installieren
    pgsubtitle="Fritzcard-Treiber werden installiert"
    # Nachfolgende Zeilen ersetzen das fcinst-Script.
    zypper ar -f -c http://www.fkn-systems.de/_repos/FKN-Repo_-_fcpci_opensuse_leap.$OPENSUSEVERSION/ FKN-Systems-fcpci
    rpm --import http://www.fkn-systems.de/_repos/FKN-Repo_-_fcpci/repodata/repomd.xml.key
    kernel=`uname -r | cut -d "-" -f1-2`
    packetname=`zypper search -s fcpci |grep $kernel | tr -d " " | cut -d "|" -f2`
    kvfull=`rpm -qa kernel-default|grep $kernel|cut -d "-" -f3- |cut -d "." -f1-4`
    zypper -n install -n "$packetname.$kvfull"
    pgsubtitle="Zusätzliche Software wird installiert"
    zypper refresh 2>&1 | tee -a $LOGFILE  |pgbox
    zypper -n install -n `cat $PACKAGELISTDIR/faxgate`  2>&1 | tee -a $LOGFILE | pgbox
    zyppercheck ${PIPESTATUS[0]}

    # System fuer AVM-Treiber vorbereiten
    echo -e "mknod /dev/capi20 c 68 0\nchmod 0660 /dev/capi20\nchgrp dialout /dev/capi20\ncapiinit start\n" >> /etc/init.d/boot.local
    file="50-blacklist.conf"
    path="/etc/modprobe.d"
    string="blacklist fcpci%#blacklist fcpci"
    changevalues $path $file "$string"
    echo -e "## invis-server.org -- Modul avmfritz blockieren\nblacklist avmfritz\n" >> /etc/modprobe.d/50-blacklist.conf

    # FritzCard einrichten
    fcname=`lspci |grep AVM|cut -d ":" -f3|cut -d " " -f2-`
    cp $TEMPLATEDIR/$modulename/cfg-contr0 /etc/sysconfig/isdn/
    file="cfg-contr0"
    path="/etc/sysconfig/isdn"
    string="fcname%$fcname"
    changevalues $path $file "$string"
    string="vorwahl%$vorwahl"
    changevalues $path $file "$string"

    dialog --backtitle "$DIALOGTITLE - Modul: $modulename" --title "$windowtitle" --radiolist "$DIALOGSHORTHELP\n\n
Je nach dem, ob Sie über lediglich eine oder mehrere Faxnummern verfügen,
können Sie Faxgate für den Single- oder Multi-User-Betrieb einrichten.\n\n
Für den Multi-User-Betrieb sollten Sie über einen ISDN Anlagenanschluss verfügen."  16 90 8 \
    Single-User "Es steht nur eine Fax-Nummer zur Verfügung (ISDN Mehrgeräteanschluss)." on\
    Multi-User "Es stehen mehrere Faxnummern zur Verfügung (ISDN Anlagenanschluss). " off\
    2>$SINEWORKINGDIR/sine_temp
    singleuser=`cat $SINEWORKINGDIR/sine_temp`

    if [[ $singleuser == "Single-User" ]]; then
	cat $TEMPLATEDIR/$modulename/smb.faxgate.su >> /etc/samba/smb.shares.conf
	msgbox "Es wird ein neuer Benutzer unter dem Namen \"fax\" angelegt, mit dem Sie sich später
am Faxgate Client anmelden und der alle eingehenden Faxe per email erhält.
Geben Sie ein zugehöriges Passwort ein." "$windowtitle"


	faxpw=`pwgen -Bsnc 8 1`
	## Passwort darf nicht ablaufen
	samba-tool user create fax "$faxpw" --surname="CAPI" --given-name="Fax" --description="Beutzer für Fax-System" 2>&1| tee -a $LOGFILE | pgbox
	samba-tool user setexpiry --noexpiry fax
	msgbox "Es wurde ein Benutzer \"fax\" angelegt. Dieser Benutzer wird für den Zugang zum Fax-System benötigt.\nSein Passwort lautet: $faxpw"

	echo "Fax-Benutzer erfolgreich eingerichtet"|mailx -s "Init-Mail" fax@localhost

	chkservice "samba"
    else
	cat $TEMPLATEDIR/$modulename/smb.faxgate.mu >> /etc/samba/smb.shares.conf
	chkservice "samba"
    fi
    # sudoers Erweiterung wird eingefügt
    cp $TEMPLATEDIR/$modulename/faxgate_sudoers $SINEWORKINGDIR

    fqdn=`getconfdata "FQDN" "2"`
    path="$SINEWORKINGDIR"
    file="faxgate_sudoers"
    string="invis5.invis-net.loc%$fqdn"
    changevalues $path $file "$string"

    ip=`getconfdata "IP" "2"`
    string="192.168.220.10%$ip"
    changevalues $path $file "$string"

    cp $SINEWORKINGDIR/faxgate_sudoers >> /etc/sudoers.d/

    # Fax-Drucker wird eingerichtet
    pgsubtitle="Faxdrucker wird eingerichtet"
    lpadmin -p Faxgate -v faxgate://capisuite -m Faxgate.ppd.gz -E 2>&1 |pgbox

    sleep 1
    # Faxgate im Portal aktivieren
    swpestat FaxClient TRUE 2>&1 | tee -a $LOGFILE | pgbox

else
    msgbox "Fax-Server-Installation übersprungenen." "$windowtitle"
fi 
