[luci] [PATCH 2/2] Added luci configuration for openconnect protocol

Nikos Mavrogiannopoulos nmav at gnutls.org
Wed Jun 4 23:24:19 CEST 2014


This applies to openconnect at the github packages repository of
openwrt: https://github.com/openwrt/packages

Signed-off-by: Nikos Mavrogiannopoulos <nmav at gnutls.org>
---
 contrib/package/luci/Makefile                      |  2 +-
 .../model/cbi/admin_network/proto_openconnect.lua  | 71 ++++++++++++++++++++++
 .../luasrc/model/network/proto_openconnect.lua     | 61 +++++++++++++++++++
 3 files changed, 133 insertions(+), 1 deletion(-)
 create mode 100644 protocols/openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
 create mode 100644 protocols/openconnect/luasrc/model/network/proto_openconnect.lua

diff --git a/contrib/package/luci/Makefile b/contrib/package/luci/Makefile
index 4cc9d8b..3a239c5 100644
--- a/contrib/package/luci/Makefile
+++ b/contrib/package/luci/Makefile
@@ -201,7 +201,7 @@ $(eval $(call protocol,ppp,Support for PPP/PPPoE/PPPoA/PPtP))
 $(eval $(call protocol,ipv6,Support for DHCPv6/6in4/6to4/6rd/DS-Lite))
 $(eval $(call protocol,3g,Support for 3G,+PACKAGE_luci-proto-3g:comgt))
 $(eval $(call protocol,relay,Support for relayd pseudo bridges,+PACKAGE_luci-proto-relay:relayd))
-
+$(eval $(call protocol,openconnect,Support for OpenConnect VPN,+openconnect))
 
 ### Community Packages ###
 define Package/luci-mod-freifunk-community
diff --git a/protocols/openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/protocols/openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
new file mode 100644
index 0000000..c126fad
--- /dev/null
+++ b/protocols/openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
@@ -0,0 +1,71 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2014 Nikos Mavrogiannopoulos <nmav at gnutls.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local map, section, net = ...
+
+local server, username, password, cert, ca
+
+server = section:taboption("general", Value, "server", translate("VPN Server"))
+server.datatype = "host"
+
+port = section:taboption("general", Value, "port", translate("VPN Server port"))
+port.placeholder = "443"
+port.datatype    = "port"
+
+section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash"))
+
+section:taboption("general", Value, "authgroup", translate("AuthGroup"))
+
+username = section:taboption("general", Value, "username", translate("Username"))
+password = section:taboption("general", Value, "password", translate("Password"))
+password.password = true
+
+
+cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)"))
+cert.template = "cbi/tvalue"
+cert.rows = 10
+
+function cert.cfgvalue(self, section)
+	return nixio.fs.readfile("/etc/openconnect/user-cert.pem")
+end
+
+function cert.write(self, section, value)
+	value = value:gsub("\r\n?", "\n")
+	nixio.fs.writefile("/etc/openconnect/user-cert.pem", value)
+end
+
+cert = section:taboption("advanced", Value, "userkey", translate("User key (PEM encoded)"))
+cert.template = "cbi/tvalue"
+cert.rows = 10
+
+function cert.cfgvalue(self, section)
+	return nixio.fs.readfile("/etc/openconnect/user-key.pem")
+end
+
+function cert.write(self, section, value)
+	value = value:gsub("\r\n?", "\n")
+	nixio.fs.writefile("/etc/openconnect/user-key.pem", value)
+end
+
+
+ca = section:taboption("advanced", Value, "ca", translate("CA certificate; if empty it will be saved after the first connection."))
+ca.template = "cbi/tvalue"
+ca.rows = 10
+
+function ca.cfgvalue(self, section)
+	return nixio.fs.readfile("/etc/openconnect/ca.pem")
+end
+
+function ca.write(self, section, value)
+	value = value:gsub("\r\n?", "\n")
+	nixio.fs.writefile("/etc/openconnect/ca.pem", value)
+end
diff --git a/protocols/openconnect/luasrc/model/network/proto_openconnect.lua b/protocols/openconnect/luasrc/model/network/proto_openconnect.lua
new file mode 100644
index 0000000..f5c16c7
--- /dev/null
+++ b/protocols/openconnect/luasrc/model/network/proto_openconnect.lua
@@ -0,0 +1,61 @@
+--[[
+LuCI - Network model - dhcpv6 protocol extension
+
+Copyright 2012 David Woodhouse
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+local proto = netmod:register_protocol("openconnect")
+
+function proto.get_i18n(self)
+	return luci.i18n.translate("OpenConnect (CISCO AnyConnect)")
+end
+
+function proto.ifname(self)
+	return "vpn-" .. self.sid
+end
+
+function proto.get_interface(self)
+	return interface(self:ifname(), self)
+end
+
+function proto.opkg_package(self)
+	return "openconnect"
+end
+
+function proto.is_installed(self)
+	return nixio.fs.access("/lib/netifd/proto/openconnect.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("^vpn-%w")
-- 
1.9.2




More information about the luci mailing list