#!/bin/bash
### MODUL-NR. 014 ### 
# (c) August 2008 Stefan Schäfer / FSP Computer & Netzwerke
# (c) 2009-2017 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

# openVPN Einrichten

# openVPN setup

# 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="openVPN"
pgsubtitle="Setup openVPN"

dialog --backtitle "$DIALOGTITLE - Modul: $modulename" --title "$windowtitle" --exit-label "Weiter" --textbox "$INFODIR/openvpn.txt" 38 92

pgsubtitle="openvpn wird installiert" 
zypper refresh 2>&1 | tee -a $LOGFILE  |pgbox
zypper -n install -n openvpn 2>&1 | tee -a $LOGFILE | pgbox
zyppercheck ${PIPESTATUS[0]}

# Server-Konfiguration erzeugen.
cp $TEMPLATEDIR/$modulename/invis-server.conf /etc/openvpn
path="/etc/openvpn"
file="invis-server.conf"

string="invis-net.loc%$domain"
changevalues $path $file "$string"

ip=`getconfdata "IP" "2"`
string="invis-int-ip%$ip"
changevalues $path $file "$string"

net=`getconfdata "Networkbase" "2"`
string="netbase-address%$net"
changevalues $path $file "$string"

netmask=`getconfdata "NMask-long" "2"`
string="netmask-long%$netmask"
changevalues $path $file "$string"

ddns=`getconfdata "DDNS" "2"`
string="openvpn_server%$ddns"
changevalues $path $file "$string"

# Schluesselverzeichnis erstellen und fuellen
domain=`getconfdata "Domain" "2"`

earsadir="/etc/easy-rsa/$domain"
keydir="/etc/openvpn/keys"
mkdir $keydir
cp $earsadir/dh.pem $keydir
cp $earsadir/crl.pem $keydir
cp $earsadir/ca.crt $keydir

#msgbox "Schlüssel und Zertifikat für VPN-Server wird erzeugt." "$windowtitle"
## Webserverschluessel übernehmen
cp $earsadir/private/$ddns.key $keydir
cp $earsadir/issued/$ddns.crt $keydir

msgbox "Beispiel Client-Konfigurationsdateien finden Sie in der Service-Freigabe des Fileservers.
Um Schlüssel für einen Client zu erzeugen führen Sie inviscerts vpn aus. Weitere Infos unter wiki.invis-server.de." "openVPN Clients einrichten"
# openvpn ins Runlevel-Konzept integrieren und starten
# Seit openSUSE 13.1 bekommt jede openvpn-Konfiguration ein eigenes systemd Service-File
# Start und Stop koennen damit fuer jede Konfiguration einzeln erfolgen.
cp /usr/lib/systemd/system/openvpn@.service /usr/lib/systemd/system/openvpn@invis-server.service
chkservice "openvpn@invis-server"

