sudomesh / sudowrt-firmware

Scripts to build the sudo mesh OpenWRT firmware.
Other
73 stars 19 forks source link

Nice failure modes when node is disconnected from internet / mesh #39

Open Juul opened 9 years ago

Juul commented 9 years ago

When a node has no route to the internet, but it does have a route to at least one service-browser instance, then it should show a splash page that explains what's up and lets the user go to the service browser instance and find local services.

When a node has no route to the internet and no route to any service-browser instance, but it can see at least one other (non-extender) mesh node, then it should show a splash page explaining the situation and listing any local services it may be running (offline wikipedia, offline maps, etc.)

When a node cannot see any other (non-extender) mesh nodes, but it is running local services then it should show a splash page with the local services.

When a node cannot see any other (non-extender) mesh nodes and it is not running any local services, then it should disable its peoplesopen.net wifi network since there is absolutely no point in connecting.

Using this setup we have one big worry: Someone is standing between two nodes. One has internet, the other has nothing. The nodes cannot see each other but the user can see both. The user's device gets a slightly stronger signal from the node with no internet and connects to that one. Even though the user has a possible route to the internet (and may know that they do) they get a nasty splash screen. This is even worse if their home is in such a blind spot and they keep switching between the good and the bad node.

One solution to that problem is to simply disable the peoplesopen.net wifi network on a node completely as soon as it stops being able to access any service-browser instances. We could then enable a local services splash page on a pplsopen-emergency- network. This splash page should also explain how to remove the wifi network from the remembered networks on the user's device so people won't get annoyed by auto-connecting to the wrong network just because they connected to it once.

The local services on the closest node should always be explicitly accessible by going to something like services.local

Maybe in the future we can run service-browser directly on every home node. It looks like there is a ubus interface for scanning for DNS-SD services included as an OpenWRT package now.