HTTP/1.0 200 OK Content-Type: text/html
This is another example of a Lua server page, served by Civetweb web server.
The following features are available:
Today is mg.write(os.date("%A")) ?>
URI is mg.write(mg.request_info.uri) ?>
URI is =mg.request_info.uri?>
Database example:
  -- Open database
  local db = sqlite3.open('requests.db')
  -- Note that the data base is located in the current working directory
  -- of the process if no other path is given here.
  -- Setup a trace callback, to show SQL statements we'll be executing.
  -- db:trace(function(data, sql) mg.write('Executing: ', sql: '\n') end, nil)
  -- Create a table if it is not created already
  db:exec([[
    CREATE TABLE IF NOT EXISTS requests (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      timestamp NOT NULL,
      method NOT NULL,
      uri NOT NULL,
      addr
    );
  ]])
  -- Add entry about this request
  local stmt = db:prepare(
    'INSERT INTO requests VALUES(NULL, datetime("now"), ?, ?, ?);');
  stmt:bind_values(mg.request_info.request_method,
                   mg.request_info.uri,
                   mg.request_info.remote_port)
  stmt:step()
  stmt:finalize()
  -- Show all previous records
  mg.write('Previous requests:\n')
  stmt = db:prepare('SELECT * FROM requests ORDER BY id DESC;')
  while stmt:step() == sqlite3.ROW do
    local v = stmt:get_values()
    mg.write(v[1] .. ' ' .. v[2] .. ' ' .. v[3] .. ' '
          .. v[4] .. ' ' .. v[5] .. '\n')
  end
  -- Close database
  db:close()
?>