I cobbled this together as part of a wlan project a few years ago. I am not an Ubuntu / networking stack native and there was a decent amount of research involved to solve across platforms, browsers, etc. Following a HN discussion[1] last week I thought it might be worth extracting the relevant juicy bits into a gist.Separate to this was an OS-specific landing page flow that explained how to "accept" the captive portal (with overlays / pointers in the correct part of the screen). I haven't included this but might add some screenshots per device when I get a chance.
Thoughts / criticisms / improvements most appreciated.
[1] https://news.ycombinator.com/item?id=32092104