diff --git a/package/lean/luci-app-pppoe-relay/Makefile b/package/lean/luci-app-pppoe-relay/Makefile new file mode 100644 index 000000000..d65d987eb --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/Makefile @@ -0,0 +1,18 @@ +# Copyright (C) 2016 Openwrt.org +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI support for PPPoE Relay +LUCI_DEPENDS:=+rp-pppoe-common +rp-pppoe-relay +LUCI_PKGARCH:=all +PKG_VERSION:=1.0 +PKG_RELEASE:=2 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + + diff --git a/package/lean/luci-app-pppoe-relay/luasrc/controller/pppoe-relay.lua b/package/lean/luci-app-pppoe-relay/luasrc/controller/pppoe-relay.lua new file mode 100644 index 000000000..f3a2760e7 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/luasrc/controller/pppoe-relay.lua @@ -0,0 +1,10 @@ +module("luci.controller.pppoe-relay",package.seeall) + +function index() + if not nixio.fs.access("/etc/config/pppoe-relay")then + return +end + +entry({"admin","services","pppoe-relay"},cbi("pppoe-relay"),_("PPPoE Relay"),90).dependent=true + +end \ No newline at end of file diff --git a/package/lean/luci-app-pppoe-relay/luasrc/model/cbi/pppoe-relay.lua b/package/lean/luci-app-pppoe-relay/luasrc/model/cbi/pppoe-relay.lua new file mode 100644 index 000000000..c43127ec9 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/luasrc/model/cbi/pppoe-relay.lua @@ -0,0 +1,56 @@ +local s=require"luci.sys" +local net = require "luci.model.network".init() +local ifaces = s.net:devices() +local m,s,o + +m=Map("pppoe-relay",translate("PPPoE Relay")) +m.description = translate("Opening the PPPoE relay allows devices in the Intranet to create a separate PPPoE connection that can cross NAT.") +s=m:section(TypedSection,"service") +s.addremove=true +s.anonymous=true +s.template="cbi/tblsection" + +o=s:option(Flag,"enabled",translate("Enabled")) +o.rmempty=false + +o=s:option(ListValue,"server_interface",translate("Server Interface")) +for _, iface in ipairs(ifaces) do + if not (iface == "lo" or iface:match("^ifb.*") or iface:match("gre*")) then + local nets = net:get_interface(iface) + nets = nets and nets:get_networks() or {} + for k, v in pairs(nets) do + nets[k] = nets[k].sid + end + nets = table.concat(nets, ",") + o:value(iface, ((#nets > 0) and "%s (%s)" % {iface, nets} or iface)) + end +end +o.rmempty=true + +o=s:option(ListValue,"client_interface",translate("Client Interface")) +for _, iface in ipairs(ifaces) do + if not (iface == "lo" or iface:match("^ifb.*") or iface:match("gre*")) then + local nets = net:get_interface(iface) + nets = nets and nets:get_networks() or {} + for k, v in pairs(nets) do + nets[k] = nets[k].sid + end + nets = table.concat(nets, ",") + o:value(iface, ((#nets > 0) and "%s (%s)" % {iface, nets} or iface)) + end +end +o.rmempty=true + +o=s:option(Button,"is_run",translate("Check")) +function o.write(self, section) + local server_interface = m.uci:get('pppoe-relay',section,"server_interface") + local client_interface = m.uci:get('pppoe-relay',section,"client_interface") + isrun=luci.sys.call("ps | grep '/usr/sbin/pppoe-relay -S "..server_interface.." -C "..client_interface.."' | grep -v 'grep' >/dev/null") + if isrun == 1 then + o.description = "" + else + o.description = "" + end +end + +return m diff --git a/package/lean/luci-app-pppoe-relay/po/zh-cn/pppoe-relay.po b/package/lean/luci-app-pppoe-relay/po/zh-cn/pppoe-relay.po new file mode 100644 index 000000000..e1a0c1034 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/po/zh-cn/pppoe-relay.po @@ -0,0 +1,23 @@ +msgid "PPPoE Relay" +msgstr "PPPoE 穿透" + +msgid "Opening the PPPoE relay allows devices in the Intranet to create a separate PPPoE connection that can cross NAT." +msgstr "开启 PPPoE 中继允许内网中的设备创建一个可穿过 NAT 的独立 PPPoE 连接" + +msgid "Enable or disable the PPPoE Relay" +msgstr "启用或禁用PPPoE穿透" + +msgid "Server Interface" +msgstr "服务端接口" + +msgid "Specify the PPPoE server interface" +msgstr "指定PPPoE服务器接口" + +msgid "Client Interface" +msgstr "客户端接口" + +msgid "Specify the PPPoE client interface" +msgstr "指定PPPoE客户端接口" + +msgid "Enabled" +msgstr "启用" \ No newline at end of file diff --git a/package/lean/luci-app-pppoe-relay/root/etc/config/pppoe-relay b/package/lean/luci-app-pppoe-relay/root/etc/config/pppoe-relay new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/root/etc/config/pppoe-relay @@ -0,0 +1 @@ + diff --git a/package/lean/luci-app-pppoe-relay/root/etc/init.d/pppoe-relay b/package/lean/luci-app-pppoe-relay/root/etc/init.d/pppoe-relay new file mode 100755 index 000000000..ca069d155 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/root/etc/init.d/pppoe-relay @@ -0,0 +1,29 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2018 Lienol + +START=99 +STOP=16 + +setup_service() { + local section="$1" + config_get enabled "$section" enabled + [ "$enabled" -eq 0 ] && return 0 + config_get server_interface "$section" server_interface + config_get client_interface "$section" client_interface + [ -n "$server_interface" ] || return 0 + [ -n "$client_interface" ] || return 0 + + is_run=$(ps | grep "/usr/sbin/pppoe-relay -S $server_interface -C $client_interface" | grep -v "grep") + [ -z "$is_run" ] && { + /usr/sbin/pppoe-relay -S $server_interface -C $client_interface + } +} + +start() { + config_load pppoe-relay + config_foreach setup_service service +} + +stop() { + killall -9 pppoe-relay +} diff --git a/package/lean/luci-app-pppoe-relay/root/etc/uci-defaults/luci-app-pppoe-relay b/package/lean/luci-app-pppoe-relay/root/etc/uci-defaults/luci-app-pppoe-relay new file mode 100755 index 000000000..287888b28 --- /dev/null +++ b/package/lean/luci-app-pppoe-relay/root/etc/uci-defaults/luci-app-pppoe-relay @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@pppoe-relay[-1] + add ucitrack pppoe-relay + set ucitrack.@pppoe-relay[-1].init=pppoe-relay + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0