mirror of
https://git.busybox.net/buildroot.git
synced 2025-01-09 22:14:20 +08:00
Add support for openvpn
This commit is contained in:
parent
4d1a51bd5b
commit
de44010390
66
make/openvpn.mk
Normal file
66
make/openvpn.mk
Normal file
@ -0,0 +1,66 @@
|
||||
#############################################################
|
||||
#
|
||||
# openvpn
|
||||
#
|
||||
# NOTE: Uses start-stop-daemon in init script, so be sure
|
||||
# to enable that within busybox
|
||||
#
|
||||
#############################################################
|
||||
OPENVPN_SOURCE:=openvpn-1.5.0.tar.gz
|
||||
OPENVPN_SITE:=http://aleron.dl.sourceforge.net/sourceforge/openvpn/
|
||||
OPENVPN_DIR:=$(BUILD_DIR)/openvpn-1.5.0
|
||||
OPENVPN_CAT:=zcat
|
||||
OPENVPN_BINARY:=openvpn
|
||||
OPENVPN_TARGET_BINARY:=usr/sbin/openvpn
|
||||
#OPENVPN_PATCH:=$(SOURCE_DIR)/openvpn.patch
|
||||
|
||||
$(DL_DIR)/$(OPENVPN_SOURCE):
|
||||
$(WGET) -P $(DL_DIR) $(OPENVPN_SITE)/$(OPENVPN_SOURCE)
|
||||
|
||||
openvpn-source: $(DL_DIR)/$(OPENVPN_SOURCE)
|
||||
|
||||
$(OPENVPN_DIR)/.unpacked: $(DL_DIR)/$(OPENVPN_SOURCE)
|
||||
$(OPENVPN_CAT) $(DL_DIR)/$(OPENVPN_SOURCE) | tar -C $(BUILD_DIR) -xvf -
|
||||
#cat $(OPENVPN_PATCH) | patch -p1 -d $(OPENVPN_DIR)
|
||||
touch $(OPENVPN_DIR)/.unpacked
|
||||
|
||||
$(OPENVPN_DIR)/.configured: $(OPENVPN_DIR)/.unpacked
|
||||
(cd $(OPENVPN_DIR); rm -rf config.cache; \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
./configure \
|
||||
--target=$(GNU_TARGET_NAME) \
|
||||
--host=$(GNU_TARGET_NAME) \
|
||||
--build=$(GNU_HOST_NAME) \
|
||||
--prefix=/usr \
|
||||
--exec-prefix=/usr \
|
||||
--bindir=/usr/bin \
|
||||
--sbindir=/usr/sbin \
|
||||
--libexecdir=/usr/lib \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--localstatedir=/var \
|
||||
--mandir=/usr/man \
|
||||
--infodir=/usr/info \
|
||||
--program-prefix="" \
|
||||
);
|
||||
touch $(OPENVPN_DIR)/.configured
|
||||
|
||||
$(OPENVPN_DIR)/$(OPENVPN_BINARY): $(OPENVPN_DIR)/.configured
|
||||
$(MAKE) -C $(OPENVPN_DIR)
|
||||
|
||||
$(TARGET_DIR)/$(OPENVPN_TARGET_BINARY): $(OPENVPN_DIR)/$(OPENVPN_BINARY)
|
||||
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(OPENVPN_DIR) install
|
||||
mkdir -p $(TARGET_DIR)/etc/openvpn
|
||||
cp $(SOURCE_DIR)/openvpn $(TARGET_DIR)/etc/init.d/openvpn
|
||||
rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
|
||||
$(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
|
||||
|
||||
openvpn: uclibc lzo $(TARGET_DIR)/$(OPENVPN_TARGET_BINARY)
|
||||
|
||||
openvpn-clean:
|
||||
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(OPENVPN_DIR) uninstall
|
||||
-$(MAKE) -C $(OPENVPN_DIR) clean
|
||||
|
||||
openvpn-dirclean:
|
||||
rm -rf $(OPENVPN_DIR)
|
||||
|
103
sources/openvpn
Executable file
103
sources/openvpn
Executable file
@ -0,0 +1,103 @@
|
||||
#!/bin/sh -e
|
||||
#
|
||||
# Original version by Robert Leslie
|
||||
# <rob@mars.org>, edited by iwj and cs
|
||||
# Modified for openvpn by Alberto Gonzalez Iniesta <agi@agi.as>
|
||||
# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>
|
||||
|
||||
test $DEBIAN_SCRIPT_DEBUG && set -v -x
|
||||
|
||||
DAEMON=/usr/sbin/openvpn
|
||||
CONFIG_DIR=/etc/openvpn
|
||||
test -x $DAEMON || exit 0
|
||||
test -d $CONFIG_DIR || exit 0
|
||||
|
||||
start_vpn () {
|
||||
$DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \
|
||||
--config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || echo -n " FAILED->"
|
||||
echo -n " $NAME"
|
||||
}
|
||||
stop_vpn () {
|
||||
kill `cat $PIDFILE` || true
|
||||
rm $PIDFILE
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting openvpn:"
|
||||
|
||||
if test -z $2 ; then
|
||||
for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
|
||||
NAME=${CONFIG%%.conf}
|
||||
start_vpn
|
||||
done
|
||||
else
|
||||
if test -e $CONFIG_DIR/$2.conf ; then
|
||||
NAME=$2
|
||||
start_vpn
|
||||
else
|
||||
echo -n " No such VPN: $2"
|
||||
fi
|
||||
fi
|
||||
echo "."
|
||||
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping openvpn:"
|
||||
|
||||
if test -z $2 ; then
|
||||
for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
|
||||
NAME=`echo $PIDFILE | cut -c18-`
|
||||
NAME=${NAME%%.pid}
|
||||
stop_vpn
|
||||
echo -n " $NAME"
|
||||
done
|
||||
else
|
||||
if test -e /var/run/openvpn.$2.pid ; then
|
||||
PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`
|
||||
NAME=`echo $PIDFILE | cut -c18-`
|
||||
NAME=${NAME%%.pid}
|
||||
stop_vpn
|
||||
echo -n " $NAME"
|
||||
else
|
||||
echo -n " No such VPN: $2"
|
||||
fi
|
||||
fi
|
||||
echo "."
|
||||
;;
|
||||
# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.
|
||||
reload|force-reload)
|
||||
echo -n "Reloading openvpn:"
|
||||
for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
|
||||
NAME=`echo $PIDFILE | cut -c18-`
|
||||
NAME=${NAME%%.pid}
|
||||
# If openvpn if running under a different user than root we'll need to restart
|
||||
if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then
|
||||
stop_vpn
|
||||
sleep 1
|
||||
start_vpn
|
||||
echo -n "(restarted)"
|
||||
else
|
||||
kill -HUP `cat $PIDFILE` || true
|
||||
# start-stop-daemon --stop --signal HUP --quiet --oknodo \
|
||||
# --exec $DAEMON --pidfile $PIDFILE
|
||||
echo -n " $NAME"
|
||||
fi
|
||||
done
|
||||
echo "."
|
||||
;;
|
||||
|
||||
restart)
|
||||
$0 stop $2
|
||||
sleep 1
|
||||
$0 start $2
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# vim:set ai et sts=2 sw=2 tw=0:
|
Loading…
Reference in New Issue
Block a user