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
- HTTP Server API
- MD5 API
- C++ Wrapper (Optional)
- cpp/CivetServer.cpp
- cpp/CivetServer.h
Other Files
- Reference C Server
- Reference C++ Server
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