diff options
Diffstat (limited to 'applications/luci-app-openvpn/luasrc')
6 files changed, 58 insertions, 50 deletions
diff --git a/applications/luci-app-openvpn/luasrc/controller/openvpn.lua b/applications/luci-app-openvpn/luasrc/controller/openvpn.lua index 55c29d1c2a..2d57e8d3ad 100644 --- a/applications/luci-app-openvpn/luasrc/controller/openvpn.lua +++ b/applications/luci-app-openvpn/luasrc/controller/openvpn.lua @@ -5,7 +5,7 @@ module("luci.controller.openvpn", package.seeall) function index() - entry( {"admin", "vpn", "openvpn"}, cbi("openvpn"), _("OpenVPN") ) + entry( {"admin", "vpn", "openvpn"}, cbi("openvpn"), _("OpenVPN") ).acl_depends = { "luci-app-openvpn" } entry( {"admin", "vpn", "openvpn", "basic"}, cbi("openvpn-basic"), nil ).leaf = true entry( {"admin", "vpn", "openvpn", "advanced"}, cbi("openvpn-advanced"), nil ).leaf = true entry( {"admin", "vpn", "openvpn", "file"}, form("openvpn-file"), nil ).leaf = true diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua index 1971400b80..04934c8c11 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua @@ -6,12 +6,13 @@ local fs = require("nixio.fs") local knownParams = { -- --Widget - -- Name + -- ID + -- Display name -- Default(s) -- Description -- Option(s) - { "Service", { + { "service", translate("Service"), { -- initialisation and daemon options { ListValue, "verb", @@ -128,7 +129,7 @@ local knownParams = { { Value, "ipchange", "/usr/bin/ovpn-ipchange", - translate("Execute shell command on remote ip change"), + translate("Execute shell command on remote IP change"), { mode="p2p" } }, { DynamicList, "setenv", @@ -164,7 +165,7 @@ local knownParams = { translate("Enable a compression algorithm") }, } }, - { "Networking", { + { "networking", translate("Networking"), { -- socket config { ListValue, "mode", @@ -173,7 +174,7 @@ local knownParams = { { Value, "local", "0.0.0.0", - translate("Local host name or ip address") }, + translate("Local host name or IP address") }, { Value, "port", 1194, @@ -364,7 +365,7 @@ local knownParams = { {dev_type="tun" } }, } }, - { "VPN", { + { "vpn", translate("VPN"), { { Value, "server", "10.200.200.0 255.255.255.0", @@ -497,8 +498,7 @@ local knownParams = { { DynamicList, "remote", "1.2.3.4", - translate("Remote host name or ip address"), - { client="1" } }, + translate("Remote host name or IP address") }, { Flag, "remote_random", 0, @@ -561,7 +561,7 @@ local knownParams = { translate("Specify whether the client is required to supply a valid certificate") }, } }, - { "Cryptography", { + { "cryptography", translate("Cryptography"), { { FileUpload, "secret", "/etc/openvpn/secret.key", @@ -659,7 +659,7 @@ local knownParams = { { FileUpload, "dh", "/etc/easy-rsa/keys/dh1024.pem", - translate("Diffie Hellman parameters") }, + translate("Diffie-Hellman parameters") }, { FileUpload, "cert", "/etc/easy-rsa/keys/some-client.crt", @@ -679,25 +679,27 @@ local knownParams = { { DynamicList, "tls_cipher", { - "DHE-RSA-AES256-SHA", - "DHE-DSS-AES256-SHA", - "AES256-SHA", - "EDH-RSA-DES-CBC3-SHA", - "EDH-DSS-DES-CBC3-SHA", - "DES-CBC3-SHA", - "DHE-RSA-AES128-SHA", - "DHE-DSS-AES128-SHA", - "AES128-SHA", - "RC4-SHA", - "RC4-MD5", - "EDH-RSA-DES-CBC-SHA", - "EDH-DSS-DES-CBC-SHA", - "DES-CBC-SHA", - "EXP-EDH-RSA-DES-CBC-SHA", - "EXP-EDH-DSS-DES-CBC-SHA", - "EXP-DES-CBC-SHA", - "EXP-RC2-CBC-MD5", - "EXP-RC4-MD5" + "TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384", + "TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384", + "TLS-DHE-RSA-WITH-AES-256-GCM-SHA384", + "TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256", + "TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256", + "TLS-DHE-RSA-WITH-CHACHA20-POLY1305-SHA256", + "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256", + "TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256", + "TLS-DHE-RSA-WITH-AES-128-GCM-SHA256", + "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384", + "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384", + "TLS-DHE-RSA-WITH-AES-256-CBC-SHA256", + "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256", + "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256", + "TLS-DHE-RSA-WITH-AES-128-CBC-SHA256", + "TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA", + "TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA", + "TLS-DHE-RSA-WITH-AES-256-CBC-SHA", + "TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA", + "TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA", + "TLS-DHE-RSA-WITH-AES-128-CBC-SHA" }, translate("TLS cipher") }, { DynamicList, @@ -798,6 +800,7 @@ local knownParams = { local cts = { } local params = { } +local title = "" local m = Map("openvpn") m.redirect = luci.dispatcher.build_url("admin", "vpn", "openvpn") @@ -807,22 +810,23 @@ local p = m:section( SimpleSection ) p.template = "openvpn/pageswitch" p.mode = "advanced" p.instance = arg[1] -p.category = arg[2] or "Service" +p.category = arg[2] or knownParams[1][1] for _, c in ipairs(knownParams) do - cts[#cts+1] = c[1] - if c[1] == p.category then params = c[2] end + cts[#cts+1] = { id = c[1], title = c[2] } + if c[1] == p.category then + title = c[2] + params = c[3] + end end p.categories = cts local s = m:section( - NamedSection, arg[1], "openvpn", - translate("%s" % arg[2]) + NamedSection, arg[1], "openvpn", title ) -s.title = translate("%s" % arg[2]) s.addremove = false s.anonymous = true @@ -839,6 +843,8 @@ for _, option in ipairs(params) do o.value = option[3] elseif option[1] == FileUpload then + o.initial_directory = "/etc/openvpn" + function o.cfgvalue(self, section) local cfg_val = AbstractValue.cfgvalue(self, section) @@ -863,7 +869,7 @@ for _, option in ipairs(params) do function o.remove(self, section) local cfg_val = AbstractValue.cfgvalue(self, section) local txt_val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - + if cfg_val and fs.access(cfg_val) and txt_val == "" then fs.unlink(cfg_val) end diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua index 54f082a1fa..980238cb67 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua @@ -58,7 +58,7 @@ local basicParams = { { DynamicList, "remote", "vpnserver.example.org", - translate("Remote host name or ip address") }, + translate("Remote host name or IP address") }, { FileUpload, "secret", "/etc/openvpn/secret.key", @@ -78,7 +78,7 @@ local basicParams = { { FileUpload, "dh", "/etc/easy-rsa/keys/dh1024.pem", - translate("Diffie Hellman parameters") }, + translate("Diffie-Hellman parameters") }, { FileUpload, "cert", "/etc/easy-rsa/keys/some-client.crt", @@ -128,6 +128,8 @@ for _, option in ipairs(basicParams) do o.value = option[3] elseif option[1] == FileUpload then + o.initial_directory = "/etc/openvpn" + function o.cfgvalue(self, section) local cfg_val = AbstractValue.cfgvalue(self, section) diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua index 9164f7f600..bf8e26afe6 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua @@ -159,9 +159,9 @@ function proto.cfgvalue(self, section) if not val then local file_cfg = self.map:get(section, "config") if file_cfg and fs.access(file_cfg) then - val = sys.exec("awk '{if(match(tolower($1),/^proto$/)&&match(tolower($2),/^udp[46]*$|^tcp[46]*-server$|^tcp[46]*-client$/)){cnt++;printf tolower($2);exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg) + val = sys.exec("awk '{if(match(tolower($1),/^proto$/)&&match(tolower($2),/^udp[46]*$|^tcp[a-z46-]*$/)){cnt++;print tolower(substr($2,1,3));exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg) if val == "-" then - val = sys.exec("awk '{if(match(tolower($1),/^remote$/)&&match(tolower($4),/^udp[46]*$|^tcp[46]*-server$|^tcp[46]*-client$/)){cnt++;printf $4;exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg) + val = sys.exec("awk '{if(match(tolower($1),/^remote$/)&&match(tolower($4),/^udp[46]*$|^tcp[a-z46-]*$/)){cnt++;print tolower(substr($4,1,3));exit}}END{if(cnt==0)printf \"-\"}' " ..file_cfg) end end end diff --git a/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm b/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm index 3e83df20a2..60f9e8e288 100644 --- a/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm +++ b/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm @@ -3,7 +3,7 @@ //<![CDATA[ function vpn_add() { - var vpn_name = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,''); + var vpn_name = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s\.!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,''); var vpn_template = div_add.querySelector("#instance_template").value; var form = document.getElementsByName('cbi')[0]; @@ -31,7 +31,7 @@ function vpn_upload() { - var vpn_name = div_upload.querySelector("#instance_name2").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,''); + var vpn_name = div_upload.querySelector("#instance_name2").value.replace(/[^\x00-\x7F]|[\s\.!@#$%^&*()\-+=\[\]{};':"\\|,<>\/?]/g,''); var vpn_file = document.getElementById("ovpn_file").value; var form = document.getElementsByName('cbi')[0]; @@ -84,12 +84,12 @@ <select id="instance_template" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select"> <option value="" selected="selected" disabled="disabled"><%:Select template ...%></option> <%- for k, v in luci.util.kspairs(self.add_select_options) do %> - <option value="<%=k%>"><%=luci.util.pcdata(v)%></option> + <option value="<%=k%>"><%=luci.xml.pcdata(v)%></option> <% end -%> </select> </div> <div class="td left"> - <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br /> + <input class="btn cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br /> </div> </div> <h4><%:OVPN configuration file upload%></h4> @@ -101,7 +101,7 @@ <input type="file" name="ovpn_file" id="ovpn_file" accept="application/x-openvpn-profile,.ovpn" /> </div> <div class="td left"> - <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" /> + <input class="btn cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" /> </div> </div> </div> diff --git a/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm b/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm index 7d88b844ab..0792763085 100644 --- a/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm +++ b/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm @@ -12,17 +12,17 @@ <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%> </h3> <% if self.mode == "basic" then %> - <a href="<%=url('admin/vpn/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration%> »</a><p/> + <a href="<%=url('admin/vpn/openvpn/advanced', self.instance)%>"><%:Switch to advanced configuration%> »</a><p/> <hr /> <% elseif self.mode == "advanced" then %> <a href="<%=url('admin/vpn/openvpn/basic', self.instance)%>"><%:Switch to basic configuration%> »</a><p/> <hr /> <%:Configuration category%>: <% for i, c in ipairs(self.categories) do %> - <% if c == self.category then %> - <strong><%=translate(c)%></strong> + <% if c.id == self.category then %> + <strong><%=c.title%></strong> <% else %> - <a href="<%=luci.dispatcher.build_url("admin", "vpn", "openvpn", "advanced", self.instance, c)%>"><%=translate(c)%></a> + <a href="<%=luci.dispatcher.build_url("admin", "vpn", "openvpn", "advanced", self.instance, c.id)%>"><%=c.title%></a> <% end %> <% if next(self.categories, i) then %>|<% end %> <% end %> |