author | Myhailo Danylenko <isbear@ukrpost.net> |
Mon, 23 Feb 2009 23:16:46 +0200 | |
changeset 4 | bca17e4a9851 |
permissions | -rw-r--r-- |
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 |
receiving_files = {} |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
3 |
ibb_block_size = 4096 |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
4 |
current_sid_number = 0 |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
5 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
6 |
-- FIXME: read from /dev/urandom? |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
7 |
function gen_unique_sid () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
8 |
current_sid_number = current_sid_number + 1 |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
9 |
return 'mc-' .. tostring ( current_sid_number ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
10 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
11 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
12 |
ibb_incoming_iq_handler = lm.message_handler.new ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
13 |
function ( conn, mess ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
14 |
local id = mess:attribute ( 'id' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
15 |
local from = mess:attribute ( 'from' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
16 |
if mess:child ( 'open' ) and mess:child( 'open' ):attribute ( 'xmlns' ) == 'http://jabber.org/protocol/ibb' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
17 |
local sid = mess:child( 'open' ):attribute ( 'sid' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
18 |
if not receiving_files[sid] then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
19 |
local buffer = '' |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
20 |
receiving_files[sid] = { from = from, status = 'pending' } |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
21 |
receiving_files[sid].accept = |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
22 |
function ( name ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
23 |
main.print_info ( from, string.format ( "Receiving stream from %s, id %s", from, sid ) ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
24 |
conn:send ( lm.message.create { to = from, mtype = 'iq-result', id = id } ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
25 |
receiving_files[sid].name = name |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
26 |
receiving_files[sid].status = 'accepted' |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
27 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
28 |
receiving_files[sid].reject = |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
29 |
function () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
30 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
31 |
lm.message.create { to = from, mtype = 'iq-error', id = id, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
32 |
error = { code = '405', type = 'cancel', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
33 |
['not-allowed'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
34 |
} |
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 |
receiving_files[sid].status = 'rejected' |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
37 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
38 |
print ( 'You have a new bytestream to receive. To save it use /ibb accept ' .. sid .. ' filename' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
39 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
40 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
41 |
lm.message.create { to = from, mtype = 'iq-error', id = id, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
42 |
error = { code = '409', type = 'cancel', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
43 |
conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
44 |
} |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
45 |
} ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
46 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
47 |
elseif mess:child ( 'data' ) and mess:child( 'data' ):attribute ( 'xmlns' ) == 'http://jabber.org/protocol/ibb' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
48 |
local sid = mess:child( 'data' ):attribute ( 'sid' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
49 |
local seq = mess:child( 'data' ):attribute ( 'seq' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
50 |
if receiving_files[sid] and from == receiving_files[sid].from and not receiving_files[sid][tonumber(seq)+1] then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
51 |
local data = mess:child( 'data' ):value () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
52 |
main.print_info ( from, string.format ( " - stream part %s, id %s, %d bytes", seq, sid, data:len() ) ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
53 |
conn:send ( lm.message.create { to = from, mtype = 'iq-result', id = id } ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
54 |
receiving_files[sid][tonumber(seq)+1] = data |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
55 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
56 |
receiving_files[sid] = nil -- invalidate session |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
57 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
58 |
lm.message.create { to = from, mtype = 'iq-error', id = id, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
59 |
error = { code = '409', type = 'cancel', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
60 |
conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } |
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 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
64 |
elseif mess:child ( 'close' ) and mess:child( 'close' ):attribute ( 'xmlns' ) == 'http://jabber.org/protocol/ibb' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
65 |
local sid = mess:child( 'close' ):attribute ( 'sid' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
66 |
if receiving_files[sid] and from == receiving_files[sid].from then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
67 |
main.print_info ( from, "Done with stream id " .. sid ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
68 |
conn:send ( lm.message.create { to = from, mtype = 'iq-result', id = id } ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
69 |
local decoder = io.popen ( string.format ( "base64 -d -i >%q", receiving_files[sid].name ), "w" ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
70 |
if not decoder then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
71 |
main.print_info ( from, "Error opening decoder" ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
72 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
73 |
for i, v in ipairs ( receiving_files[sid] ) do |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
74 |
decoder:write ( v ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
75 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
76 |
decoder:close () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
77 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
78 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
79 |
receiving_files[sid] = nil -- invalidate session |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
80 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
81 |
lm.message.create { to = from, mtype = 'iq-error', id = id, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
82 |
error = { code = '409', type = 'cancel', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
83 |
conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
84 |
} |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
85 |
} ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
86 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
87 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
88 |
return false |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
89 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
90 |
return true |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
91 |
end ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
92 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
93 |
-- You must specify a full jid with resource! |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
94 |
function send_file ( to, name ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
95 |
local sid = gen_unique_sid () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
96 |
local conn = lm.connection.bless ( main.connection () ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
97 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
98 |
lm.message.create { to = to, mtype = 'iq-set', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
99 |
open = { sid = sid, ['block-size'] = ibb_block_size, xmlns = 'http://jabber.org/protocol/ibb' } |
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 |
function ( conn, message ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
102 |
if message:child ( 'error' ) then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
103 |
main.print_info ( to, "Stream request refused: " .. message:child( 'error' ):children():name () ) |
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 |
main.print_info ( to, "Stream accepted, starting sequence" ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
106 |
local buffer = '' |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
107 |
main.bgread ( string.format ( 'base64 -w 0 %q', name ), |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
108 |
function ( data ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
109 |
if data then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
110 |
buffer = buffer .. data |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
111 |
return true |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
112 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
113 |
local seq = 0 |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
114 |
local msgbuf = buffer:sub ( 1, ibb_block_size ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
115 |
buffer = buffer:sub ( ibb_block_size + 1 ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
116 |
local function handler ( conn, message ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
117 |
if message:child ( 'error' ) then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
118 |
main.print_info ( to, "Stream error, transfer ceased at seq = " .. seq .. ": " .. message:child( 'error' ):children():name () ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
119 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
120 |
main.print_info ( to, " - acquired seq = " .. seq ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
121 |
seq = seq + 1 |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
122 |
if buffer:len () == 0 then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
123 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
124 |
lm.message.create { to = to, mtype = 'iq-set', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
125 |
close = { sid = sid, xmlns = 'http://jabber.org/protocol/ibb' } |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
126 |
}, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
127 |
function ( conn, message ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
128 |
if message:child ( 'error' ) then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
129 |
main.print_info ( to, "Error at closing stream: " .. message:child( 'error' ):children():name () ) |
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 |
main.print_info ( to, "File successfully transferred" ) |
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 |
return true |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
134 |
end ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
135 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
136 |
local msgbuf = buffer:sub ( 1, ibb_block_size ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
137 |
buffer = buffer:sub ( ibb_block_size ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
138 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
139 |
lm.message.create { to = to, mtype = 'iq-set', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
140 |
data = { sid = sid, xmlns = 'http://jabber.org/protocol/ibb', seq = seq, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
141 |
msgbuf |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
142 |
} |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
143 |
}, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
144 |
handler ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
145 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
146 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
147 |
return true |
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 |
conn:send ( |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
150 |
lm.message.create { to = to, mtype = 'iq-set', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
151 |
data = { sid = sid, xmlns = 'http://jabber.org/protocol/ibb', seq = seq, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
152 |
msgbuf |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
153 |
} |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
154 |
}, |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
155 |
handler ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
156 |
return false |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
157 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
158 |
end ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
159 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
160 |
return true |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
161 |
end ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
162 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
163 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
164 |
main.add_command ( 'ibb', |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
165 |
function ( args ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
166 |
args = parse_args ( args ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
167 |
if args[1] == 'send' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
168 |
local who |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
169 |
if args.t then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
170 |
who = args.t |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
171 |
args.t = nil |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
172 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
173 |
who = full_current_jid () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
174 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
175 |
args[1] = nil |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
176 |
send_file ( who, rebuild_args_string ( args ) ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
177 |
elseif args[1] == 'accept' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
178 |
local id = args[2] |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
179 |
args[1] = nil |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
180 |
args[2] = nil |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
181 |
if receiving_files[id] then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
182 |
receiving_files[id].accept ( rebuild_args_string ( args ) ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
183 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
184 |
elseif args[1] == 'reject' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
185 |
local id = args[2] |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
186 |
if receiving_files[id] then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
187 |
receiving_files[id].reject () |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
188 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
189 |
elseif args[1] == 'del' then |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
190 |
local id = args[2] |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
191 |
receiving_files[id] = nil |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
192 |
else |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
193 |
print ( 'List of incoming streams:' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
194 |
for sid, data in pairs ( receiving_files ) do |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
195 |
print ( sid .. ': ' .. ( data.name or '(not set)' ) .. ' [' .. data.status .. ']' ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
196 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
197 |
end |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
198 |
end ) |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
199 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
200 |
commands_help['ibb'] = "[[-t target_jid] send filename | accept sid filename | reject sid filename | del sid]\n\nRequests, accepts or rejects sending file via in-band bytestream." |
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
201 |
|
bca17e4a9851
Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
202 |
-- vim: se ts=4: -- |