Annotation of embedaddon/lighttpd/doc/outdated/plugins.txt, revision 1.1.1.1
1.1 misho 1: ================
2: Plugin Interface
3: ================
4:
5: ------------
6: Module: core
7: ------------
8:
9: :Author: Jan Kneschke
10: :Date: $Date: 2004/08/01 07:01:29 $
11: :Revision: $Revision: 1.1 $
12:
13: :abstract:
14: The plugin interface is an integral part of lighttpd which
15: provides a flexible way to add specific functionality to lighttpd.
16:
17: .. meta::
18: :keywords: lighttpd, plugins
19:
20: .. contents:: Table of Contents
21:
22: Description
23: ===========
24:
25: Plugins allow you to enhance the functionality of lighttpd without
26: changing the core of the webserver. They can be loaded at startup time
27: and can change virtually any aspect of the behaviour of the webserver.
28:
29: Plugin Entry Points
30: -------------------
31:
32: lighttpd has 16 hooks which are used in different states of the
33: execution of the request:
34:
35: Serverwide hooks
36: ````````````````
37:
38: :init_:
39: called when the plugin is loaded
40: :cleanup_:
41: called when the plugin is unloaded
42: :set_defaults_:
43: called when the configuration has to be processed
44: :handle_trigger_:
45: called once a second
46: :handle_sighup_:
47: called when the server received a SIGHUP
48:
49: Connectionwide hooks
50: ````````````````````
51:
52: Most of these hooks are called in ``http_response_prepare()`` after some
53: fields in the connection structure are set.
54:
55: :handle_uri_raw_:
56: called after uri.path_raw, uri.authority and uri.scheme are set
57: :handle_uri_clean_:
58: called after uri.path (a clean URI without .. and %20) is set
59: :handle_docroot_:
60: called at the end of the logical path handle to get a docroot
61: :handle_subrequest_start_:
62: called if the physical path is set up and checked
63: :handle_subrequest_:
64: called at the end of ``http_response_prepare()``
65: :handle_physical_path_:
66: called after the physical path is created and no other handler is
67: found for this request
68: :handle_request_done_:
69: called when the request is done
70: :handle_connection_close_:
71: called if the connection has to be closed
72: :handle_joblist_:
73: called after the connection_state_engine is left again and plugin
74: internal handles have to be called
75: :connection_reset_:
76: called if the connection structure has to be cleaned up
77:
78:
79: Plugin Interface
80: ----------------
81:
82: \*_plugin_init
83: ``````````````
84:
85: Every plugin has a uniquely-named function which is called after the
86: plugin is loaded. It is used to set up the ``plugin`` structure with
87: some useful data:
88:
89: - name of the plugin ``name``
90: - all hooks
91:
92: The field ``data`` and ``lib`` should not be touched in the init function.
93: ``lib`` is the library handler from dlopen and ``data`` will be the storage
94: of the internal plugin data.
95:
96: :returns:
97: 0 (not handled)
98:
99: init
100: ````
101:
102: The first real call of a plugin function is the init hook which is used
103: to set up the internal plugin data. The internal plugin is assigned the
104: ``data`` field mentioned in the \*_plugin_init description.
105:
106: :returns:
107: a pointer to the internal plugin data.
108:
109: cleanup
110: ```````
111:
112: The cleanup hook is called just before the plugin is unloaded. It is meant
113: to free all buffers allocated in ``init`` or somewhere else in the plugin
114: which are still not freed and to close all handles which were opened and
115: are not closed yet.
116:
117: :returns:
118: HANDLER_GO_ON if ok (not handled)
119:
120: set_defaults
121: ````````````
122:
123: set_defaults is your entry point into the configfile parsing. It should
124: pass a list of options to ``config_insert_values`` and check if
125: the plugin configuration is valid. If it is not valid yet, it should
126: set useful defaults or return with HANDLER_ERROR and an error message.
127:
128: :returns:
129: HANDLER_GO_ON if ok
130:
131: HANDLER_ERROR will terminate lighttpd
132:
133: connection_reset
134: ````````````````
135:
136: called at the end of each request
137:
138: :returns:
139: HANDLER_GO_ON if ok
140:
141: HANDLER_ERROR on error
142:
143: handle_trigger
144: ``````````````
145:
146: called once a second
147:
148: :returns:
149: HANDLER_GO_ON if ok
150:
151: HANDLER_ERROR on error
152:
153: handle_sighup
154: `````````````
155:
156: called if a SIGHUP is received (cycling logfiles, ...)
157:
158: :returns:
159: HANDLER_GO_ON if ok
160:
161: HANDLER_ERROR on error
162:
163: handle_uri_raw
164: ``````````````
165:
166: called after uri_raw is set
167:
168: :returns:
169: HANDLER_GO_ON if ok
170: HANDLER_FINISHED if the final output is prepared
171:
172: HANDLER_ERROR on error
173:
174: handle_uri_clean
175: ````````````````
176:
177: called after uri.path is set
178:
179: :returns:
180: HANDLER_GO_ON if ok
181: HANDLER_FINISHED if the final output is prepared
182:
183: HANDLER_ERROR on error
184:
185: handle_docroot
186: ``````````````
187:
188: called when a docroot is needed
189:
190: :returns:
191: HANDLER_GO_ON if ok
192: HANDLER_FINISHED if the final output is prepared
193:
194: HANDLER_ERROR on error
195:
196: handle_subrequest_start
197: ```````````````````````
198:
199: called after physical.path is set
200:
201: :returns:
202: HANDLER_GO_ON if ok
203: HANDLER_FINISHED if the final output is prepared
204:
205: HANDLER_ERROR on error
206:
207: handle_subrequest
208: `````````````````
209:
210: called if subrequest_start requested a COMEBACK or a WAIT_FOR_EVENT
211:
212: :returns:
213: HANDLER_GO_ON if ok
214: HANDLER_FINISHED if the final output is prepared
215:
216: HANDLER_ERROR on error
217:
218: handle_physical_path
219: ````````````````````
220:
221: called after physical.path is set
222:
223: :returns:
224: HANDLER_GO_ON if ok
225: HANDLER_FINISHED if the final output is prepared
226:
227: HANDLER_ERROR on error
228:
229:
230: handle_request_done
231: ```````````````````
232:
233: called at the end of the request (logging, statistics, ...)
234:
235: :returns:
236: HANDLER_GO_ON if ok
237:
238: HANDLER_ERROR on error
239:
240: handle_connection_close
241: ```````````````````````
242:
243: called if the connection is terminated
244:
245: :returns:
246: HANDLER_GO_ON if ok
247:
248: HANDLER_ERROR on error
249:
250: handle_joblist
251: ``````````````
252:
253: called if the state of the connection has changed
254:
255: :returns:
256: HANDLER_GO_ON if ok
257:
258: HANDLER_ERROR on error
259:
260:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>