Add netifd script to control sstp connections.
This commit is contained in:
parent
45d40b4a88
commit
f15e39134e
3 changed files with 135 additions and 7 deletions
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=sstp-client
|
PKG_NAME:=sstp-client
|
||||||
PKG_VERSION:=1.0.12
|
PKG_VERSION:=1.1.0
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
@ -24,7 +24,7 @@ define Package/sstp-client
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
SUBMENU:=VPN
|
SUBMENU:=VPN
|
||||||
DEPENDS=+libevent2 +libopenssl +ppp
|
DEPENDS=+libevent2 +libopenssl +ppp +resolveip
|
||||||
TITLE:=SSTP-Client is a SSTP client for Linux.
|
TITLE:=SSTP-Client is a SSTP client for Linux.
|
||||||
URL:=http://sstp-client.sourceforge.net/
|
URL:=http://sstp-client.sourceforge.net/
|
||||||
MAINTAINER:=Federico Di Marco <fededim@gmail.com>
|
MAINTAINER:=Federico Di Marco <fededim@gmail.com>
|
||||||
|
@ -56,6 +56,8 @@ define Package/sstp-client/install
|
||||||
|
|
||||||
$(INSTALL_DIR) $(1)/etc
|
$(INSTALL_DIR) $(1)/etc
|
||||||
$(CP) files/etc $(1)
|
$(CP) files/etc $(1)
|
||||||
|
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||||
|
$(INSTALL_BIN) ./files/lib/netifd/proto/sstp.sh $(1)/lib/netifd/proto
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,sstp-client))
|
$(eval $(call BuildPackage,sstp-client))
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Secrets for authentication using CHAP
|
|
||||||
# client (domain\\username) server secret (password) acceptable local IP addresses
|
|
||||||
# SSTP-TEST\\JonDoe sstp-test 'testme1234!' *
|
|
||||||
|
|
130
net/sstp-client/files/lib/netifd/proto/sstp.sh
Executable file
130
net/sstp-client/files/lib/netifd/proto/sstp.sh
Executable file
|
@ -0,0 +1,130 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -x /usr/bin/sstpc ] || exit 0
|
||||||
|
|
||||||
|
[ -n "$INCLUDE_ONLY" ] || {
|
||||||
|
. /lib/functions.sh
|
||||||
|
. ../netifd-proto.sh
|
||||||
|
init_proto "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_sstp_init_config() {
|
||||||
|
proto_config_add_string "server"
|
||||||
|
proto_config_add_string "username"
|
||||||
|
proto_config_add_string "password"
|
||||||
|
proto_config_add_string "pppd_options"
|
||||||
|
proto_config_add_string "sstp_options"
|
||||||
|
proto_config_add_int "log_level"
|
||||||
|
proto_config_add_int "mtu"
|
||||||
|
proto_config_add_boolean "ipv6"
|
||||||
|
proto_config_add_boolean "defaultroute"
|
||||||
|
proto_config_add_boolean "peerdns"
|
||||||
|
available=1
|
||||||
|
no_device=1
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_sstp_setup() {
|
||||||
|
local config="$1"; shift
|
||||||
|
local iface="$2"
|
||||||
|
local ifname="sstp-$config"
|
||||||
|
|
||||||
|
local ip serv_addr server ipv6 defaultroute peerdns
|
||||||
|
json_get_var server server && {
|
||||||
|
for ip in $(resolveip -t 5 "$server"); do
|
||||||
|
( proto_add_host_dependency "$config" "$ip" )
|
||||||
|
serv_addr=1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
[ -n "$serv_addr" ] || {
|
||||||
|
echo "Could not resolve server address"
|
||||||
|
sleep 5
|
||||||
|
proto_setup_failed "$config"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
json_get_vars username password pppd_options sstp_options log_level ipv6 defaultroute peerdns
|
||||||
|
if [ "$ipv6" = 1 ]; then
|
||||||
|
ipv6=1
|
||||||
|
else
|
||||||
|
ipv6=""
|
||||||
|
fi
|
||||||
|
if [ "$defaultroute" = 0 ]; then
|
||||||
|
defaultroute=""
|
||||||
|
else
|
||||||
|
defaultroute=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$peerdns" = 0 ]; then
|
||||||
|
peerdns=""
|
||||||
|
else
|
||||||
|
peerdns=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$mtu" ] || json_get_var mtu mtu
|
||||||
|
[ -n "$log_level" ] || log_level=0
|
||||||
|
|
||||||
|
local load
|
||||||
|
for module in slhc ppp_generic ppp_async ppp_mppe ip_gre gre pptp; do
|
||||||
|
grep -q "^$module " /proc/modules && continue
|
||||||
|
/sbin/insmod $module 2>&- >&-
|
||||||
|
load=1
|
||||||
|
done
|
||||||
|
[ "$load" = "1" ] && sleep 1
|
||||||
|
|
||||||
|
proto_init_update "$ifname" 1
|
||||||
|
proto_send_update "$config"
|
||||||
|
|
||||||
|
proto_run_command "$config" sstpc \
|
||||||
|
--cert-warn \
|
||||||
|
--password $password \
|
||||||
|
--user $username \
|
||||||
|
--log-level $log_level \
|
||||||
|
--save-server-route \
|
||||||
|
--ipparam $config \
|
||||||
|
$sstp_options \
|
||||||
|
$server \
|
||||||
|
ifname $ifname \
|
||||||
|
require-mschap-v2 \
|
||||||
|
${ipv6:++ipv6} \
|
||||||
|
refuse-pap \
|
||||||
|
noauth \
|
||||||
|
${defaultroute:+replacedefaultroute defaultroute} \
|
||||||
|
${peerdns:+usepeerdns} \
|
||||||
|
ip-up-script /lib/netifd/ppp-up \
|
||||||
|
ipv6-up-script /lib/netifd/ppp-up \
|
||||||
|
ip-down-script /lib/netifd/ppp-down \
|
||||||
|
ipv6-down-script /lib/netifd/ppp-down \
|
||||||
|
${mtu:+mtu $mtu mru $mtu} \
|
||||||
|
$pppd_options
|
||||||
|
|
||||||
|
# WORKAROUND: Workaround to properly register the sstp interface (As seeen in: https://forum.archive.openwrt.org/viewtopic.php?id=58007)
|
||||||
|
# WORKAROUND: Start
|
||||||
|
sleep 10
|
||||||
|
proto_init_update "$ifname" 1
|
||||||
|
proto_send_update "$config"
|
||||||
|
# WORKAROUND: End
|
||||||
|
|
||||||
|
# if use pppoe and sstp at same time , firewall need reload .
|
||||||
|
# but don't konw why
|
||||||
|
/etc/init.d/firewall reload 2>&- >&-
|
||||||
|
}
|
||||||
|
|
||||||
|
proto_sstp_teardown() {
|
||||||
|
local interface="$1"
|
||||||
|
|
||||||
|
case "$ERROR" in
|
||||||
|
11|19)
|
||||||
|
proto_notify_error "$interface" AUTH_FAILED
|
||||||
|
proto_block_restart "$interface"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
proto_notify_error "$interface" INVALID_OPTIONS
|
||||||
|
proto_block_restart "$interface"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
proto_kill_command "$interface"
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -n "$INCLUDE_ONLY" ] || {
|
||||||
|
add_protocol sstp
|
||||||
|
}
|
Loading…
Reference in a new issue