spox-mod_spox 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. data/CHANGELOG +174 -0
  2. data/INSTALL +15 -0
  3. data/LICENSE +674 -0
  4. data/README.rdoc +73 -0
  5. data/bin/mod_spox +112 -0
  6. data/data/mod_spox/extras/AOLSpeak.rb +257 -0
  7. data/data/mod_spox/extras/AutoKick.rb +152 -0
  8. data/data/mod_spox/extras/AutoMode.rb +122 -0
  9. data/data/mod_spox/extras/AutoRejoin.rb +37 -0
  10. data/data/mod_spox/extras/Bash.rb +55 -0
  11. data/data/mod_spox/extras/Bouncer.rb +220 -0
  12. data/data/mod_spox/extras/Bullshit.rb +19 -0
  13. data/data/mod_spox/extras/Bytes.rb +11 -0
  14. data/data/mod_spox/extras/Confess.rb +244 -0
  15. data/data/mod_spox/extras/DCC.rb +182 -0
  16. data/data/mod_spox/extras/DevWatch.rb +153 -0
  17. data/data/mod_spox/extras/DownForEveryoneOrJustMe.rb +47 -0
  18. data/data/mod_spox/extras/EightBall.rb +33 -0
  19. data/data/mod_spox/extras/FML.rb +35 -0
  20. data/data/mod_spox/extras/FloodKicker.rb +129 -0
  21. data/data/mod_spox/extras/Fortune.rb +76 -0
  22. data/data/mod_spox/extras/GoogleIt.rb +13 -0
  23. data/data/mod_spox/extras/Headers.rb +59 -0
  24. data/data/mod_spox/extras/Karma.rb +302 -0
  25. data/data/mod_spox/extras/Locator.rb +44 -0
  26. data/data/mod_spox/extras/Logger.rb +182 -0
  27. data/data/mod_spox/extras/LolSpeak.rb +21 -0
  28. data/data/mod_spox/extras/NickServ.rb +84 -0
  29. data/data/mod_spox/extras/PhpCli.rb +308 -0
  30. data/data/mod_spox/extras/PhpFuncLookup.rb +297 -0
  31. data/data/mod_spox/extras/Pinger.rb +11 -0
  32. data/data/mod_spox/extras/Quotes.rb +79 -0
  33. data/data/mod_spox/extras/RegexTracker.rb +158 -0
  34. data/data/mod_spox/extras/Roulette.rb +267 -0
  35. data/data/mod_spox/extras/RubyCli.rb +93 -0
  36. data/data/mod_spox/extras/Search.rb +49 -0
  37. data/data/mod_spox/extras/Seen.rb +150 -0
  38. data/data/mod_spox/extras/Slashdot.rb +35 -0
  39. data/data/mod_spox/extras/SlashdotHeadlineGenerator.rb +500 -0
  40. data/data/mod_spox/extras/Talk.rb +32 -0
  41. data/data/mod_spox/extras/Topten.rb +103 -0
  42. data/data/mod_spox/extras/TracTicket.rb +66 -0
  43. data/data/mod_spox/extras/Translate.rb +132 -0
  44. data/data/mod_spox/extras/Twitter.rb +458 -0
  45. data/data/mod_spox/extras/UrbanDictionary.rb +55 -0
  46. data/data/mod_spox/extras/Weather.rb +55 -0
  47. data/data/mod_spox/plugins/Authenticator.rb +289 -0
  48. data/data/mod_spox/plugins/Banner.rb +585 -0
  49. data/data/mod_spox/plugins/BotNick.rb +18 -0
  50. data/data/mod_spox/plugins/Helper.rb +49 -0
  51. data/data/mod_spox/plugins/Initializer.rb +35 -0
  52. data/data/mod_spox/plugins/Joiner.rb +23 -0
  53. data/data/mod_spox/plugins/Nicker.rb +14 -0
  54. data/data/mod_spox/plugins/Parter.rb +23 -0
  55. data/data/mod_spox/plugins/Permissions.rb +60 -0
  56. data/data/mod_spox/plugins/PluginLoader.rb +180 -0
  57. data/data/mod_spox/plugins/Ponger.rb +70 -0
  58. data/data/mod_spox/plugins/PoolConfig.rb +52 -0
  59. data/data/mod_spox/plugins/Quitter.rb +15 -0
  60. data/data/mod_spox/plugins/Servers.rb +57 -0
  61. data/data/mod_spox/plugins/Status.rb +31 -0
  62. data/data/mod_spox/plugins/Triggers.rb +85 -0
  63. data/lib/mod_spox/BaseConfig.rb +51 -0
  64. data/lib/mod_spox/Bot.rb +604 -0
  65. data/lib/mod_spox/BotConfig.rb +65 -0
  66. data/lib/mod_spox/ConfigurationWizard.rb +180 -0
  67. data/lib/mod_spox/Database.rb +51 -0
  68. data/lib/mod_spox/Exceptions.rb +84 -0
  69. data/lib/mod_spox/Helpers.rb +122 -0
  70. data/lib/mod_spox/Loader.rb +60 -0
  71. data/lib/mod_spox/Logger.rb +37 -0
  72. data/lib/mod_spox/MessageFactory.rb +112 -0
  73. data/lib/mod_spox/Pipeline.rb +207 -0
  74. data/lib/mod_spox/Plugin.rb +97 -0
  75. data/lib/mod_spox/PluginHolder.rb +22 -0
  76. data/lib/mod_spox/PluginManager.rb +257 -0
  77. data/lib/mod_spox/PriorityQueue.rb +69 -0
  78. data/lib/mod_spox/Socket.rb +201 -0
  79. data/lib/mod_spox/Sockets.rb +226 -0
  80. data/lib/mod_spox/Timer.rb +60 -0
  81. data/lib/mod_spox/Version.rb +14 -0
  82. data/lib/mod_spox/handlers/BadNick.rb +19 -0
  83. data/lib/mod_spox/handlers/Bounce.rb +24 -0
  84. data/lib/mod_spox/handlers/Created.rb +27 -0
  85. data/lib/mod_spox/handlers/Handler.rb +39 -0
  86. data/lib/mod_spox/handlers/Invite.rb +28 -0
  87. data/lib/mod_spox/handlers/Join.rb +38 -0
  88. data/lib/mod_spox/handlers/Kick.rb +36 -0
  89. data/lib/mod_spox/handlers/LuserChannels.rb +19 -0
  90. data/lib/mod_spox/handlers/LuserClient.rb +18 -0
  91. data/lib/mod_spox/handlers/LuserMe.rb +16 -0
  92. data/lib/mod_spox/handlers/LuserOp.rb +19 -0
  93. data/lib/mod_spox/handlers/LuserUnknown.rb +19 -0
  94. data/lib/mod_spox/handlers/Mode.rb +62 -0
  95. data/lib/mod_spox/handlers/Motd.rb +38 -0
  96. data/lib/mod_spox/handlers/MyInfo.rb +24 -0
  97. data/lib/mod_spox/handlers/Names.rb +86 -0
  98. data/lib/mod_spox/handlers/Nick.rb +50 -0
  99. data/lib/mod_spox/handlers/NickInUse.rb +19 -0
  100. data/lib/mod_spox/handlers/Notice.rb +35 -0
  101. data/lib/mod_spox/handlers/Part.rb +39 -0
  102. data/lib/mod_spox/handlers/Ping.rb +25 -0
  103. data/lib/mod_spox/handlers/Pong.rb +23 -0
  104. data/lib/mod_spox/handlers/Privmsg.rb +39 -0
  105. data/lib/mod_spox/handlers/Quit.rb +29 -0
  106. data/lib/mod_spox/handlers/Topic.rb +38 -0
  107. data/lib/mod_spox/handlers/Welcome.rb +30 -0
  108. data/lib/mod_spox/handlers/Who.rb +83 -0
  109. data/lib/mod_spox/handlers/Whois.rb +117 -0
  110. data/lib/mod_spox/handlers/YourHost.rb +20 -0
  111. data/lib/mod_spox/messages/Messages.rb +6 -0
  112. data/lib/mod_spox/messages/incoming/BadNick.rb +16 -0
  113. data/lib/mod_spox/messages/incoming/Bounce.rb +18 -0
  114. data/lib/mod_spox/messages/incoming/Created.rb +15 -0
  115. data/lib/mod_spox/messages/incoming/Invite.rb +21 -0
  116. data/lib/mod_spox/messages/incoming/Join.rb +19 -0
  117. data/lib/mod_spox/messages/incoming/Kick.rb +26 -0
  118. data/lib/mod_spox/messages/incoming/LuserChannels.rb +15 -0
  119. data/lib/mod_spox/messages/incoming/LuserClient.rb +24 -0
  120. data/lib/mod_spox/messages/incoming/LuserMe.rb +18 -0
  121. data/lib/mod_spox/messages/incoming/LuserOp.rb +15 -0
  122. data/lib/mod_spox/messages/incoming/LuserUnknown.rb +15 -0
  123. data/lib/mod_spox/messages/incoming/Message.rb +22 -0
  124. data/lib/mod_spox/messages/incoming/Mode.rb +42 -0
  125. data/lib/mod_spox/messages/incoming/Motd.rb +18 -0
  126. data/lib/mod_spox/messages/incoming/MyInfo.rb +24 -0
  127. data/lib/mod_spox/messages/incoming/Names.rb +24 -0
  128. data/lib/mod_spox/messages/incoming/Nick.rb +26 -0
  129. data/lib/mod_spox/messages/incoming/NickInUse.rb +15 -0
  130. data/lib/mod_spox/messages/incoming/Notice.rb +9 -0
  131. data/lib/mod_spox/messages/incoming/Part.rb +21 -0
  132. data/lib/mod_spox/messages/incoming/Ping.rb +18 -0
  133. data/lib/mod_spox/messages/incoming/Pong.rb +9 -0
  134. data/lib/mod_spox/messages/incoming/Privmsg.rb +90 -0
  135. data/lib/mod_spox/messages/incoming/Quit.rb +18 -0
  136. data/lib/mod_spox/messages/incoming/Topic.rb +21 -0
  137. data/lib/mod_spox/messages/incoming/TopicInfo.rb +21 -0
  138. data/lib/mod_spox/messages/incoming/Welcome.rb +27 -0
  139. data/lib/mod_spox/messages/incoming/Who.rb +18 -0
  140. data/lib/mod_spox/messages/incoming/Whois.rb +49 -0
  141. data/lib/mod_spox/messages/incoming/YourHost.rb +18 -0
  142. data/lib/mod_spox/messages/internal/BotInitialized.rb +11 -0
  143. data/lib/mod_spox/messages/internal/ChangeNick.rb +15 -0
  144. data/lib/mod_spox/messages/internal/Connected.rb +20 -0
  145. data/lib/mod_spox/messages/internal/ConnectionFailed.rb +23 -0
  146. data/lib/mod_spox/messages/internal/DCCListener.rb +12 -0
  147. data/lib/mod_spox/messages/internal/DCCRequest.rb +12 -0
  148. data/lib/mod_spox/messages/internal/DCCSocket.rb +19 -0
  149. data/lib/mod_spox/messages/internal/Disconnected.rb +8 -0
  150. data/lib/mod_spox/messages/internal/Disconnecting.rb +8 -0
  151. data/lib/mod_spox/messages/internal/EstablishConnection.rb +22 -0
  152. data/lib/mod_spox/messages/internal/HaltBot.rb +8 -0
  153. data/lib/mod_spox/messages/internal/NickRequest.rb +9 -0
  154. data/lib/mod_spox/messages/internal/NickResponse.rb +15 -0
  155. data/lib/mod_spox/messages/internal/PluginLoadRequest.rb +21 -0
  156. data/lib/mod_spox/messages/internal/PluginLoadResponse.rb +17 -0
  157. data/lib/mod_spox/messages/internal/PluginModuleRequest.rb +14 -0
  158. data/lib/mod_spox/messages/internal/PluginModuleResponse.rb +18 -0
  159. data/lib/mod_spox/messages/internal/PluginReload.rb +18 -0
  160. data/lib/mod_spox/messages/internal/PluginRequest.rb +18 -0
  161. data/lib/mod_spox/messages/internal/PluginResponse.rb +21 -0
  162. data/lib/mod_spox/messages/internal/PluginUnloadRequest.rb +9 -0
  163. data/lib/mod_spox/messages/internal/PluginUnloadResponse.rb +9 -0
  164. data/lib/mod_spox/messages/internal/PluginsReady.rb +10 -0
  165. data/lib/mod_spox/messages/internal/QueueSocket.rb +8 -0
  166. data/lib/mod_spox/messages/internal/Reconnect.rb +8 -0
  167. data/lib/mod_spox/messages/internal/Request.rb +15 -0
  168. data/lib/mod_spox/messages/internal/Response.rb +15 -0
  169. data/lib/mod_spox/messages/internal/Shutdown.rb +8 -0
  170. data/lib/mod_spox/messages/internal/SignaturesUpdate.rb +8 -0
  171. data/lib/mod_spox/messages/internal/StatusRequest.rb +10 -0
  172. data/lib/mod_spox/messages/internal/StatusResponse.rb +18 -0
  173. data/lib/mod_spox/messages/internal/TimerAdd.rb +36 -0
  174. data/lib/mod_spox/messages/internal/TimerClear.rb +16 -0
  175. data/lib/mod_spox/messages/internal/TimerRemove.rb +23 -0
  176. data/lib/mod_spox/messages/internal/TimerResponse.rb +34 -0
  177. data/lib/mod_spox/messages/internal/TriggersUpdate.rb +8 -0
  178. data/lib/mod_spox/messages/internal/UnqueueSocket.rb +8 -0
  179. data/lib/mod_spox/messages/outgoing/Admin.rb +15 -0
  180. data/lib/mod_spox/messages/outgoing/Away.rb +11 -0
  181. data/lib/mod_spox/messages/outgoing/ChannelMode.rb +25 -0
  182. data/lib/mod_spox/messages/outgoing/Connect.rb +24 -0
  183. data/lib/mod_spox/messages/outgoing/Die.rb +9 -0
  184. data/lib/mod_spox/messages/outgoing/Info.rb +15 -0
  185. data/lib/mod_spox/messages/outgoing/Invite.rb +19 -0
  186. data/lib/mod_spox/messages/outgoing/Ison.rb +15 -0
  187. data/lib/mod_spox/messages/outgoing/Join.rb +19 -0
  188. data/lib/mod_spox/messages/outgoing/Kick.rb +23 -0
  189. data/lib/mod_spox/messages/outgoing/Kill.rb +19 -0
  190. data/lib/mod_spox/messages/outgoing/Links.rb +19 -0
  191. data/lib/mod_spox/messages/outgoing/List.rb +19 -0
  192. data/lib/mod_spox/messages/outgoing/Lusers.rb +19 -0
  193. data/lib/mod_spox/messages/outgoing/Motd.rb +16 -0
  194. data/lib/mod_spox/messages/outgoing/Names.rb +20 -0
  195. data/lib/mod_spox/messages/outgoing/Nick.rb +16 -0
  196. data/lib/mod_spox/messages/outgoing/Notice.rb +12 -0
  197. data/lib/mod_spox/messages/outgoing/Oper.rb +19 -0
  198. data/lib/mod_spox/messages/outgoing/Part.rb +19 -0
  199. data/lib/mod_spox/messages/outgoing/Pass.rb +16 -0
  200. data/lib/mod_spox/messages/outgoing/Ping.rb +11 -0
  201. data/lib/mod_spox/messages/outgoing/Pong.rb +17 -0
  202. data/lib/mod_spox/messages/outgoing/Privmsg.rb +43 -0
  203. data/lib/mod_spox/messages/outgoing/Quit.rb +11 -0
  204. data/lib/mod_spox/messages/outgoing/Raw.rb +16 -0
  205. data/lib/mod_spox/messages/outgoing/Rehash.rb +9 -0
  206. data/lib/mod_spox/messages/outgoing/Restart.rb +9 -0
  207. data/lib/mod_spox/messages/outgoing/ServList.rb +19 -0
  208. data/lib/mod_spox/messages/outgoing/Simple.rb +12 -0
  209. data/lib/mod_spox/messages/outgoing/Squery.rb +19 -0
  210. data/lib/mod_spox/messages/outgoing/Squit.rb +19 -0
  211. data/lib/mod_spox/messages/outgoing/Stats.rb +18 -0
  212. data/lib/mod_spox/messages/outgoing/Summon.rb +23 -0
  213. data/lib/mod_spox/messages/outgoing/Time.rb +15 -0
  214. data/lib/mod_spox/messages/outgoing/Topic.rb +19 -0
  215. data/lib/mod_spox/messages/outgoing/Trace.rb +15 -0
  216. data/lib/mod_spox/messages/outgoing/Unaway.rb +9 -0
  217. data/lib/mod_spox/messages/outgoing/User.rb +23 -0
  218. data/lib/mod_spox/messages/outgoing/UserHost.rb +15 -0
  219. data/lib/mod_spox/messages/outgoing/UserMode.rb +19 -0
  220. data/lib/mod_spox/messages/outgoing/Users.rb +15 -0
  221. data/lib/mod_spox/messages/outgoing/Version.rb +16 -0
  222. data/lib/mod_spox/messages/outgoing/Who.rb +23 -0
  223. data/lib/mod_spox/messages/outgoing/WhoWas.rb +23 -0
  224. data/lib/mod_spox/messages/outgoing/Whois.rb +19 -0
  225. data/lib/mod_spox/migrations/001_initialize_models.rb +115 -0
  226. data/lib/mod_spox/migrations/002_persistent_sigs.rb +14 -0
  227. data/lib/mod_spox/migrations/003_auth_restructure.rb +31 -0
  228. data/lib/mod_spox/migrations/004_mode_index_fix.rb +18 -0
  229. data/lib/mod_spox/migrations/005_nick_mode_nopark.rb +18 -0
  230. data/lib/mod_spox/models/Auth.rb +65 -0
  231. data/lib/mod_spox/models/AuthMask.rb +13 -0
  232. data/lib/mod_spox/models/Channel.rb +89 -0
  233. data/lib/mod_spox/models/Config.rb +30 -0
  234. data/lib/mod_spox/models/Group.rb +30 -0
  235. data/lib/mod_spox/models/Models.rb +4 -0
  236. data/lib/mod_spox/models/Nick.rb +195 -0
  237. data/lib/mod_spox/models/NickMode.rb +32 -0
  238. data/lib/mod_spox/models/Server.rb +27 -0
  239. data/lib/mod_spox/models/Setting.rb +52 -0
  240. data/lib/mod_spox/models/Signature.rb +52 -0
  241. data/lib/mod_spox/models/Trigger.rb +9 -0
  242. data/lib/mod_spox/rfc2812.rb +49 -0
  243. data/populate_gemspec.rb +15 -0
  244. data/tests/BotHolder.rb +24 -0
  245. data/tests/handlers/tc_BadNick.rb +21 -0
  246. data/tests/handlers/tc_Created.rb +24 -0
  247. data/tests/handlers/tc_Invite.rb +50 -0
  248. data/tests/handlers/tc_Join.rb +33 -0
  249. data/tests/handlers/tc_Kick.rb +32 -0
  250. data/tests/handlers/tc_Mode.rb +85 -0
  251. data/tests/handlers/tc_Names.rb +35 -0
  252. data/tests/handlers/tc_Nick.rb +55 -0
  253. data/tests/handlers/tc_Part.rb +44 -0
  254. data/tests/handlers/tc_Ping.rb +40 -0
  255. data/tests/handlers/tc_Pong.rb +28 -0
  256. data/tests/handlers/tc_Privmsg.rb +85 -0
  257. data/tests/handlers/tc_Quit.rb +40 -0
  258. data/tests/handlers/tc_Who.rb +50 -0
  259. data/tests/handlers/tc_Whois.rb +61 -0
  260. data/tests/models/tc_Auth.rb +39 -0
  261. data/tests/models/tc_Channel.rb +52 -0
  262. data/tests/models/tc_Config.rb +19 -0
  263. data/tests/models/tc_Nick.rb +144 -0
  264. data/tests/models/tc_NickMode.rb +40 -0
  265. data/tests/models/tc_Setting.rb +21 -0
  266. data/tests/models/tc_Signature.rb +14 -0
  267. data/tests/run_tests.rb +6 -0
  268. metadata +362 -0
@@ -0,0 +1,21 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Part < Message
6
+ # channel user parted from
7
+ attr_reader :channel
8
+ # nick that parted from channel
9
+ attr_reader :nick
10
+ # reason for parting
11
+ attr_reader :reason
12
+ def initialize(raw, channel, nick, reason)
13
+ super(raw)
14
+ @channel = channel
15
+ @nick = nick
16
+ @reason = reason
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Ping < Message
6
+ # server of origin
7
+ attr_reader :server
8
+ # string
9
+ attr_reader :string
10
+ def initialize(raw, server, string)
11
+ super(raw)
12
+ @server = server
13
+ @string = string
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ require 'mod_spox/messages/incoming/Ping'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Pong < Ping
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,90 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Privmsg < Message
6
+
7
+ # source of the message
8
+ attr_reader :source
9
+ # target of the message
10
+ attr_reader :target
11
+ # message is CTCP
12
+ attr_reader :ctcp
13
+ # message CTCP type
14
+ attr_reader :ctcp_type
15
+ def initialize(raw, source, target, message)
16
+ super(raw)
17
+ @source = source
18
+ @target = target
19
+ @ctcp = false
20
+ @ctcp_type = nil
21
+ @action = false
22
+ if(@raw_content =~ /\x01(\S+)\s(.+)\x01/)
23
+ @ctcp = true
24
+ @ctcp_type = $1
25
+ @message = $2
26
+ @action = @ctcp_type.downcase == 'action'
27
+ else
28
+ @message = message
29
+ end
30
+ botnick = Models::Nick.filter(:botnick => true).first
31
+ if(botnick)
32
+ @addressed = @message =~ /^#{botnick.nick}/i
33
+ else
34
+ @addressed = false
35
+ end
36
+ end
37
+
38
+ # Is message addressing the bot
39
+ def addressed?
40
+ return @addressed || is_private?
41
+ end
42
+
43
+ # Is this is private message
44
+ def is_private?
45
+ return !is_public?
46
+ end
47
+
48
+ # Is this a DCC message
49
+ def is_dcc?
50
+ return @target.is_a?(String)
51
+ end
52
+
53
+ # Is this a public message
54
+ def is_public?
55
+ return @target.is_a?(Models::Channel)
56
+ end
57
+
58
+ # Does the message contain colors
59
+ def is_colored?
60
+ return @message =~ /\cC\d\d?(?:,\d\d?)?/
61
+ end
62
+
63
+ # Message with coloring stripped
64
+ def message_nocolor
65
+ return @message.gsub(/\cC\d\d?(?:,\d\d?)?/, '').tr("\x00-\x1f", '')
66
+ end
67
+
68
+ # the message sent
69
+ def message(color=false)
70
+ return color ? @message : message_nocolor
71
+ end
72
+
73
+ # Is this message an action message
74
+ def is_action?
75
+ @action
76
+ end
77
+
78
+ def is_ctcp?
79
+ @ctcp
80
+ end
81
+
82
+ # Convinence method for replying to the correct place
83
+ def replyto
84
+ return is_public? || is_dcc? ? @target : @source
85
+ end
86
+
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Quit < Message
6
+ # nick that quit
7
+ attr_reader :nick
8
+ # quit message
9
+ attr_reader :message
10
+ def initialize(raw, nick, message)
11
+ super(raw)
12
+ @nick = nick
13
+ @message = message
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Topic < Message
6
+
7
+ # channel topic was set
8
+ attr_reader :channel
9
+ # topic messages
10
+ attr_reader :topic
11
+
12
+ def initialize(raw, channel, topic)
13
+ super(raw)
14
+ @channel = @channel
15
+ @topic = @topic
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class TopicInfo < Message
6
+ # channel topic info is for
7
+ attr_reader :channel
8
+ # last nick to set topic
9
+ attr_reader :nick
10
+ # time topic was set
11
+ attr_reader :time
12
+ def initialize(raw, channel, nick, time)
13
+ super(raw)
14
+ @channel = channel
15
+ @nick = nick
16
+ @time = time
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Welcome < Message
6
+ # server bot is connected to
7
+ attr_reader :server
8
+ # welcome message from server
9
+ attr_reader :message
10
+ # nick of the bot
11
+ attr_reader :nick
12
+ # username of the bot
13
+ attr_reader :username
14
+ # hostname of the bot
15
+ attr_reader :hostname
16
+ def initialize(raw, server, message, nick, username, hostname)
17
+ super(raw)
18
+ @server = server
19
+ @message = message
20
+ @nick = nick
21
+ @username = username
22
+ @hostname = hostname
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Who < Message
6
+ # array of nicks
7
+ attr_reader :nicks
8
+ # where nicks are from (channel if who'd a channel, nick if who'd a single nick)
9
+ attr_reader :location
10
+ def initialize(raw, location, nicks)
11
+ super(raw)
12
+ @location = location
13
+ @nicks = nicks
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,49 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class Whois < Message
6
+ # Nick of user
7
+ attr_reader :nick
8
+ # Channels user is found in
9
+ attr_accessor :channels
10
+ # Raw whois string
11
+ attr_accessor :raw
12
+
13
+ def initialize(nick)
14
+ @nick = nick
15
+ @channels = Array.new
16
+ @raw = Array.new
17
+ @locked = false
18
+ end
19
+
20
+ # channel:: Channel
21
+ # Adds channel to list
22
+ def channels_push(channel)
23
+ restricted if @locked
24
+ @channels << channel
25
+ end
26
+
27
+ # string:: string
28
+ # Adds string to raw whois info
29
+ def raw_push(string)
30
+ restricted if @locked
31
+ @raw << string
32
+ end
33
+
34
+ # Locks the object's custom methods
35
+ def lock
36
+ @locked = true
37
+ @raw_content = @raw.join("\n")
38
+ @nick.refresh
39
+ end
40
+
41
+ private
42
+
43
+ def restricted
44
+ raise Exceptions::LockedObject.new('Whois message can no longer be modified')
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/incoming/Message'
2
+ module ModSpox
3
+ module Messages
4
+ module Incoming
5
+ class YourHost < Message
6
+ # name of server bot is connected to
7
+ attr_reader :servername
8
+ # version of server bot is connected to
9
+ attr_reader :version
10
+ def initialize(raw, server, version)
11
+ super(raw)
12
+ @servername = server
13
+ @version = version
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ # This is a message to let the plugins know the
5
+ # bot is running and waiting for someone to tell
6
+ # it to do something
7
+ class BotInitialized
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class ChangeNick
5
+ # change bot's nick to this nick
6
+ attr_reader :new_nick
7
+ # new_nick: nick to change to
8
+ # Tells the bot it needs to change its nick
9
+ def initialize(new_nick)
10
+ @new_nick = new_nick
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class Connected
5
+ # server connected to
6
+ attr_reader :server
7
+ # port connected to
8
+ attr_reader :port
9
+ # server:: Server bot is connected to
10
+ # port:: Port bot connected to
11
+ # Used as notification that the bot has connected
12
+ # to the given server
13
+ def initialize(server, port)
14
+ @server = server
15
+ @port = port
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class ConnectionFailed
5
+ # server attempted
6
+ attr_reader :server
7
+ # port attempted
8
+ attr_reader :port
9
+ # reason for failure
10
+ attr_reader :reason
11
+ # server:: server attempted to connect
12
+ # port:: port attempted to connect on
13
+ # reason: reason for failed connection
14
+ # Failed connection to the server
15
+ def initialize(server, port, reason=nil)
16
+ @server = server
17
+ @port = port
18
+ @reason = reason
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class DCCListener
5
+ attr_reader :nick
6
+ def initialize(nick)
7
+ @nick = nick
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class DCCRequest
5
+ attr_reader :socket_id
6
+ def initialize(id)
7
+ @socket_id = id
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class DCCSocket
5
+ # ID of the contained socket
6
+ attr_reader :socket_id
7
+ # Models::Nick this socket is connected to
8
+ attr_reader :nick
9
+ # socket
10
+ attr_reader :socket
11
+ def initialize(id, nick, socket)
12
+ @socket_id = id
13
+ @nick = nick
14
+ @socket = socket
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class Disconnected
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class Disconnecting
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class EstablishConnection
5
+ # server to connect to
6
+ attr_reader :server
7
+ # port to connect to
8
+ attr_reader :port
9
+ # password for connection to server
10
+ attr_reader :password
11
+ # server:: Server to connect to
12
+ # port:: Port to connect to
13
+ # password:: password to connect
14
+ def initialize(server=nil, port=nil, password=nil)
15
+ @server = server
16
+ @port = port
17
+ @password = password
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,8 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ class HaltBot
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'mod_spox/messages/internal/Request'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class NickRequest < Request
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ require 'mod_spox/messages/internal/Response'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class NickResponse < Response
6
+ # nick of the bot (model)
7
+ attr_reader :nick
8
+ def initialize(origin, nick)
9
+ super(origin)
10
+ @nick = nick
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require 'mod_spox/messages/internal/Request'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginLoadRequest < Request
6
+ # path to plugin file
7
+ attr_reader :path
8
+ # file name for plugin
9
+ attr_reader :name
10
+ # object:: object requesting the load
11
+ # path:: path to plugin file to be loaded
12
+ # Loads a plugin located at the given path
13
+ def initialize(object, path, name=nil)
14
+ super(object)
15
+ @path = path
16
+ @name = name
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require 'mod_spox/messages/internal/Response'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginLoadResponse < Response
6
+ # success of loading
7
+ attr_reader :success
8
+ # successful:: load was successful
9
+ # Notifies requesting object if load was successful
10
+ def initialize(object, successful)
11
+ super(object)
12
+ @success = successful
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ require 'mod_spox/messages/internal/Request'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginModuleRequest < Request
6
+ # object:: object requesting the load
7
+ # Requests the plugin module
8
+ def initialize(object)
9
+ super(object)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/internal/Response'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginModuleResponse < Response
6
+ # plugins module
7
+ attr_reader :module
8
+ # plugin:: Plugin to send to requester
9
+ # Sends the plugins module to the requester
10
+ def initialize(object, mod)
11
+ super(object)
12
+ @module = mod
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module ModSpox
2
+ module Messages
3
+ module Internal
4
+ # Sends message to reload plugin. If new and stale
5
+ # attributes are set, only that plugin will be reloaded
6
+ class PluginReload
7
+ # Path to new plugin to load
8
+ attr_reader :fresh
9
+ # Path to stale plugin to remove
10
+ attr_reader :stale
11
+ def initialize(fresh=nil, stale=nil)
12
+ @fresh = fresh
13
+ @stale = stale
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'mod_spox/messages/internal/Request'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginRequest < Request
6
+ # plugin requested
7
+ attr_reader :plugin
8
+ # object:: object requesting
9
+ # name:: Name of plugin
10
+ # Request plugin from bot
11
+ def initialize(object, name)
12
+ super(object)
13
+ @plugin = name.is_a?(Symbol) ? name : name.to_sym
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ require 'mod_spox/messages/internal/Response'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginResponse < Response
6
+ # plugin object
7
+ attr_reader :plugin
8
+ # plugin:: Plugin to send to requester
9
+ # Sends a plugin to requesting object
10
+ def initialize(object, plugin)
11
+ super(object)
12
+ @plugin = plugin
13
+ end
14
+
15
+ def found?
16
+ return !@plugin.nil?
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ require 'mod_spox/messages/internal/PluginLoadRequest'
2
+ module ModSpox
3
+ module Messages
4
+ module Internal
5
+ class PluginUnloadRequest < PluginLoadRequest
6
+ end
7
+ end
8
+ end
9
+ end