⛅ Sync 2026-10-11 13:16:00

This commit is contained in:
github-actions[bot] committed 2026-10-11 13:16:00 +08:00
1 parent 705dadd362
commit e6d1b4e2d7
105 files changed
+26511 -50

No files matched your search

@@ -0,0 +1,25 @@
# Device identification
Identification is a display hint, not an authenticated fingerprint. A saved
manual device type takes precedence. Specific hostname or custom-name clues
come next, followed by a small set of vendor hints and the default group.
Names and types never affect routing, firewall rules or DHCP configuration.
Short English words require token boundaries. A generic `switch` means a
network switch; `nintendo-switch` means a console. `gateway` means a router,
and `Cambridge-PC` means a computer. Chinese device keywords are also accepted.
The previous broad OUI tables had no recorded provenance. They were replaced
with the 13 documented entries in `oui-hints.json`. Manufacturer assignments
were checked against the Wireshark project's automatically generated
[manufacturer data](https://www.wireshark.org/download/automated/data/manuf.gz),
which incorporates IEEE registration data. The verification source checksum
is recorded with the entries. Only assignment facts are retained; the complete
database is not bundled.
A manufacturer assignment identifies an organization, not a product. Apple,
Google, HP and other vendors with diverse products therefore have no automatic
device type hint. Ubiquiti and H3C use the general network-device category;
Espressif and Lumi use the general smart-home category. These remain guesses,
and users can override them. Locally administered or randomized MAC addresses
never use vendor hints. Hostname and manual identification still work for them.
@@ -0,0 +1,59 @@
{
"source": "https://www.wireshark.org/download/automated/data/manuf.gz",
"verified_on": "2026-10-10",
"decompressed_source_sha256": "d542945307e2ab7c11f70c741f41f4a55585088b05da139fe5583154cb60ccc1",
"entries": {
"001132": {
"organization": "Synology Incorporated",
"type_hint": "nas"
},
"4CFCAA": {
"organization": "Tesla,Inc.",
"type_hint": "car"
},
"2C2617": {
"organization": "Oculus VR, LLC",
"type_hint": "vr"
},
"1012FB": {
"organization": "Hangzhou Hikvision Digital Technology Co.,Ltd.",
"type_hint": "camera"
},
"0009BF": {
"organization": "Nintendo Co., Ltd.",
"type_hint": "game"
},
"000E58": {
"organization": "Sonos, Inc.",
"type_hint": "speaker"
},
"001788": {
"organization": "Philips Lighting BV",
"type_hint": "light"
},
"18FE34": {
"organization": "Espressif Inc.",
"type_hint": "home"
},
"54EF44": {
"organization": "Lumi United Technology Co., Ltd",
"type_hint": "home"
},
"00156D": {
"organization": "Ubiquiti Inc",
"type_hint": "network"
},
"000FE2": {
"organization": "Hangzhou H3C Technologies Co., Limited",
"type_hint": "network"
},
"000C42": {
"organization": "Routerboard.com",
"type_hint": "router"
},
"B827EB": {
"organization": "Raspberry Pi Foundation",
"type_hint": "computer"
}
}
}
@@ -0,0 +1,85 @@
# Upstream submission
Target: `openwrt/luci`, branch `master`, directory
`applications/luci-app-device-manager/`.
The independent repository retains development tests, SDK build workflows and
SSH deployment tooling. They are not copied to the upstream repository root.
The configuration initializer lives under `tools/` for source deployments;
packages ship `/etc/config/device_manager` directly. The exported README uses
official-feed installation commands, while standalone build instructions stay
in the independent repository.
Export reviewed package files into a fresh LuCI feature branch:
```sh
git clone https://github.com/openwrt/luci.git /tmp/luci-device-manager-upstream
git -C /tmp/luci-device-manager-upstream switch -c add-device-manager
git -C /tmp/luci-device-manager-upstream config user.name "zhiyong zhang"
git -C /tmp/luci-device-manager-upstream config user.email "zhang747@126.com"
python3 -B tools/prepare-upstream.py /tmp/luci-device-manager-upstream
git -C /tmp/luci-device-manager-upstream diff --check
```
The exporter refuses an existing application directory and does not change
Git history, commit or push. It uses the standard relative `luci.mk` include
and exports only package sources, PO files, licenses and package documentation.
Suggested commit title:
```text
luci-app-device-manager: add LAN device management
```
Suggested commit body:
```text
Add a JavaScript LuCI view for LAN device discovery and metadata management.
Combine host hints, DHCP leases, wireless associations and kernel neighbors.
Save names, remarks, groups and manual type overrides by MAC address.
Unlike the existing host list, this application maintains custom device
metadata and groups, including saved devices that are currently offline.
Keep ordinary refreshes passive. Provide an explicit write-authorized scan
limited to configured netifd interfaces and their actual IPv4 prefixes.
Bound concurrent probes, scan duration and the shared scan cooldown.
Use native LuCI message extraction and separately built translation packages.
Include pinned Material Design Icons attribution and Apache-2.0 notices.
Signed-off-by: zhiyong zhang <zhang747@126.com>
```
Submission commits use `zhiyong zhang <zhang747@126.com>` for the author,
committer and Signed-off-by identity. Configure this identity locally in the
LuCI checkout before committing, as shown above. Existing contributor
attribution must be preserved; these tools do not rewrite historical commits.
Suggested PR description:
```text
Add a LAN device manager with MAC-keyed custom names, remarks, groups and
manual device types. Discovery combines native LuCI host/lease/wireless RPCs
with kernel neighbor data and distinguishes online, offline and unknown.
Refresh is passive. An explicit Scan LAN operation requires write permission
and scopes ICMP probes to configured netifd interfaces and actual prefixes.
Chinese translations are built by luci.mk; other languages use native LuCI
catalogues and English fallback.
Validation:
- 100 Node and 8 Python regression tests passed.
- 33 RPC regressions passed with SDK-native jshn and isolated network inputs.
- Official LuCI message extraction, gettext checks and ESLint passed.
- Built main and Chinese language APKs in the official x86/64 SNAPSHOT SDK.
- Verified official SNAPSHOT and 24.10.4 BusyBox ip/flock compatibility;
33 RPC regressions passed with each binary and SDK-native jshn.
- Checked resolved dependencies without extra ip or flock packages.
- Checked package license texts, configuration preservation metadata and LMO.
Real-router installation, upgrades, account enforcement, UI acceptance and
a stable-release SDK build remain unverified.
```
Review the recorded validation results before sending the PR.
Local tests do not certify real-router or upstream acceptance.
@@ -0,0 +1,66 @@
# Local upstream-readiness validation
## PR review follow-up: 2026-10-11
Addressed the dependency, license installation, redundant initializer and
in-tree README comments on OpenWrt LuCI PR #9125.
- Full Node regression suite: 100 passed, 0 failed, 0 skipped.
- Python regression suite, including the exported installation instructions:
8 passed.
- Official LuCI ESLint, native translation extraction, gettext, shell syntax
and whitespace checks passed.
- Official OpenWrt BusyBox packages tested locally with the SDK musl loader:
SNAPSHOT 1.38.0-r3 and 24.10.4 1.36.1-r3. Both support
`ip -o -4 addr show dev lo`, `ip neigh show` and `flock -n 9`.
The actual RPC helper parsed IPv4 and IPv6 neighbor output from both binaries.
- The 33 shell/Ping/scan regressions passed with each official BusyBox binary,
its flock applet and SDK-native jshn. Network probes, netifd and UCI inputs
were isolated fixtures; no router was modified.
- Rebuilt the main and Chinese language APKs in the x86/64 SNAPSHOT SDK.
Main-package dependencies are libc, luci-base, rpcd-mod-iwinfo and jshn.
ip-tiny, ip-full and util-linux flock were disabled in the SDK configuration.
The extra license installation hook and packaged configuration initializer
were removed; MIT and Apache-2.0 declarations and source notices remain.
Compatibility evidence and official binaries: /tmp/device-manager-review-compat/.
SDK build log: /tmp/device-manager-review-sdk-build.log.
Real-router acceptance and a stable-release SDK build remain unverified.
## Initial validation: 2026-10-10
The checks below describe the initial submission snapshot, before the PR review
follow-up. No router was modified during that validation.
## Passed checks
- Node regression suite: 100 passed, 0 failed, 0 skipped.
- Python regression suite: 8 passed.
- Official LuCI master ESLint configuration: no errors or warnings.
- Native POT extraction: 184 source messages, including menu, ACL and UI.
- GNU gettext template/catalogue comparison and PO checks.
- SDK-native jshn regression run: 33 passed, 0 skipped. Network and UCI inputs were isolated fixtures.
- Workflow YAML parsing and every run block checked with bash -n.
- Shell syntax and git diff --check.
## SDK package validation
- Official x86/64 SNAPSHOT SDK archive SHA256:
60b7182a36d0542810e5564dcf9f7c2531bbbc74546ededcbc619b2939b72127
- SDK base source commit: 53ec2d05a487e6011cfa096de9211d15197c501b.
- LuCI reference commit: 36720dd716c7f7008af95c0d520edefab621adb7.
- SDK download checksum was verified. Official GitHub mirrors were used for feeds, retaining the SDK base commit.
- Main package and Chinese language package compiled successfully.
- ip-tiny and ip-full dependency variants both built; each main package depends only on its selected IP implementation.
- Unpacked the ip-tiny packages and checked executable RPC helper, configuration preservation metadata, both applicable license texts, icon attribution and absence of legacy bundled translations.
- The language package LMO matches a fresh compilation of the current PO using SDK po2lmo.
Local APKs and manifest: /tmp/device-manager-built-packages/. These are local validation builds.
The local package version uses the existing source HEAD while compiling this uncommitted working tree.
CI builds calculate the version from the checked-out source commit; upstream builds use the LuCI feed revision.
## Remaining external acceptance
Real-router installation, upgrades, reboot persistence, account enforcement, packet captures, themes and mobile UI remain to be checked using the README acceptance steps.
GitHub Actions was validated locally but has not been triggered remotely.
Stable-release SDK/IPK builds have not been rerun in this validation.