Lango

Integration guide

This guide explains how to connect your network equipment (routers, wireless controllers, access points and switches) and your business systems (PMS, student, patient, ticketing or loyalty systems) to Lango.

Everything in this guide is generated for you, with your own values filled in, on each site's Setup & settings page in your portal. Use this page as the reference.

How it works

  1. A guest joins your Wi-Fi (or plugs into a guest port). Your network device intercepts the first web request and redirects the browser to your site's Splash URL (https://lango.localtel.tech/p/<site-key>), adding parameters such as the client MAC, AP and SSID.
  2. The guest signs in with their room/ID + last name (checked live against your PMS or directory), an access code, email, or click-through.
  3. The platform creates a short-lived, single-use credential and hands it back to your device in one of three ways:
  4. RADIUS (most vendors): the guest's browser posts the credential to the device's login URL. The device asks our cloud RADIUS, which replies with Access-Accept, Session-Timeout, Idle-Timeout and bandwidth limits.
  5. Controller API (UniFi): the cloud authorises the device's MAC directly.
  6. Signed URL (Juniper Mist): the browser is sent to the vendor cloud with an HMAC-signed authorisation.
  7. The guest lands on your branded Welcome page, which can offer paid speed upgrades if your package includes them. When the guest checks out in your PMS, or the session expires, the platform sends a RADIUS Disconnect / CoA to remove their access.

Values you need from your portal

ValueWhere
Splash URLSite → Setup & settings → Portal URLs
Welcome (success) URLSame place
Walled-garden hostlango.localtel.tech (plus your logo/CDN host if external)
RADIUS serverlango.localtel.tech — auth UDP 1812, accounting UDP 1813
RADIUS shared secretSite → Cloud RADIUS → Reveal (owners only)
CoA / DisconnectSent from the platform to your device's public IP on UDP 3799. Allow it in your firewall
Hotel public IP / NAS-IdentifierEnter the IP your device sends RADIUS from (your WAN IP) or its NAS-Identifier so requests are routed to the right site

General requirements (every vendor)

---

Routers & gateways

MikroTik RouterOS (hotspot) — routers, CCR, hAP, cAP via CAPsMAN

  1. RADIUS:

`` /radius add service=hotspot address=<lango.localtel.tech IP> secret=<site secret> authentication-port=1812 accounting-port=1813 timeout=3s /radius incoming set accept=yes port=3799 ``

  1. Hotspot profile:

`` /ip hotspot profile set [find default=yes] use-radius=yes login-by=http-chap,http-pap,mac-cookie radius-interim-update=5m nas-port-type=wireless-802.11 /system identity set name=<NAS identifier of your site> ``

  1. Walled garden:

`` /ip hotspot walled-garden add dst-host=lango.localtel.tech /ip hotspot walled-garden ip add dst-host=lango.localtel.tech action=accept ``

  1. Replace hotspot/login.html with the redirect template. Download it from your site page (Download MikroTik login.html). It forwards mac, ip, link-login-only, link-orig, chap-id and chap-challenge to the splash page. CHAP is computed for you.
  2. Rate limits arrive in Mikrotik-Rate-Limit. Upgrades are pushed live with CoA.
  3. Wired: run the hotspot on a bridge or VLAN interface. The same setup covers wired guest ports.

Fortinet FortiGate / FortiAP / FortiSwitch

  1. User & Authentication → RADIUS Servers: lango.localtel.tech, secret = site secret, PAP. Enable accounting.
  2. Create a firewall user group (e.g. Guest-Portal) with the RADIUS server as a remote member. Enter the same name in the site's vendor settings so the platform returns it as Fortinet-Group-Name.
  3. SSID or interface: Security mode = Captive Portal, Authentication portal = External, URL = Splash URL, user group = Guest-Portal, exempt lango.localtel.tech.
  4. CLI: config user setting → set auth-type http https and set auth-secure-http enable.
  5. FortiSwitch / wired: enable captive portal on the FortiLink VLAN interface in the same way.

Sophos Firewall (SFOS) & Sophos Central / Fusion Wireless

Huawei (AR routers, AC6000 / AirEngine controllers, S-series switches)

radius-server template cloud
 radius-server shared-key cipher <site secret>
 radius-server authentication <portal IP> 1812
 radius-server accounting <portal IP> 1813
 radius-server authorization <portal IP> shared-key cipher <site secret>
url-template name cloud
 url https://lango.localtel.tech/p/<site-key>
 url-parameter login-url ac_url https://<AC IP>:8443 ssid ssid user-mac usermac user-ipaddress userip ap-mac apmac redirect-url url
portal web-authen-server https ssl-policy <policy>
web-auth-server cloud
 url-template cloud
portal-access-profile name cloud
 web-auth-server cloud direct
free-rule-template name default_free_rule
 free-rule 1 destination ip <portal IP> mask 32

Bind the portal-access profile, RADIUS authentication scheme and accounting scheme to an authentication profile. Then apply that to the guest VAP profile, or for wired guests, to the switch access interface. If your firmware posts different field names, change the parameter mapping on the site page. The defaults are ac_url, usermac, userip, apmac, ssid and url; credentials are sent as userName and password.

Ruijie / Reyee (Ruijie Cloud, AC, EG gateways)

pfSense / OPNsense / OpenWrt / CoovaChilli

Use the Generic RADIUS external portal vendor: point the portal URL to the Splash URL and the RADIUS server to ours, then map the redirect parameters on the site page.

---

Wireless controllers & cloud-managed access points

Cisco Catalyst 9800 / AireOS WLC / Catalyst switches (IOS-XE)

Cisco Meraki (MR / MX / MS)

HPE Aruba (Instant, Central, Mobility Controllers, AOS-CX switches)

Ruckus (SmartZone / vSZ, ZoneDirector, Unleashed)

Ubiquiti UniFi

Grandstream GWN (GWN Manager, GWN.Cloud, GCC)

Juniper Mist

Other vendors

Cambium, Zyxel Nebula, EnGenius, Extreme, H3C, Netgear Insight, Alcatel-Lucent and other vendors with an external captive portal + RADIUS option work through the Generic adapter. Map the redirect parameters the device sends and the field names it expects.

---

Switches & wired guest access

Wired captive portals use the same building blocks: redirect + RADIUS.

Switch familyFeature to use
Cisco Catalyst (IOS-XE)parameter-map type webauth + ip admission on access ports, or central web auth with Catalyst Center
Aruba AOS-CXPort-access captive portal with the RADIUS server group
Huawei S-seriesPortal authentication on the access interface (same URL template as above)
FortiSwitchCaptive portal on the FortiLink VLAN interface of the FortiGate
MikroTik (CRS/CSS behind a router)Hotspot on the guest VLAN interface of the router
TP-Link Omada switches + gatewayGateway portal on the wired LAN network (gatewayMac)
Ruijie / Huawei / H3C access switchesWeb authentication with external portal + RADIUS

802.1X / MAB: devices without a browser (smart TVs, consoles) can use MAC authentication. Enable MAC auth on the site, sign the device in once from a phone or laptop on the same MAC, or add it as an access code. The switch then authenticates the MAC against our RADIUS.

---

Connecting your business systems

Oracle OPERA (hotels)

OptionWhen to use itSetup
FIAS (IFC8 / OEDS)OPERA 5 or OPERA Cloud with an on-prem interfaceAsk your Oracle partner for a FIAS interface of type WW (Internet). In Integrations → Oracle OPERA — FIAS, enter the IFC host and port (client mode), or let IFC connect to us (server mode). Requires a VPN or a firewall rule limited to the platform IP. Handles check-in/out/move in real time, database resync and charge-to-room postings.
OHIP (REST)OPERA Cloud without an on-prem interfaceRegister an app in the OHIP developer portal with the Reservations API. Enter the gateway URL, hotel ID, client ID/secret and app key. The in-house list is polled every few minutes.
Oracle Simphony is Oracle's restaurant POS. Guest names and room numbers come from OPERA. Simphony can still issue Wi-Fi access codes on receipts through the voucher API.

Any other system (Mews, Cloudbeds, Protel, Apaleo, RMS, eZee, hospital HIS, SIS, ticketing, CRM)

  1. In PMS & API → API keys, generate a key and limit it to one site if you like.
  2. Push events from your system or middleware (Zapier, Make, n8n, a small script):
POST https://lango.localtel.tech/api/v1/sites/<site-key>/guests/checkin
Authorization: Bearer cpk_live_…
Content-Type: application/json

{"reservation_id":"884213","room":"1204","last_name":"Otieno","first_name":"Amani","departure":"2026-11-16"}
EventEndpoint
Check-in / registrationPOST /sites/{site}/guests/checkin
Update (name, dates, room)POST /sites/{site}/guests/update
Room / bed / seat movePOST /sites/{site}/guests/move
Check-out / leave (disconnects devices)POST /sites/{site}/guests/checkout
Nightly full resyncPUT /sites/{site}/guests with {"guests":[…]}

The room and last_name fields are the two values guests type in: room/bed/student ID/ticket number and surname/PIN, depending on your sector. See the API reference.

Webhooks

You can receive signed events at your own HTTPS endpoint: session.created, session.ended, guest.checked_in, guest.checked_out, posting.requested, payment.paid and payment.failed.

Verify each event: X-Portal-Signature = "sha256=" + HMAC_SHA256(secret, X-Portal-Timestamp + "." + body). Reject timestamps older than 5 minutes.

---

Security model (summary)