Commit graph

168 commits

Author SHA1 Message Date
Jo-Philipp Wich
11d0129f96 http: add random security headers
Fixes #1343.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-09-02 17:45:37 +02:00
Yousong Zhou
3809bd6ffb luci-base: datatypes: add cidr, ipnet validator type
- Rewrite ipmask to use these subtypes
- Add ip{4,6}prefix validators to cbi.js

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2017-08-22 20:19:49 +08:00
Jo-Philipp Wich
15cb504b44 luci-base: improve language detection
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>
2017-08-13 15:55:22 +02:00
Jo-Philipp Wich
4201282559 luci-base: let luci.sys.net.devices() return all netdevs
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>
2017-07-28 15:44:10 +02:00
Jo-Philipp Wich
4e1b884157 luci-base: properly handle authentication without authenticator
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>
2017-07-11 14:12:50 +02:00
Jo-Philipp Wich
882427731a luci-base: use rpcd-mod-rrdns for reverse DNS lookups
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>
2017-07-11 14:05:31 +02:00
Jo-Philipp Wich
366707a681 luci-base: drop unused functions in luci.sys
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>
2017-07-11 14:05:31 +02:00
Jo-Philipp Wich
d6360bf81e luci-base: use rpcd session logins
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>
2017-07-09 21:35:26 +02:00
Hannu Nyman
5ca3864690 luci-base: support ip6ifaceid option for proto_static
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>
2017-05-21 22:08:38 +03:00
Hannu Nyman
f2cf516cf7 luci-base: add Etc/GMT timezones
Add Etc/GMT timezones like GMT+5

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2017-05-08 19:31:36 +03:00
Jo-Philipp Wich
57121f3743 luci-base: luci.dispatcher: allow overriding sysauth template
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>
2017-05-06 15:06:07 +02:00
Hannu Nyman
54c97738bc timezone data: update to 2017b
Update timezone data to 2017b.

http://mm.icann.org/pipermail/tz-announce/2017-February/000045.html
http://mm.icann.org/pipermail/tz-announce/2017-March/000046.html

Key changes in 2017a-2017b:

* Mongolia no longer observes DST.
* Chile's Region of Magallanes moves from -04/-03 to -03 year-round.
* Switch to numeric time zone abbreviations for South America, as
  part of the ongoing project of removing invented abbreviations.
* Haiti resumed observance of DST in 2017.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2017-04-10 14:45:20 +03:00
Hannu Nyman
3c988cf16c treewide: cleanup references to madwifi from LuCI
Remove the code related to the deprecated madwifi driver.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2017-02-28 18:55:11 +02:00
danrl
cd8333cf0b luci-proto-wireguard: add support for fwmark option
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>
2017-02-27 20:48:46 +01:00
danrl
94d6b7b70d luci-base: added dhcpv6 datatypes
Signed-off-by: Dan Luedtke <mail@danrl.com>
2017-02-15 09:50:58 +01:00
Hannu Nyman
11f23559e4 luci-base: add hexstring datatype
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>
2017-02-09 16:58:07 +02:00
Daniel Dickinson
fecf6e1d11 Merge pull request #965 from cshore-firmware/pull-request-odhcpd-mac
base: status: For odhpcd leases display MAC formatted with colons
2017-02-07 16:00:09 -05:00
Jo-Philipp Wich
d85f7a8a00 luci-base: fix logic errors in ipmask4 and ipmask6 datatype validators
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-30 19:14:08 +01:00
Cody R. Brown
5377d22b4a mod-admin-full: Add IPv6 Prefix Delegation information to Status Pages
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>
2017-01-28 01:38:06 -08:00
Jo-Philipp Wich
ae7c6f48df luci-base: mvalue: fix column wrapping
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-26 00:07:26 +01:00
Jo-Philipp Wich
ec9942925c luci-base: datatypes.lua: add missing parentheses in conditional
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>
2017-01-24 13:51:27 +01:00
Jo-Philipp Wich
e4b1bb3156 luci-base: ipmask, ipmask4 and ipmask6 validators
These validators accept IP address specifications in the form

 - address
 - address/bits
 - address/netmask

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-23 16:15:22 +01:00
Jo-Philipp Wich
937f4fbbdf luci-base: datatypes.lua: cleanup white space
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-23 16:10:07 +01:00
Cody R. Brown
0f35de886c luci-base: luci.tools.status: properly parse infinite dnsmasq leases
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>
2017-01-23 09:37:10 +02:00
Daniel Dickinson
4fd2b74e4a base: status: For odhpcd leases display MAC formatted with colons
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>
2017-01-20 02:09:34 -05:00
Daniel Dickinson
7bfd36d585 base: webadmin: Don't take substring of nil variable
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>
2016-12-30 13:44:22 -05:00
Jo-Philipp Wich
b56d1a85e2 luci-base: luci.sys.iptparser: properly check for table support
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>
2016-12-21 18:04:24 +01:00
Daniel Dickinson
c5287ef15f Merge pull request #663 from NeoRaider/styleable-checkboxes
luci-base: view: make checkboxes and radio buttons styleable
2016-12-10 06:36:01 -05:00
Hannu Nyman
a7c5c018b6 time zone data: Update to 2016j
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>
2016-12-09 18:10:44 +02:00
Jo-Philipp Wich
8e9e92a630 luci-base: luci.tools.status: properly parse infinite odhcpd leases
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>
2016-12-09 13:05:44 +01:00
Hannu Nyman
3936e79cf8 time zone data: Update to 2016i
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>
2016-11-08 12:43:00 +02:00
Jo-Philipp Wich
4a5635cafa luci-base: properly style login alert message
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-18 09:19:54 +02:00
Jo-Philipp Wich
8cd6e4efe8 luci-base: support reading switch topology from /etc/board.json
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-15 17:52:28 +02:00
Jo-Philipp Wich
123f14b55d luci-base: fix handling of monitor ifaces
Wireless monitor interfaces usually have no SSID set in their config and
various network model utility functions did not handle this case properly,
mainly while trying to incorperate the SSID string into various description
labels.

Fall back to the internal network id (radioX.networkY) in cases where neither
the SSID nor the BSSID are available.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-04 11:45:30 +02:00
Jo-Philipp Wich
240b8c4b6e luci-base: improve string format error reporting
In mod metamethod, execute string format under pcall() and rethrow error in
caller context to report caller of function in errors and not the meta
method itself.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-04 11:45:30 +02:00
Hannu Nyman
1709800150 luci-base: fix whitespace
change spaces to tabs

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-06-03 10:35:37 +03:00
Jo-Philipp Wich
313e325ab1 luci-base: fix syntax error in luci.model.network
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-04-26 21:02:51 +02:00
Jo-Philipp Wich
182506113d luci-base: add more ignore patterns to luci.model.network
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-04-26 21:01:18 +02:00
Jo-Philipp Wich
4983a9b034 luci-base: fix luci.model.network.ignore_interface()
Fix the underlying _iface_ignore() function to not ignore virtual interfaces,
in order to let ignore_interface() return true for PPP and similar devices.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-04-26 21:01:18 +02:00
Hannu Nyman
51a7f96877 luci-base: read odhcpd leasefile location via uci
Check the location of the odhcpd leasefile from /etc/config/dhcp
via uci. Fallback to the default location.

This fixes #702

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-04-17 12:12:54 +03:00
Daniel Dickinson
97f2937034 luci-base: utils: Make checklib return a boolean
Using tristate is counter-intuitive and probably doesn't provide a lot
of benefit so we use a boolean and treat "don't know" as false (because
it is safer than showing options that are not actually available).

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
2016-04-08 02:18:42 -04:00
Oskari Rauta
57e58b9bf9 Update network.lua
Fix display of WAN status when WAN is provided by using WWAN device or similar with other similar similar methods.
Explanation:
Before this, protocol was fetched from /etc/config/network for interface which often is wan_4 - but protocol is configured in file as wan, and therefore protocol is always none, since configuration is made for wan and then setup as wan_4 and possibly wan_6 if ipv6 is being used. This commit uses ubus to get used active protocol. For example, in case of qmi, it displays protocol as dhcp since even if I configured wan to use qmi, dhcp was used as a protocol for getting IP address.
2016-04-01 04:15:11 +00:00
Hannu Nyman
859e435378 timezone data: update to 2016c
Update timezone data to 2016c.

2016b: http://mm.icann.org/pipermail/tz-announce/2016-March/000036.html

   Changes affecting future time stamps

     New zones Europe/Astrakhan and Europe/Ulyanovsk for Astrakhan and
     Ulyanovsk Oblasts, Russia, both of which will switch from +03 to +04
     on 2016-03-27 at 02:00 local time.  They need distinct zones since
     their post-1970 histories disagree.  New zone Asia/Barnaul for Altai
     Krai and Altai Republic, Russia, which will switch from +06 to +07
     on the same date and local time.  Also, Asia/Sakhalin moves from +10
     to +11 on 2016-03-27 at 02:00.

     As a trial of a new system that needs less information to be made up,
     the new zones use numeric time zone abbreviations like "+04"
     instead of invented abbreviations like "ASTT".

     Haiti will not observe DST in 2016.

     Palestine's spring-forward transition on 2016-03-26 is at 01:00,
     not 00:00. Guess future transitions will be March's last Saturday
     at 01:00, not March's last Friday at 24:00.

2016c: http://mm.icann.org/pipermail/tz-announce/2016-March/000037.html

   Changes affecting future time stamps

     Azerbaijan no longer observes DST.

     Chile reverts from permanent to seasonal DST.
     Guess that future transitions are August's and May's second
     Saturdays at 24:00 mainland time.  Also, call the period from
     2014-09-07 through 2016-05-14 daylight saving time instead of
     standard time, as that seems more appropriate now.

Note for Openwrt usage:

Either musl or busybox does not like the new timezone format.
Although the rule looks ok in /etc/TZ, timezone is interpreted wrongly
by date, uptime etc. "Old timezones" are handle correctly, but these
new "<+04>-4" style zones do not work. Example below:

Europe/Helsinki
 root@OpenWrt:~# cat /etc/TZ
 EET-2EEST,M3.5.0/3,M10.5.0/4
 root@OpenWrt:~# uptime
  11:00:52 up 18:17,  load average: 0.43, 0.13, 0.11
 root@OpenWrt:~# date
 Wed Mar 30 11:00:55 EEST 2016

Europe/Astrakhan
 ( Time is showed as GMT instead of the correct zone and
   zone name is parsed wrongly )
 root@OpenWrt:~# cat /etc/TZ
 <+04>-4
 root@OpenWrt:~# uptime
  08:02:52 up 18:19,  load average: 0.17, 0.18, 0.13
 root@OpenWrt:~# date
 Wed Mar 30 08:02:59 +04>-4 2016

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-03-30 11:35:18 +03:00
Daniel Dickinson
9652d44ef2 luci-base: Add option to check linked libraries
Some packages have different variants that have different
capabilities depending on which libraries against which
they are linked.  Add a function to check which library a
binary links against in order to determine available
functionality.

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
2016-03-25 03:04:25 -04:00
Hannu Nyman
e2e2696430 luci-base: fix bug in util.lua in 'shellsqescape'
Fix a bug introduced by #561

Function 'shellsqescape' calls 'gsub' with the empty result string 'res'
instead of the actual parameter 'value'. This leads into error:
.../util.lua:160: bad argument #1 to 'gsub' (string expected, got nil)

Fix error by passing the correct parameter to the function.

After the fix, the unmount button introduced by #561 finally works.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-03-20 13:12:05 +02:00
Hannu Nyman
a77ff30057 Add support for showing ipv6 NAT table in Luci
When kmod-nf-nat6 and kmod-ipt-nat6 are installed, the firewall has also
the 'nat' table for ipv6, and packages like 'adblock' utilize that table.

Currently that table is not shown on the Luci firewall status page,
although it is visible by 'ip6tables -L -v -t nat' from console.

Detect 'nat' table's presence from /proc/net/ip6_tables_names

Show 'nat' table in Status->Firewall->IPv6 if that table is present.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2016-03-16 15:50:00 +02:00
Matthias Schiffer
4de35274ca luci-base: view: make checkboxes and radio buttons styleable
Add an empty, normally invisible label after checkboxes and radio buttons
with cbi-input-{checkbox,radio} classes to allow CSS styling them as
suggested on http://www.paulund.co.uk/style-checkboxes-with-css

Signed-off-by: Nils Schneider <nils@nilsschneider.net>
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-03-03 22:06:39 +01:00
Matthias Schiffer
c8675d0c55 modules/base: dispatcher: use default language if automatic choice fails
Fall back to default language if "auto" is configured, but none provided by
the browser matches.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-03-01 17:25:55 +01:00
Jo-Philipp Wich
55597da3a8 luci-base: cbi: fix misplaced ID in nullsection template
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-24 17:40:53 +01:00
Jo-Philipp Wich
e78759ad5a luci-base: cbi: also initialize JS if pageactions are disabled
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
2016-02-24 17:40:01 +01:00