Annotation of embedaddon/lighttpd/doc/outdated/plugins.txt, revision 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>