diff options
Diffstat (limited to 'modules/luci-base/luasrc')
-rw-r--r-- | modules/luci-base/luasrc/cbi/datatypes.lua | 42 | ||||
-rw-r--r-- | modules/luci-base/luasrc/dispatcher.lua | 17 | ||||
-rw-r--r-- | modules/luci-base/luasrc/http.lua | 10 | ||||
-rw-r--r-- | modules/luci-base/luasrc/model/firewall.lua | 6 | ||||
-rw-r--r-- | modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm | 5 |
5 files changed, 51 insertions, 29 deletions
diff --git a/modules/luci-base/luasrc/cbi/datatypes.lua b/modules/luci-base/luasrc/cbi/datatypes.lua index cf56566287..df23aaf135 100644 --- a/modules/luci-base/luasrc/cbi/datatypes.lua +++ b/modules/luci-base/luasrc/cbi/datatypes.lua @@ -132,38 +132,40 @@ function ip6prefix(val) return ( val and val >= 0 and val <= 128 ) end -function ipmask(val) - return ipmask4(val) or ipmask6(val) +function cidr4(val) + local ip, mask = val:match("^([^/]+)/([^/]+)$") + + return ip4addr(ip) and ip4prefix(mask) end -function ipmask4(val) +function cidr6(val) local ip, mask = val:match("^([^/]+)/([^/]+)$") - local bits = tonumber(mask) - if bits and (bits < 0 or bits > 32) then - return false - end + return ip6addr(ip) and ip6prefix(mask) +end - if not bits and mask and not ip4addr(mask) then - return false - end +function ipnet4(val) + local ip, mask = val:match("^([^/]+)/([^/]+)$") - return ip4addr(ip or val) + return ip4addr(ip) and ip4addr(mask) end -function ipmask6(val) +function ipnet6(val) local ip, mask = val:match("^([^/]+)/([^/]+)$") - local bits = tonumber(mask) - if bits and (bits < 0 or bits > 128) then - return false - end + return ip6addr(ip) and ip6addr(mask) +end - if not bits and mask and not ip6addr(mask) then - return false - end +function ipmask(val) + return ipmask4(val) or ipmask6(val) +end + +function ipmask4(val) + return cidr4(val) or ipnet4(val) or ip4addr(val) +end - return ip6addr(ip or val) +function ipmask6(val) + return cidr6(val) or ipnet6(val) or ip6addr(val) end function ip6hostid(val) diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index 1b684aa79c..e4f77f18d8 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -219,10 +219,19 @@ function dispatch(request) local lang = conf.main.lang or "auto" if lang == "auto" then local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" - for lpat in aclang:gmatch("[%w-]+") do - lpat = lpat and lpat:gsub("-", "_") - if conf.languages[lpat] then - lang = lpat + for aclang in aclang:gmatch("[%w_-]+") do + local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$") + if country and culture then + local cc = "%s_%s" %{ country, culture:lower() } + if conf.languages[cc] then + lang = cc + break + elseif conf.languages[country] then + lang = country + break + end + elseif conf.languages[aclang] then + lang = aclang break end end diff --git a/modules/luci-base/luasrc/http.lua b/modules/luci-base/luasrc/http.lua index 8795dfc4b2..9cc9857867 100644 --- a/modules/luci-base/luasrc/http.lua +++ b/modules/luci-base/luasrc/http.lua @@ -224,7 +224,15 @@ function write(content, src_err) header("Cache-Control", "no-cache") header("Expires", "0") end - + if not context.headers["x-frame-options"] then + header("X-Frame-Options", "SAMEORIGIN") + end + if not context.headers["x-xss-protection"] then + header("X-XSS-Protection", "1; mode=block") + end + if not context.headers["x-content-type-options"] then + header("X-Content-Type-Options", "nosniff") + end context.eoh = true coroutine.yield(3) diff --git a/modules/luci-base/luasrc/model/firewall.lua b/modules/luci-base/luasrc/model/firewall.lua index 5573a9b86c..feff0855c4 100644 --- a/modules/luci-base/luasrc/model/firewall.lua +++ b/modules/luci-base/luasrc/model/firewall.lua @@ -498,11 +498,13 @@ function forwarding.dest(self) end function forwarding.src_zone(self) - return zone(self:src()) + local z = zone(self:src()) + return z.sid and z end function forwarding.dest_zone(self) - return zone(self:dest()) + local z = zone(self:dest()) + return z.sid and z end diff --git a/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm b/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm index 2a433b5696..546fd8e85a 100644 --- a/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm +++ b/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm @@ -43,11 +43,12 @@  ⇒  <% for _, fwd in ipairs(zone:get_forwardings_by("src")) do fz = fwd:dest_zone() - empty = false %> + if fz then + empty = false %> <label class="zonebadge" style="background-color:<%=fz:get_color()%>"> <strong><%=fz:name()%></strong> </label>  - <% end %> + <% end end %> <% if empty then %> <label class="zonebadge zonebadge-empty"> <strong><%=zone:forward():upper()%></strong> |