Software: Apache/2.2.22 (Debian). PHP/5.6.36 uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) Safe-mode: OFF (not secure) /usr/share/doc/dovecot-core/wiki/ drwxr-xr-x |
Viewing file: Select action/file-type: Plugins ======= Plugins in Dovecot are really simple. They basically have two functions: * <plugin_name>_init(module) is called when 'module_dir_init()' is called. * <plugin_name>_deinit() is called when 'module_dir_deinit()' or 'module_dir_unload()' is called. The <plugin_name> is the short version of the plugin name, based on the filename. For example if the filename is 'lib11_imap_quota_plugin.so', the <plugin_name> is "imap_quota" and the init function to be called is imap_quota_plugin_init(). Versioning ---------- Since different Dovecot versions can have different APIs, your plugin should usually also define<plugin_name>_version, like: ---%<------------------------------------------------------------------------- const char *imap_quota_plugin_version = DOVECOT_VERSION; ---%<------------------------------------------------------------------------- If the version string in plugin doesn't match the version of the running binary, the plugin loading fails. The DOVECOT_VERSION is defined in Dovecot's 'config.h', which you're typically including. Dependencies ------------ Some plugins depend on another one. In some systems (but not all) it's possible to handle this by giving a nicer error message than "symbol xyz not found". There are two steps for this: First create <plugin_name>_dependencies array listing plugin names that the plugin depends on, like: ---%<------------------------------------------------------------------------- const char *imap_quota_plugin_dependencies[] = { "quota", NULL }; ---%<------------------------------------------------------------------------- Then you'll also have to make the plugin .so binary link to the other plugins: ---%<------------------------------------------------------------------------- if PLUGIN_DEPS lib11_imap_quota_plugin_la_LIBADD = \ ../quota/lib10_quota_plugin.la endif ---%<------------------------------------------------------------------------- PLUGIN_DEPS is set only if plugin dependencies are actually supported. Otherwise the build might fail or plugin loading might fail. Once all this is done, trying to load imap_quota plugin without quota plugin gives a nice error message: ---%<------------------------------------------------------------------------- Error: Can't load plugin imap_quota_plugin: Plugin quota must be loaded also ---%<------------------------------------------------------------------------- (This file was created from the wiki on 2013-11-24 04:42) |
:: Command execute :: | |
--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0389 ]-- |