cinch 1.1.3 → 2.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/LICENSE +1 -0
  2. data/README.md +3 -3
  3. data/docs/bot_options.md +435 -0
  4. data/docs/changes.md +440 -0
  5. data/docs/common_mistakes.md +35 -0
  6. data/docs/common_tasks.md +47 -0
  7. data/docs/encodings.md +67 -0
  8. data/docs/events.md +272 -0
  9. data/docs/logging.md +5 -0
  10. data/docs/migrating.md +267 -0
  11. data/docs/readme.md +18 -0
  12. data/examples/plugins/custom_prefix.rb +1 -1
  13. data/examples/plugins/dice_roll.rb +38 -0
  14. data/examples/plugins/lambdas.rb +1 -1
  15. data/examples/plugins/memo.rb +16 -10
  16. data/examples/plugins/url_shorten.rb +1 -0
  17. data/lib/cinch.rb +5 -60
  18. data/lib/cinch/ban.rb +13 -7
  19. data/lib/cinch/bot.rb +228 -403
  20. data/lib/cinch/{cache_manager.rb → cached_list.rb} +5 -1
  21. data/lib/cinch/callback.rb +3 -0
  22. data/lib/cinch/channel.rb +119 -195
  23. data/lib/cinch/{channel_manager.rb → channel_list.rb} +6 -3
  24. data/lib/cinch/configuration.rb +73 -0
  25. data/lib/cinch/configuration/bot.rb +47 -0
  26. data/lib/cinch/configuration/dcc.rb +16 -0
  27. data/lib/cinch/configuration/plugins.rb +41 -0
  28. data/lib/cinch/configuration/sasl.rb +17 -0
  29. data/lib/cinch/configuration/ssl.rb +19 -0
  30. data/lib/cinch/configuration/storage.rb +37 -0
  31. data/lib/cinch/configuration/timeouts.rb +14 -0
  32. data/lib/cinch/constants.rb +531 -369
  33. data/lib/cinch/dcc.rb +12 -0
  34. data/lib/cinch/dcc/dccable_object.rb +37 -0
  35. data/lib/cinch/dcc/incoming.rb +1 -0
  36. data/lib/cinch/dcc/incoming/send.rb +131 -0
  37. data/lib/cinch/dcc/outgoing.rb +1 -0
  38. data/lib/cinch/dcc/outgoing/send.rb +115 -0
  39. data/lib/cinch/exceptions.rb +8 -1
  40. data/lib/cinch/formatting.rb +106 -0
  41. data/lib/cinch/handler.rb +104 -0
  42. data/lib/cinch/handler_list.rb +86 -0
  43. data/lib/cinch/helpers.rb +167 -10
  44. data/lib/cinch/irc.rb +525 -110
  45. data/lib/cinch/isupport.rb +11 -9
  46. data/lib/cinch/logger.rb +168 -0
  47. data/lib/cinch/logger/formatted_logger.rb +72 -55
  48. data/lib/cinch/logger/zcbot_logger.rb +9 -24
  49. data/lib/cinch/logger_list.rb +62 -0
  50. data/lib/cinch/mask.rb +19 -10
  51. data/lib/cinch/message.rb +94 -28
  52. data/lib/cinch/message_queue.rb +70 -28
  53. data/lib/cinch/mode_parser.rb +6 -1
  54. data/lib/cinch/network.rb +104 -0
  55. data/lib/cinch/{rubyext/queue.rb → open_ended_queue.rb} +8 -1
  56. data/lib/cinch/pattern.rb +24 -4
  57. data/lib/cinch/plugin.rb +352 -177
  58. data/lib/cinch/plugin_list.rb +35 -0
  59. data/lib/cinch/rubyext/float.rb +3 -0
  60. data/lib/cinch/rubyext/module.rb +7 -0
  61. data/lib/cinch/rubyext/string.rb +9 -0
  62. data/lib/cinch/sasl.rb +34 -0
  63. data/lib/cinch/sasl/dh_blowfish.rb +71 -0
  64. data/lib/cinch/sasl/diffie_hellman.rb +47 -0
  65. data/lib/cinch/sasl/mechanism.rb +6 -0
  66. data/lib/cinch/sasl/plain.rb +26 -0
  67. data/lib/cinch/storage.rb +62 -0
  68. data/lib/cinch/storage/null.rb +12 -0
  69. data/lib/cinch/storage/yaml.rb +96 -0
  70. data/lib/cinch/syncable.rb +13 -1
  71. data/lib/cinch/target.rb +144 -0
  72. data/lib/cinch/timer.rb +145 -0
  73. data/lib/cinch/user.rb +169 -225
  74. data/lib/cinch/{user_manager.rb → user_list.rb} +7 -2
  75. data/lib/cinch/utilities/deprecation.rb +12 -0
  76. data/lib/cinch/utilities/encoding.rb +54 -0
  77. data/lib/cinch/utilities/kernel.rb +13 -0
  78. data/lib/cinch/utilities/string.rb +13 -0
  79. data/lib/cinch/version.rb +4 -0
  80. metadata +88 -47
  81. data/lib/cinch/logger/logger.rb +0 -44
  82. data/lib/cinch/logger/null_logger.rb +0 -18
  83. data/lib/cinch/rubyext/infinity.rb +0 -1
data/LICENSE CHANGED
@@ -1,4 +1,5 @@
1
1
  Copyright (c) 2010 Lee Jarvis, Dominik Honnef
2
+ Copyright (c) 2011 Dominik Honnef
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
4
5
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -60,7 +60,7 @@ Features
60
60
  ### Documentation
61
61
 
62
62
  Cinch provides a documented API, which is online for your viewing pleasure
63
- [here](http://rubydoc.info/github/cinchrb/cinch/master/).
63
+ [here](http://rubydoc.info/gems/cinch/frames).
64
64
 
65
65
  ### Object Oriented
66
66
 
@@ -147,8 +147,7 @@ messages:
147
147
  Authors
148
148
  -------
149
149
 
150
- * [Lee Jarvis](http://injekt.net)
151
- * [Dominik Honnef](http://fork-bomb.org)
150
+ * [Dominik Honnef](http://dominik.honnef.co)
152
151
 
153
152
  Contribute
154
153
  ----------
@@ -171,3 +170,4 @@ to check it out.
171
170
  discussing design decisions etc)
172
171
  - Emil Loer (http://github.com/thedjinn) for improving the handling of
173
172
  unexpected disconnects and reconnects.
173
+ - Check the list of authors for smaller contributions
@@ -0,0 +1,435 @@
1
+ # @title Bot options
2
+
3
+ # Options
4
+ Note: This page describes options of Cinch. It does not describe how
5
+ to set options specific to plugins.
6
+
7
+ ## channels
8
+ Type
9
+ : Array<String>
10
+
11
+ Default value
12
+ : `[]`
13
+
14
+ Description
15
+ : Channels in this list will be joined upon connecting.
16
+
17
+
18
+ ### Notes
19
+ - To automatically join password-protected channels, just append the
20
+ password to the channel's name, separated by a space, e.g.
21
+ `"#mychannel mypassword"`.
22
+
23
+ ## dcc
24
+
25
+ ### dcc.own_ip
26
+ Type
27
+ : String
28
+
29
+ Default value
30
+ : `nil`
31
+
32
+ Description
33
+ : The external IP which should be used for outgoing DCC SENDs. For
34
+ more information see {Cinch::DCC::Outgoing::Send}.
35
+
36
+ ## delay_joins
37
+ Type
38
+ : Number, Symbol
39
+
40
+ Default value
41
+ : `0`
42
+
43
+ Description
44
+ : Delay joining channels N seconds after connecting, or until the event S fires.
45
+
46
+ ### Notes
47
+ - This is especially useful in combination with the /cinch-identify/ plugin, which will trigger the `:identified` event.
48
+
49
+ ## encoding
50
+ Type
51
+ : String, Encoding
52
+
53
+ Default value
54
+ : `:irc`
55
+
56
+ Description
57
+ : This determines which encoding text received from IRC will have.
58
+
59
+
60
+ ### Notes
61
+ - {file:encodings.md More information on how Cinch handles encoding issues}
62
+
63
+ ## local_host
64
+ Type
65
+ : String
66
+
67
+ Default value
68
+ : `nil`
69
+
70
+ Description
71
+ : Which IP/host to bind to when connecting. This is useful for using
72
+ so called "vhosts".
73
+
74
+ ## max_messages
75
+ Type
76
+ : Fixnum
77
+
78
+ Default value
79
+ : `nil`
80
+
81
+ Description
82
+ : When an overlong message gets split, only `max_messages` parts will
83
+ be sent to the recipient.
84
+
85
+
86
+ ### Notes
87
+ - Set this option to `nil` to disable any limit.
88
+
89
+ ## max_reconnect_delay
90
+ Type
91
+ : Fixnum
92
+
93
+ Default value
94
+ : `300`
95
+
96
+ Descriptipn
97
+ : With every unsuccessful reconnection attempt, Cinch increases the
98
+ delay between new attempts. This setting is the maximum number of
99
+ seconds to wait between two attempts.
100
+
101
+ ## messages_per_second
102
+ Type
103
+ : Float
104
+
105
+ Default value
106
+ : Network dependent
107
+
108
+ Description
109
+ : How many incoming messages the server processes per second. This is
110
+ used for throttling.
111
+
112
+
113
+ ### Notes
114
+ - If your bot gets kicked for excess flood, try lowering the value of
115
+ `messages_per_second`.
116
+ - See also: {file:bot_options.md#serverqueuesize `server_queue_size`}
117
+
118
+ ## message_split_end
119
+ Type
120
+ : String
121
+
122
+ Default value
123
+ : `" ..."`
124
+
125
+ Description
126
+ : When a message is too long to be sent as a whole, it will be split
127
+ and the value of this option will be appended to all but the last
128
+ parts of the message.
129
+
130
+
131
+ ## message_split_start
132
+ Type
133
+ : String
134
+
135
+ Default value
136
+ : `"... "`
137
+
138
+ Description
139
+ : When a message is too long to be sent as a whole, it will be split
140
+ and the value of this option will be prepended to all but the first
141
+ parts of the message.
142
+
143
+ ## modes
144
+ Type
145
+ : Array<String>
146
+
147
+ Default value
148
+ : []
149
+
150
+ Description
151
+ : An array of modes the bot should set on itself after connecting.
152
+
153
+ ## nick
154
+ Type
155
+ : String
156
+
157
+ Default value
158
+ : `"cinch"`
159
+
160
+ Description
161
+ : The nickname the bot will use.
162
+
163
+
164
+ ### Notes
165
+ - If the nickname is in use, Cinch will append underscores until it
166
+ finds a free nick.
167
+ - You really should set this option instead of using the default.
168
+
169
+ ## nicks
170
+ Type
171
+ : Array<String>
172
+
173
+ Default value
174
+ : `nil`
175
+
176
+ Description
177
+ : This option overrules {file:bot_options.md#nick `nick`} and allows Cinch
178
+ to try multiple nicks before adding underscores.
179
+
180
+
181
+ ## password
182
+ Type
183
+ : String
184
+
185
+ Default value
186
+ : `nil`
187
+
188
+ Description
189
+ : A server password for access to private servers.
190
+
191
+
192
+ ### Notes
193
+ - Some networks allow you to use the server password for
194
+ authenticating with services (e.g. NickServ).
195
+
196
+
197
+ ## ping_interval
198
+ Type
199
+ : Number
200
+
201
+ Default value
202
+ : `120`
203
+
204
+ Description
205
+ : The server will be pinged every X seconds, to keep the connection
206
+ alive.
207
+
208
+
209
+ ### Notes
210
+ - The ping interval should be smaller than
211
+ {file:bot_options.md#timeoutsread `timeouts.read`} to prevent Cinch from
212
+ falsely declaring a connection dead.
213
+
214
+
215
+ ## plugins
216
+
217
+ ### plugins.plugins
218
+ Type
219
+ : Array<Class>
220
+
221
+ Default value
222
+ : `[]`
223
+
224
+ Description
225
+ : A list of plugins to register.
226
+
227
+
228
+ #### Notes
229
+ - An example: `[Plugin1, Plugin2, Plugin3]` -- Note that we are adding
230
+ the plugin **classes** to the list.
231
+
232
+ ### plugins.prefix
233
+ Type
234
+ : String, Regexp, Lambda
235
+
236
+ Default value
237
+ : `/^!/`
238
+
239
+ Description
240
+ : A prefix that will be prepended to all plugin commands.
241
+
242
+
243
+ ### plugins.suffix
244
+ Type
245
+ : String, Regexp, Lambda
246
+
247
+ Default value
248
+ : `nil`
249
+
250
+ Description
251
+ : A suffix that will be appended to all plugin commands.
252
+
253
+
254
+
255
+ ### plugins.options
256
+ Type
257
+ : Hash
258
+
259
+ Default value
260
+ : `Hash.new {|h,k| h[k] = {}}`
261
+
262
+ Description
263
+ : Options specific to plugins.
264
+
265
+
266
+ #### Notes
267
+ - Information on plugins and options for those will be made available
268
+ in a separate document soon.
269
+
270
+
271
+ ## port
272
+ Type
273
+ : Fixnum
274
+
275
+ Default value
276
+ : `6667`
277
+
278
+ Description
279
+ : The port the IRC server is listening on
280
+
281
+
282
+ ## realname
283
+ Type
284
+ : String
285
+
286
+ Default value
287
+ : `"cinch"`
288
+
289
+ Description
290
+ : The real name Cinch will connect with.
291
+
292
+ ## reconnect
293
+ Type
294
+ : Boolean
295
+
296
+ Default value
297
+ : `true`
298
+
299
+ Description
300
+ : Should Cinch attempt to reconnect after a connection loss?
301
+
302
+ ## sasl
303
+
304
+ ### sasl.username
305
+ Type
306
+ : String
307
+
308
+ Default value
309
+ : `nil`
310
+
311
+ Description
312
+ : The username to use for SASL authentication.
313
+
314
+ ### sasl.password
315
+ Type
316
+ : String
317
+
318
+ Default value
319
+ : `nil`
320
+
321
+ Description
322
+ : The password to use for SASL authentication.
323
+
324
+ ## server
325
+ Type
326
+ : String
327
+
328
+ Default value
329
+ : `"localhost"`
330
+
331
+ Description
332
+ : The IRC server to connect to
333
+
334
+
335
+ ## server_queue_size
336
+ Type
337
+ : Fixnum
338
+
339
+ Default value
340
+ : Network dependent
341
+
342
+ Description
343
+ : The number of incoming messages the server will queue, before
344
+ killing the bot for excess flood.
345
+
346
+
347
+ ### Notes
348
+ - If your bot gets kicked for excess flood, try lowering the value of
349
+ `server_queue_size`.
350
+ - See also: {file:bot_options.md#messagespersecond `messages_per_second`}
351
+
352
+ ## ssl
353
+
354
+ ### ssl.use
355
+ Type
356
+ : Boolean
357
+
358
+ Default value
359
+ : `false`
360
+
361
+ Description
362
+ : Sets if SSL should be used
363
+
364
+ ### ssl.verify
365
+ Type
366
+ : Boolean
367
+
368
+ Default value
369
+ : `false`
370
+
371
+ Description
372
+ : Sets if the SSL certificate should be verified
373
+
374
+
375
+ ### ssl.ca_path
376
+ Type
377
+ : String
378
+
379
+ Default value
380
+ : `"/etc/ssl/certs"`
381
+
382
+ Description
383
+ : The path to a directory with certificates. This has to be set
384
+ properly for {file:bot_options.md#sslverify `ssl.verify`} to work.
385
+
386
+
387
+ ### ssl.client_cert
388
+ Type
389
+ : String
390
+
391
+ Default value
392
+ : `nil`
393
+
394
+ Description
395
+ : The path to a client certificate, which some networks can use for
396
+ authentication (see {http://www.oftc.net/oftc/NickServ/CertFP})
397
+
398
+
399
+ #### Notes
400
+ - You will want to set the correct port when using SSL
401
+
402
+ ## user
403
+ Type
404
+ : String
405
+
406
+ Default value
407
+ : `"cinch"`
408
+
409
+ Description
410
+ : The user name to use when connecting to the IRC server.
411
+
412
+ ## timeouts
413
+
414
+ ### timeouts.read
415
+ Type
416
+ : Number
417
+
418
+ Default value
419
+ : `240`
420
+
421
+ Description
422
+ : If no data has been received for this amount of seconds, the
423
+ connection will be considered dead.
424
+
425
+
426
+ ### timeouts.connect
427
+ Type
428
+ : Number
429
+
430
+ Default value
431
+ : `10`
432
+
433
+ Description
434
+ : Give up connecting after his amount of seconds.
435
+