Modules.mdwn
changeset 1 1e57279b82b1
equal deleted inserted replaced
0:eff7327bcabe 1:1e57279b82b1
       
     1 
       
     2 [[!toc levels=2]]
       
     3 
       
     4 # Overview
       
     5 
       
     6 Starting from version 0.10.0, mcabber supports dynamic loading of modules. It
       
     7 introduces the command `/module` with subcommands to load, unload and obtain
       
     8 info on modules. This command is allowed during initialization time, so you can
       
     9 specify it in your mcabberrc. Modules are searched in the directory specified in
       
    10 mcabber variable `modules_dir`, that you should set before issuing these
       
    11 commands. Default module installation/loading directory is `/usr/lib/mcabber`.
       
    12 
       
    13 The API is still experimental and likely to be changed, but there is a short
       
    14 HOWTO about writing your own modules in `doc/` subdirectory of mcabber source.
       
    15 It contains up-to-date information on module-related routines that mcabber
       
    16 offers and some examples.
       
    17 
       
    18 # Existing modules
       
    19 
       
    20 Right now the following modules are available (if you know of some other
       
    21 modules, feel free to add them to list below):
       
    22 
       
    23 ## antispam
       
    24 
       
    25 * URL: <https://bitbucket.org/georgri/mcabber-modules/>
       
    26 
       
    27 Enables simple question-based antispam-bot which asks predefined question to
       
    28 every unsubscribed buddy, expecting them to give the right predefined answer.
       
    29 Currently you may change the standard question/answer only by changing the
       
    30 source code.
       
    31 
       
    32 ## avatar
       
    33 
       
    34 * URL: <http://isbear.org.ua/hg/isbear/mcabber-avatar/>
       
    35 * Homepage: <http://isbear.org.ua/docs/mcabber-avatar/index/>
       
    36 * Mirror: <http://hg.lilotux.net/mod-mcabber-avatar/>
       
    37 
       
    38 This module implements avatar publishing/retrieving via pep/pubsub. It informs
       
    39 you when your buddies publish their avatars via pep and provides command
       
    40 `/avatar` to publish your own. But this is not all: It also will actually show
       
    41 you buddy's avatar! Yes, it is aalib :)
       
    42 
       
    43 Note: this module should eventually merge with pep (at least partially)
       
    44 
       
    45 ## avv
       
    46 
       
    47 * URL: <http://isbear.org.ua/hg/isbear/mcabber-avv/>
       
    48 * Homepage: <http://isbear.org.ua/docs/mcabber-avv/index/>
       
    49 
       
    50 Advanced version verification (or something like that, I now cannot recollect
       
    51 initial meaning of this abbreviature). Alternative module loading system, that
       
    52 allows flexible module compatibility determination. It splits API, provided by
       
    53 mcabber into a set of smaller APIs. This allows to omit module update, when
       
    54 major API change have not changed used by this module mini-APIs. Also, module
       
    55 information is now stored separately, in usual text file, that may be adapted by
       
    56 hand to user environment. Fallback legacy module loading scheme is not yet
       
    57 implemented :(
       
    58 
       
    59 ## beep
       
    60 
       
    61 * URL: <http://mcabber.com/hg/>
       
    62 
       
    63 Simple module to beep on **all** messages. Available in mcabber 0.10.0. Serves the
       
    64 purpose of example for module writing HOWTO.
       
    65 
       
    66 ## clock
       
    67 
       
    68 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
    69 
       
    70 This module uses the 'info' option to display the date and time in the status
       
    71 bar. This module is part of the mcabber-modules repository.
       
    72 
       
    73 ## cmd
       
    74 
       
    75 * URL: <http://isbear.org.ua/hg/isbear/mcabber-cmd/>
       
    76 * Homepage: <http://isbear.org.ua/docs/mcabber-cmd/index/>
       
    77 * Mirror: <http://hg.lilotux.net/mod-mcabber-cmd/>
       
    78 
       
    79 Provides command `/cmd`, that sends output of specified shell command to current buddy.
       
    80 
       
    81 ## commands (custom)
       
    82 
       
    83 * URL: <https://github.com/hirthwork/mcabber-commands/>
       
    84 
       
    85 Allows to add commands with dynamic completion lists, based on regexp-matching
       
    86 over incoming buddy messages (a bit similar to urlopen). Useful for
       
    87 microblogging.
       
    88 
       
    89 ## comment
       
    90 
       
    91 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
    92 
       
    93 Trivial module; adds a command `#` to ignore a line. This module is part of the
       
    94 mcabber-modules repository.
       
    95 
       
    96 ## disco
       
    97 
       
    98 * URL: <http://isbear.org.ua/hg/isbear/mcabber-disco/>
       
    99 * Homepage: <http://isbear.org.ua/docs/mcabber-disco/index/>
       
   100 * Mirror: <http://hg.lilotux.net/mod-mcabber-disco/>
       
   101 
       
   102 Module adds `/disco` command, that sends service discovery requests.
       
   103 
       
   104 ## env
       
   105 
       
   106 * URL: <http://isbear.org.ua/hg/isbear/mcabber-env/>
       
   107 * Homepage: <http://isbear.org.ua/docs/mcabber-env/index/>
       
   108 * Mirror: <http://hg.lilotux.net/mod-mcabber-env/>
       
   109 
       
   110 Tampering with mcabber's environment. This module can be useful for development
       
   111 and debugging, as well as for on-the-fly changing of some parameters, like
       
   112 `AAOPTS` for aalib, used in avatar module. Also provides way to change current
       
   113 working directory.
       
   114 
       
   115 ## eventcmd
       
   116 
       
   117 * URL: <http://isbear.org.ua/hg/isbear/mcabber-patches/>
       
   118 * Homepage: <http://isbear.org.ua/docs/mcabber-patches/index/>
       
   119 * Mirror: <http://hg.lilotux.net/mcabber-experimental/>
       
   120 
       
   121 Modularization of legacy mcabber eventcmd script. Available in experimental
       
   122 version of mcabber.
       
   123 
       
   124 ## eventcmd-ng
       
   125 
       
   126 * URL: <http://isbear.org.ua/hg/isbear/mcabber-eventcmd-ng/>
       
   127 * Homepage: <http://isbear.org.ua/docs/mcabber-eventcmd-ng/index/>
       
   128 
       
   129 Another approach for eventcmd. It passes arguments to script as environment
       
   130 variables, so, you can use `$jid` instead of `$1`. Because of this it is more
       
   131 flexible for future changes (see hooks description in HOWTO). Though, it is not
       
   132 officially approved new interface for eventcmd - it is only my vision of it.
       
   133 
       
   134 ## extsay
       
   135 
       
   136 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
   137 
       
   138 If you use the [screen][] utility, this module will let you open your editor in
       
   139 a new screen window, and will send the message once you exit the editor. Check
       
   140 the [README][extsay-readme] file! This module is part of the mcabber-modules
       
   141 repository.
       
   142 
       
   143 ## fifo
       
   144 
       
   145 Modularization of mcabber FIFO. Allows recreation of fifo in run-time by
       
   146 reloading module. This module has been merged into mcabber development tree
       
   147 (0.10.2-dev).
       
   148 
       
   149 ## info_msgcount
       
   150 
       
   151 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
   152 
       
   153 Displays the number of unread messages (buffers) in the status bar. This module
       
   154 relies on the `info` option, so it cannot be used with the clock module
       
   155 described above. This module is part of the mcabber-modules repository.
       
   156 
       
   157 ## ignore_auth
       
   158 
       
   159 * URL: <http://www.freakysoft.de/repos/mcabber-modules/>
       
   160 
       
   161 Ignores subscription requests from every jid matching configurable regexs. Adds
       
   162 the command ignore_auth to add a regex to the list (`/ignore_auth .*@icq`). The
       
   163 option ignore_auth can be used to disable/enable this feature temporily
       
   164 (`/set ignore_auth = 1`). This module is part of the forked mcabber-modules 
       
   165 repository from franky.
       
   166 
       
   167 ## jingle
       
   168 
       
   169 * URL: <https://github.com/alkino/mcabber-jingle>
       
   170 * HG Mirror: <http://hg.lilotux.net/mod-mcabber-jingle/>
       
   171 
       
   172 Jingle modules written by Alkino during the GSoC 2010. Contains a file transfer
       
   173 module (IBB support).
       
   174 
       
   175 ## killpresence
       
   176 
       
   177 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
   178 
       
   179 Adds two commands, killpresence and killchatstates, that can be used repectively
       
   180 to ignore the current presence from a fulljid (e.g. to kill a "ghost") and to
       
   181 reset the chat state status of an online contact. This module is part of the
       
   182 mcabber-modules repository.
       
   183 
       
   184 ## lastmsg
       
   185 
       
   186 * URL: <http://hg.lilotux.net/mcabber-modules/>
       
   187 
       
   188 Stores highlighted messages received in MUC rooms while you are away. When
       
   189 you're back, you can use the command `/lastmsg` you display them. This module is
       
   190 part of the mcabber-modules repository.
       
   191 
       
   192 ## lua
       
   193 
       
   194 * URL: <http://isbear.org.ua/hg/isbear/mcabber-lua/>
       
   195 * Homepage: <http://isbear.org.ua/docs/mcabber-lua/index/>
       
   196 * Mirror: <http://hg.lilotux.net/mod-mcabber-lua/>
       
   197 
       
   198 Lua interface module for mcabber. Adds `/lua` command (and much more in example
       
   199 scripts). Needs much more work, but already usable.
       
   200 
       
   201 Example scripts for this module extensively use lua bindings for loudmouth,
       
   202 `lua-lm`. It can be found here:
       
   203 
       
   204 * URL: <http://isbear.org.ua/hg/isbear/lua-lm/>
       
   205 * Homepage: <http://isbear.org.ua/docs/lua-lm/index/>
       
   206 * Mirror: <http://hg.lilotux.net/lua-lm/>
       
   207 
       
   208 ## marking
       
   209 
       
   210 * URL: <http://isbear.org.ua/hg/isbear/mcabber-marking/>
       
   211 * Homepage: <http://isbear.org.ua/docs/mcabber-marking/index/>
       
   212 * Mirror: <http://hg.lilotux.net/mod-mcabber-marking/>
       
   213 
       
   214 Adds ability to mark several buddies and do some command for each of these
       
   215 buddies. Provides commands `/mark` and `/marked`.
       
   216 
       
   217 ## mpd
       
   218 
       
   219 * URL: <http://isbear.org.ua/hg/isbear/mcabber-mpd/>
       
   220 * Homepage: <http://isbear.org.ua/docs/mcabber-mpd/index/>
       
   221 
       
   222 Provides information about currently playing song for modules like PEP.
       
   223 
       
   224 ## mucignore
       
   225 
       
   226 * URL: <https://github.com/hirthwork/mcabber-mucignore/>
       
   227 
       
   228 Simple plugin to ignore users in MUC conferences.
       
   229 
       
   230 ## pep
       
   231 
       
   232 * URL: <http://isbear.org.ua/hg/isbear/mcabber-pep/>
       
   233 * Homepage: <http://isbear.org.ua/docs/mcabber-pep/index/>
       
   234 * Mirror: <http://hg.lilotux.net/mod-mcabber-pep/>
       
   235 
       
   236 Suite of modules to publish and process PEP (Personal Eventing Protocol) tune,
       
   237 mood, geoloc and activity events.
       
   238 
       
   239 ## si
       
   240 
       
   241 Stream initiation (file transfer profile) module. Uses streams module for its
       
   242 transfer methods, thus, it now supports both IBB and SOCKS5 Bytestreams.
       
   243 Provides command `/si`.
       
   244 
       
   245 **Note:** Stalled in the process of rewrite/update, contact
       
   246 [me](xmpp:isbear@jabber.kiev.ua), if you are interested in picking it up.
       
   247 
       
   248 ## streams
       
   249 
       
   250 In-Band and SOCKS5 Bytestreams implementation. Adds command `/stream`. It
       
   251 supports IBB native session initiation and bare SCOKS5 Bytestream requests and
       
   252 can send/receive files this way. Though, this module is, probably, the only
       
   253 implementation, that supports such file transfer methods, so you will be unable
       
   254 to use this module alone to exchange files with, other clients. However this
       
   255 module is designed with ability to be used by other modules as transfer pipe,
       
   256 so, there is si/file-transfer module to transfer files in more convenient way.
       
   257 This module should be considered still in beta stage, but yet already usable.
       
   258 
       
   259 **Note:** Stalled in the process of rewrite/update, contact
       
   260 [me](xmpp:isbear@jabber.kiev.ua), if you are interested in picking it up.
       
   261 
       
   262 ## templatecmd
       
   263 
       
   264 * URL: <http://isbear.org.ua/hg/isbear/mcabber-templatecmd/>
       
   265 * Homepage: <http://isbear.org.ua/docs/mcabber-templatecmd/index/>
       
   266 
       
   267 Allows to define alias-like commands with shell-like positional arguments
       
   268 substitution. Provides command `/templatecmd`. If you're searching for a way to
       
   269 define alias for `/send_to -f <filename_here> .` - this module is for you.
       
   270 
       
   271 ## uptime
       
   272 
       
   273 * URL: <http://isbear.org.ua/hg/isbear/mcabber-uptime/>
       
   274 * Homepage: <http://isbear.org.ua/docs/mcabber-uptime/index/>
       
   275 * Mirror: <http://hg.lilotux.net/mod-mcabber-uptime/>
       
   276 
       
   277 Module to show mcabber uptime. It can either determine full mcabber process
       
   278 uptime from linux `/proc` filesystem or just count time from module loading
       
   279 moment.
       
   280 
       
   281 ## urlopen
       
   282 
       
   283 * URL: <http://isbear.org.ua/hg/isbear/mcabber-urlopen/>
       
   284 * Homepage: <http://isbear.org.ua/docs/mcabber-urlopen/index/>
       
   285 
       
   286 Looks for urls in incoming messages and prints them to log and/or calls shell
       
   287 command to handle them.
       
   288 
       
   289 ## xttitle
       
   290 
       
   291 * URL: <http://mcabber.com/hg/>
       
   292 
       
   293 Displays the number of unread messages in the X Terminal Title. The option
       
   294 `xttitle_short_format` can be set to use a very short title.
       
   295 
       
   296 ## yaubil
       
   297 
       
   298 * URL: <http://isbear.org.ua/hg/isbear/mcabber-yaubil/>
       
   299 * Homepage: <http://isbear.org.ua/docs/mcabber-yaubil/index/>
       
   300 * Mirror: <http://hg.lilotux.net/mod-mcabber-yaubil/>
       
   301 
       
   302 Yet Another Useless Built-In Language. Provides `/eval`, `/if`, `/then`,
       
   303 `/else`, `/let` and `/multi` commands. Probably most useful amongst them is
       
   304 `/multi`. If, breaking my expectations, this module becomes useful and famous
       
   305 (presence of beard may cause this), I promise, that I'll improve
       
   306 string/parentheses parsing, add loops and maybe even switch to tree-producing
       
   307 parser with operators precedence.
       
   308 
       
   309 # Notes on modules, written by isbear, aka Mykhailo Danylenko
       
   310 
       
   311 * I use cmake as build system, it allows me to quickly generate debian packages
       
   312   (not too accurate, but at least it is package). See README for a brief
       
   313   description how to build module.
       
   314 * Most modules need more work - to add flexibility, providing mcabber variables,
       
   315   that control module behaviour, to check for resource releasing in extreme
       
   316   situations, etc.
       
   317 * Most modules, that provide some command also include help file for them (in
       
   318   English). You may need to adjust variable help_dirs, if you have installed
       
   319   module with another prefix than mcabber itself to be able to use this help
       
   320   files.
       
   321 * Every module contains file modulename.rc (by default it will be installed into
       
   322   `<install prefix>/share/doc/libmcabber-<modulename>/`), that contains list of
       
   323   all mcabber variables introduced by this module with descriptions and load
       
   324   commands, necessary to get this module loaded (i.e. first load commands for
       
   325   modules, that are required for this module to work, then load command for this
       
   326   module itself).
       
   327 * If you have found a bug in module, please contact me by mail or jabber (both
       
   328   can be found in README file).
       
   329 * Unfortunately, most of the modules are now kinda unmaintained (if you need
       
   330   something - ping me, and I'll try to do something about that, but no
       
   331   guarantees). Adoption requests are warmly welcomed.
       
   332 
       
   333 [screen]:        http://www.gnu.org/software/screen/
       
   334 [extsay-readme]: http://hg.lilotux.net/mcabber-modules/raw-file/tip/extsay-ng/README