author | Myhailo Danylenko <isbear@ukrpost.net> |
Sat, 13 Oct 2012 20:57:03 +0300 | |
changeset 137 | 4fda19d05965 |
parent 121 | 75a7d595817c |
permissions | -rw-r--r-- |
68 | 1 |
|
2 |
local lm = require 'lm' |
|
3 |
local privacy = require 'lm.privacy' |
|
4 |
||
5 |
privacy.handler ( |
|
6 |
function ( name ) |
|
7 |
print ( 'Privacy list changed: ' .. name ) |
|
8 |
end ) |
|
9 |
||
10 |
main.command ( 'blocklist', |
|
11 |
function ( args ) |
|
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
12 |
local connection = main.connection () |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
13 |
if not connection then |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
14 |
print "You are not online!" |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
15 |
return |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
16 |
end |
68 | 17 |
local action = args[1] |
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
18 |
local conn = lm.connection.bless ( connection ) |
68 | 19 |
local who = main.current_buddy () |
20 |
privacy.list ( conn, 'mcabber', |
|
21 |
function ( list ) |
|
22 |
if action == 'add' then |
|
23 |
for i, item in ipairs ( list ) do |
|
24 |
item.order = nil |
|
25 |
end |
|
26 |
table.insert ( list, 1, { type = 'jid', value = args[2] or who, action = 'deny' } ) |
|
27 |
elseif action == 'del' then |
|
28 |
for i, item in ipairs ( list ) do |
|
29 |
if item.value == ( args[2] or who ) then |
|
30 |
table.remove ( list, i ) |
|
31 |
break |
|
32 |
end |
|
33 |
end |
|
34 |
else |
|
35 |
local text = '' |
|
36 |
for i, item in ipairs ( list ) do |
|
37 |
text = text .. '\n - <' .. ( list.order or '?' ) .. '> ' .. ( list.value or '*' ) .. ' [' .. ( list.type or 'unspecified' ) .. '] ' .. ( list.action or 'unspecified' ) |
|
38 |
end |
|
39 |
if text ~= '' then |
|
40 |
print ( 'Blocking list: ' .. text ) |
|
41 |
end |
|
42 |
return |
|
43 |
end |
|
44 |
privacy.set ( conn, 'mcabber', list, |
|
45 |
function () |
|
46 |
print ( 'Blocking list saved' ) |
|
47 |
end, |
|
48 |
function ( mesg ) |
|
49 |
print ( 'Error saving blocking list: ' .. mesg ) |
|
50 |
end ) |
|
51 |
end, |
|
52 |
function ( mesg ) |
|
53 |
if action == 'add' then |
|
54 |
privacy.set ( conn, 'mcabber', |
|
55 |
{{ type = 'jid', value = args[2] or who, action = 'deny' }, |
|
56 |
{ action = 'allow' }}, |
|
57 |
function () |
|
58 |
print ( 'New blocking list created' ) |
|
59 |
end, |
|
60 |
function ( message ) |
|
61 |
print ( 'Error obtaining/creatieng blocking list: ' .. mesg .. ' / ' .. message ) |
|
62 |
end ) |
|
63 |
else |
|
64 |
print ( 'Cannot obtain privacy list from server: ' .. mesg ) |
|
65 |
end |
|
66 |
end ) |
|
67 |
end, true ) |
|
68 |
||
69 |
local privacy_handler = lm.message_handler.new ( privacy.iq_handler ) |
|
70 |
local privacy_handler_registered = false |
|
71 |
||
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
72 |
privacy_pc_handler = |
68 | 73 |
function ( args ) |
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
74 |
local connection = main.connection () |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
75 |
if connection then |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
76 |
privacy.active ( lm.connection.bless ( connection ), 'mcabber', |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
77 |
function () |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
78 |
print ( 'Server blocklist activated' ) |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
79 |
end, |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
80 |
function () |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
81 |
-- list may be absent, so, we will not pollute log with errors |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
82 |
end ) |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
83 |
lm.connection.bless( connection ):handler ( privacy_handler, 'iq', 'normal' ) |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
84 |
privacy_handler_registered = true |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
85 |
end |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
86 |
end |
111
5bcdb71ef2f2
Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
100
diff
changeset
|
87 |
privacy_pd_handler = |
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
88 |
function ( args ) |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
89 |
if privacy_handler_registered then |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
90 |
local connection = main.connection () |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
91 |
if connection then |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
92 |
lm.connection.bless( connection ):handler ( privacy_handler, 'iq' ) |
68 | 93 |
end |
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
94 |
privacy_handler_registered = false |
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
95 |
end |
111
5bcdb71ef2f2
Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
100
diff
changeset
|
96 |
end |
5bcdb71ef2f2
Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
100
diff
changeset
|
97 |
main.hook ( 'hook-post-connect', privacy_pc_handler ) |
5bcdb71ef2f2
Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
100
diff
changeset
|
98 |
main.hook ( 'hook-pre-disconnect', privacy_pd_handler ) |
5bcdb71ef2f2
Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
100
diff
changeset
|
99 |
main.hook ( 'hook-lua-quit', privacy_pd_handler ) |
68 | 100 |
|
99
ed4676536ed9
Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
101 |
-- vim: se ts=4 sw=4: -- |