MicroHTTPd Module

Daniel-Constantin Mierla

   <miconda@gmail.com>

Edited by

Daniel-Constantin Mierla

   <miconda@gmail.com>

   Copyright © 2023 asipto.com
     __________________________________________________________________

   Table of Contents

   1. Admin Guide

        1. Overview
        2. Dependencies

              2.1. Kamailio Modules
              2.2. External Libraries or Applications

        3. Parameters

              3.1. listen_addr (int)
              3.2. listen_port (int)
              3.3. event_callback (str)

        4. Functions

              4.1. mhttpd_reply(code, reason, ctype, body)

        5. Event Routes

              5.1. microhttpd:request

   List of Examples

   1.1. Set listen_addr parameter
   1.2. Set listen_port parameter
   1.3. Set event_callback parameter
   1.4. mhttpd_reply usage

Chapter 1. Admin Guide

   Table of Contents

   1. Overview
   2. Dependencies

        2.1. Kamailio Modules
        2.2. External Libraries or Applications

   3. Parameters

        3.1. listen_addr (int)
        3.2. listen_port (int)
        3.3. event_callback (str)

   4. Functions

        4.1. mhttpd_reply(code, reason, ctype, body)

   5. Event Routes

        5.1. microhttpd:request

1. Overview

   This module implements an embedded HTTP server using libmicrohttpd.

2. Dependencies

   2.1. Kamailio Modules
   2.2. External Libraries or Applications

2.1. Kamailio Modules

   The following modules must be loaded before this module:
     * none.

2.2. External Libraries or Applications

   The following libraries or applications must be installed before
   running Kamailio with this module loaded:
     * libmicrohttpd - libmicrohttpd library

3. Parameters

   3.1. listen_addr (int)
   3.2. listen_port (int)
   3.3. event_callback (str)

3.1. listen_addr (int)

   IPv4 address to listen for HTTP connection. If not set, then it listens
   on all local addresses (port has to be specified by listen_port
   parameter).

   Default value is "" (empty - not set).

   Example 1.1. Set listen_addr parameter
...
modparam("microhttpd", "listen_addr", "127.0.0.1")
...

3.2. listen_port (int)

   Port to listen for HTTP connection.

   Default value is 8280.

   Example 1.2. Set listen_port parameter
...
modparam("microhttpd", "listen_port", 8284)
...

3.3. event_callback (str)

   The name of the function in the kemi configuration file (embedded
   scripting language such as Lua, Python, ...) to be executed instead of
   event_route[microhttpd:request] block.

   The function has one string parameter with the value
   "microhttpd:request".

   Default value is 'empty' (no function is executed for events).

   Example 1.3. Set event_callback parameter
...
modparam("microhttpd", "event_callback", "ksr_microhttpd_event")
...
-- event callback function implemented in Lua
function ksr_microhttpd_event(evname)
        KSR.info("===== microhttpd module triggered event: " .. evname .. "\n");
        return 1;
end
...

4. Functions

   4.1. mhttpd_reply(code, reason, ctype, body)

4.1.  mhttpd_reply(code, reason, ctype, body)

   Send back a reply with content-type and body.

   Example 1.4. mhttpd_reply usage
...
event_route[microhttpd:request] {
    mhttpd_reply("200", "OK", "text/html",
        "<html><body>OK</body></html>");
}
...

5. Event Routes

   5.1. microhttpd:request

5.1.  microhttpd:request

   The event route is executed when a new HTTP request is received.

   Inside it, the $mhttpd(...) group of variables is available, giving
   access to several attributes of the HTTP request, such as method, URL,
   data (body) or headers.
...
...
loadmodule "microhttpd.so
...
event_route[microhttpd:request] {
    xinfo("request: $mhttpd(method) - url: $mhttpd(url) - data: [$mhttpd(data)]\
n");
    mhttpd_reply("200", "OK", "text/html",
        "<html><body>OK</body></html>");
}
...
