Over a million developers have joined DZone.

Captive DNS Server Example (Mongoose More Than an Embedded Web Server)

DZone's Guide to

Captive DNS Server Example (Mongoose More Than an Embedded Web Server)

Mongoose is simple and solid. It's one of the easiest to use embeddable servers around. It's usable in a wide range of applications, and here's yet another one.

· Web Dev Zone
Free Resource

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

This week we continue our series of examples for Mongoose Embedded Web Server with an example of a DNS server.

In this case, it is a DNS server intended to be used to build a captive portal, i.e. where the user needs to log in before using public WiFi. Such a server responds to all queries with its own IP address and an HTTP server running alongside serves the portal page to the user.

Building a DNS server with Mongoose is easy: mg_bind to a udp:// port, call mg_set_protocol_dns on the connection and handle incoming MG_DNS_MESSAGEevents.

Our captive_dns_server example puts this all together:

$ ./captive_dns_server
Listening on 'udp://:5533'
ev_handler           Q type 1 name example.org


$ dig @localhost -p 5533 example.org

; <<>> DiG 9.9.5-11ubuntu1.3-Ubuntu <<>> @localhost -p 5533 example.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44936
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITHY: 0, ADDITIONAL: 0

;example.org.                   IN      A

example.org.            10      IN      A

;; Query time: 0 msec
;; WHEN: Mon Apr 18 19:56:51 IST 2016
;; MSG SIZE  rcvd: 56

Follow the Example

To follow the example download Mongoose Embedded Webserver. It's open source under GPLv2, so free of charge for non-commercial use. 

Download Mongoose

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.

mongoose ,dns ,embedded development

Published at DZone with permission of Deomid Ryabkov, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.


Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}