mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-03 15:33:56 +08:00
🤞 Sync 2026-04-23 06:19:46
This commit is contained in:
1 parent
a1df15cd3d
commit
b86d032e91
250 files changed
+41507
-188
No files matched your search
Executable
+51
@@ -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))
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
config service 'xl2tpd'
|
||||
option 'enabled' '0'
|
||||
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user