scripts/mcabberrc.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Mon, 23 Feb 2009 23:16:46 +0200
changeset 4 bca17e4a9851
permissions -rw-r--r--
Added sample configuration files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
--[[
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
DESCRIPTION
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
This is a demo config file to show, what you can do with lua.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
Feature list:
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
XEP-0004 Forms parsing and filling
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
XEP-0030 Info/items discovery requests (mcabber already can do replies)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
XEP-0047 In-Bound Byte Streams (sending, receiving, saving with specified name, rejecting)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
XEP-0077 In-Band Registration (only registration, but with data forms too)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
XEP-0146 Remote commands requests
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
Jobs (actions, fired when some event occurs, now in one file, updated on exit)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
MPD status polling (can be turned off)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
Beep on all messages, even on chatroom ones
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
Url saving to file (for urlview)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
Transported buddies availability indication
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
Actions on multiple marked buddies
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
Fallback commands (localized also! :) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
Help for fallback commands (well, I know, that it can be done with mcabber's help system, but it requires access to system files...)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
All features have native mcabber interface
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
REQUIREMENTS
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
liblua-loudmouth (lm.lua and loudmouth.so)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
liblua-socket - mpd
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
NOTES
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
Most hooks get one incoming parameter - hash table with some fields in it.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
This allows further extending and adding arguments without breaking
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
previous implementations.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
Ibb uses own iq handler. This is the laziest way to implement this.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
BUILTINS
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
print (global) - prints to log
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
dofile (global) - loads lua file from default mcabber location
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
main methods:
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
- run           - run literal mcabber command
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
- beep          - beep
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
- log           - print to log w/specified priority
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
- print_info    - print info into specified buffer
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
- config_file   - format full file name from relative to mcabber's config dir
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
- status        - get current user status and message
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
- roster        - get list of roster jids (rooms, buddies and agents)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
- current_buddy - get jid of current buddy
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
- buddy_info    - get table with info about jid and its resources
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
- connection    - get lightuserdata for mcabber's lm connection
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
- timer         - run function periodically
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
- bgread        - run command and read it's output in background
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
- add_feature   - add string to feature list (for disco#info)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
- del_feature   - delete string from feature list
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
- add_command   - adds mcabber command
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
- del_command   - remove mcabber command
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
--]]
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
-- This is a hack to allow loading of lm.lua and loudmouth.so from ~/.mcabber
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
-- instead of installing them system-wide
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
package.path = main.config_file ( '?.lua' ) .. ';' .. package.path
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
package.cpath = main.config_file ( '?.so' ) .. ';' .. package.cpath
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
require 'lm'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
-- OPTIONS, COMMON SUPPORT ROUTINES
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
url_file      = main.config_file ( 'urls.log' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
transport_jid = 'icq.jabber.kiev.ua' -- TODO: allow multiple transports
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
beep_enable   = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
-- XXX: to C?
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
char2status = {
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
	f = 'free',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
	o = 'online',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
	a = 'away',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
	d = 'dnd',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
	n = 'notavail',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
	i = 'invisible',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
	['_'] = 'offline',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
	['?'] = 'message',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
function shell_escape ( str )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
	if str then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
		return "'" .. str:gsub ( "'", "'\\''" ) .. "'"
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
		return "''"
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
-- This is for debugging purposes, for real reloading need to quote and bracket keys.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
function table_to_string ( tab, pre )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
	local prefix = pre or ""
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
	local tbls, jk = "", ""
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
	for key, val in pairs ( tab ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
		if type ( val ) == 'table' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
			tbls = string.format ( "%s  %s%s = %s,\n", tbls, prefix, tostring(key), table_to_string ( val, "  " .. prefix ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
			jk = string.format ( "%s %s = %q,", jk, tostring(key), tostring(val) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
	if tbls == "" then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
		return string.format ( "{%s }", jk:sub ( 1, -2 ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
		return string.format ( "{%s\n%s%s}", jk, tbls, prefix )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
-- XXX to C?
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
function full_current_jid ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
	local jid = main.current_buddy ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
	if jid then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
		local info = main.buddy_info ( jid )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
		local prio, resource = 0
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
		for res, par in pairs ( info.resources ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
			if prio <= par.priority then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
				resource = res
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
				prio = par.priority
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
		if resource then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
			return jid .. '/' .. resource
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
			return jid
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
		return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
-- COMMANDS
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
function yesno ( value )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
	if value == 'enable' or value == 'yes' or value == 'true' or value == 'on' or value == true then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
		return true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
	elseif value == 'disable' or value == 'no' or value == 'false' or value == 'off' or value == false then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
		return false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
		return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
-- FIXME: eats spaces
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
function parse_args ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
	local ret = {}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
	local still_opts = true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
	local optname
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
	local option = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
	for word in args:gmatch ( "%S+" ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
		if still_opts and not option and word:sub ( 1, 1 ) == '-' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   158
			option = true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
			optname = word:sub ( 2 )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   160
		elseif option then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
			ret[optname] = word
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
			option = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
			still_opts = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
			table.insert ( ret, word )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
	return ret
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   169
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   170
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   171
-- Help strings should not contain command, only arguments. This is necessary to support soft aliases.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
commands_help = {
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
	file      = "filename\n\nSends file as a message. Just shorthand.",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   174
	s         = "status [message]\n\nSets your status, but takes into account mpd (if enabled).",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   175
	beep      = "[enable|disable|on|off|yes|no|true|false]\n\nEnables or disables beeping on all messages.\nIf state is omitted, prints current state.",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   176
	cmd       = "shell_command\n\nRuns shell command in background and sends output to current buddy.\nWorks asynchroneously, and may break long output in the middle of line",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   177
	exthelp   = "[command]\n\nPrints help for a given command, or list of available help topics.",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   178
	reload    = "\n\nJust a shorthand to reload lua config file. Note, that for now this discards all changes to configuration, open forms, transferred files.",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   179
	['join!'] = "\n\nForcibly joins to current buddy. Just saves you typing of full room name (that can be quite long) in a case of a non-bookmarked rooms.",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   180
	count     = "\n\nPrints number of resources of current buddy. Useful to determine member count of large room."
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   181
}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   182
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   183
main.add_command ( "lua",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   184
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   185
		assert ( loadstring ( args ) ) ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   186
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
main.add_command ( 'file',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
		main.run ( 'say_to -f ' .. args .. ' .' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
main.add_command ( 's',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
		main.run ( ('status %s %s'):format ( args, mpd_getstatus () ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
main.add_command ( 'beep',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   196
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   197
		local enable = yesno ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   198
		if enable == nil then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   199
			if beep_enable then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   200
				print ( "Beep on message is enabled" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   201
			else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   202
				print ( "Beep on message is disabled" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   203
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   204
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   205
			beep_enable = enable
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   206
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   207
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   208
main.add_command ( 'cmd',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   209
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   210
		local to = main.current_buddy ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   211
		main.run ( ('send_to -q %q $ %s'):format ( to, args ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   212
		main.bgread ( args,
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   213
			function ( data )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   214
				if data then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   215
					main.run ( ('send_to -q %q %s'):format ( to, data ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   216
					return true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   217
				else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   218
					return false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   219
				end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   220
			end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   221
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   222
main.add_command ( 'exthelp',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   223
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   224
		if commands_help[args] then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   225
			print ( "\n /" .. args .. ' ' .. commands_help[args] )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   226
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   227
			print ( "No help for this command." )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   228
			list = "Help available for commands: "
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   229
			for k in pairs (commands_help) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   230
				list = list .. k .. ', '
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   231
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   232
			print ( list:sub ( 1, -3 ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   233
			print ( "For built-in mcabber commands see /help" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   234
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   235
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   236
main.add_command ( 'reload',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   237
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   238
		dofile ( main.config_file ( 'mcabberrc.lua' ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   239
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   240
main.add_command ( 'join!',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   241
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   242
		main.run ( 'room join ' .. main.current_buddy () )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   243
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   244
main.add_command ( 'count',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   245
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   246
		local count = 0
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   247
		for resource in pairs ( main.buddy_info ( main.current_buddy () ).resources ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   248
			count = count + 1
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   249
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   250
		print ( "Resource count: " .. count )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   251
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   252
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   253
for k, arg in ipairs ( { ')', '/', '(', 'D', '-/', 'S', '1', ']', '[' } ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   254
	main.add_command ( arg,
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   255
		function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   256
			main.run ( 'say :' .. arg .. ' ' .. args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   257
		end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   258
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   259
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   260
-- MARKING
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   261
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   262
dopath 'marking'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   263
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   264
-- MPD
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   265
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   266
dopath 'mpd'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   267
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   268
-- FORMS (XEP-0004)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   269
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   270
dopath 'xep0004'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   271
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   272
-- DISCO (XEP-0030)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   273
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   274
dopath 'xep0030'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   275
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   276
-- IBB (XEP-0047)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   277
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   278
dopath 'xep0047'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   279
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   280
-- IN-BAND REGISTRATION (XEP-0077)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   281
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   282
dopath 'xep0077'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   283
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   284
-- REMOTE CONTROLLING CLIENTS (XEP-0146)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   285
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   286
dopath 'xep0146'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   287
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   288
-- JOBS
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   289
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   290
delayed_jobs = {}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   291
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   292
-- FIXME: do only if it exists
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   293
dopath 'jobs.lua'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   294
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   295
function save_jobs ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   296
	local h = io.open ( main.config_file ( 'jobs.lua' ), "w" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   297
	if not h then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   298
		print ( 'Cannot open jobs file for writing!' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   299
		return
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   300
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   301
	h:write ( "-- This is autogenerated file, do not edit it manually\n\ndelayed_jobs = {\n" );
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   302
	for jid, more in pairs ( delayed_jobs ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   303
		h:write ( string.format ( "\t[%q] = {\n", jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   304
		for status, action in pairs ( more ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   305
			if action then -- remove fired jobs
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   306
				h:write ( string.format ( "\t\t[%q] = %q,\n", status, action ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   307
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   308
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   309
		h:write ( "\t},\n" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   310
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   311
	h:write ( "}\n" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   312
	h:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   313
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   314
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   315
main.add_command ( 'delay',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   316
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   317
		args = parse_args ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   318
		local who
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   319
		if args.t then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   320
			who = args.t
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   321
			args.t = nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   322
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   323
			who = main.current_buddy ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   324
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   325
		local stat = args[1]
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   326
		args[1] = nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   327
		delayed_jobs[who] = { }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   328
		delayed_jobs[who][stat] =
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   329
			function ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   330
				main.run ( 'say_to -q ' .. who .. ' ' .. rebuild_args_string ( args ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   331
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   332
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   333
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   334
main.add_command ( 'job',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   335
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   336
		local action, jid, stat = args:match ( "(%w+)%s+(%w+)%s+(%w)" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   337
		if action == 'del' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   338
			delayed_jobs[jid][stat] = nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   339
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   340
			print ( 'List of jobs:' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   341
			for jid, jobs in pairs ( delayed_jobs ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   342
				for status in pairs ( jobs ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   343
					print ( ' - ' .. jid .. ' -> ' .. status )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   344
				end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   345
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   346
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   347
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   348
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   349
commands_help['delay'] = "[-t target_jid] status_letter message\n\nDelays sending a message to target jid (or current buddy) until it switches to specified status."
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   350
commands_help['job'] = "[del jid status_letter]\n\nLists available jobs or deletes specified one."
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   351
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   352
-- HOOKS
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   353
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   354
ibb_handler_registered = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   355
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   356
-- Soft hooks, implemented through mcabber options
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   357
function hook_post_connect ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   358
	main.run ( 'group fold テフノ' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   359
	main.run ( 'group fold にゃ' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   360
	main.run ( 'group fold にゃ - Друзі' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   361
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   362
	main.run ( 'color muc * on' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   363
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   364
	main.run ( ("color roster * *@%s red"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   365
	main.run ( ("color roster dn_? *@%s red"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   366
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   367
	if mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   368
		mpd_callback ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   369
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   370
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   371
	-- FIXME
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   372
	if not ibb_handler_registered then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   373
		lm.connection.bless( main.connection () ):handler ( ibb_incoming_iq_handler, 'iq', 'normal' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   374
		main.add_feature ( 'http://jabber.org/protocol/ibb' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   375
		ibb_handler_registered = true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   376
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   377
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   378
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   379
function hook_pre_disconnect ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   380
	main.run ( ("color roster * *@%s white"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   381
	main.run ( ("color roster dn_? *@%s brightblack"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   382
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   383
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   384
-- Hard hooks, implemented in C
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   385
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   386
-- hook
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   387
-- - message_in
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   388
--   jid
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   389
--   groupchat
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   390
--   message
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   391
-- - message_out
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   392
--   jid
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   393
--   message
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   394
-- - status_change
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   395
--   jid
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   396
--   resource
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   397
--   new_status
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   398
--   old_status
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   399
--   message
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   400
-- - my_status_change
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   401
--   new_status
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   402
--   message
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   403
function hook_handler ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   404
	if args.hook == 'message_in' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   405
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   406
		-- beep on ALL messages, no matter, is it chat or something else.
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   407
		if beep_enable then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   408
			main.beep ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   409
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   410
	
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   411
		-- save urls to file from where urlview can get them...
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   412
		for url in args.message:gmatch ( "https?://[%w%p]+" ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   413
			fd = io.open ( url_file, "a" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   414
			if fd then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   415
				fd:write ( url .. "\n" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   416
				fd:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   417
			else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   418
				print 'Cannot open urls log file'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   419
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   420
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   421
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   422
	elseif args.hook == 'status_change' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   423
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   424
		-- delayed actions
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   425
		if delayed_jobs[args.jid] and delayed_jobs[args.jid][args.new_status] then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   426
			delayed_jobs[args.jid][args.new_status] ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   427
			delayed_jobs[args.jid][args.new_status] = nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   428
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   429
		
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   430
		-- transported buddies availability indication
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   431
		if args.jid == transport_jid then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   432
			if args.new_status == '_' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   433
				main.run ( ("color roster * *@%s red"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   434
				main.run ( ("color roster dn_? *@%s red"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   435
			else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   436
				main.run ( ("color roster * *@%s white"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   437
				main.run ( ("color roster dn_? *@%s brightblack"):format ( transport_jid ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   438
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   439
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   440
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   441
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   442
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   443
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   444
-- (hook_start)
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   445
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   446
function hook_quit ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   447
	save_jobs ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   448
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   449
	-- FIXME
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   450
	if ibb_handler_registered then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   451
		lm.connection.bless( main.connection () ):handler ( ibb_incoming_iq_handler, 'iq' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   452
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   453
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   454
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   455
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   456
-- The End -- vim: se ts=4: --