Embedding.md 2.2 KB

Embedding Civetweb

Civetweb is primarily designed so applications can easily add HTTP server functionality. For example, an application server could use Civetweb to enable a web service interface for automation or remote control.

Files

There is no library, it is just a small set of files to compile in to the application.

Required Files

  1. HTTP Server API
    • civetweb.c
    • civetweb.h
  2. MD5 API
    • md5.h
    • md5.c
  3. C++ Wrapper (Optional)
    • cpp/CivetServer.cpp
    • cpp/CivetServer.h

Other Files

  1. Reference C Server
    • main.c
  2. Reference C++ Server
    • cpp/example.cpp

Quick Start

By default, the server will automatically serve up files like a normal HTTP server. An embedded server is most likely going to overload this functionality.

C

  • Use mg_start() to start the server.
  • Use mg_stop() to stop the server.
  • Use mg_start() options to select the port and document root among other things.
  • Use mg_start() callbacks to add your own hooks. The begin_request callback is almost always what is needed.

C++

  • Create CivetHandlers for each URI.
  • Register the handlers with CivertServer::addHandler()
  • CivetServer starts on contruction and stops on destruction.
  • Use contructor options to select the port and document root among other things.
  • Use constructor callbacks to add your own hooks.

LUA Support

LUA is a server side include functionality. Files ending in .la will be processed with LUA.

Add the following CFLAGS
  • -DLUA_COMPAT_ALL
  • -DUSE_LUA
  • -DUSE_LUA_SQLITE3
Add the following sources
  • mod_lua.c
  • lua-5.2.1/src
    • lapi.c
    • lauxlib.c
    • lbaselib.c
    • lbitlib.c
    • lcode.c
    • lcorolib.c
    • lctype.c
    • ldblib.c
    • ldebug.c
    • ldo.c
    • ldump.c
    • lfunc.c
    • lgc.c
    • linit.c
    • liolib.c
    • llex.c
    • lmathlib.c
    • lmem.c
    • loadlib.c
    • lobject.c
    • lopcodes.c
    • loslib.c
    • lparser.c
    • lstate.c
    • lstring.c
    • lstrlib.c
    • ltable.c
    • ltablib.c
    • ltm.c
    • lundump.c
    • lvm.c
    • lzio.c
  • build/sqlite3.c
  • build/sqlite3.h
  • build/lsqlite3.c