From 24cf28b5ec148bc29d2d150e94f8928d96c1d1e6 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Thu, 15 Mar 2018 15:28:18 +0100 Subject: luci-proto-pppossh: move pppossh to own package This is a special proto which should go into a separate package. Signed-off-by: Florian Eckert --- .../model/cbi/admin_network/proto_pppossh.lua | 122 --------------------- .../luasrc/model/network/proto_ppp.lua | 8 +- protocols/luci-proto-pppossh/Makefile | 17 +++ .../model/cbi/admin_network/proto_pppossh.lua | 122 +++++++++++++++++++++ .../luasrc/model/network/proto_pppossh.lua | 40 +++++++ 5 files changed, 180 insertions(+), 129 deletions(-) delete mode 100644 protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua create mode 100644 protocols/luci-proto-pppossh/Makefile create mode 100644 protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua create mode 100644 protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua deleted file mode 100644 index e53262b5d..000000000 --- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua +++ /dev/null @@ -1,122 +0,0 @@ --- Copyright (C) 2015 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr - -sshuser = section:taboption("general", Value, "sshuser", translate("SSH username")) - -server = section:taboption("general", Value, "server", translate("SSH server address")) -server.datatype = "host(0)" - -port = section:taboption("general", Value, "port", translate("SSH server port")) -port.datatype = "port" -port.optional = true -port.default = 22 - -ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options")) -ssh_options.optional = true - -identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth")) -identity.optional = true -identity.datatype = "file" - -ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign")) -ipaddr.datatype = "ipaddr" - -peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign")) -peeraddr.datatype = "ipaddr" - - -local ipv6, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - -if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - ipv6.default = ipv6.disabled -end - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -function keepalive_failure.write() end -function keepalive_failure.remove() end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:set(section, "keepalive", "0") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" diff --git a/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua b/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua index 3afb7de4f..f87b30fcc 100644 --- a/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua +++ b/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua @@ -4,7 +4,7 @@ local netmod = luci.model.network local _, p -for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do +for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp"}) do local proto = netmod:register_protocol(p) @@ -19,8 +19,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do return luci.i18n.translate("PPPoATM") elseif p == "l2tp" then return luci.i18n.translate("L2TP") - elseif p == "pppossh" then - return luci.i18n.translate("PPPoSSH") end end @@ -39,8 +37,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do return "ppp-mod-pppoa" elseif p == "l2tp" then return "xl2tpd" - elseif p == "pppossh" then - return "pppossh" end end @@ -53,8 +49,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil) elseif p == "l2tp" then return nixio.fs.access("/lib/netifd/proto/l2tp.sh") - elseif p == "pppossh" then - return nixio.fs.access("/lib/netifd/proto/pppossh.sh") else return nixio.fs.access("/lib/netifd/proto/ppp.sh") end diff --git a/protocols/luci-proto-pppossh/Makefile b/protocols/luci-proto-pppossh/Makefile new file mode 100644 index 000000000..1c0a63b0f --- /dev/null +++ b/protocols/luci-proto-pppossh/Makefile @@ -0,0 +1,17 @@ +# +# Copyright (C) 2018 Florian Eckert +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Support for pppossh +LUCI_DEPENDS:=+pppossh + +PKG_LICENSE:=Apache-2.0 +PKG_MAINTAINER:=Yousong Zhou + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua b/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua new file mode 100644 index 000000000..e53262b5d --- /dev/null +++ b/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua @@ -0,0 +1,122 @@ +-- Copyright (C) 2015 Yousong Zhou +-- Licensed to the public under the Apache License 2.0. + +local map, section, net = ... + +local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr + +sshuser = section:taboption("general", Value, "sshuser", translate("SSH username")) + +server = section:taboption("general", Value, "server", translate("SSH server address")) +server.datatype = "host(0)" + +port = section:taboption("general", Value, "port", translate("SSH server port")) +port.datatype = "port" +port.optional = true +port.default = 22 + +ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options")) +ssh_options.optional = true + +identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth")) +identity.optional = true +identity.datatype = "file" + +ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign")) +ipaddr.datatype = "ipaddr" + +peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign")) +peeraddr.datatype = "ipaddr" + + +local ipv6, defaultroute, metric, peerdns, dns, + keepalive_failure, keepalive_interval, demand + +if luci.model.network:has_ipv6() then + ipv6 = section:taboption("advanced", Flag, "ipv6", + translate("Enable IPv6 negotiation on the PPP link")) + ipv6.default = ipv6.disabled +end + + +defaultroute = section:taboption("advanced", Flag, "defaultroute", + translate("Use default gateway"), + translate("If unchecked, no default route is configured")) + +defaultroute.default = defaultroute.enabled + + +metric = section:taboption("advanced", Value, "metric", + translate("Use gateway metric")) + +metric.placeholder = "0" +metric.datatype = "uinteger" +metric:depends("defaultroute", defaultroute.enabled) + + +peerdns = section:taboption("advanced", Flag, "peerdns", + translate("Use DNS servers advertised by peer"), + translate("If unchecked, the advertised DNS server addresses are ignored")) + +peerdns.default = peerdns.enabled + + +dns = section:taboption("advanced", DynamicList, "dns", + translate("Use custom DNS servers")) + +dns:depends("peerdns", "") +dns.datatype = "ipaddr" +dns.cast = "string" + + +keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", + translate("LCP echo failure threshold"), + translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) + +function keepalive_failure.cfgvalue(self, section) + local v = m:get(section, "keepalive") + if v and #v > 0 then + return tonumber(v:match("^(%d+)[ ,]+%d+") or v) + end +end + +function keepalive_failure.write() end +function keepalive_failure.remove() end + +keepalive_failure.placeholder = "0" +keepalive_failure.datatype = "uinteger" + + +keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", + translate("LCP echo interval"), + translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) + +function keepalive_interval.cfgvalue(self, section) + local v = m:get(section, "keepalive") + if v and #v > 0 then + return tonumber(v:match("^%d+[ ,]+(%d+)")) + end +end + +function keepalive_interval.write(self, section, value) + local f = tonumber(keepalive_failure:formvalue(section)) or 0 + local i = tonumber(value) or 5 + if i < 1 then i = 1 end + if f > 0 then + m:set(section, "keepalive", "%d %d" %{ f, i }) + else + m:set(section, "keepalive", "0") + end +end + +keepalive_interval.remove = keepalive_interval.write +keepalive_interval.placeholder = "5" +keepalive_interval.datatype = "min(1)" + + +demand = section:taboption("advanced", Value, "demand", + translate("Inactivity timeout"), + translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) + +demand.placeholder = "0" +demand.datatype = "uinteger" diff --git a/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua b/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua new file mode 100644 index 000000000..a0e2a510c --- /dev/null +++ b/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua @@ -0,0 +1,40 @@ +-- Copyright 2018 Florian Eckert +-- Licensed to the public under the Apache License 2.0. + +local netmod = luci.model.network + +local proto = netmod:register_protocol("pppossh") + +function proto.get_i18n(self) + return luci.i18n.translate("PPPoSSH") +end + +function proto.ifname(self) + return "pppossh-" .. self.sid +end + +function proto.opkg_package(self) + return "pppossh" +end + +function proto.is_installed(self) + return nixio.fs.access("/lib/netifd/proto/pppossh.sh") +end + +function proto.is_floating(self) + return true +end + +function proto.is_virtual(self) + return true +end + +function proto.get_interfaces(self) + return nil +end + +function proto.contains_interface(self, ifc) + return (netmod:ifnameof(ifc) == self:ifname()) +end + +netmod:register_pattern_virtual("^pppossh%-%w") -- cgit v1.2.3