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>