mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			No EOL
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			No EOL
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh /etc/rc.common
 | |
| 
 | |
| START=88
 | |
| SERVICE_DAEMONIZE=1
 | |
| #SERVICE_SIG="KILL"
 | |
| 
 | |
| interface_multipath_settings() {
 | |
| 	local mode port
 | |
| 	local config="$1"
 | |
| 	id=$(($id+1))
 | |
| 	config_get mode "$config" multipath ""
 | |
| 	[ "$mode" = "" ] && {
 | |
| 		mode="$(uci -q get openmptcprouter.$config.multipath)"
 | |
| 	}
 | |
| 	[ "$mode" = "off" ] || [ "$mode" = "" ] && return 1
 | |
| 	config_get ifname "$config" device
 | |
| 	[ -z "$ifname" ] && config_get ifname "$config" ifname
 | |
| 	[ -z "$ifname" ] && ifname=$(ifstatus "$config" | jsonfilter -q -e '@["l3_device"]')
 | |
| 	[ -n "$(echo $ifname | grep '@')" ] && ifname=$(ifstatus "$1" | jsonfilter -q -e '@["device"]')
 | |
| 	[ -z "$ifname" ] && return 1
 | |
| 	addr=$(ifstatus ${config} | jsonfilter -q -e '@["ipv4-address"][0].address')
 | |
| 	[ -z "$addr" ] && return 1
 | |
| 	count=$(($count+1))
 | |
| 	port=$((firstport+count))
 | |
| 	cat >> /tmp/etc/${interface_name}.conf <<-EOF
 | |
| 
 | |
| 	[${config}]
 | |
| 	bindhost = "${addr}"
 | |
| 	bindport = "${port}"
 | |
| 	remotehost = "${host}"
 | |
| 	remoteport = "${port}"
 | |
| 	EOF
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	local enable timeout mode password reorder_buffer_size interface_name host firstport loss_tolerence
 | |
| 	[ "$(uci -q get mlvpn.general.enable)" = "1" ] || return 1
 | |
| 	interface_name="$(uci -q get mlvpn.general.interface_name)"
 | |
| 	timeout="$(uci -q get mlvpn.general.timeout)"
 | |
| 	mode="$(uci -q get mlvpn.general.mode)"
 | |
| 	password="$(uci -q get mlvpn.general.password)"
 | |
| 	reorder_buffer_size="$(uci -q get mlvpn.general.reorder_buffer_size)"
 | |
| 	loss_tolerence="$(uci -q get mlvpn.general.loss_tolerence)"
 | |
| 	cleartext_data="$(uci -q get mlvpn.general.cleartext_data)"
 | |
| 	[ -z "$cleartext_data" ] && cleartext_data="0"
 | |
| 	host="$(uci -q get mlvpn.general.host)"
 | |
| 	firstport="$(uci -q get mlvpn.general.firstport)"
 | |
| 	
 | |
| 	if [ "$(uci -q get network.omrvpn)" != "${interface_name}" ]; then
 | |
| 		uci -q set network.omrvpn.device=${interface_name}
 | |
| 		uci -q commit
 | |
| 	fi
 | |
| 	
 | |
| 	cat > /tmp/etc/${interface_name}.conf <<-EOF
 | |
| 	[general]
 | |
| 	tuntap = "tun"
 | |
| 	mode = "${mode}"
 | |
| 	interface_name = "${interface_name}"
 | |
| 	timeout = ${timeout}
 | |
| 	reorder_buffer = yes
 | |
| 	reorder_buffer_size = ${reorder_buffer_size}
 | |
| 	loss_tolerence = ${loss_tolerence}
 | |
| 	cleartext_data = ${cleartext_data}
 | |
| 	password = "${password}"
 | |
| 	mtu = 1452
 | |
| 	EOF
 | |
| 	
 | |
| 	local count=0 id=0
 | |
| 	config_load network
 | |
| 	config_foreach interface_multipath_settings interface
 | |
| 
 | |
| 	chmod 0600 "/tmp/etc/${interface_name}.conf"
 | |
| 	service_start /usr/sbin/mlvpn -c /tmp/etc/${interface_name}.conf --user nobody
 | |
| }
 | |
| 
 | |
| stop() {
 | |
| 	service_stop /usr/sbin/mlvpn
 | |
| }
 | |
| 
 | |
| reload() {
 | |
| 	stop
 | |
| 	start
 | |
| } |