100 Commits
Author SHA1 Message Date
Dirk BrenkenandClaude acda1ad6f1 luci-app-shunt: update to 0.1.12
* sync with base package

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-10-11 20:50:20 +02:00
Dirk BrenkenandClaude 0257cc05ad luci-app-shunt: update to 0.1.11
* sync with base package

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-10-05 20:42:29 +02:00
Dirk Brenken 0818828b3b luci-app-adblock: sync with base package
- minor visual code fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-27 22:13:40 +02:00
Dirk Brenken 39530b2b69 luci-app-banip: sync with base package 1.9.0
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-19 19:56:54 +02:00
Dirk BrenkenandClaude aef4a82632 luci-app-shunt: sync with base package 0.1.10-1
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-18 16:07:49 +02:00
Dirk BrenkenandClaude 06e111ab07 luci-app-shunt: sync with base package 0.1.8-1
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-16 19:52:54 +02:00
Dirk Brenken 8a2a92462f luci-app-travelmate: fix missing vpn color on the wireless stations page
- fixed vpn coloring, reported in the OpenWrt forum:
  https://forum.openwrt.org/t/travelmate-support-thread/5155/1090

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-12 20:37:51 +02:00
Dirk Brenken 289a726043 luci-app-banip: sync with base package 1.8.13-2
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-10 20:03:51 +02:00
Dirk Brenken ba173f07f7 luci-app-travelmate: sync with base package 2.4.9-2
- LuCI: fix blank pages on footstrap theme navigation

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-09 22:57:53 +02:00
Dirk Brenken 094089457b luci-app-adblock: sync with base package 4.5.8-1
- rework the custom feed editor

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-09 21:39:19 +02:00
Dirk Brenken 1c73e2ef53 luci-app-banip: sync with base package 1.8.13-1
- rework the custom feed editor

Signed-off-by: Dirk Brenken dev@brenken.org
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-08 18:02:04 +02:00
Dirk BrenkenandClaude 52a58abf77 luci-app-shunt: sync with base package 0.1.6-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-07 21:51:03 +02:00
Dirk Brenken baa9c2894b luci-app-travelmate: sync with base package 2.4.9-1
- LuCI: rework the wireless scan dialog; card list instead of the result table, mobile friendly
- LuCI: add the per uplink revive option to the uplink dialog (off / 10 / 30 / 60 run cycles)

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-09-07 19:14:47 +02:00
Dirk BrenkenandClaude 1154ee361d luci-app-shunt: fix readme link
- fixed invalid readme link

Signed-off-by: Dirk Brenken <dev@brenken.org>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-27 18:17:34 +02:00
Dirk Brenken 76deb40367 luci-app-banip: replace uncrompressed world.json
accidently provided an uncrompressed world.json file with the last commit

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-27 13:54:05 +02:00
Dirk Brenken 7ce67a99d9 luci-app-adblock: replace the CARTO basemap with local outlines
CARTO now requires an API key for the raster basemaps at basemaps.cartocdn.com and watermarks every unauthenticated tile request, so the GeoIP map currently renders "API KEY REQUIRED" across the whole viewport.
The basemap is now drawn from country outlines that ship with the package: Natural Earth 1:110m, public domain, all attributes stripped, simplified to 36 kB (~10 kB in the apk).

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-27 13:43:53 +02:00
Dirk Brenken 01b60d0fc7 luci-app-banip: replace the CARTO basemap with local outlines
CARTO now requires an API key for the raster basemaps at basemaps.cartocdn.com and watermarks every unauthenticated tile request, so the GeoIP map currently renders "API KEY REQUIRED" across the whole viewport.
The basemap is now drawn from country outlines that ship with the package: Natural Earth 1:110m, public domain, all attributes stripped, simplified to 36 kB (~10 kB in the apk).

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-27 10:58:05 +02:00
Dirk BrenkenandClaude 7a6ff759fa luci-app-shunt: sync with base package
- init/restart fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-26 17:08:10 +02:00
Dirk BrenkenandClaude a647e9d9ff luci-app-shunt: add LuCI support for shunt
Companion frontend for the shunt policy-based routing daemon
(openwrt/packages#30365). Provides an overview with live service state,
per-policy rule and route counters and learned-address totals, a policy
editor covering all selectors (client address and MAC, destination,
domain, port, protocol), set reporting with per-element counters, and a
filtered processing log. Status data comes from a ucode rpcd object
shipped with the base package.

Signed-off-by: Dirk Brenken <dev@brenken.org>
Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-25 21:26:08 +02:00
Dirk Brenken 459941fb2f luci-app-banip: correction to the presentation of the ‘worst sets’
Top- and Worst-Lists rendered the identical 'elements / packets' string, so a
set appearing in both showed the same numbers twice with two very
different bars. Worst Sets now shows the value it is ranked by.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-22 08:05:35 +02:00
Dirk Brenken 4b6dda1a83 luci-app-banip: sync with banip base package
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-21 21:50:49 +02:00
Dirk Brenken 1f5dfbcc99 luci-app-travelmate: sync with travelmate base package
- fix locked action buttons, add stop button

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-18 20:53:11 +02:00
Dirk Brenken fa505f7cb1 luci-app-banip: frontpage/Set report UI redesign
- rework the Set report view into a card based dashboard layout
- rework the banIP frontpage into a card based dashboard layout

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-06 21:30:00 +02:00
Dirk Brenken a1303934e8 luci-app-travelmate: frontpage UI redesign
- rework the travelmate frontpage into a card based dashboard layout
- sync with base package, release 2.4.7-1

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-06 16:04:46 +02:00
Dirk Brenken ae42fc0a83 luci-app-adblock: frontpage/DNS report UI redesign
- rework the DNS report view into a card based dashboard layout
- rework the adblock frontpage into a card based dashboard layout

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-05 18:34:22 +02:00
Dirk Brenken d8737b3c0f luci-app-adblock: sync with release 4.5.7-1
- expose the new 'adb_repfilter' option

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-08-02 20:35:15 +02:00
Dirk Brenken fe9d6b4f09 luci-app-travelmate: fix rpcd file access on symlinked /var/run
rpcd e37ed9d8 ("file: re-authorize ACL against resolved path to close
symlink bypass", GHSA-q5gr-86pq-vvwr) re-resolves the requested path
with realpath() and re-runs the ACL check against the resolved target
for file.read, file.write, file.md5, file.list and file.stat.

On OpenWrt /var is a symlink to /tmp (or /var/run to /tmp/run with
CONFIG_TARGET_ROOTFS_PERSIST_VAR), so every "/var/run/travelmate/*"
grant resolves to "/tmp/run/travelmate/*", which is not covered by the
ACL. The second check therefore fails with EACCES.

Independently of that, rpcd authorizes file.stat with the "list"
permission while the ACL only granted "read", and
rpc_session_acl_allowed() matches the permission literally via
fnmatch().

Both defects hit the same call sites: the fs.stat() probes in
overview.js and stations.js gate the subsequent fs.read_direct(), so
the runtime status poll and the station refresh handler returned early
without ever loading their payload. The errors stay invisible because
the probes are wrapped in L.resolveDefault(). Reading the payload
itself is unaffected since fs.read_direct() and fs.exec_direct() go
through cgi-io, which does not resolve symlinks, and fs.remove() is
exempt because file.remove keeps its no-follow semantics.

Also grant "list" on the /etc/travelmate directory itself. The auto
login script option is a form.FileUpload with root_directory set to
that path, and ui.FileUpload lists a directory via fs.list(path),
which is authorized against the directory. The existing
"/etc/travelmate/*.login" grant only covers the fs.stat() of an
already selected file, so the browser listing came back empty. This
is a pre-existing defect unrelated to the rpcd change.

- grant the resolved /tmp/run counterpart for every /var/run path;
  both names denote the same file, so no additional object becomes
  reachable
- keep the /var/run entries so the ACL stays valid on targets where
  /var is a real directory
- grant "list" on the objects probed with fs.stat()
- grant "list" on /etc/travelmate for the file browser listing
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-31 15:51:55 +02:00
Dirk Brenken 649854fda2 luci-app-banip: fix rpcd file access on symlinked /var/run
rpcd e37ed9d8 ("file: re-authorize ACL against resolved path to close
symlink bypass", GHSA-q5gr-86pq-vvwr) re-resolves the requested path
with realpath() and re-runs the ACL check against the resolved target
for file.read, file.write, file.md5, file.list and file.stat.

On OpenWrt /var is a symlink to /tmp (or /var/run to /tmp/run with
CONFIG_TARGET_ROOTFS_PERSIST_VAR), so every "/var/run/banIP/*" grant
resolves to "/tmp/run/banIP/*", which is not covered by the ACL. The
second check therefore fails with EACCES.

Effects in the set report view: the banIP.report flag file can no
longer be written or polled, so every 'Refresh' run ends in the
report error handler after the retry limit, and the IP search dialog
fails the same way. Both errors stay invisible because the calls are
wrapped in L.resolveDefault(). Report generation itself is unaffected
since fs.exec_direct() goes through cgi-io, which does not resolve
symlinks.

Independently of that, rpcd authorizes file.stat with the "list"
permission while the ACL only granted "read", and
rpc_session_acl_allowed() matches the permission literally via
fnmatch(). The fs.stat() probes in overview.js, allowlist.js,
blocklist.js and feeds.js were therefore denied, so the runtime status
poll returned early and the list views fell back to an empty result.

- grant the resolved /tmp/run counterpart for every /var/run path
- keep the /var/run entries so the ACL stays valid on targets where
  /var is a real directory
- grant "list" on the objects probed with fs.stat(); this does not
  widen the path scope, the same objects are already readable
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-31 15:30:12 +02:00
Dirk Brenken 7b4b303dec luci-app-adblock: fix rpcd file access on symlinked /var/run
rpcd e37ed9d8 ("file: re-authorize ACL against resolved path to close
symlink bypass", GHSA-q5gr-86pq-vvwr) re-resolves the requested path
with realpath() and re-runs the ACL check against the resolved target
for file.read, file.write, file.md5, file.list and file.stat.

On OpenWrt /var is a symlink to /tmp (or /var/run to /tmp/run with
CONFIG_TARGET_ROOTFS_PERSIST_VAR), so every "/var/run/adblock/*" grant
resolves to "/tmp/run/adblock/*", which is not covered by the ACL. The
second check therefore fails with EACCES.

Effects in the DNS report view: the adblock.report flag file can no
longer be written or polled, so every 'Refresh...' run ends in
"Failed to generate adblock report!" after the retry limit. The
'Blocklist Search...' dialog fails the same way. Both errors stay
invisible because the calls are wrapped in L.resolveDefault(). Report
generation itself is unaffected since fs.exec_direct() goes through
cgi-io, which does not resolve symlinks.

Independently of that, the runtime status polling in overview.js gates
on fs.stat(), and rpcd authorizes file.stat with the "list" permission
while the ACL only granted "read". rpc_session_acl_allowed() matches
the permission literally via fnmatch(), so the call was denied and the
poll callback returned early without updating the status.

- grant the resolved /tmp/run counterpart for every /var/run path
- keep the /var/run entries so the ACL stays valid on targets where
  /var is a real directory
- grant "list" on adblock.runtime.json for the fs.stat() probe
- bump PKG_RELEASE

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-31 14:58:42 +02:00
Dirk Brenken fb6b224af5 luci-app-adblock: fix dropped and unescaped map entries
Requiring a non-empty as, city and countryCode discarded every entry whose GeoIP lookup returned
those fields empty, which happens regularly. Only the coordinates are mandatory now, missing
fields render as "n/a". Coordinate validation relied on truthiness, so entries at latitude or
longitude 0 were dropped as well, and coordinates are range checked now.

Popups are built as DOM nodes instead of concatenated HTML, so neither the blocked domain nor the
city and AS fields returned by the GeoIP service can be interpreted as markup.

The setView() call ran inside the home marker loop, so on a dual stack setup only the last local
IP decided the initial viewport. Center on a single home IP, fit the bounds of all of them
otherwise, and fall back to the blocked domains when no home IP could be resolved.

Blocked ad domains cluster heavily on a few CDN endpoints,
so several of them regularly resolve to one coordinate.
Markers sharing a coordinate now carry all of their domains and list them as a domain
with an indented IP and AS, capped at five per popup.
The same grouping reports a second local
uplink resolving to the same location instead of dropping it.

The blocked marker radius goes from 2 to 3 to match luci-app-banip.

Home markers are rendered after the blocked ones so the local uplink stays visible and clickable.
The fixed 97vh map height is replaced by height: 100%, so the map fills the report modal exactly.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-26 21:34:57 +02:00
Dirk BrenkenandRenato Yamane 859f54738e luci-app-banip: several map improvements
The setView() call ran inside the home marker loop, so on a dual stack setup only the last local
IP decided the initial viewport. Center on a single home IP, fit the bounds of all of them
otherwise, and fall back to the blocked IPs when no home IP could be resolved.

Requiring a non-empty as, city and countryCode discarded every IP whose GeoIP lookup returned
those fields empty, which happens regularly. Only the coordinates are mandatory now, missing
fields render as "n/a".

Coordinate validation relied on truthiness, so entries at latitude or longitude 0 were dropped as
well. Coordinates are now range checked.

Popups are built as DOM nodes instead of concatenated HTML, so the city and AS fields returned by
the GeoIP service can no longer be interpreted as markup.

Add a toolbar above the map holding a single select, listing every Set with mappable entries plus
its point count. Selecting a Set renders that Set only and zooms to it. No cap is applied, so the
rendering does not depend on how f_report() orders or truncates set_elements.

Markers sharing a coordinate are collapsed per Set instead of globally. The previous deduplication
compared lat/lon only, so the Set that reached a coordinate first swallowed the points of every
later Set, which would make both the per-Set counts and the filter depend on the order of
ban_map.jsn. Collapsing per Set keeps every Set complete, and the number of IPs behind a marker is
reported in its popup, since stacked markers are indistinguishable and only the topmost one can be
opened.

The marker radius is raised from 2 to 3 to keep the denser plot readable, and the map
renders with the canvas backend to keep the volume cheap.

Home markers are raised to the front
after every redraw, so the local uplink stays visible and clickable.

The fixed 97vh map height is replaced by a flex column layout, so the map fills the space left by
the toolbar inside the report modal. The toolbar uses the CSS system colors Canvas, CanvasText and
ButtonBorder under color-scheme: light dark, which also keeps it consistent with the natively
rendered select.

Co-authored-by: Renato Yamane <renatoyamane@gmail.com>
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-26 19:26:36 +02:00
Dirk Brenken 4d06d15e77 luci-app-banip: grant the ubus file methods used by the frontend
The frontend calls fs.stat(), fs.read() and fs.write(), which are ubus
calls on the "file" object and require the corresponding ubus ACL in
addition to the already existing path ACLs. Only "list" and "remove" are
granted by luci-base, so for non-root sessions every stat resolved to
null and saving the allow-/blocklist and the custom feeds failed.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-20 18:15:38 +02:00
Dirk Brenken 6c369a7fcd luci-app-adblock: grant the ubus file methods used by the frontend
The frontend calls fs.stat(), fs.read() and fs.write(), which are ubus
calls on the "file" object and require the corresponding ubus ACL in
addition to the already existing path ACLs. Only "list" and "remove" are
granted by luci-base, so for non-root sessions every stat resolved to
null and saving the allow-/blocklist and the custom feeds failed.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-20 18:05:22 +02:00
Dirk Brenken af6c865a45 luci-app-travelmate: fix status polling and uplink creation for non-root users
Two remaining ACL gaps for non-root sessions:

* The status poll calls fs.stat() before reading the runtime file, and
  the uplink handling calls fs.exec(). Both are ubus calls on the "file"
  object and therefore require the corresponding ubus ACL, which was
  never granted. luci-base only grants "list" and "remove". The stat call
  silently resolved to null, the poll returned early and the spinner of
  the information section kept running without any error message.

* Creating an uplink adds a wifi-iface section to the wireless config,
  but the write section only granted uci access to the travelmate config.
  This went unnoticed as long as the session also held write access via
  luci-mod-network-config.

The ubus grants are placed in the read section, matching the section the
corresponding file path ACLs already live in.

Fixes: https://github.com/openwrt/luci/issues/8850
Fixes: https://github.com/openwrt/luci/issues/8849,
please note: luci-base is still a mandatory baseline grant for every LuCI user!

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-20 17:51:46 +02:00
Dirk Brenken 7647aa9913 luci-app-banip: fix ACL for non-root users
Three related ACL defects:

* The frontend reads the feed, category and list files as well as the
  runtime information via fs.read_direct(), which is served by cgi-io's
  download handler. That handler requires the "cgi-io"/"download" scope,
  which was not granted, so all of these requests failed with a 403 for
  non-root sessions.

* The custom feed import uses ui.uploadFile(), which is served by
  cgi-io's upload handler and requires the "cgi-io"/"upload" scope in
  the write section. It was missing as well.

* All file entries lived in the write section, including the read-only
  ones. Since rpcd pulls a section in via the matching list in
  /etc/config/rpcd, a session holding only "list read luci-app-banip"
  had no read access to any of the files at all. Move the read
  permissions to the read section and keep only the write permissions in
  the write section.

The effective permission set of a session holding both lists is
unchanged.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-19 18:32:05 +02:00
Dirk Brenken ba8b58b94f luci-app-adblock: fix ACL for non-root users
Three related ACL defects:

* The frontend reads the feed, category and list files as well as the
  runtime information via fs.read_direct(), which is served by cgi-io's
  download handler. That handler requires the "cgi-io"/"download" scope,
  which was not granted, so all of these requests failed with a 403 for
  non-root sessions.

* The custom feed import uses ui.uploadFile(), which is served by
  cgi-io's upload handler and requires the "cgi-io"/"upload" scope in
  the write section. It was missing as well.

* All file entries lived in the write section, including the read-only
  ones. Since rpcd pulls a section in via the matching list in
  /etc/config/rpcd, a session holding only "list read luci-app-adblock"
  had no read access to any of the files at all. Move the read
  permissions to the read section and keep only the write permissions in
  the write section.

The effective permission set of a session holding both lists is
unchanged. Also drop the stale adblock.pid entry, it has no consumer in
the frontend anymore.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-19 18:20:15 +02:00
Dirk Brenken 806cd13419 luci-app-travelmate: fix WLAN scan for non-root users
- added the missing "download" scope to cgi-io Path access remains restricted by the
  existing file ACL, so no additional file becomes readable. Also drop the
  stale travelmate.pid entry, it has no consumer in the frontend anymore.

Fixes: https://github.com/openwrt/luci/issues/8840

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-07-19 18:03:34 +02:00
Dirk Brenken d9bbc372e2 luci-app-banip: release 1.8.10-1
* sync with latest banip release

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-06-28 23:27:46 +02:00
Dirk Brenken 40c7188aab luci-mod-status: resolve named counters in nftables view
The nftables status view rendered the byte/packet badge by reading
.bytes/.packets directly off a rule's counter statement. That only
holds for anonymous (inline) counters, whose JSON statement is an
object. Named counter objects (counter name "<n>") are serialized as
a bare name string instead, so .bytes was undefined and the badge
showed "undefinedB". Named counters are used in banIP for example.

Resolve named counter references against the standalone counter
objects of the same family and table before rendering, and skip the
badge when a reference cannot be resolved instead of emitting garbage.

While at it, replace some withespaces with tabs.

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-06-22 21:42:33 +02:00
Dirk Brenken 208c01eabd luci-app-travelmate: release 2.4.6-1
- sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-06-16 21:36:15 +02:00
Dirk Brenken c7b95dc2d7 luci-app-banip: release 1.8.9-1
* fix minor code issues

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-06-12 22:32:47 +02:00
Dirk Brenken add2ff6d9b luci-app-adblock: release 4.5.6-1
* sync with base/backend package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-06-04 17:47:23 +02:00
Dirk Brenken 1bffbf4d78 luci-app-banip: update 1.8.8-5
* fix minor code issues

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-31 18:42:29 +02:00
Dirk Brenken fdc8eb01d0 luci-app-lxc: fix authenticated path traversal and ACL bypass (host root)
* ucode fixes:
  - tighten `is_valid_lxc_name` regex to `^[A-Za-z0-9_][A-Za-z0-9_-]{0,63}$`
  - apply the validator in `lxc_configuration_get` and `lxc_configuration_set` before any filesystem access
  - reject the `'lxc error: …'` sentinel string returned by `lxc_get_config_path()` on failure,
    rather than concatenating it into a path.
  - shellquote `LXC_URL` in `lxc_get_downloadable` and `lxc_create`
* ACL fix: add `depends.acl = ["luci-app-lxc"]` to each of the five backend entries,
   so the routes share the same authorization gate as the view

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-27 14:21:12 +03:00
Dirk Brenken 5f6b5f97f4 luci-app-adblock: update 4.5.5-6
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-26 17:20:55 +02:00
Dirk Brenken 46e124caca luci-app-travelmate: update 2.4.5-3
- fixed promise chaining and ifup race in handleAction()
- fixed WPA3/SAE QR-codes and escape special characters
- stabilized the setup modal handler (return promise, add catch)
- fixed the cipher classification for WPA/WPA2 scan results: resolveCipher()
- various other fixes and improvements

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-22 20:48:28 +02:00
Dirk Brenken c707d21a01 luci-app-adblock: update 4.5.5-5
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-20 22:54:50 +02:00
Dirk Brenken bfa3a31ac8 luci-app-banip: update 1.8.8-4
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-18 23:23:50 +02:00
Dirk Brenken c346174ed1 luci-app-travelmate: release 2.4.5-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-09 21:42:22 +02:00
Dirk Brenken e78236d2ee luci-app-banip: update 1.8.8-2
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-04 19:45:28 +02:00
Dirk Brenken a1b4725d42 luci-app-adblock: update 4.5.5-2
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-05-03 20:06:13 +02:00
Dirk Brenken 77d1f1269a luci-app-banip: release 1.8.8-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-30 11:43:28 +02:00
Dirk Brenken aa08ce718c luci-app-banip: release 1.8.7-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-28 20:06:26 +02:00
Dirk Brenken 19c9d21f36 luci-app-banip: update 1.8.6-2
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-18 19:11:08 +02:00
Dirk Brenken 09d8181ef7 luci-app-adblock: release 4.5.5-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-17 09:59:11 +02:00
Dirk Brenken be5b470c3e luci-app-banip: release 1.8.6-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-16 22:16:10 +02:00
Dirk Brenken 354d1e5820 luci-app-adblock: release 4.5.4-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-09 23:19:24 +02:00
Dirk Brenken 53137db0d4 luci-app-banip: release 1.8.5-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-04-07 19:34:48 +02:00
Dirk Brenken 773c8e5889 luci-app-adblock: update 4.5.3-4
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-27 10:24:35 +01:00
Dirk Brenken 59465752a8 luci-app-adblock: update 4.5.3-3
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-22 20:01:12 +01:00
Dirk Brenken 5944e2659c luci-app-banip: update 1.8.1-3
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-22 16:20:07 +01:00
Dirk Brenken c335f3affc luci-app-banip: update 1.8.1-2
* ESlint fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-16 19:16:02 +01:00
Dirk Brenken 61f643610d luci-app-adblock: update 4.5.3-2
* ESlint fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-16 19:01:14 +01:00
Dirk Brenken b015dfa745 luci-app-adblock: release 4.5.3-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-15 19:42:25 +01:00
Dirk Brenken 86bc7f71eb luci-app-banip: release 1.8.1-1
* sync with base package

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-15 18:21:18 +01:00
Dirk Brenken 9e9ebf19a6 luci-app-adblock: sync with adblock 4.5.2-3
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-08 19:00:05 +01:00
Dirk Brenken bd8a5bf739 luci-app-adblock: sync with adblock 4.5.2-2
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-05 21:06:36 +01:00
Dirk Brenken c0e7f9b104 luci-app-adblock: sync with adblock 4.5.2-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-03-01 06:56:33 +01:00
Dirk Brenken 3696d66591 luci-app-banip: update 1.8.0-3
* more eslint fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-21 05:40:46 +01:00
Dirk Brenken 2a8230dfdd luci-app-banip: update 1.8.0-2
* support custom nftables timeout values
* eslint fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-20 22:13:39 +01:00
Dirk Brenken 4f5639a708 luci-app-adblock: sync with adblock 4.5.1-3
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-20 20:25:53 +01:00
Dirk Brenken 9f35b27959 luci-app-travelmate: update 2.4.0-2
* sync with travelmate 2.4.0-2
* more eslint fixes

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-20 18:10:06 +01:00
Dirk Brenken ac8c3ddffb luci-app-travelmate: release 2.4.0-1
* sync with travelmate 2.4.0-1
* fix #8326

Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-18 21:26:14 +01:00
Dirk Brenken 18a8e26be2 luci-app-adblock: sync with adblock 4.5.1-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-08 10:28:47 +01:00
Dirk Brenken b2cdba1b95 luci-app-adblock: sync with adblock 4.5.0-5
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-02-05 16:16:30 +01:00
Dirk Brenken 30341aeba9 luci-app-adblock: sync with adblock 4.5.0-4
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-01-28 20:16:12 +01:00
Dirk Brenken e3478e4ebb luci-app-adblock: sync with adblock 4.5.0-2
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-01-24 14:39:03 +01:00
Dirk Brenken b72dad0a00 luci-app-adblock: sync with adblock 4.5.0-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-01-18 23:39:39 +01:00
Dirk Brenken 2eb0501b38 luci-app-banip: sync with banIP-1.8.0-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2026-01-12 23:04:58 +01:00
Dirk Brenken adf9e685ec luci-app-travelmate: update 2.3.0-2
* fix a small issue in the new log-template

Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-12-14 23:10:08 +01:00
Dirk Brenken ce3e393ec2 luci-app-adblock: sync with adblock 4.4.5-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-12-14 07:11:39 +01:00
Dirk Brenken fdef3c0d0c luci-app-travelmate: sync with travelmate 2.3.0-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-12-11 22:48:33 +01:00
Dirk Brenken bf0ce9c571 luci-app-banip: sync with banIP-1.6.0-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-12-04 20:29:01 +01:00
Dirk Brenken 38f555ccf7 luci-app-adblock: sync with adblock 4.4.4-2
* adapt regex changes to custom feed editor

Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-24 22:29:02 +01:00
Dirk Brenken fa2945a2e2 luci-app-adblock: remove obsolete ACLs
* the app now uses rpc / the ubus log object and no longer requires logread ACLs

Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-21 21:55:05 +01:00
Dirk Brenken 7d348dd14f luci-app-adblock: sync with adblock 4.4.4-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-21 19:05:36 +01:00
Dirk Brenken fa319cfe95 luci-app-adblock: sync with adblock 4.4.3-1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-16 19:21:30 +01:00
Dirk Brenken d36c0f4f0b luci-app-travelmate: sync with travelmate update 2.2.1-6
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-14 22:03:43 +01:00
Dirk Brenken 8ff0606a18 luci-app-travelmate: sync with update 2.2.1-4
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-06 23:51:56 +01:00
Dirk Brenken 14e40ca01a luci-app-travelmate: fixes in station.js
Fixes errors in the display/workflow of scan results:
- Display of stations with a strength of "100"
- Display/Workflow of "hidden" SSIDs

Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-11-06 06:22:01 +01:00
Dirk Brenken 03a385b576 Merge pull request #8052 from sunnyqeen/Fix-acme
luci-app-acme: Use fullchain.crt file to read issueDate
2025-11-01 15:44:55 +01:00
Dirk Brenken 0f97532791 luci-app-banip: use separate log viewer template
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-26 20:38:01 +01:00
Dirk Brenken 3fb12ab7d7 luci-app-adblock: use separate log viewer template
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-26 19:43:48 +01:00
Dirk Brenken 8c07e199e1 luci-app-travelmate: sync with update 2.2.1-3
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-22 21:02:44 +02:00
Dirk Brenken f67c6769ed luci-app-travelmate: sync with update 2.2.1-2
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-19 20:23:36 +02:00
Dirk Brenken 7405bb1770 luci-app-travelmate: sync with release 2.2.1
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-18 22:03:21 +02:00
Dirk Brenken 4b49999f93 luci-app-travelmate: sync with release 2.2.0
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-10-14 22:15:06 +02:00
Dirk Brenken fd4cce9b61 luci-app-banip: sync with update 1.5.6-6
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-06-28 22:15:44 +02:00
Dirk Brenken 74580723a3 luci-app-adblock: sync with adblock 4.4.2-3
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-06-14 21:05:48 +02:00
Dirk Brenken 2ac7444d33 luci-app-banip: sync with update 1.5.6-5
Signed-off-by: Dirk Brenken <dev@brenken.org>
2025-06-14 19:50:04 +02:00