Updated openvpn app to work with current openvpn package
authorVladimir Ulrich <admin@evl.su>
Mon, 14 Jul 2014 02:03:32 +0000 (06:03 +0400)
committerVladimir Ulrich <admin@evl.su>
Fri, 10 Oct 2014 15:59:35 +0000 (19:59 +0400)
Signed-off-by: Vladimir Ulrich <admin@evl.su>
applications/luci-openvpn/luasrc/model/cbi/openvpn-advanced.lua
applications/luci-openvpn/luasrc/model/cbi/openvpn-basic.lua
applications/luci-openvpn/luasrc/model/cbi/openvpn.lua
applications/luci-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
applications/luci-openvpn/root/etc/config/openvpn_recipes
contrib/package/luci-addons/Makefile

index eee08eb..f47af6d 100644 (file)
@@ -88,7 +88,7 @@ local knownParams = {
 
                { ListValue,    "mtu_disc",                                             { "yes", "maybe", "no" },                                                                               translate("Enable Path MTU discovery") },
                { Flag,                 "mtu_test",                                             0,                                                                                                                              translate("Empirically measure MTU") },
-               { Flag,                 "comp_lzo",                                             0,                                                                                                                              translate("Use fast LZO compression") },
+               { ListValue,                    "comp_lzo",                             { "yes", "no", "adaptive" },                                                                                                                            translate("Use fast LZO compression") },
                { Flag,                 "comp_noadapt",                                 0,                                                                                                                              translate("Don't use adaptive lzo compression"),        { comp_lzo=1 } },
                { Value,                "link_mtu",                                             1500,                                                                                                                   translate("Set TCP/UDP MTU") },
                { Value,                "tun_mtu",                                              1500,                                                                                                                   translate("Set tun/tap device MTU") },
index dc1114b..92f7cb5 100644 (file)
@@ -32,7 +32,7 @@ local basicParams = {
        { Value,"server_bridge","192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254", translate("Configure server bridge") },
        { Flag,"nobind",0, translate("Do not bind to local address and port") },
 
-       { Flag,"comp_lzo",0, translate("Use fast LZO compression") },
+       { ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") },
        { Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
 
        { ListValue,"proto",{ "udp", "tcp" }, translate("Use protocol") },
index 0fa60fd..2f865e0 100644 (file)
@@ -15,6 +15,8 @@ $Id$
 local fs  = require "nixio.fs"
 local sys = require "luci.sys"
 local uci = require "luci.model.uci".cursor()
+local testfullps = luci.sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have
+local psstring = (string.len(testfullps)>0) and  "ps w" or  "ps axfw" --set command we use to get pid
 
 local m = Map("openvpn", translate("OpenVPN"))
 local s = m:section( TypedSection, "openvpn", translate("OpenVPN instances"), translate("Below is a list of configured OpenVPN instances and their current state") )
@@ -52,8 +54,11 @@ function s.create(self, name)
                luci.cbi.CREATE_PREFIX .. self.config .. "." ..
                self.sectiontype .. ".select"
        )
-
-       if name and not name:match("[^a-zA-Z0-9_]") then
+       name = luci.http.formvalue(
+               luci.cbi.CREATE_PREFIX .. self.config .. "." ..
+               self.sectiontype .. ".text"
+       )
+       if string.len(name)>3 and not name:match("[^a-zA-Z0-9_]") then
                uci:section(
                        "openvpn", "openvpn", name,
                        uci:get_all( "openvpn_recipes", recipe )
@@ -74,7 +79,7 @@ s:option( Flag, "enabled", translate("Enabled") )
 
 local active = s:option( DummyValue, "_active", translate("Started") )
 function active.cfgvalue(self, section)
-       local pid = fs.readfile("/var/run/openvpn-%s.pid" % section)
+       local pid = sys.exec("%s | grep %s | grep openvpn | grep -v grep | awk '{print $1}'" % { psstring,section} )
        if pid and #pid > 0 and tonumber(pid) ~= nil then
                return (sys.process.signal(pid, 0))
                        and translatef("yes (%i)", pid)
@@ -85,8 +90,11 @@ end
 
 local updown = s:option( Button, "_updown", translate("Start/Stop") )
 updown._state = false
+updown.redirect = luci.dispatcher.build_url(
+       "admin", "services", "openvpn"
+)
 function updown.cbid(self, section)
-       local pid = fs.readfile("/var/run/openvpn-%s.pid" % section)
+       local pid = sys.exec("%s | grep %s | grep openvpn | grep -v grep | awk '{print $1}'" % { psstring,section} )
        self._state = pid and #pid > 0 and sys.process.signal(pid, 0)
        self.option = self._state and "stop" or "start"
        return AbstractValue.cbid(self, section)
@@ -97,12 +105,15 @@ function updown.cfgvalue(self, section)
 end
 function updown.write(self, section, value)
        if self.option == "stop" then
-               luci.sys.call("/etc/init.d/openvpn down %s" % section)
+               local pid = sys.exec("%s | grep %s | grep openvpn | grep -v grep | awk '{print $1}'" % { psstring,section} )
+               sys.process.signal(pid,15)
        else
-               luci.sys.call("/etc/init.d/openvpn up %s" % section)
+               luci.sys.call("/etc/init.d/openvpn start %s" % section)
        end
+       luci.http.redirect( self.redirect )
 end
 
+
 local port = s:option( DummyValue, "port", translate("Port") )
 function port.cfgvalue(self, section)
        local val = AbstractValue.cfgvalue(self, section)
index cedac51..0166de7 100644 (file)
@@ -1,6 +1,6 @@
 <div class="cbi-section-create">
        <% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
-       <input type="text" class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>" />
+       <input type="text" class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" />
        <select class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
        <%- for k, v in luci.util.kspairs(self.add_select_options) do %>
                <option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
index 50e328a..1b394df 100644 (file)
@@ -8,10 +8,9 @@ config openvpn_recipe server_tun_ptp
        option ifconfig                 "10.0.0.1 10.0.0.2"
        option secret                   "shared-secret.key"
        option keepalive                "10 60"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option verb                     "3"
         option mssfix                  "1420"
-       option management               "127.0.0.1 31194"
 
 #
 # Routed point-to-point client
@@ -24,9 +23,8 @@ config openvpn_recipe client_tun_ptp
        option ifconfig                 "10.0.0.2 10.0.0.1"
        option secret                   "shared-secret.key"
        option nobind                   "1"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option verb                     "3"
-       option management               "127.0.0.1 31194"
 
 #
 # Routed multi-client server
@@ -41,10 +39,9 @@ config openvpn_recipe server_tun
        option key                      "server.key"
        option dh                       "dh1024.pem"
        option keepalive                "10 60"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option verb                     "3"
         option mssfix                  "1420"
-       option management               "127.0.0.1 31194"
 
 #
 # Routed client
@@ -57,14 +54,13 @@ config openvpn_recipe client_tun
        list   remote                   "vpnserver.example.org"
        option pkcs12                   "my_client.p12"
        option remote_cert_tls          "server"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option nobind                   "1"
        option persist_key              "1"
        option persist_tun              "1"
        option verb                     "3"
        option reneg_sec                "0"
        option float                    "1"
-       option management               "127.0.0.1 31194"
 
 #
 # Multi-client ethernet bridge server
@@ -79,10 +75,9 @@ config openvpn_recipe server_tap_bridge
        option key                      "server.key"
        option dh                       "dh1024.pem"
        option keepalive                "10 60"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option verb                     "3"
         option mssfix                  "1420"
-       option management               "127.0.0.1 31194"
 
 #
 # Ethernet bridge client
@@ -98,10 +93,10 @@ config openvpn_recipe client_tap_bridge
        option key                      "my_client.key"
        option dh                       "dh1024.pem"
        option remote_cert_tls          "server"
-       option comp_lzo                 "1"
+       option comp_lzo                 "yes"
        option nobind                   "1"
        option persist_key              "1"
        option verb                     "3"
        option reneg_sec                "0"
        option float                    "1"
-       option management               "127.0.0.1 31194"
+
index 0838ed0..ac31b63 100644 (file)
@@ -181,7 +181,7 @@ $(eval $(call application,ushare,uShare - UPnP A/V & DLNA Media Server,ushare))
 $(eval $(call application,hd-idle,Hard Disk Idle Spin-Down module,hd-idle))
 $(eval $(call application,tinyproxy,Tinyproxy - HTTP(S)-Proxy configuration,tinyproxy))
 $(eval $(call application,polipo,LuCI Support for the Polipo Proxy,polipo))
-$(eval $(call application,openvpn,LuCI Support for OpenVPN,openvpn @BROKEN))
+$(eval $(call application,openvpn,LuCI Support for OpenVPN,openvpn))
 $(eval $(call application,p2pblock,LuCI Support for the Freifunk P2P-Block addon,luci-app-firewall freifunk-p2pblock))
 $(eval $(call application,multiwan,LuCI Support for the OpenWrt MultiWAN agent,luci-app-firewall multiwan))
 $(eval $(call application,wol,LuCI Support for Wake-on-LAN,etherwake))