commit 61605a99c43a02d9d46733f81a77d775e2639111
parent e170e916ced43134b38f502c25b9fd84c1030568
Author: Joris Vink <joris@coders.se>
Date: Wed, 5 Jun 2013 14:10:29 +0200
update README
Diffstat:
README | | | 66 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- |
1 file changed, 64 insertions(+), 2 deletions(-)
diff --git a/README b/README
@@ -4,8 +4,8 @@ Kore is a SPDY based web server that handles dynamic content via loadable
modules. Inside the examples/ directory you will find a complete example
on how such modules are built (and some tools to help you get started).
-Kore does support normal HTTP over SSL as well (for the less technological
-advanced browsers).
+Kore does support normal HTTP over SSL as well.
+(for the less technological advanced browsers).
Take a look at example.conf as well for an overview of the way a site
is configured and setup.
@@ -22,3 +22,65 @@ to the main process. Sending a SIGQUIT signal will reap all worker
processes and shutdown the server.
I should add a TODO list.
+
+Page to function mapping
+========================
+In the configuration file you specify how pages on your site are
+mapped to what callback in your module.
+
+static /profile.html serve_profile
+
+The above example binds the callback serve_profile() to the profile.html page.
+Kore automatically calls this callback when the page is requested by a client.
+
+All callbacks must be based on this prototype:
+ int callback(struct http_request *);
+
+Callback functions MUST return either KORE_RESULT_OK,
+KORE_RESULT_ERROR or KORE_RESULT_RETRY.
+
+KORE_RESULT_OK will cleanup the request and remove it.
+KORE_RESULT_ERROR will disconnect the client immediately after returning.
+KORE_RESULT_RETRY will reschedule the callback to be called again.
+
+Most of the times KORE_RESULT_ERROR or KORE_RESULT_OK should come from:
+ int http_response(struct http_request *req,
+ int status, u_int8_t *data, u_int32_t datalen);
+
+The http_response() function is used to queue up the HTTP response
+(including status code and content to be sent).
+
+If you wish to add headers to the response do so before calling http_response():
+ void http_response_header_add(struct http_request *req,
+ char *header, char *value);
+
+If your callback wants to use POST data, it should populate it first by calling:
+ int http_populate_arguments(struct http_request *req);
+
+The returned value is the number of arguments available.
+After calling the populate function you can retrieve arguments by calling:
+ int http_argument_lookup(struct http_request *req,
+ const char *name, char **out);
+
+This will store the value of the requested argument in the out parameter.
+If http_argument_lookup() returns KORE_RESULT_ERROR out will be NULL.
+
+Please see the example/ folder for a good overview of a module.
+
+Static content
+==============
+Static content is included directly in the module.
+The example module shows how this is done.
+
+After adding each static component to the Makefile, it will convert it
+to a .c source file and export certain symbols that can be used by the module.
+
+Each component gets 3 symbols:
+ static_[html|css]_<component_name> actual data.
+ static_len_[html|css]_<component_name> length of the data.
+ static_mtime_[html|css]_<component_name> last modified timestamp.
+
+API functions
+=============
+ See includes/kore.h and includes/http.h for a definite overview.
+