🤞 Sync 2026-04-23 06:19:46

This commit is contained in:
github-actions[bot] committed 2026-04-23 06:19:46 +08:00
1 parent a1df15cd3d
commit b86d032e91
250 files changed
+41507 -188

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=xl2tpd-ext
PKG_VERSION:=1
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/xl2tpd-ext
include $(INCLUDE_DIR)/package.mk
define Package/xl2tpd-ext
TITLE:=xl2tpd server additional scripts
SECTION:=net
CATEGORY:=Network
SUBMENU:=VPN
PKGARCH:=all
endef
define Package/xl2tpd-ext/description
This package contains additional scripts and configuration files for xl2tpd
endef
define Build/Prepare
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/xl2tpd-ext/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/xl2tpd.init $(1)/etc/init.d/xl2tpd
$(INSTALL_DIR) $(1)/etc/xl2tpd
$(INSTALL_BIN) ./files/l2tp-up $(1)/etc/xl2tpd/l2tp-up
$(INSTALL_BIN) ./files/l2tp-down $(1)/etc/xl2tpd/l2tp-down
$(CP) ./files/xl2tpd.conf $(1)/etc/xl2tpd/xl2tpd.conf
$(INSTALL_DIR) $(1)/etc/ppp
$(CP) ./files/options.xl2tpd $(1)/etc/ppp/options.xl2tpd
$(INSTALL_DIR) $(1)/etc/config
$(CP) ./files/xl2tpd.config $(1)/etc/config/xl2tpd
$(INSTALL_DIR) $(1)/lib/netifd/proto
$(INSTALL_BIN) ./files/l2tp.sh $(1)/lib/netifd/proto/l2tp.sh
endef
$(eval $(call BuildPackage,xl2tpd-ext))
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
sed -i "/$1/d" /tmp/xl2tpd/clients
[ -d /etc/ppp/ip-down.d ] && {
for SCRIPT in /etc/ppp/ip-down.d/*
do
[ -x "$SCRIPT" ] && "$SCRIPT" "$@"
done
}
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
mkdir /tmp/xl2tpd
echo "ifname:$1;server:$4;client:$5" >> /tmp/xl2tpd/clients
section=$(uci show xl2tpd | grep $5 | awk -F '.' '{print $2}')
route=$(uci get xl2tpd.$section.route)
[ -n "$route" ] && {
ip route add $route via $4 dev $1
}
[ -d /etc/ppp/ip-up.d ] && {
for SCRIPT in /etc/ppp/ip-up.d/*
do
[ -x "$SCRIPT" ] && "$SCRIPT" "$@"
done
}
+121
View File
@@ -0,0 +1,121 @@
#!/bin/sh
[ -x /usr/sbin/xl2tpd ] || exit 0
[ -n "$INCLUDE_ONLY" ] || {
. /lib/functions.sh
. ../netifd-proto.sh
init_proto "$@"
}
proto_l2tp_init_config() {
proto_config_add_string "username"
proto_config_add_string "password"
proto_config_add_string "keepalive"
proto_config_add_string "pppd_options"
proto_config_add_boolean "ipv6"
proto_config_add_int "mtu"
proto_config_add_int "checkup_interval"
proto_config_add_string "server"
available=1
no_device=1
no_proto_task=1
teardown_on_l3_link_down=1
}
proto_l2tp_setup() {
local interface="$1"
local optfile="/tmp/l2tp/options.${interface}"
local ip serv_addr server host
json_get_var server server
host="${server%:*}"
for ip in $(resolveip -t 5 "$host"); do
( proto_add_host_dependency "$interface" "$ip" )
serv_addr=1
done
[ -n "$serv_addr" ] || {
echo "Could not resolve server address" >&2
sleep 5
proto_setup_failed "$interface"
exit 1
}
# Start and wait for xl2tpd
if [ ! -p /var/run/xl2tpd/l2tp-control -o -z "$(pidof xl2tpd)" ]; then
/etc/init.d/xl2tpd restart
local wait_timeout=0
while [ ! -p /var/run/xl2tpd/l2tp-control ]; do
wait_timeout=$(($wait_timeout + 1))
[ "$wait_timeout" -gt 5 ] && {
echo "Cannot find xl2tpd control file." >&2
proto_setup_failed "$interface"
exit 1
}
sleep 1
done
fi
local ipv6 keepalive username password pppd_options mtu
json_get_vars ipv6 keepalive username password pppd_options mtu
[ "$ipv6" = 1 ] || ipv6=""
local interval="${keepalive##*[, ]}"
[ "$interval" != "$keepalive" ] || interval=5
keepalive="${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}}"
username="${username:+user \"$username\" password \"$password\"}"
ipv6="${ipv6:++ipv6}"
mtu="${mtu:+mtu $mtu mru $mtu}"
mkdir -p /tmp/l2tp
cat <<EOF >"$optfile"
usepeerdns
nodefaultroute
ipparam "$interface"
ifname "l2tp-$interface"
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
# Don't wait for LCP term responses; exit immediately when killed.
lcp-max-terminate 0
$keepalive
$username
$ipv6
$mtu
$pppd_options
EOF
xl2tpd-control add-lac l2tp-${interface} pppoptfile=${optfile} lns=${server} || {
echo "xl2tpd-control: Add l2tp-$interface failed" >&2
proto_setup_failed "$interface"
exit 1
}
xl2tpd-control connect-lac l2tp-${interface} || {
echo "xl2tpd-control: Connect l2tp-$interface failed" >&2
proto_setup_failed "$interface"
exit 1
}
}
proto_l2tp_teardown() {
local interface="$1"
local optfile="/tmp/l2tp/options.${interface}"
rm -f ${optfile}
if [ -p /var/run/xl2tpd/l2tp-control ]; then
xl2tpd-control remove-lac l2tp-${interface} || {
echo "xl2tpd-control: Remove l2tp-$interface failed" >&2
}
fi
# Wait for interface to go down
while [ -d /sys/class/net/l2tp-${interface} ]; do
sleep 1
done
}
[ -n "$INCLUDE_ONLY" ] || {
add_protocol l2tp
}
+24
View File
@@ -0,0 +1,24 @@
#
noauth
#debug
dump
logfd 2
logfile /var/log/xl2tpd.log
noccp
novj
novjccomp
nopcomp
noaccomp
mtu 1400
mru 1400
require-mschap-v2
lcp-echo-interval 20
lcp-echo-failure 5
connect-delay 5000
nodefaultroute
noipdefault
proxyarp
ip-up-script /etc/xl2tpd/l2tp-up
#ipv6-up-script /etc/xl2tpd/l2tp-up
ip-down-script /etc/xl2tpd/l2tp-down
#ipv6-down-script /etc/xl2tpd/l2tp-down
+23
View File
@@ -0,0 +1,23 @@
[global]
port = 1701
access control = no
;[lns default]
;exclusive = yes
;ip range = 192.168.254.202-192.168.254.210
;lac = 10.0.1.2
;hidden bit = no
;local ip = 192.168.254.200
;length bit = yes
;refuse authentication = yes
;name = VersaLink
;ppp debug = yes
;pppoptfile = /etc/ppp/options.xl2tpd
;[lac left]
;lns = 10.0.1.2
;refuse authentication = yes
;name = VersaLink
;ppp debug = yes
;pppoptfile = /etc/ppp/options.xl2tpd
+2
View File
@@ -0,0 +1,2 @@
config service 'xl2tpd'
option 'enabled' '0'
+107
View File
@@ -0,0 +1,107 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2015 OpenWrt.org
START=60
USE_PROCD=1
BIN=xl2tpd
CONFIG=/var/etc/xl2tpd.conf
CHAP_SECRETS=/var/etc/chap-secrets
OPTIONS_XL2TPD=/var/etc/options.xl2tpd
RUN_D="/var/run/xl2tpd"
PID_F="/var/run/xl2tpd.pid"
validate_login_section() {
uci_load_validate xl2tpd login "$1" "$2" \
'enabled:bool' \
'username:string' \
'password:string' \
'remoteip:string'
}
validate_xl2tpd_section() {
uci_load_validate xl2tpd service "$1" "$2" \
'enabled:bool' \
'localip:string' \
'remoteip_start:string' \
'remoteip_end:string'
}
setup_login() {
[ "$2" = 0 ] || {
echo "validation failed"
return 1
}
[ "$enabled" -eq 1 ] || return 0
[ -n "$username" ] || return 0
[ -n "$password" ] || return 0
[ -n "$remoteip" ] || remoteip=*
echo "$username l2tp-server $password $remoteip" >> $CHAP_SECRETS
}
setup_config() {
[ "$2" = 0 ] || {
echo "validation failed"
return 1
}
mkdir -p /var/etc
rm -rf $CONFIG
cp /etc/xl2tpd/xl2tpd.conf $CONFIG
cp /etc/ppp/options.xl2tpd $OPTIONS_XL2TPD
[ "$enabled" -eq 1 ] || return 0
echo "[lns l2tp-server]" >> $CONFIG
[ -n "$localip" ] && echo "local ip = $localip" >> $CONFIG
[ -n "$remoteip_start" ] && [ -n "$remoteip_end" ] && echo "ip range = $remoteip_start-$remoteip_end" >> $CONFIG
echo "lac = 0.0.0.0-255.255.255.255" >> $CONFIG
echo "require chap = yes" >> $CONFIG
echo "require pap = yes" >> $CONFIG
echo "refuse authentication = yes" >> $CONFIG
echo "name = l2tp-server" >> $CONFIG
echo "pppoptfile = $OPTIONS_XL2TPD" >> $CONFIG
return 0
}
start_service() {
config_load xl2tpd
validate_xl2tpd_section xl2tpd setup_config || return
sed -i '/l2tp-server/d' $CHAP_SECRETS
config_foreach validate_login_section login setup_login
ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
rm -rf "$RUN_D"
mkdir -p "$RUN_D"
procd_open_instance
procd_set_param command $BIN -D -l -p "$PID_F" -c $CONFIG -s $CHAP_SECRETS
procd_set_param respawn
procd_close_instance
}
service_triggers () {
procd_add_reload_trigger "xl2tpd"
procd_open_validate
validate_xl2tpd_section
validate_login_section
procd_close_validate
}
stop_service() {
if [[ -e "$PID_F" ]]; then
PID=$(cat "$PID_F")
CHILDS=$(pgrep -P "$PID")
kill "$PID"
kill "$CHILDS"
rm -rf "$RUN_D"
rm -rf "$PID_F"
fi
}
reload_service() {
restart
}