Merge the assoclist code of the status overview and wireless overview pages
into a single shared partial template.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Globally cleanup template markup to support responsive design changes in
OpenWrt theme.
Rework handling of dynamic status tables, consolidate hand-written markup,
fix small render bugs in various places and annotate tables where needed.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Defer the start of the queue poll loop until the document has been loaded.
This allows all XHR.poll() invocations on the page to register their
handlers before the first batch of requests is made.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
"Content-Type: text/plain; charset=UTF-8" was wrote twice in each
of base.po and firewall.po, and one was an incorrect place which
was the cause of the errors.
And, The escape in abbr HTML tag was incorrect, so I fixed it.
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
If you delete all ssh keys in the textarea then LuCI will rais an error.
So if you added one ssh-key to the textarea and then you want to delete them
again that is not possbile in LuCI.
To fix this remove "rmempty" attribute and add a remove function which will
called if the textarea is empty.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Merge two italian translations suggested in #1870 and add back two missing
dots accidentially removed from the translations in a previous commit.
Fixes: 588c8618b ("luci-mod-admin-full: fix translation interpolation in JS confirm() calls")
Suggested-by: Ansuel Smith <ansuelsmth@gmail.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use luci.http.write_json() in conjunction with translate() to write out
unescaped translation strings in a manner suitable for interpolation inside
JavaScript.
Fixes#1870
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Also switch one usage of raw '<%_ ... %>' interpolation to '<%: ... %>' in
order to avoid issues with translations using apostrophes.
Globally resnyc translations after the fix.
Fixes#1866.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Also switch the weekday and monthday lists in the firewall rule details to
cbi dropdowns, vastly uncluttering the form.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit introduces the required code for a new, markup based dropdown
widget which can be used as a styleable alternative to select boxes or
radio/checkbox button groups.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
AbstractValue descendants may now specify a new optional property `alias`
which refers to a uci option to read/write/remove that differs from the
option name itself.
This is mainly useful for widgets that are toggled based on dependencies,
e.g. for alternating between SingleValue and MultiValue, but which are
intented to write into the same uci option.
Such a setup was previously possible already by overriding the .cfgvalue(),
.write() and .remove() callbacks with custom implementations, but that
required a lot of boiler plate code and was rather fragile.
With the `alias` property, CBI now takes care of the details and tracks
aliased fields within a section accordingly.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Properly serialize option delete changelogs
- Do not perform a section create if a nil value is passed to set()
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Since the switch to ubus uci operations we do not have a local application-
side cursor cache anymore, instead uci operations happen synchronously in
the rpcd backend server.
This may cause cbi section reorder operations involving multiple elements
to fail, because anonymous section hashes may change due to rehashing
between consecutive ubus uci reorder calls.
In order to avoid that problem, use the ubus uci batch reorder extension,
which allows to pass a complete (or partial) list of section ids in the
desired order in one call, bypassing the volatile section id problem.
Fixes#1844.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Sync our coxpcall() implementation to the newest upstream version in order to
get access to the inner backtrace information and propagate these traces to
the browser in luci.dispatcher.dispatch().
This should make tracking down runtime errors much easier.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
After applying uci configuration, a full map reload is required in many
cases as the anonymous section identifiers might have been rehashed, causing
the rendered map to go out of sync.
To avoid that, add both a full page overlay preventing further page
interaction and let the apply widget forcibly reload the current view once
the operation is complete.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use a more compact flex layout instead of the tabular display.
Also rename "WAN status" to "Upstream" to avoid future confusion about
wan interfaces vs. defaultroute interfaces.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This fix the strange redirect link, a bug with uwsgi where the controller
is empty and a bug with the revert page showing the apply content empty.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
[drop unrelated revert.html template change]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Referring to this, #1698 , we add architecture info and we show Unknown instead of ?. This is usefull if someone needs to install opkg packages manually.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Mostly convert HTML tables to div based markup to allow for easier styling
in the future. Also change JS accessor code accordingly.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
http.getenv("SCRIPT_NAME") fail if it's not provided. This can happen in the login screen when we don't have any script to load.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Do override the iface section id upon commit to avoid clobbering the resulting
configuration. The manual config sync is not needed anymore after switching
to uncached ubus uci operations.
Fixes#1770.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
On certain environments, mainly with the embedded uhttpd interpreter, the
luci.config class cannot be loaded due to a circular dependency with the
luci.model.uci class.
Break up the dependency by deferring the loading of luci.config in
luci.model.uci until it is actually needed.
Fixes#1803, FS#1553.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
A simple scan of the code indicates that currently no code in the repo
is accessing the sysauth= cookie
Closesopenwrt/luci#1555
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
The check "supports_reset" only covers /proc/mtd partitions. If we have
this the commands checks for names like ubi or rootfs_data. If this is
found the system is possible for a factory reset. But on x86 the
situation is different. We have no /proc/mtd partitions because this
system do not use a bare metall flash.
To solve this issue check if we have an overlay and if so we could do a
factory reset. This could be applied for system which uses bare metal
flash and system which uses FTL or harddisks.
Jffs2reset is the current command used for factory reset. It will try
to find volume "rootfs_data" and if it's mounted will delete all files
under directory /overlay
luci-mod-admin-mini also has check for reset available, but we leave it
alone for now as it uses "mtd -r erase rootfs_data"
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
If log configuration get changed in uci system no new values are applied
until reboot. Add /etc/init.d/log reload to exec option will solve this
issue.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Ship an /etc/init.d/ucitrack for spawning a virtual service with the sole
purpose to track the configurations and dependencies formerly handled by
luci-reload.
Once all LuCI supported services ship with procd compatible init scripts,
the uci track support can be dropped.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- localize variables
- get rid of redirects breaking apply workflow
- auto-adjust unusable channels when switching country
- use apply/rollback workflow when enabling/disabling networks
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Switch to rpcd based uci apply/rollback workflow which helps to avoid soft-
bricking devices by requiring an explicit confirmation call after config
apply.
When a user now clicks "Save & Apply", LuCI first issues a call to uci apply
which commits and reloads configuration, then goes into a polling countdown
mode where it repeatedly attempts to call uci confirm.
If the committed configuration is sane, the confirm call will go through and
cancel rpcd's pending rollback timer.
If the configuration change leads to a loss of connectivity (e.g. due to bad
firewall rules or similar), the rollback mechanism will kick in after the
timeout and revert configuration files and pending changes to the pre-apply
state.
In order to cover such rare cases where a lost of connectivity is expected
and desired, the user is offered an "unchecked" apply option after timing
out, which allows committing and applying the changes anyway, without the
extra safety checks.
As a consequence of this change, the luci-reload mechanism is now completely
unsused since rpcd uses ubus config reload signals to reload affected
services, which means that only procd-enabled services will receive proper
reload treatment with the new workflow.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The previous attempt to fix authentication broke login functionality so
rework the code once again, this time with referencing helper functions
directly via the controller scope.
Furthermore, properly expose luci.sys.wifi.getiwinfo() and luci.ip.
For getiwinfo(), the RPC wrapped function accepts one further optional
parameter specifying the operation to invoke on the iwinfo instance.
If no operation is specified, a summary object containing all info
without country and scan list is returned.
Example to obtain iwinfo summary object:
curl --cookie sysauth=... \
--data '{"method": "wifi.getiwinfo", "params": ["wlan0"]}' \
"http://192.168.1.1/cgi-bin/luci/rpc/sys"
Example to obtain iwinfo scan list:
curl --cookie sysauth=... \
--data '{"method": "wifi.getiwinfo", "params": ["wlan0", "scanlist"]}' \
"http://192.168.1.1/cgi-bin/luci/rpc/sys"
The exposed luci.ip class uses a similar approach to allow invoking
instance methods on cidr objects. The new(), IPv4(), IPv6() and MAC()
constructors accept two further optional arguments, with the first
specifying the instance method to invoke and the second the value to
pass to the instance method.
Example to get list of IPv4 neighbours (ARP entries):
curl --cookie sysauth=... \
--data '{"method": "neighbors", "params": [{"family": 4}]}' \
"http://192.168.1.1/cgi-bin/luci/rpc/ip"
Example to add 100 hosts to a network address:
curl --cookie sysauth=... \
--data '{"method": "IPv4", "params": ["192.168.0.1", "255.255.255.0", "add", 1000]}' \
"http://192.168.1.1/cgi-bin/luci/rpc/ip"
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Internet Explorer 11 requires the timeout to be applied after the open()
call, otherwise an invlaid state exception will be raised
Fixes aa6c97154 ("luci-base: extend xhr.js")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Show the correct wifi chip identification in case iwinfo
recognises the chip.
So far the wifidev.get_i18n function has practically always
returned just "Generic", but use iwinfo.hardware_name to
fetch the name.
In case iwinfo returns the default "Generic MAC80211", there
is a double 80211 in the final string, which is a cosmetic bug.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Localize the `authenticatior()` and `session_retrieve()` functions into the
`index()` function scope so that they're retained when extracting the
function into the dispatcher bytecode cache.
Also allow access to the global scope since upvalues do not work reliably
due to the out-of-context byte code caching of index functions.
Fixes https://github.com/openwrt/luci/issues/1300#issuecomment-381352765
Fixes feefc600e ("luci-mod-rpc: rework authentication and session handling")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
When reading the configured mac address of the static lease, filter it
through luci.ip.checkmac() to canonicalize and uppercase the value for
mapping it against the combo box host hints.
Fixes#1772.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Support a new boolean property `cors` which - if set to true - causes the
dispatcher to positively answer CORS OPTIONS requests after authentication
without actually running the dispatching target.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Decode the HTTP message bodies of any request carrying a Content-Length
header, not just those in POST requests.
This allows handling parameters in other methods, OPTIONS in particular.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Ensure that the (table) length of a file upload value has nonzero length
by initializing the first table index with the file name.
This fixes tests in the form
x = luci.http.formvalue(...)
if x and #x > 0 then ... end
Fixes#1763.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Ship an ACL definition for granting full read/write access to uci
configuration files via ubus rpc. This is a precondition for enabling
uci session isolation later on.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Restore the old luci.http behaviour of converting repeated POST params into
single tables holding all values instead of letting each repeated parameter
overwrite the value of the preceeding one.
Fixes, among other things, the handling of CBI dynamic list values.
Fixes#1752
Fixes 59dea0230 ("luci-base: switch to lucihttp based POST data processing")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce luci.model.uci.set_session_id() and luci.model.uci.get_session_id()
to set and get the effective session ID respectively.
When a session ID is set, it is sent as `ubus_rpc_session` attribute to rpcd,
causing it to use per-session change directories, isolating LuCI changes from
the global system uci state.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
LuCI itself now uses ubus calls to interact with uci configuration while
the remaining direct libuci-lua users have been updated to either depend
on the binding library or to use luci.model.uci.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Also adjust the dependencies of components depending on these classes and
flatten the namespace from luci.http.protocol.* to luci.http.*
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
With only the decoder routines remaining in luci.http.protocol, it makes no
sense to keep the low level protocol class around, so fold the remaining code
into the central luci.http class.
Also adjust the few direct users of luci.http.protocol accordingly.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Rewrite getcookie() to use liblucihttp header value parsing
- Rewrite setfilehandler() to use local variables and have cleaner code
- Fix build_querystring() to actually *en*code the given params
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This reverts commit ad7dc4a492.
Since we're using liblucihttp now, that library is the appropriate place to
add such decoding helper functions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use the liblucihttp provided multipart and x-www-urlencoded body parsers
and drop the old Lua parsing code.
The C based data parsers are way faster than their old Lua counterparts
while producing less string garbage and more correct results.
While refactoring the luci.http.protocol code, also drop unused functions
and dead code, heavily reducing the module size.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This 404 error template rendering has been broken for a long time due to bad
function environment level in luci.template when invoking the rendering from
the toplevel dispatcher context.
Fix this issue by adding a local function indirection, essentially adding an
additional stack frame.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Instead of attempting to access the request environment directly (which does
not work anyway using the CGI SGI), use the already sanitized
dispatcher.context.request property to print out the not found url.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
It is possible to inject unescaped markup using a double encoded null byte
via PATH_INFO on certain leaf nodes.
Since there is no legitimate reason to handle null bytes in any part of the
requested url, simply skip over such bytes when parsing the PATH_INFO value.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The C implementations of urlencode and urldecode are considerably faster
than their current Lua counterparts.
On an AMD Geode system, the C variant is up to ten times faster when
decoding strings and up to four times faster when encoding them.
The functions are also designed to only allocate new strings when any
actual changes are required, otherwise they reuse the existing input
strings, reducing the overal memory usage somewhat.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The value of cachesize is hardcoded to 10000 in
dnsmasq-2.79/src/option.c to 10000 max
case 'c': /* --cache-size */
{
int size;
if (!atoi_check(arg, &size))
ret_err(gen_err);
else
{
/* zero is OK, and means no caching. */
if (size < 0)
size = 0;
else if (size > 10000)
size = 10000;
daemon->cachesize = size;
}
break;
}
Tested on Netgear R7800
Signed-off-by: Marc Benoit <marcb62185@gmail.com>
In the case of more powerful routers the default
cachesize value == 150 is too small and can easily
be extended to 1,000's and 10,000's of entries.
It makes sense to make it easy configurable.
Tested on Netgear R7800
Signed-off-by: Marc Benoit <marcb62185@gmail.com>
Fix whitespace, edit the proposed help text.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
The cbi class will react on an empty "cbi.submit" parameter as well so we
must intercept GET requests using that too.
Fixes 186e690c0 ("luci-base: dispatcher: reject non-POST requests with any cbi.submit value")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Update timezone data to 2018d
http://mm.icann.org/pipermail/tz-announce/2018-March/000049.html
In 2018, Palestine starts DST on March 24, not March 31.
Adjust future predictions accordingly.
Casey Station in Antarctica changed from +11 to +08
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Properly propagate the config parameter to the foreach iterator in order
to fix get_first() lookups.
Fixes#1734.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Prevent various XSS vectors by not interpolating field and path values
verbatim into script and html contexts.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a get_state() function which can be used to access legacy
uci state variables. This is usually not needed anymore but some
packages (mainly mwan3) still rely on this.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Make the hint message more explicit to tell users that the prefix size needs
to be specified as well.
Fixes#1559.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Use the ubus session.login procedure to authenticate credentials
- Fix testing of allowed usernames
- Support authentication via sysauth cookie
Fixes#1300, #1700, #1711
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Instead of passing the full LuCI request url, pass the relative resolved
request path instead and filter the received value through the lookup()
dispatcher function to only allow paths to actual internal pages.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The lookup function takes multiple, possibly malformed path fragments,
splits them on slashes, constructs a temporary path and looks up the
result in the dispatch tree.
If a matching node has been found, the function will return both the
node reference and the canonical url to it.
If no corresponding node is found, the function returns nil.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new function luci.util.shellquote() which encloses the given
string argument in single quotes and escapes any embedded single quote
characters.
This function is intended to be used when interpolating untrusted input
into shell commands.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Due to the fact that luci.model.cbi reacts on any "cbi.submit" value while
the dispatcher only required POST for cbi.submit == 1, the CSRF token
protection could be bypassed.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new template property FULL_REQUEST_URI which returns the full
canonicalized request URL built from SCRIPT_NAME, PATH_INFO and QUERY_STRING.
This new property is safer to use compared to using the raw REQUEST_URI CGI
environment variable directly as this value is essentially untrusted user
input which may contain embedded escaped slashes, double forward slashes and
other oddities allowing XSS exploitation or request redirection.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Some applications, e.g. dnsmasq, do not allow hostnames starting with an
underscore, therefor extend the existing hostname datatype validator with
a `strict` which disallows a leading underscore.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Switch luci.model.uci to use ubus uci calls instead of driving libuci-lua
directly.
This prepares support for more advanced features such as per-session change
isolation and configuration rollback on errors.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* enhance the checklib function in util.lua to check the 'fullpathexe'
as well, e.g. this fixes runtime errors on the dhcp/dns template in
environments without dnsmasq
Signed-off-by: Dirk Brenken <dev@brenken.org>
Use the new luci.ip MAC address facilities to parse and verify MAC addresses
in a common way, instead of relying on various ad-hoc solutions.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The /etc/ethers file may contain any number of white space characters
between the mac address and the IP/hostname field, so extend the pattern
to allow for that.
Man ethers(5) also states that the IP field may be a symbolic hostname,
so test whether the name is an IP address or hostname before adding it
to the hints structure.
Fixes#1674.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
If IPv6 prefix assignment is disabled, the "local-address" structure
might exist, but be empty which causes the adress formatting in the
network model class to bail out.
Verify the completeness of the "local-address" structure before using
it in order to avoid runtime errors.
Fixes#1657.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Keep the ifname and bridge state backup variables in /etc/config/luci to not
pollute /etc/config/network.
Fixes#1655.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
OpenWrt/LEDE introduced the "local-address" field a while back to expose the
effective local host address of the delegated prefix, so use that information
instead of assuming `[prefix]:1`.
Fixes#1484.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
A valid host ID as accepted by netifd must meet the following criteria:
- Is either one of the two special "random" or "eui64" strings
- Or is a valid IPv6 address according to inet_pton(AF_INET6)
- Has the first 64 bit set to zero
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
If no DSL SNR offset is set for the dsl line the first entry from the
dropdown list is pre-selected by default, which would apply a -10 db
offset by default.
Pre-select the 0 db option if nothing else is specified in the uci config
files.
Signed-off-by: Mathias Kresin <dev@kresin.me>
The length of DUID-LL is 80 bits (16 bit DUID type, 16 bit hardware type, 48 bit mac)
which corresponds to 20 nibbles. Also lower the minimum required length of DUID to
20 nibbles in order to allow entering a DUID-LL.
Signed-off-by: Arjen de Korte <build+github@de-korte.org>
this was added to LEDE with ed62d91f4b5296a4aa883ce975d76f590ef4e910 and defaults to enable.
Signed-off-by: Sven Roederer <freifunk@it-solutions.geroedel.de>
* make it only visible for 802.11s mesh-networks
* have it enabled by default
Signed-off-by: Sven Roederer <freifunk@it-solutions.geroedel.de>
[add empty line before meshfwd assignment]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Remove the unused admin_system/buttons cbi model. It has been broken,
was not exposed in the controller and the corresponding support code
which only ever was available for the ath25 target has been dropped in
with https://git.lede-project.org/0a3d721in June 2016.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Vladimir <picfun@ya.ru>
[renamed swedish advanced-reboot.po as well, fixed a syntax error,
filtered updated files through ./build/i18n-sync.sh]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The _wifi_sid_by_ifname() function depends on _wifi_state_by_ifname()
so reorder the private helper functions accordingly to avoid nil value
call attempts.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- fix mapping of ubus wireless state to uci declared vifs
- fix leaking foreign vif info into per-phy iwinfo stats
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Fixes [FS#1118](https://bugs.lede-project.org/index.php?do=details&task_id=1118)
Luci chokes on devices that do not have _iptables_ installed with:
/usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/'.
The called action terminated with an exception:
/usr/lib/lua/luci/dispatcher.lua:460: Failed to execute firstchild dispatcher target for entry '/admin'.
The called action terminated with an exception:
/usr/lib/lua/luci/dispatcher.lua:460: Failed to execute function dispatcher target for entry '/admin/status'.
The called action terminated with an exception:
/usr/lib/lua/luci/dispatcher.lua:460: Failed to execute template dispatcher target for entry '/admin/status/overview'.
The called action terminated with an exception:
/usr/lib/lua/luci/template.lua:97: Failed to execute template 'admin_status/index'.
A runtime error occured: [string "/usr/lib/lua/luci/view/admin_status/index.h..."]:34: bad argument #1 to 'tonumber' (string expected, got nil)
stack traceback:
[C]: in function 'assert'
/usr/lib/lua/luci/dispatcher.lua:460: in function 'dispatch'
/usr/lib/lua/luci/dispatcher.lua:141: in function </usr/lib/lua/luci/dispatcher.lua:140>
The code should be more defensive.
In case the DUID can be mapped to the MAC-Address of an already known
host, show the already know hostname next to the DHCPv6 supplied one in
case they differ.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Don't show a DHCPv6 supplied hostname if none was send. It happens in
case the DUID can be mapped to the MAC-Address of an existing host and
the existing host has a name set.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Don't replace the DHCPv6 supplied hostname if the DUID can be mapped to
the MAC-Address of an already known host.
It hides the issue of a missing DHCPv6 hostname and could lead to the
conclution that the already known host has an IPv6 address.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Update timezone data to 2017c
http://mm.icann.org/pipermail/tz-announce/2017-October/000047.html
Briefly:
Northern Cyprus switches from +03 to +02/+03 on 2017-10-29.
Fiji ends DST 2018-01-14, not 2018-01-21.
Namibia switches from +01/+02 to +02 on 2018-04-01.
Sudan switches from +03 to +02 on 2017-11-01.
Tonga likely switches from +13/+14 to +13 on 2017-11-05.
Turks & Caicos switches from -04 to -05/-04 on 2018-11-04.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Allow user to chose if use FT over DS protocol or
FT over the Air protocol for Fast BSS Transition
Signed-off-by: Lorenzo Santina <lorenzo.santina@edu.unito.it>
Add local generation of PMK when using a PSK.
So 802.11r is easier to configure and no inter AP
communication is needed any more.
Signed-off-by: Lorenzo Santina <lorenzo.santina@edu.unito.it>
Properly deal with client accept languages containing a culture identifier
such as "zh-CN" or "pt-BR".
Fixes#1226.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Properly handle logic for evaluating inverted dependencies means
when depending on another field *not* having a given value
- Perform datatype validation *after* populating combobox choices to
avoid triggering a false-positive when validating an .rmempty = false
combobox during form instantiation
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The previous implementation of the function only returned ethernet
interfaces because it relied on the AF_PACKET family entries returned
by getifaddrs().
Change the function to simply collect all interface names it sees in
order to avoid missing tunnel interfaces.
Fixes FS#917.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
cbi_init() needs to be called at the end of the page to initialize
cbi_strings with "[data-strings]" while cbi_browser_init() happened
before that.
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
Some controller actions like the ones in "servicectl" require authentication
but are not meant to provide an authenticator because they're only invoked
by scripts.
Rework the dispatcher logic to handle this situation and only bail out if
an authenticator name other than "htmlauth" is set.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop the individual calls to nixio.getnameinfo() in luci.sys.net and rely
on the "network.rrdns.lookup" ubus call instead to fetch domain information
within a guaranteed timeout.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop a number of redundant functions from luci.sys to shrink the code a bit:
* luci.sys.net.arptable() - replaced by luci.ip.neighbors()
* luci.sys.net.routes() - replaced by luci.ip.routes()
* luci.sys.net.routes6() - replaced by luci.ip.routes6()
* luci.sys.net.deviceinfo() - replaced by nixio.getaddrinfo()
* luci.sys.net.pingtest() - no known user
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The luci-mod-admin-mini network controller is the only remaining user of the
deviceinfo() call so inline the required code there so that the function can
be dropped from base LuCI in a later commit.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The result of the luci.sys.net.deviceinfo() call was never actually used
anywhere in the following code, so simply drop the invocation.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop the custom credentials checking in favor to perform proper session
logins via rpcd. This is needed to properly setup ACLs when spawning
rpcd sessions in order to support direct client side ubus access in the
future.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Line 3021:
msgid "Switch protocol"
sould be:
msgstr "切换协议"
This "Switch protocol" means "Change one protocol to another protocol", Not "protocol of switch deivce"
Currently there are only 2 encryption options visible for adhoc
mode. But in netifd, others are also supported and working as
expected. So adding WPA-PSK, WPA2-PSK and WPA-PSK/WPA2-PSK Mixed
mode as encryption options.
Signed-off-by: Kishan Gondaliya <kishanpgondaliya@gmail.com>
Most users likely want the hostname of a static DHCP lease to be resolveable,
even if the corresponding host is currently offline.
Adjust the form logic to automatically set 'option dns 1' whenever a name is
specified in the static lease entry.
FIxes LEDE FS#815.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This change extends the switch VLAN configuration page to automatically
adjust interface ifname options when altering VLAN settings.
For example "eth0" is changed to "eth0.1" when a previously untagged LAN
VLAN is switched to tagged on the CPU port and vice versa.
Notifications are displayed in the page header if an auto migration was
performed.
This change should make the switch configuration more user friendly and
less prone to soft bricking.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Add support for 'ip6ifaceid' option for proto_static in LuCI.
Information about the option:
The option is optional and defaults to '::1'.
Allowed values: 'eui64', 'random', fixed value like '::1' or '::1:2'
When IPv6 prefix (like 'a🅱️c:d::') is received from a delegating
server, the ip6ifaceid suffix (like '::1') is used to form
the IPv6 address ('a🅱️c:d::1') for the interface.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Cron init script starts the service only if a crontab file
exists. If there is no crontab file at boot and the user
later creates one, he needs to manually restart the service.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
In some cases it is useful to be able to override the template used for the
sysauth login dialog.
Add a new property "sysauth_template" which allows overriding the template
name from controller files.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Prevents deletion of the UCI dns boguspriv keyword and explicitly sets it to
either 0 or removes it as the LEDE/Openwrt dnsmasq.conf default is 1 - not 0.
This allows boguspriv to be turned off from the GUI.
Signed-off-by: Warren Linton <warren@linton.id.au>
[Jo-Philipp Wich: squashed commits, updated commit message]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
As suggested by PR #1114, use `/proc/sys/net/netfilter/nf_conntrack_count`
instead of counting the lines in `/proc/net/nf_conntrack` but use a slightly
more efficient approach which avoids spawning an extra `cat` command.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use the new hostapd functionality (in LEDE) to detect 802.11r and 802.11w
more properly. Leave the old logic in place for Openwrt.
Adjust 802.11w default value from "0" to "" in order to avoid unnecessary
"option ieee80211w 0" lines in /etc/config/wireless
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Adds support for the fwmark option.
FwMark is a 32-bit fwmark for outgoing packets.
If set to 0 or "off", this option is disabled.
Signed-off-by: Dan Luedtke <mail@danrl.com>
If hostname get changed in "/etc/config/system" dnsmasq should reloaded
his config to be reached again under the URL [HOSTNAME].lan
Signed-off-by: Florian Eckert <Eckert.Florian@googlemail.com>
Openwrt theme apparently accepsts slightly different html than
Bootstrap or Material. Cahnge code to <br /> to make it compatible.
This fixes#1011
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
The default hostapd/wpad mini version does not support ieee80211w
and the option's visibility in LuCI may lead it to be placed in user's
/etc/config/wireless preventing wifi from starting.
Check for hostapd/wpad full before exposing the option.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
luci ignores only 127.0.0.1 in real time connections.
The dnsmasq.init script sets up resolv.conf(s) as such.
With alternate DNS servers configured 'localhost' will
resolve to '127.0.0.1' or '::1'. The connections graph
will spam itself. openwrt/luci#996
Signed-off-by: Eric Luehrsen <ericluehrsen@hotmail.com>
Add support for IEEE802.11w Management Frame Protection options.
Mention in the help text that the full version of wpad/hostapd is
needed.
Currently supported by ath9k and ath10k, and in LEDE also by
mwlwifi and mt76.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Add datatype 'hexstring' for input validaiton datatypes.
It will accept any hexadecimal string.
(no length validation, as rangelength can be used for that.)
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
* Add WPA/WPA2-PSK mixed mode to the list of allowed modes
* Add datatype validation to some fields
* Add help texts
* Reformat longest lines
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Adds support for 802.11r fast transition to luci.
Corrects the deletion on nasid in issue #844
The R0KH & R1KH options are not perfect as it would be better
to separate out each option and do some sanity checking on
the values, but that is beyond my capabilities.
Signed-off-by: Warren Linton warren@linton.id.au
(squashed from three original commits in #994. commit message reworded)
The same wifi option 'nasid' is used for two purposes,
RADIUS NAS ID and 802.11r NAS ID / R0KH-ID.
In LuCI the 'nasid' option has depended on WPA-EAP/WPA2-EAP, which
can lead to accidental deletion of the option, if the user modifies
any wifi settings while he has WPA(2)-PSK & 802.11r mode.
802.11r can also be with WPA(2)-PSK, so add them to the dependency
list of allowed encryptions.
(Note: after this fix the 'nasid' field is shown unnecessarily
to "normal" WPA(2)-PSK users. It might later be set to depend on
802.11r being used, after 802.11r has been added to LuCI.)
Reference to bugs:
https://github.com/openwrt/luci/issues/844https://dev.openwrt.org/ticket/20764https://bugs.lede-project.org/index.php?do=details&task_id=274
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
The previous commit erroneously used "ports" instead of "port" as name for the
option widget, causing wrong uci values to be written.
Also work around some cbi idiosyncrasies regarding MultiValue widgets which
prevented rendering the correct initial selection state.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The Overview page and Network>Interfaces page currently do not give much information about IPv6, particularly with Prefix Delegated setups. In these setups, ISP will delegate a prefix to the router. Currently LuCI doesn't display this Prefix Delegation from the ISP anywhere. A number of changes was added to this commit:
1) self:_ubus("ipv6-prefix") was extracted and put into protocol.ip6prefix.
2) Network>Interfaces page, if a .ip6prefix is present, show it under Status. (IPv6-PD).
3) On the Overview page, "Type" and "Prefix Delegated" has been added to the IPv6 Network Overview Status:
- Type will display the .proto, similar to the IPv4 case. If a .ip6prefix is present, it'll display a "-pd" at the end of the Type: i.e. dhcpv6-pd vs. dhcpv6.
- If no .ip6prefix is present, it'll do what it does currently, and just show Address, or :: if no address is present.
- If .ip6prefix is present, it'll show the "Prefix Delegated", it'll also hide "Address" if no address is present, else it'll show ifc6.ip6addr as well.
Signed-off-by: Cody R. Brown <dev@codybrown.ca>
Move the password setting into the .parse() callback to ensure that it is
updated regardless of whether "Save" or "Save & Apply" has been pressed.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Reloading the page ensures that the allowed tx power values and channel select
lists are properly populated with the new effective values.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The missing parens lead to a wrong expression precedence, causing a runtime
error when attempting to compare nil with a number.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The expiry time in a dnsmasq lease file line may be 0 (i.e.
expiry date = 01/01/1970 00:00:00 GMT) to denote an infinite
lease time, so adjust the code to properly support that.
The expiry attribute of the lease object will be set to "false"
in case of an infinite lease. This is to mimic the odhcp code below.
If the expiry date is not equal to 0, then just do exactly what was
done before (return the os.diff of current time and ts).
Signed-off-by: Cody R. Brown <dev@codybrown.ca>
This should result in the MAC address display being the same
using odhcpd for v4 DHCP as when using DNSMasq for v4 DHCP.
Signed-off-by: Daniel Dickinson <lede@cshore.thecshore.com>
Recently a string to be translated were added to Lua source, so
I synchronized po templates and po file of each language with Lua
source.
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Fixed some display problems where the UUID label of the drop down
list does not exist and the positions of other labels are misplaced
in mount settings page.
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Default behaviour of changes to fstab (Mount Points) was
to use /etc/init.d/fstab restart, however this unmounts
filesystems via block umount which can cause the device
to fail, so replace the initscript call with an exec
of 'block mount'.
Signed-off-by: Daniel Dickinson <lede@cshore.thecshore.com>
Fixed an issue where the network name is displayed as "%q" on wlan
connection destination network settings page.
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
When converting interface names to UCI network names
webadmin fails if there is no UCI network name because
webadmin failed to ensure uciname has a value before
attempting to take a substring.
Signed-off-by: Daniel Dickinson <lede@cshore.thecshore.com>
Do not assume that the "raw" table is present on any system, instead check
/proc/net/ip{,6}_tables_names to determine which iptables tables are available.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Adds Korean language supported for Luci of OpenWRT. Most of msgs which
shown at UI are translated but still not completed for non-popular
features.
Signed-off-by: Weongyo Jeong <weongyo@gmail.com>
Commit 39ff053890 accidentally removed the conffiles definitions
from luci-base, statistics, splash and diag-devinfo apps.
That has caused existing config files to get overwritten if the
package has been reinstalled via opkg. Additionally, the splash
text files have not been saved in sysupgrade or backup as they
are located outside /etc/config
This commit adds back the conffiles definitions to the respective
packages.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Changes:
Saratov, Russia switches from +03 to +04 on 2016-12-04 at 02:00.
This hives off a new zone Europe/Saratov from Europe/Volgograd.
The new zone Asia/Atyrau for Atyraū Region, Kazakhstan, is like
Asia/Aqtau except it switched from +04/+05 to +05/+06 in spring
1999, not fall 1994.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
When a lease objects expires property is set to "false", its expiry time is
unlimited, so adjust the templates to properly display that state.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The expiry time in an odhcpd lease file line may be -1 to denote an infinite
lease time, so adjust the code to properly support that.
The expiry attribute of the lease object will be set to "false" in case of an
infinite lease.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
We're currently just setting system time, but we don't set battery
backed RTC. Time in the RTC is only set on the graceful shutdown, which
is quite hard to achieve on embedded devices.
In other words, on systems with battery backed RTC we currently don't
handle following use case properly:
1. Set system time from web UI (sets only system time, but not RTC)
2. Unplug the device from power
Then after the reboot, we've wrong system time again, because time set
in [1] is not saved to battery backed RTC.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Note that several of the time zones now use a numeric name
that is quoted with < > (e.g. "<+03>-3")
musl 1.1.15 and earlier have a bug with < > quoted time zone names.
Fix for the bug
* has already been patched in musl upstream with
http://git.musl-libc.org/cgit/musl/commit/?id=8ca27ac4bfe73bff785d0c26c1de0da92b55e5c6
* has been committed in LEDE with
671cb35880
* has been submitted to Openwrt as pull request
https://github.com/openwrt/openwrt/pull/163
Key changes in 2016d-2016i:
---------------------------
2016d:
America/Caracas switches from -0430 to -04 on 2016-05-01.
Asia/Magadan switches from +10 to +11 on 2016-04-24.
New zone Asia/Tomsk, split off from Asia/Novosibirsk.
2016f:
Asia/Novosibirsk switches from +06 to +07 on 2016-07-24.
Asia/Novokuznetsk and Asia/Novosibirsk now use numeric time zone
abbreviations instead of invented ones.
2016g:
Turkey switched from EET/EEST (+02/+03) to permanent +03,
effective 2016-09-07. Use "+03" rather than an invented
abbreviation for the new time.
Several zones in Antarctica and the former Soviet Union, along
with zones intended for ships at sea that cannot use POSIX TZ
strings, now use numeric time zone abbreviations instead of
invented or obsolete alphanumeric abbreviations.
2016h:
Asia/Gaza and Asia/Hebron end DST on 2016-10-29, not
2016-10-21. Predict that future fall transitions will
be on the last Saturday of October.
Asia/Colombo now uses numeric time zone abbreviations like "+0530"
instead of alphabetic ones like "IST" and "LKT".
2016i:
Pacific/Tongatapu begins DST on 2016-11-06, ending on
2017-01-15. Assume future observances in Tonga will be
from the first Sunday in November through the third Sunday in
January, like Fiji. Switch to numeric time zone abbreviations
for this zone.
Northern Cyprus is now +03 year round, causing a split in Cyprus
time zones starting 2016-10-30 at 04:00. This creates a zone
Asia/Famagusta.
Antarctica/Casey switched from +08 to +11 on 2016-10-22.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This reverts commit d4c3372020.
PATH inconsistencies and Host/Install arguments have been fixed in both
LEDE and OpenWrt, so we can revert the revert.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Specify reasonable sizes for metric and MTU fields to
prevent the table from being too wide.
Signed-off-by: Andrew Shadura <andrew.shadura@collabora.co.uk>
Now that luci-mod-admin-full figures out the proper diagnostics host
during postinstall we can remove the UCI section from the default
configuration file.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Attempt to infer the default diagnostics host for nslookup / ping / traceroute
from the various URLs in /etc/os-release. Fall back to "openwrt.org" if no
host is found to preserve backwards compatibility.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
OpenWrt doesn't provide an argument to Host/Install like LEDE does; use
HOST_BUILD_PREFIX instead, which is available on both.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Also, don't make any assumptions about the staging dir lua and LuaSrcDiet
were installed to.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Instead of defaulting to replace, even on hardware that supports multi
SSID, make the default to add. This reduces the chance of locking
oneself out when adding a second network. If you intended to replace,
ending up with two networks then deleting one is easier than recovering
when the old network configuration is gone.
Signed-off-by: Karl Palsson <karlp@etactica.com>
After clicking the "join" button on the scan list, the SSID is no longer
visible, though it's kept in the form to pass to the server.
Show the chosen SSID on the top of the page, to help people confirm that
they're joining the right network.
Signed-off-by: Karl Palsson <karlp@etactica.com>
Simplify the sysupgrade image checksum strings in order to
avoid translating "Checksum xxx" items both for MD5 and SHA256.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Show also the sha256 checksum in addition to MD5 checksum to enable
image verification also for builds with only sha256 checksums.
If the 'sha256sum' command is not present in the system, the value
remains empty.
Note: The easiest way to get the 'sha256sum' command is to compile it
into busybox.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Fix incomplete port status display on vlan setup page when ports in the middle
are not used, e.g. some Lantiq boards use ports 0, 1, 2 and 4 for LAN ports so
JS code should not attempt to reference an undefined status element for port 3.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use a generic default topology if we cannot infer switch information from
board.json and display an error message in this case. Should fix#779 and
similar issues.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Fix the JavaScript String.format() to not trigger an exception if the argument
for an escaped format like %h or %q is undefined.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>