author | Myhailo Danylenko <isbear@ukrpost.net> |
Sat, 30 Jul 2016 05:04:35 +0300 | |
changeset 153 | 8fba61f363a8 |
parent 125 | 3e2421384d7a |
permissions | -rw-r--r-- |
125
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
1 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
2 |
-- READONLY |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
3 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
4 |
-- public functions: |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
5 |
-- * readonly |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
6 |
-- * readwrite |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
7 |
-- * toggle_readonly |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
8 |
-- * readonly_jids |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
9 |
-- FIXME: |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
10 |
-- * does not work, as mcabber ignores hook retval on hook-message-out |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
11 |
-- TODO: |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
12 |
-- * more accessors (merge storage with marking?) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
13 |
-- * commands? |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
14 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
15 |
local readonly_db = {} |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
16 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
17 |
function readonly ( jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
18 |
if ( not jid ) or ( jid == '.' ) then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
19 |
jid = main.current_buddy () |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
20 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
21 |
if jid then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
22 |
readonly_db [ jid ] = true |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
23 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
24 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
25 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
26 |
function readwrite ( jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
27 |
if ( not jid ) or ( jid == '.' ) then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
28 |
jid = main.current_buddy () |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
29 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
30 |
if jid then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
31 |
readonly_db [ jid ] = nil |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
32 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
33 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
34 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
35 |
function toggle_readonly ( jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
36 |
if ( not jid ) or ( jid == '.' ) then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
37 |
jid = main.current_buddy () |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
38 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
39 |
if jid then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
40 |
if readonly_db [ jid ] then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
41 |
readwrite ( jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
42 |
else |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
43 |
readonly ( jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
44 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
45 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
46 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
47 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
48 |
function readonly_jids () |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
49 |
local result = {} |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
50 |
for jid in pairs ( readonly_db ) do |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
51 |
table.insert ( result, jid ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
52 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
53 |
return result |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
54 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
55 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
56 |
main.hook ( 'hook-message-out', |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
57 |
function ( args ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
58 |
if readonly_db [ args.jid ] then |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
59 |
main.print_info ( args.jid, "Readonly JID, message dropped." ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
60 |
return 'drop' |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
61 |
else |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
62 |
return 'proceed' |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
63 |
end |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
64 |
end ) |
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
65 |
|
3e2421384d7a
Examples updates (shortenurl)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
66 |
-- vim: se ts=4 sw=4: -- |