Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| fastd [06.12.2015 04:37] – havelock | fastd [16.07.2017 17:32] (aktuell) – havelock | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== fastd ====== | ====== fastd ====== | ||
| - | In Bearbeitung! | + | TODO In Bearbeitung! |
| - | Dokumentation: | + | Dokumentation: |
| + | |||
| + | Ab Debian Stretch (9) ist fastd und die dazugehörigen Abhängigkeiten vorhanden. | ||
| + | Es sind also keine externen Repositories mehr notwendig. | ||
| Bei der manuellen Übersetzung von fastd müssen das Init-Script und die manpages | Bei der manuellen Übersetzung von fastd müssen das Init-Script und die manpages | ||
| Zeile 9: | Zeile 12: | ||
| Vorarbeiten | Vorarbeiten | ||
| + | < | ||
| + | aptitude install build-essential pkg-config cmake doxygen bison libsodium-dev libjson-c-dev libcap-dev | ||
| + | </ | ||
| + | |||
| + | Voraussetzung ist [[libuecc]], | ||
| + | |||
| + | Compilieren von fastd | ||
| + | < | ||
| + | cd / | ||
| + | git clone git:// | ||
| + | cd fastd | ||
| + | git checkout v18 | ||
| + | cd .. | ||
| + | mkdir fastd-build | ||
| + | cd fastd-build | ||
| + | cmake ../fastd | ||
| + | make | ||
| + | make install | ||
| + | </ | ||
| + | |||
| + | <file conf / | ||
| + | # This is the configuration file for / | ||
| + | |||
| + | # | ||
| + | # Start only these VPNs automatically via init script. | ||
| + | # Allowed values are " | ||
| + | # names of the VPNs. If empty, " | ||
| + | # | ||
| + | AUTOSTART=" | ||
| + | </ | ||
| + | |||
| + | Hinweis: Wenn fastd selbst kompiliert wurde, ist die Installation normalerweise | ||
| + | nach ''/ | ||
| + | angepaßt werden ('' | ||
| + | |||
| + | Hinweis: Das Script ist auch Bestandteil der [[FFPI-Tools]]. | ||
| + | |||
| + | ++++ Init-Script für fastd | | ||
| + | <file bash / | ||
| + | #!/bin/sh -e | ||
| + | |||
| + | ### BEGIN INIT INFO | ||
| + | # Provides: | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Should-Start: | ||
| + | # Should-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | # Description: | ||
| + | # in / | ||
| + | ### END INIT INFO | ||
| + | |||
| + | # Derived from the OpenVPN init script | ||
| + | # Original version by Robert Leslie | ||
| + | # < | ||
| + | # Modified for openvpn by Alberto Gonzalez Iniesta < | ||
| + | # Modified for restarting / starting / stopping single tunnels by Richard Mueller < | ||
| + | # Modified for fastd by Nils Schneider < | ||
| + | # Beautified by Thomas Hooge < | ||
| + | |||
| + | . / | ||
| + | |||
| + | test $DEBIAN_SCRIPT_DEBUG && set -v -x | ||
| + | |||
| + | DESC=" | ||
| + | NAME=fastd | ||
| + | DAEMON=/ | ||
| + | CONFIG_DIR=/ | ||
| + | SCRIPTNAME=/ | ||
| + | |||
| + | # Exit if the package is not installed | ||
| + | [ -x " | ||
| + | |||
| + | # Exit if the configuration directory is not existent | ||
| + | [ -d $CONFIG_DIR ] || exit 0 | ||
| + | |||
| + | # Source defaults file; edit that file to configure this script. | ||
| + | AUTOSTART=" | ||
| + | if test -e / | ||
| + | . / | ||
| + | fi | ||
| + | |||
| + | if [ ! -d / | ||
| + | mkdir / | ||
| + | chown fastd. / | ||
| + | fi | ||
| + | |||
| + | start_vpn () { | ||
| + | STATUS=0 | ||
| + | start-stop-daemon --start --quiet --oknodo \ | ||
| + | --pidfile / | ||
| + | --make-pidfile \ | ||
| + | --background \ | ||
| + | --exec $DAEMON -- \ | ||
| + | --syslog-level info \ | ||
| + | --config $CONFIG_DIR/ | ||
| + | || STATUS=1 | ||
| + | } | ||
| + | |||
| + | stop_vpn () { | ||
| + | kill `cat $PIDFILE` || true | ||
| + | rm -f $PIDFILE | ||
| + | log_end_msg 0 | ||
| + | } | ||
| + | |||
| + | case " | ||
| + | start) | ||
| + | log_action_begin_msg " | ||
| - | | + | # autostart fastds |
| + | if test -z " | ||
| + | # check if automatic startup is disabled by AUTOSTART=none | ||
| + | if test " | ||
| + | log_warning_msg " | ||
| + | exit 0 | ||
| + | fi | ||
| + | if test -z " | ||
| + | # all fastds shall be started automatically | ||
| + | for CONFIG in `cd $CONFIG_DIR; | ||
| + | INSTANCE=${CONFIG%%/ | ||
| + | log_daemon_msg " | ||
| + | start_vpn | ||
| + | done | ||
| + | else | ||
| + | # start only specified fastds | ||
| + | for INSTANCE in $AUTOSTART ; do | ||
| + | if test -e $CONFIG_DIR/ | ||
| + | log_daemon_msg " | ||
| + | start_vpn | ||
| + | else | ||
| + | log_failure_msg " | ||
| + | STATUS=1 | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | #start fastds from command line | ||
| + | else | ||
| + | while shift ; do | ||
| + | [ -z " | ||
| + | INSTANCE=$1 | ||
| + | if test -e $CONFIG_DIR/ | ||
| + | log_daemon_msg " | ||
| + | start_vpn | ||
| + | else | ||
| + | log_failure_msg " | ||
| + | STATUS=1 | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | log_end_msg ${STATUS: | ||
| + | ;; | ||
| + | stop) | ||
| + | log_action_begin_msg " | ||
| + | if test -z " | ||
| + | PIDFILE= | ||
| + | for PIDFILE in `ls / | ||
| + | INSTANCE=`echo $PIDFILE | cut -c16-` | ||
| + | INSTANCE=${INSTANCE%%.pid} | ||
| + | log_daemon_msg " | ||
| + | stop_vpn | ||
| + | done | ||
| + | if test -z " | ||
| + | log_warning_msg " | ||
| + | fi | ||
| + | else | ||
| + | while shift ; do | ||
| + | [ -z " | ||
| + | if test -e / | ||
| + | log_daemon_msg " | ||
| + | PIDFILE=`ls / | ||
| + | INSTANCE=`echo $PIDFILE | cut -c16-` | ||
| + | INSTANCE=${INSTANCE%%.pid} | ||
| + | stop_vpn | ||
| + | else | ||
| + | log_failure_msg " | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | ;; | ||
| + | restart) | ||
| + | shift | ||
| + | $0 stop ${@} | ||
| + | sleep 1 | ||
| + | $0 start ${@} | ||
| + | ;; | ||
| + | status) | ||
| + | GLOBAL_STATUS=0 | ||
| + | if test -z " | ||
| + | # We want status for all defined fastd. | ||
| + | # Returns success if all autostarted fastds are defined and running | ||
| + | if test " | ||
| + | # Consider it a failure if AUTOSTART=none | ||
| + | log_warning_msg "No fastds autostarted" | ||
| + | GLOBAL_STATUS=1 | ||
| + | else | ||
| + | if ! test -z " | ||
| + | # Consider it a failure if one of the autostarted fastd is not defined | ||
| + | for VPN in $AUTOSTART ; do | ||
| + | if ! test -f $CONFIG_DIR/ | ||
| + | log_warning_msg "fastd ' | ||
| + | GLOBAL_STATUS=1 | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | fi | ||
| + | for CONFIG in `cd $CONFIG_DIR; | ||
| + | INSTANCE=${CONFIG%%/ | ||
| + | # Is it an autostarted fastd? | ||
| + | if test -z " | ||
| + | AUTOVPN=1 | ||
| + | else | ||
| + | if test " | ||
| + | AUTOVPN=0 | ||
| + | else | ||
| + | AUTOVPN=0 | ||
| + | for VPN in $AUTOSTART; do | ||
| + | if test " | ||
| + | AUTOVPN=1 | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | fi | ||
| + | if test " | ||
| + | # If it is autostarted, | ||
| + | status_of_proc -p / | ||
| + | else | ||
| + | status_of_proc -p / | ||
| + | fi | ||
| + | done | ||
| + | else | ||
| + | # We just want status for specified fastd. | ||
| + | # Returns success if all specified fastds are defined and running | ||
| + | while shift ; do | ||
| + | [ -z " | ||
| + | INSTANCE=$1 | ||
| + | if test -e $CONFIG_DIR/ | ||
| + | # Config exists | ||
| + | status_of_proc | ||
| + | else | ||
| + | # Config does not exist | ||
| + | log_warning_msg "$NAME ' | ||
| + | GLOBAL_STATUS=1 | ||
| + | fi | ||
| + | done | ||
| + | fi | ||
| + | exit $GLOBAL_STATUS | ||
| + | ;; | ||
| + | *) | ||
| + | echo " | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | exit 0 | ||
| + | </ | ||
| + | ++++ | ||