From 3f95160cbd3b82b8ba32a38347e0d3dcc368e2e9 Mon Sep 17 00:00:00 2001 From: Daniel Dickinson Date: Wed, 2 Dec 2015 00:31:17 -0500 Subject: protocols: vpnc: Add vpnc as a network protocol --- protocols/luci-proto-vpnc/Makefile | 23 ++++++ .../luasrc/model/cbi/admin_network/proto_vpnc.lua | 82 ++++++++++++++++++++++ .../luasrc/model/network/proto_vpnc.lua | 46 ++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 protocols/luci-proto-vpnc/Makefile create mode 100644 protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua create mode 100644 protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua (limited to 'protocols') diff --git a/protocols/luci-proto-vpnc/Makefile b/protocols/luci-proto-vpnc/Makefile new file mode 100644 index 000000000..9c77e67a5 --- /dev/null +++ b/protocols/luci-proto-vpnc/Makefile @@ -0,0 +1,23 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Support for VPNC VPN +LUCI_DEPENDS:=+vpnc +LUCI_PKGARCH:=all + +PKG_NAME:=luci-proto-vpnc +PKG_RELEASE=1 +PKG_VERSION:=1.0.0 +PKG_MAINTAINER:=Daniel Dickinson +PKG_LICENSE:=Apache-2.0 + +LUA_TARGET:=source + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file diff --git a/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua b/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua new file mode 100644 index 000000000..e450470eb --- /dev/null +++ b/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua @@ -0,0 +1,82 @@ +-- Copyright 2015 Daniel Dickinson +-- Licensed to the public under the Apache License 2.0. + +local map, section, net = ... + +local server, username, password, hexpassword +local authgroup, interface, passgroup, hexpassgroup +local domain, vendor, natt_mode, dh_group +local pfs, enable_single_des, enable_no_enc +local mtu, local_addr, local_port, dpd_idle +local auth_mode, target_network + +local ifc = net:get_interface():name() + +server = section:taboption("general", Value, "server", translate("VPN Server")) +server.datatype = "host(0)" + +port = section:taboption("general", Value, "local_addr", translate("VPN Local address")) +port.placeholder = "0.0.0.0" +port.datatype = "ipaddr" + +port = section:taboption("general", Value, "local_port", translate("VPN Local port")) +port.placeholder = "500" +port.datatype = "port" + +ifname = section:taboption("general", Value, "interface", translate("Output Interface")) +ifname.template = "cbi/network_netlist" + +mtu = section.taboption("general", Value, "mtu", translate("MTU")) +mtu.datatype = "uinteger" + +section:taboption("general", Value, "authgroup", translate("AuthGroup")) + +username = section:taboption("general", Value, "username", translate("Username")) +password = section:taboption("general", Value, "password", translate("Password")) +hexpassword = section:taboption("general", Value, "hexpassword", translate("Obfuscated Password")) +password.password = true +hexpassword.password = true +authroup = section:taboption("general", Value, "authgroup", translate("Auth Group")) +passgroup = section:taboption("general", Value, "passgroup", translate("Group Password")) +hexpassgroup = section:taboption("general", Value, "hexpassgroup", translate("Obfuscated Group Password")) +password.passgroup = true +hexpassword.passgroup= true + +domain = section:taboption("general", Value, "domain", translate("NT Domain")) +vendor = section:taboption("general", Value, "vendor", translate("Vendor")) +dh_group = section:taboption("general", ListValue, "dh_group", translate("IKE DH Group")) +dh_group:value("dh2") +dh_group:value("dh1") +dh_group:value("dh5") + +pfs = section:taboption("general", ListValue, "pfs", translate("Perfect Forward Secrecy")) +dh_group:value("server") +dh_group:value("nopfs") +dh_group:value("dh1") +dh_group:value("dh2") +dh_group:value("dh5") + +natt_mode = section:taboption("general", ListValue, "natt_mode", translate("NAT-T Mode") +natt_mode:value("natt", translate("RFC3947 NAT-T mode")) +natt_mode:value("none", translate("No NAT-T")) +natt_mode:value("force-natt", translate("Force use of NAT-T") +natt_mode:value("cisco-udp", translate("Cisco UDP encapsulation") + +enable_no_enc = section:taboption("general", Flag, "enable_no_enc", + translate("Disable Encryption"), + translate("If checked, encryption is disabled")) +enable_no_enc.default = enable_no_enc.disabled + +enable_single_des = section:taboption("general", Flag, "enable_single_des", + translate("Enable Single DES"), + translate("If checked, 1DES is enaled")) +enable_no_enc.default = enable_single_des.disabled + +dpd_idle = section.taboption("general", Value, "dpd_idle", translate("DPD Idle Timeout")) +dpd_idle.datatype = "uinteger" +dpd.placeholder = "600" + +ifname = section:taboption("general", Value, "target_network", translate("Target network")) +port.placeholder = "0.0.0.0/0" +port.datatype = "network" + diff --git a/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua b/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua new file mode 100644 index 000000000..f4cae0bd2 --- /dev/null +++ b/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua @@ -0,0 +1,46 @@ +-- Copyright 2015 Daniel Dickinson +-- Licensed to the public under the Apache License 2.0. + +local netmod = luci.model.network +local interface = luci.model.network.interface +local proto = netmod:register_protocol("vpnc") + +function proto.get_i18n(self) + return luci.i18n.translate("VPNC (CISCO 3000 (and others) VPN)") +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 "vpnc" +end + +function proto.is_installed(self) + return nixio.fs.access("/lib/netifd/proto/vpnc.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") + -- cgit v1.2.3