libremesh / lime-app

Geek-free Web App for setup and mantainance of Libremesh nodes built on Preact
https://libremesh.github.io/lime-app/
GNU Affero General Public License v3.0
51 stars 27 forks source link

lime-app blank and unresponsive main screen on OpenWrt 22.03 when no mesh neighbors are connected #378

Closed der-nele closed 7 months ago

der-nele commented 1 year ago

ich have some routers i wont to disabel list modes 'ieee80211s' on wifi but if i doo this the lime app do not do anything

der-nele commented 1 year ago

Bildschirmfoto vom 2023-04-17 14-28-28 Bildschirmfoto vom 2023-04-17 14-29-21

ilario commented 1 year ago

Can you make sure that it is because of ieee80211s? Can you try to add it back and check if it works? For me it does not work anyway.

der-nele commented 1 year ago

yes it is instant after lime-config && lime-apply and backwards.

ilario commented 1 year ago

I don't understand, does the issue happen after you add ieee80211s, run lime-config and reboot? Or it does happen only when ieee80211s is missing?

der-nele commented 1 year ago

just if it is missing

der-nele commented 1 year ago

it looks like if it do not load Radio {radioNumber} Radio {radioNumber} it do not load the rest from menu

selankon commented 1 year ago

This could be a problem related to lime packages that doesn't send the info properly?

ilario commented 1 year ago

@der-nele can you open a browser tab, press F12, load the broken page (the one with just the menu) and copy and paste here the error? Your screenshot is identical to what I see and reported in #383, but on my router it happens even with the default untouched configuration.

der-nele commented 1 year ago

@ilario since we currently have major problems in the mesh, I have left the Lime app out of the image for the time being. That's why I can't look it up right now. But I remember the same behavior of the Lime app. that disappeared for me when the router had a neighbor to mesh. Like a dependency to have a neighbor. And since the Lime App I doesn't show the cable connections in our case, the neighbors disappear when "List modes 'IEEE80211S'" is turned off on the WiFi. #379 I hope my description helps. And thank you for your support

der-nele commented 1 year ago

I18nProvider did not render. A call to i18n.activate still needs to happen or forceRenderOnLocaleChange must be set to false. bundle.d2584.js:2:54799 Uncaught (in promise) TypeError: t.most_active.iface is undefined a http://kh-wald-b/app/bundle.d2584.js:2 x http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 S http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 S http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 _ http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 promise callbackd http://kh-wald-b/app/bundle.d2584.js:2 setState http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 n http://kh-wald-b/app/bundle.d2584.js:2 handleChangeWrapper http://kh-wald-b/app/bundle.d2584.js:2 notify http://kh-wald-b/app/bundle.d2584.js:2 N http://kh-wald-b/app/bundle.d2584.js:2 notify http://kh-wald-b/app/bundle.d2584.js:2 notifyNestedSubs http://kh-wald-b/app/bundle.d2584.js:2 handleChangeWrapper http://kh-wald-b/app/bundle.d2584.js:2 c http://kh-wald-b/app/bundle.d2584.js:2 Yf http://kh-wald-b/app/bundle.d2584.js:2 default http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 tryOrUnsub http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 observe http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 _execute http://kh-wald-b/app/bundle.d2584.js:2 execute http://kh-wald-b/app/bundle.d2584.js:2 flush http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 scheduleMessage http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 pr http://kh-wald-b/app/bundle.d2584.js:2 promise callbackQfWi/pr/< http://kh-wald-b/app/bundle.d2584.js:2 _trySubscribe http://kh-wald-b/app/bundle.d2584.js:2 subscribe http://kh-wald-b/app/bundle.d2584.js:2 F http://kh-wald-b/app/bundle.d2584.js:2 _innerSub http://kh-wald-b/app/bundle.d2584.js:2 _tryNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 observe http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 _execute http://kh-wald-b/app/bundle.d2584.js:2 execute http://kh-wald-b/app/bundle.d2584.js:2 flush http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 scheduleMessage http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 Yf http://kh-wald-b/app/bundle.d2584.js:2 default http://kh-wald-b/app/bundle.d2584.js:2 d http://kh-wald-b/app/bundle.d2584.js:2 page http://kh-wald-b/app/bundle.d2584.js:2 v http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 setTimeout handler*n http://kh-wald-b/app/bundle.d2584.js:2 diffed http://kh-wald-b/app/bundle.d2584.js:2 diffed http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 S http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 bundle.d2584.js:2:185905 e http://kh-wald-b/app/bundle.d2584.js:2 e http://kh-wald-b/app/bundle.d2584.js:2 _ http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 some self-hosted:137 h http://kh-wald-b/app/bundle.d2584.js:2 (Async: promise callback) d http://kh-wald-b/app/bundle.d2584.js:2 setState http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 n http://kh-wald-b/app/bundle.d2584.js:2 handleChangeWrapper http://kh-wald-b/app/bundle.d2584.js:2 notify http://kh-wald-b/app/bundle.d2584.js:2 N http://kh-wald-b/app/bundle.d2584.js:2 notify http://kh-wald-b/app/bundle.d2584.js:2 notifyNestedSubs http://kh-wald-b/app/bundle.d2584.js:2 handleChangeWrapper http://kh-wald-b/app/bundle.d2584.js:2 c http://kh-wald-b/app/bundle.d2584.js:2 Yf http://kh-wald-b/app/bundle.d2584.js:2 default http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 tryOrUnsub http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 observe http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 _execute http://kh-wald-b/app/bundle.d2584.js:2 execute http://kh-wald-b/app/bundle.d2584.js:2 flush http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 scheduleMessage http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 notifyNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 pr http://kh-wald-b/app/bundle.d2584.js:2 (Async: promise callback) pr http://kh-wald-b/app/bundle.d2584.js:2 _trySubscribe http://kh-wald-b/app/bundle.d2584.js:2 subscribe http://kh-wald-b/app/bundle.d2584.js:2 F http://kh-wald-b/app/bundle.d2584.js:2 _innerSub http://kh-wald-b/app/bundle.d2584.js:2 _tryNext http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 _next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 observe http://kh-wald-b/app/bundle.d2584.js:2 dispatch http://kh-wald-b/app/bundle.d2584.js:2 _execute http://kh-wald-b/app/bundle.d2584.js:2 execute http://kh-wald-b/app/bundle.d2584.js:2 flush http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 schedule http://kh-wald-b/app/bundle.d2584.js:2 scheduleMessage http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 next http://kh-wald-b/app/bundle.d2584.js:2 Yf http://kh-wald-b/app/bundle.d2584.js:2 default http://kh-wald-b/app/bundle.d2584.js:2 d http://kh-wald-b/app/bundle.d2584.js:2 page http://kh-wald-b/app/bundle.d2584.js:2 v http://kh-wald-b/app/bundle.d2584.js:2 forEach self-hosted:203 b http://kh-wald-b/app/bundle.d2584.js:2 forEach self-hosted:203 b http://kh-wald-b/app/bundle.d2584.js:2 (Async: setTimeout handler) n http://kh-wald-b/app/bundle.d2584.js:2 (Async: FrameRequestCallback) diffed http://kh-wald-b/app/bundle.d2584.js:2 diffed http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 S http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 b http://kh-wald-b/app/bundle.d2584.js:2 http://kh-wald-b/app/bundle.d2584.js:2 h http://kh-wald-b/app/bundle.d2584.js:2 some self-hosted:137 h http://kh-wald-b/app/bundle.d2584.js:2 Uncaught Object { jsonrpc: "2.0", id: 16, result: (1) […] } bundle.d2584.js:2:74607 Source-Map-Fehler: Error: request failed with status 404 Ressourcen-Adresse: http://kh-wald-b/app/bundle.d2584.js Source-Map-Adresse: bundle.d2584.js.map

der-nele commented 1 year ago

@ilario by the way if i go direct to http://thisnode.info/app/#/notes it works and also the rest from menue works. just this http://thisnode.info/app/#/rx make the error and from there you can't load the menue by butten

ilario commented 1 year ago

@ilario by the way if i go direct to http://thisnode.info/app/#/notes it works and also the rest from menue works. just this http://thisnode.info/app/#/rx make the error and from there you can't load the menue by butten

Interesting!

Are you using LibreMesh on top of OpenWrt 19.07 or 22.03?

der-nele commented 1 year ago

OpenWrt 22.03.4

ilario commented 1 year ago

Ok, so it is exactly the same that I see. On 19.07 seems working fine.

selankon commented 1 year ago

Hi,

I'm looking to fix it: using the developer tools on firefox (f12) and looking the network tab, I found that some responses are broken. Concretely for this calls:

{
    "id": 20,
    "jsonrpc": "2.0",
    "method": "call",
    "params": [
        "7d2d37f0ab1c27c0e1475bc2e51293ea",
        "lime-metrics",
        "get_station_traffic",
        {}
    ]
}

{
    "id": 18,
    "jsonrpc": "2.0",
    "method": "call",
    "params": [
        "7d2d37f0ab1c27c0e1475bc2e51293ea",
        "iwinfo",
        "assoclist",
        {}
    ]
}

So, I am going to assume that the lua scripts related to this calls are broken (they just print something that is not a JSON format string, su ubus just get broken and send random stuff..)

Going to the router we can debug using following commands:

ubus call lime-metrics get_station_traffic '{}'
ubus call iwinfo assoclist '{}'

This commands will fail because are the same as the http call is doing. So lets call the lua script directly

echo '{}' | /usr/libexec/rpcd/lime-metrics call get_station_traffic

And here we can see a stackstrace error..:

stack traceback:
    /usr/lib/lua/lime-metrics.lua:113: in function 'get_station_traffic'
    /usr/libexec/rpcd/lime-metrics:45: in function 'get_station_traffic'
    /usr/libexec/rpcd/lime-metrics:71: in main chunk
    [C]: ?

And for the other command, iwinfo assoclist, i cannot find where and how is exactly exposed and how it works but I found pieces on the code like this one:

iwinfo.nl80211.assoclist

@ilario do you know what is this nl80211 and if is different on new openwrt versions?

selankon commented 1 year ago

Ok, going deeper I found that the problem is not on te lua code, here we can see that the function get_station_traffic want two parameters that are not send from the frontend. If we see, on branch master, how actually the call looks like:

        return api.call(sid, 'lime-metrics', 'get_station_traffic', { station_mac: node.station_mac, iface: node.iface })

AFAIK this is called here and the origin of the info (mac and iface) are obtained from this call:

{
    "id": 12,
    "jsonrpc": "2.0",
    "method": "call",
    "params": [
        "7d2d37f0ab1c27c0e1475bc2e51293ea",
        "lime-utils",
        "get_node_status",
        {}
    ]
}

Where on the response the most active iface is empty:

{
    "jsonrpc": "2.0",
    "id": 12,
    "result": [
        0,
        {
            "ips": [
                {
                    "version": "4",
                    "address": "10.13.127.100/16"
                },
                {
                    "version": "6",
                    "address": "fd0d:fe46:8ce8::eb:7f64/64"
                },
                {
                    "version": "6",
                    "address": "fe80::d65f:25ff:feeb:7f64/64"
                }
            ],
            "hostname": "LiMe-eb7f64",
            "switch_status": [],
            "status": "ok",
            "uptime": "186.6",
            "most_active": []
        }
    ]
}

So probably the problem is over there, simply the frontend should expect an empty most active iface.

But anyway this is not happening anymore on the develop branch. This page was migrated from redux to react-query and unnecessary calls where deleted. You can test it runing the limeapp locally doing something similar to:

NODE_HOST=10.13.0.1 npm run dev

This will point your localhost limeapp to the router so you can see the landing page without the most active iface box.

This issue is fixed on develop so can be closed