1POE::Component::IRC::PlUusgeirn:C:oDnCtCr(i3b)uted PerlPDOoEc:u:mCeonmtpaotnieonnt::IRC::Plugin::DCC(3)
2
3
4

NAME

6       POE::Component::IRC::Plugin::DCC - A PoCo-IRC plugin providing support
7       for DCC transfers
8

SYNOPSIS

10        # send a file
11        my $file = '/home/user/secret.pdf';
12        my $recipient = 'that_guy';
13        $irc->yield(dcc => $recipient => SEND => $file);
14
15        # receive a file
16        sub irc_dcc_request {
17            my ($user, $type, $port, $cookie, $file, $size, $addr) = @_[ARG0..$#_];
18            return if $type ne 'SEND';
19
20            my $irc = $_[SENDER]->get_heap();
21            my $nick = (split /!/, $user)[0];
22
23            print "$nick wants to send me '$file' ($size bytes) from $addr:$port\n");
24            $irc->yield(dcc_accept => $cookie);
25        }
26

DESCRIPTION

28       This plugin provides the IRC commands needed to make use of DCC. It is
29       used internally by POE::Component::IRC so there's no need to add it
30       manually.
31

METHODS

33   "new"
34       Takes no arguments.
35
36       Returns a plugin object suitable for feeding to POE::Component::IRC's
37       "plugin_add" method.
38
39   "dccports"
40       Sets the TCP ports that can be used for DCC sends. Takes one argument,
41       an arrayref containing the port numbers.
42
43   "nataddr"
44       Sets the public NAT address to be used for DCC sends.
45
46   "dcc_info"
47       Takes one argument, a DCC connection id (see below). Returns a hash of
48       information about the connection. The keys are: 'nick', 'type', 'port',
49       'file', 'size', 'done,', and 'peeraddr'.
50

COMMANDS

52       The plugin responds to the following POE::Component::IRC commands.
53
54   "dcc"
55       Send a DCC SEND or CHAT request to another person. Takes at least two
56       arguments: the nickname of the person to send the request to and the
57       type of DCC request (SEND or CHAT). For SEND requests, be sure to add a
58       third argument for the filename you want to send. Optionally, you can
59       add a fourth argument for the DCC transfer blocksize, but the default
60       of 1024 should usually be fine. The fifth (and optional) argument is
61       the request timeout value in seconds (default: 300).
62
63       Incidentally, you can send other weird nonstandard kinds of DCCs too;
64       just put something besides 'SEND' or 'CHAT' (say, 'FOO') in the type
65       field, and you'll get back "irc_dcc_foo" events (with the same
66       arguments as "irc_dcc_chat") when data arrives on its DCC connection.
67
68       If you are behind a firewall or Network Address Translation, you may
69       want to consult POE::Component::IRC's "connect" for some parameters
70       that are useful with this command.
71
72   "dcc_accept"
73       Accepts an incoming DCC connection from another host. First argument:
74       the magic cookie from an "irc_dcc_request" event.  In the case of a DCC
75       GET, the second argument can optionally specify a new name for the
76       destination file of the DCC transfer, instead of using the sender's
77       name for it. (See the "irc_dcc_request" section below for more
78       details.)
79
80   "dcc_resume"
81       Resumes a DCC SEND file transfer. First argument: the magic cookie from
82       an "irc_dcc_request" event. An optional second argument provides the
83       name of the file to which you want to write.
84
85   "dcc_chat"
86       Sends lines of data to the person on the other side of a DCC CHAT
87       connection.  The first argument should be the wheel id of the
88       connection which you got from an "irc_dcc_start" event, followed by all
89       the data you wish to send (it'll be separated with newlines for you).
90
91   "dcc_close"
92       Terminates a DCC SEND or GET connection prematurely, and causes DCC
93       CHAT connections to close gracefully. Takes one argument: the wheel id
94       of the connection which you got from an "irc_dcc_start" (or similar)
95       event.
96

OUTPUT EVENTS

98   "irc_dcc_request"
99       Note: This event is actually emitted by POE::Filter::IRC::Compat, but
100       documented here to keep all the DCC documentation in one place. In case
101       you were wondering.
102
103       You receive this event when another IRC client sends you a DCC (e.g.
104       SEND or CHAT) request out of the blue. You can examine the request and
105       decide whether or not to accept it (with "dcc_accept") here. In the
106       case of DCC SENDs, you can also request to resume the file with
107       "dcc_resume".
108
109       Note: DCC doesn't provide a way to explicitly reject requests, so if
110       you don't intend to accept one, just ignore it or send a NOTICE or
111       PRIVMSG to the peer explaining why you're not going to accept.
112
113       •   "ARG0": the peer's nick!user@host
114
115       •   "ARG1": the DCC type (e.g. 'CHAT' or 'SEND')
116
117       •   "ARG2": the port which the peer is listening on
118
119       •   "ARG3": this connection's "magic cookie"
120
121       •   "ARG4": the file name (SEND only)
122
123       •   "ARG5": the file size (SEND only)
124
125       •   "ARG6": the IP address which the peer is listening on
126
127   "irc_dcc_start"
128       This event notifies you that a DCC connection has been successfully
129       established.
130
131       •   "ARG0": the connection's wheel id
132
133       •   "ARG1": the peer's nickname
134
135       •   "ARG2": the DCC type
136
137       •   "ARG3": the port number
138
139       •   "ARG4": the file name (SEND/GET only)
140
141       •   "ARG5": the file size (SEND/GET only)
142
143       •   "ARG6": the peer's IP address
144
145   "irc_dcc_chat"
146       Notifies you that one line of text has been received from the client on
147       the other end of a DCC CHAT connection.
148
149       •   "ARG0": the connection's wheel id
150
151       •   "ARG1": the peer's nickname
152
153       •   "ARG2": the port number
154
155       •   "ARG3": the text they sent
156
157       •   "ARG4": the peer's IP address
158
159   "irc_dcc_get"
160       Notifies you that another block of data has been successfully
161       transferred from the client on the other end of your DCC GET
162       connection.
163
164       •   "ARG0": the connection's wheel id
165
166       •   "ARG1": the peer's nickname
167
168       •   "ARG2": the port number
169
170       •   "ARG3": the file name
171
172       •   "ARG4": the file size
173
174       •   "ARG5": transferred file size
175
176       •   "ARG6": the peer's IP address
177
178   "irc_dcc_send"
179       Notifies you that another block of data has been successfully
180       transferred from you to the client on the other end of a DCC SEND
181       connection.
182
183       •   "ARG0": the connection's wheel id
184
185       •   "ARG1": the peer's nickname
186
187       •   "ARG2": the port number
188
189       •   "ARG3": the file name
190
191       •   "ARG4": the file size
192
193       •   "ARG5": transferred file size
194
195       •   "ARG6": the peer's IP address
196
197   "irc_dcc_done"
198       You receive this event when a DCC connection terminates normally.
199       Abnormal terminations are reported by "irc_dcc_error".
200
201       •   "ARG0": the connection's wheel id
202
203       •   "ARG1": the peer's nickname
204
205       •   "ARG2": the DCC type
206
207       •   "ARG3": the port number
208
209       •   "ARG4": the filename (SEND/GET only)
210
211       •   "ARG5": file size (SEND/GET only)
212
213       •   "ARG6": transferred file size (SEND/GET only)
214
215       •   "ARG7": the peer's IP address
216
217   "irc_dcc_error"
218       You get this event whenever a DCC connection or connection attempt
219       terminates unexpectedly or suffers some fatal error. Some of the
220       following values might be undefined depending the stage at which the
221       connection/attempt failed.
222
223       •   "ARG0": the connection's wheel id
224
225       •   "ARG1": the error string
226
227       •   "ARG2": the peer's nickname
228
229       •   "ARG3": the DCC type
230
231       •   "ARG4": the port number
232
233       •   "ARG5": the file name
234
235       •   "ARG6": file size in bytes
236
237       •   "ARG7": transferred file size in bytes
238
239       •   "ARG8": the peer's IP address
240

AUTHOR

242       Dennis '"fimmtiu"' Taylor and Hinrik Örn Sigurðsson,
243       hinrik.sig@gmail.com
244
245
246
247perl v5.34.0                      2022-01-21POE::Component::IRC::Plugin::DCC(3)
Impressum