mg.write("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n") mg.write([[
This is Lua script example 1, served by the CivetWeb web server, version ]] .. mg.version .. [[.
The following features are available:
Today is " .. os.date("%A") .. "
\r\n") mg.write("URI is " .. mg.request_info.uri .. "
\r\n") mg.write("\r\n
\r\n")
-- Open database
local db, errcode, errmsg = sqlite3.open('requests.db')
if db then
-- 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,
civetwebversion,
luaversion,
aux
);
]])
-- Add columns to table created with older version
db:exec("ALTER TABLE requests ADD COLUMN civetwebversion;")
db:exec("ALTER TABLE requests ADD COLUMN luaversion;")
db:exec("ALTER TABLE requests ADD COLUMN aux;")
-- 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,
mg.version,
_VERSION,
""
)
stmt:step()
stmt:finalize()
-- Show all previous records
mg.write('| id | \n") mg.write("timestamp | \n") mg.write("method | \n") mg.write("uri | \n") mg.write("addr | \n") mg.write("civetweb | \n") mg.write("lua | \n") mg.write("aux | \n") mg.write("
|---|---|---|---|---|---|---|---|
| " .. v[i] .. " | \n") i = i+1 end mg.write("