mod_spox 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +16 -0
- data/INSTALL +4 -1
- data/bin/mod_spox +3 -1
- data/data/mod_spox/extras/AOLSpeak.rb +2 -2
- data/data/mod_spox/extras/AutoKick.rb +3 -8
- data/data/mod_spox/extras/AutoMode.rb +135 -0
- data/data/mod_spox/extras/EightBall.rb +1 -0
- data/data/mod_spox/extras/Headers.rb +4 -3
- data/data/mod_spox/extras/PhpFuncLookup.rb +14 -11
- data/data/mod_spox/extras/Roulette.rb +3 -3
- data/data/mod_spox/extras/Search.rb +3 -2
- data/data/mod_spox/extras/Talk.rb +1 -9
- data/data/mod_spox/extras/Translate.rb +3 -3
- data/data/mod_spox/extras/UrbanDictionary.rb +5 -3
- data/data/mod_spox/extras/Weather.rb +5 -4
- data/data/mod_spox/plugins/Authenticator.rb +2 -2
- data/data/mod_spox/plugins/Banner.rb +207 -2
- data/data/mod_spox/plugins/Helper.rb +1 -1
- data/data/mod_spox/plugins/PluginLoader.rb +22 -6
- data/data/mod_spox/plugins/Triggers.rb +6 -4
- data/lib/mod_spox/Action.rb +2 -0
- data/lib/mod_spox/BaseConfig.rb +2 -0
- data/lib/mod_spox/Bot.rb +32 -6
- data/lib/mod_spox/BotConfig.rb +3 -0
- data/lib/mod_spox/Cache.rb +57 -0
- data/lib/mod_spox/ConfigurationWizard.rb +6 -2
- data/lib/mod_spox/Helpers.rb +36 -18
- data/lib/mod_spox/Loader.rb +5 -54
- data/lib/mod_spox/Logger.rb +49 -3
- data/lib/mod_spox/MessageFactory.rb +5 -0
- data/lib/mod_spox/Monitors.rb +14 -12
- data/lib/mod_spox/Pipeline.rb +38 -6
- data/lib/mod_spox/Plugin.rb +3 -0
- data/lib/mod_spox/PluginHolder.rb +22 -0
- data/lib/mod_spox/PluginManager.rb +123 -25
- data/lib/mod_spox/Pool.rb +52 -23
- data/lib/mod_spox/Socket.rb +21 -10
- data/lib/mod_spox/Timer.rb +32 -6
- data/lib/mod_spox/handlers/BadNick.rb +2 -0
- data/lib/mod_spox/handlers/Bounce.rb +3 -0
- data/lib/mod_spox/handlers/Created.rb +2 -0
- data/lib/mod_spox/handlers/Handler.rb +5 -0
- data/lib/mod_spox/handlers/Invite.rb +2 -0
- data/lib/mod_spox/handlers/Join.rb +21 -5
- data/lib/mod_spox/handlers/Kick.rb +2 -0
- data/lib/mod_spox/handlers/LuserChannels.rb +2 -0
- data/lib/mod_spox/handlers/LuserClient.rb +1 -0
- data/lib/mod_spox/handlers/LuserMe.rb +1 -0
- data/lib/mod_spox/handlers/LuserOp.rb +2 -0
- data/lib/mod_spox/handlers/LuserUnknown.rb +2 -0
- data/lib/mod_spox/handlers/Mode.rb +2 -0
- data/lib/mod_spox/handlers/Motd.rb +5 -2
- data/lib/mod_spox/handlers/MyInfo.rb +2 -0
- data/lib/mod_spox/handlers/Names.rb +5 -1
- data/lib/mod_spox/handlers/Nick.rb +2 -0
- data/lib/mod_spox/handlers/NickInUse.rb +2 -0
- data/lib/mod_spox/handlers/Notice.rb +16 -4
- data/lib/mod_spox/handlers/Part.rb +2 -0
- data/lib/mod_spox/handlers/Ping.rb +2 -0
- data/lib/mod_spox/handlers/Pong.rb +2 -0
- data/lib/mod_spox/handlers/Privmsg.rb +16 -4
- data/lib/mod_spox/handlers/Quit.rb +2 -0
- data/lib/mod_spox/handlers/Topic.rb +2 -0
- data/lib/mod_spox/handlers/Welcome.rb +3 -0
- data/lib/mod_spox/handlers/Who.rb +3 -1
- data/lib/mod_spox/handlers/Whois.rb +8 -0
- data/lib/mod_spox/handlers/YourHost.rb +2 -0
- data/lib/mod_spox/messages/Messages.rb +6 -0
- data/lib/mod_spox/messages/incoming/BadNick.rb +1 -0
- data/lib/mod_spox/messages/incoming/Bounce.rb +1 -0
- data/lib/mod_spox/messages/incoming/Created.rb +1 -0
- data/lib/mod_spox/messages/incoming/Invite.rb +1 -0
- data/lib/mod_spox/messages/incoming/Join.rb +1 -0
- data/lib/mod_spox/messages/incoming/Kick.rb +1 -0
- data/lib/mod_spox/messages/incoming/LuserChannels.rb +1 -0
- data/lib/mod_spox/messages/incoming/LuserClient.rb +1 -0
- data/lib/mod_spox/messages/incoming/LuserMe.rb +1 -0
- data/lib/mod_spox/messages/incoming/LuserOp.rb +1 -0
- data/lib/mod_spox/messages/incoming/LuserUnknown.rb +1 -0
- data/lib/mod_spox/messages/incoming/Mode.rb +1 -0
- data/lib/mod_spox/messages/incoming/Motd.rb +1 -0
- data/lib/mod_spox/messages/incoming/MyInfo.rb +1 -0
- data/lib/mod_spox/messages/incoming/Names.rb +1 -0
- data/lib/mod_spox/messages/incoming/Nick.rb +1 -0
- data/lib/mod_spox/messages/incoming/NickInUse.rb +1 -0
- data/lib/mod_spox/messages/incoming/Notice.rb +1 -0
- data/lib/mod_spox/messages/incoming/Part.rb +1 -0
- data/lib/mod_spox/messages/incoming/Ping.rb +1 -0
- data/lib/mod_spox/messages/incoming/Pong.rb +1 -0
- data/lib/mod_spox/messages/incoming/Privmsg.rb +1 -0
- data/lib/mod_spox/messages/incoming/Quit.rb +1 -0
- data/lib/mod_spox/messages/incoming/Topic.rb +1 -0
- data/lib/mod_spox/messages/incoming/TopicInfo.rb +1 -0
- data/lib/mod_spox/messages/incoming/Welcome.rb +1 -0
- data/lib/mod_spox/messages/incoming/Who.rb +1 -0
- data/lib/mod_spox/messages/incoming/Whois.rb +1 -0
- data/lib/mod_spox/messages/incoming/YourHost.rb +1 -0
- data/lib/mod_spox/messages/internal/NickRequest.rb +1 -0
- data/lib/mod_spox/messages/internal/NickResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginLoadRequest.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginLoadResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginModuleRequest.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginModuleResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginReload.rb +10 -0
- data/lib/mod_spox/messages/internal/PluginRequest.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginUnloadRequest.rb +1 -0
- data/lib/mod_spox/messages/internal/PluginUnloadResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/StatusResponse.rb +1 -0
- data/lib/mod_spox/messages/internal/TimerAdd.rb +1 -0
- data/lib/mod_spox/messages/internal/TimerClear.rb +8 -0
- data/lib/mod_spox/messages/internal/TimerResponse.rb +1 -0
- data/lib/mod_spox/messages/outgoing/Away.rb +1 -0
- data/lib/mod_spox/messages/outgoing/Notice.rb +1 -0
- data/lib/mod_spox/messages/outgoing/Ping.rb +1 -0
- data/lib/mod_spox/messages/outgoing/Quit.rb +1 -0
- data/lib/mod_spox/messages/outgoing/Raw.rb +16 -0
- data/lib/mod_spox/models/Models.rb +4 -0
- data/lib/mod_spox/models/Nick.rb +9 -0
- data/lib/mod_spox/models/Setting.rb +3 -5
- data/lib/mod_spox/models/Signature.rb +2 -3
- metadata +8 -2
data/lib/mod_spox/Timer.rb
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
['mod_spox/Logger',
|
2
|
+
'mod_spox/Pipeline',
|
3
|
+
'mod_spox/Pool',
|
4
|
+
'mod_spox/Action',
|
5
|
+
'mod_spox/Exceptions',
|
6
|
+
'mod_spox/Monitors'].each{|f|require f}
|
7
|
+
|
1
8
|
module ModSpox
|
2
9
|
|
3
10
|
class Timer < Pool
|
@@ -12,10 +19,13 @@ module ModSpox
|
|
12
19
|
@monitor = Monitors::Timer.new
|
13
20
|
@thread = nil
|
14
21
|
@stop_timer = false
|
22
|
+
@owners = {}
|
23
|
+
@owners_lock = Mutex.new
|
15
24
|
{:Internal_TimerAdd => :add_message,
|
16
|
-
:Internal_TimerRemove => :remove_message
|
25
|
+
:Internal_TimerRemove => :remove_message,
|
26
|
+
:Internal_TimerClear => :clear}.each_pair do |type,method|
|
17
27
|
@pipeline.hook(self, method, type)
|
18
|
-
|
28
|
+
end
|
19
29
|
start_pool
|
20
30
|
end
|
21
31
|
|
@@ -29,7 +39,12 @@ module ModSpox
|
|
29
39
|
# Add a recurring code block
|
30
40
|
def add_message(message)
|
31
41
|
Logger.log("New block is being added to the timer", 15)
|
32
|
-
action =
|
42
|
+
action = nil
|
43
|
+
@owners_lock.synchronize do
|
44
|
+
action = add(message.period, message.once, message.data, &message.block)
|
45
|
+
@owners[message.requester.name.to_sym] = [] unless @owners.has_key?(message.requester.name.to_sym)
|
46
|
+
@owners[message.requester.name.to_sym] << action
|
47
|
+
end
|
33
48
|
begin
|
34
49
|
@pipeline << Messages::Internal::TimerResponse.new(message.requester, action, true, message.id)
|
35
50
|
Logger.log("New block was successfully added to the timer", 15)
|
@@ -102,9 +117,20 @@ module ModSpox
|
|
102
117
|
end
|
103
118
|
|
104
119
|
# Clears all actions in the timer's queue
|
105
|
-
def clear
|
106
|
-
|
107
|
-
|
120
|
+
def clear(message=nil)
|
121
|
+
if(message.nil? || message.plugin.nil?)
|
122
|
+
@queue.clear
|
123
|
+
@timers.clear
|
124
|
+
@owners.clear
|
125
|
+
else
|
126
|
+
@owners_lock.synchronize do
|
127
|
+
if(@owners.has_key?(message.plugin))
|
128
|
+
@owners[message.plugin].each do |action|
|
129
|
+
remove(action)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
108
134
|
end
|
109
135
|
|
110
136
|
private
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class BadNick < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::BadNick.new(string, $1)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to process RPL_ERRORONEOUSNICK message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Bounce < Handler
|
@@ -8,6 +9,8 @@ module ModSpox
|
|
8
9
|
def process(string)
|
9
10
|
if(string =~ /:Try server (\S+), port (.+)$/)
|
10
11
|
return Messages::Incoming::Bounce.new(string, $1, $2)
|
12
|
+
else
|
13
|
+
return nil
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Created < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::Created.new(string, $1)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to parse RPL_CREATED message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Invite < Handler
|
@@ -12,6 +13,7 @@ module ModSpox
|
|
12
13
|
return Messages::Incoming::Invite.new(string, source, target, channel)
|
13
14
|
else
|
14
15
|
Logger.log('Failed to parse INVITE message')
|
16
|
+
return nil
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Join < Handler
|
@@ -9,20 +10,35 @@ module ModSpox
|
|
9
10
|
source = $1
|
10
11
|
chan = $2
|
11
12
|
if(source =~ /^(.+?)!(.+?)@(.+)$/)
|
13
|
+
do_save = false
|
12
14
|
nick = find_model($1)
|
13
|
-
nick.username
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
nick.
|
15
|
+
unless(nick.username == $2)
|
16
|
+
nick.username == $2
|
17
|
+
do_save = true
|
18
|
+
end
|
19
|
+
unless(nick.address == $3)
|
20
|
+
nick.address = $3
|
21
|
+
do_save = true
|
22
|
+
end
|
23
|
+
unless(nick.source == source)
|
24
|
+
nick.source = source
|
25
|
+
do_save = true
|
26
|
+
end
|
27
|
+
unless(nick.visible == true)
|
28
|
+
nick.visible = true
|
29
|
+
do_save = true
|
30
|
+
end
|
31
|
+
nick.save if do_save
|
18
32
|
channel = find_model(chan)
|
19
33
|
channel.nick_add(nick)
|
20
34
|
return Messages::Incoming::Join.new(string, channel, nick)
|
21
35
|
else
|
22
36
|
Logger.log('Failed to parse source on JOIN message')
|
37
|
+
return nil
|
23
38
|
end
|
24
39
|
else
|
25
40
|
Logger.log('Failed to parse JOIN message')
|
41
|
+
return nil
|
26
42
|
end
|
27
43
|
end
|
28
44
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Kick < Handler
|
@@ -17,6 +18,7 @@ module ModSpox
|
|
17
18
|
return Messages::Incoming::Kick.new(string, channel, kicker, kickee, reason)
|
18
19
|
else
|
19
20
|
Logger.log('Failed to process KICK message')
|
21
|
+
return nil
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class LuserChannels < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::LuserChannels.new(string, $1.to_i)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to match RPL_LUSERCHANNELS message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class LuserOp < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::LuserOp.new(string, $1.to_i)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to match RPL_LUSEROP message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class LuserUnknown < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::LuserUnknown.new(string, $1.to_i)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to match RPL_LUSERUNKNOWN message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Mode < Handler
|
@@ -47,6 +48,7 @@ module ModSpox
|
|
47
48
|
rescue Object => boom
|
48
49
|
Logger.log("Failed to process MODE message. Reason: #{boom}")
|
49
50
|
end
|
51
|
+
return nil
|
50
52
|
end
|
51
53
|
end
|
52
54
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Motd < Handler
|
@@ -12,17 +13,19 @@ module ModSpox
|
|
12
13
|
if(string =~ /^:(\S+) #{RPL_MOTDSTART.to_s}.*?:-\s?(\S+)/)
|
13
14
|
@motds[$1] = Array.new
|
14
15
|
@raw[$1] = [string]
|
15
|
-
return
|
16
|
+
return nil
|
16
17
|
elsif(string =~ /^:(\S+) #{RPL_MOTD.to_s}.*?:-\s?(.+)$/)
|
17
18
|
@motds[$1] << $2
|
18
19
|
@raw[$1] << string
|
19
|
-
return
|
20
|
+
return nil
|
20
21
|
elsif(string =~ /^:(\S+) #{RPL_ENDOFMOTD.to_s}/)
|
21
22
|
@raw[$1] << string
|
22
23
|
message = Messages::Incoming::Motd.new(@raw[$1].join("\n"), @motds[$1].join("\n"), $1)
|
23
24
|
@motds.delete($1)
|
24
25
|
@raw.delete($1)
|
25
26
|
return message
|
27
|
+
else
|
28
|
+
return nil
|
26
29
|
end
|
27
30
|
end
|
28
31
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class MyInfo < Handler
|
@@ -14,6 +15,7 @@ module ModSpox
|
|
14
15
|
return Messages::Incoming::MyInfo.new(string, servername, version, usermodes, channelmodes)
|
15
16
|
else
|
16
17
|
Logger.log('Failed to match My Info message')
|
18
|
+
return nil
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Names < Handler
|
@@ -13,6 +14,7 @@ module ModSpox
|
|
13
14
|
chan = $1
|
14
15
|
nicks = $2
|
15
16
|
@names[chan] = Array.new unless @names[chan]
|
17
|
+
@raw[chan] = Array.new unless @raw[chan]
|
16
18
|
if(@raw[chan])
|
17
19
|
@raw[chan] << string
|
18
20
|
else
|
@@ -22,7 +24,7 @@ module ModSpox
|
|
22
24
|
return nil
|
23
25
|
elsif(string =~ /#{RPL_ENDOFNAMES}.*?(\S+) :/)
|
24
26
|
chan = $1
|
25
|
-
@raw[chan] << string
|
27
|
+
@raw[chan] << string if @raw.has_key?(chan)
|
26
28
|
channel = find_model(chan)
|
27
29
|
nicks = Array.new
|
28
30
|
ops = Array.new
|
@@ -47,6 +49,8 @@ module ModSpox
|
|
47
49
|
@names.delete(chan)
|
48
50
|
@raw.delete(chan)
|
49
51
|
return Messages::Incoming::Names.new(raw, channel, nicks, ops, voice)
|
52
|
+
else
|
53
|
+
return nil
|
50
54
|
end
|
51
55
|
end
|
52
56
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Nick < Handler
|
@@ -17,6 +18,7 @@ module ModSpox
|
|
17
18
|
return Messages::Incoming::Nick.new(string, old_nick, new_nick)
|
18
19
|
else
|
19
20
|
Logger.log('Failed to parse NICK message')
|
21
|
+
return nil
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class NickInUse < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::NickInUse.new(string, $1)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to parse RPL_NICKNAMEINUSE message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Notice < Handler
|
@@ -13,10 +14,20 @@ module ModSpox
|
|
13
14
|
if(base_source =~ /\!/)
|
14
15
|
source = find_model(base_source.gsub(/!.+$/, ''))
|
15
16
|
if(base_source =~ /!(.+)@(.+)$/)
|
16
|
-
|
17
|
-
source.
|
18
|
-
|
19
|
-
|
17
|
+
do_save = false
|
18
|
+
unless(source.username == $1)
|
19
|
+
source.username == $1
|
20
|
+
do_save = true
|
21
|
+
end
|
22
|
+
unless(source.address == $2)
|
23
|
+
source.address = $2
|
24
|
+
do_save = true
|
25
|
+
end
|
26
|
+
unless(source.source == base_source)
|
27
|
+
source.source = base_source
|
28
|
+
do_save = true
|
29
|
+
end
|
30
|
+
source.save if do_save
|
20
31
|
end
|
21
32
|
target = find_model(target)
|
22
33
|
else
|
@@ -25,6 +36,7 @@ module ModSpox
|
|
25
36
|
return Messages::Incoming::Notice.new(string, source, target, message)
|
26
37
|
else
|
27
38
|
Logger.log('Failed to match NOTICE message')
|
39
|
+
return nil
|
28
40
|
end
|
29
41
|
end
|
30
42
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Part < Handler
|
@@ -12,6 +13,7 @@ module ModSpox
|
|
12
13
|
return Messages::Incoming::Part.new(string, channel, nick, $3)
|
13
14
|
else
|
14
15
|
Logger.log('Failed to parse PART message')
|
16
|
+
return nil
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Ping < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::Ping.new(string, $1, nil)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to match PING message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Pong < Handler
|
@@ -9,6 +10,7 @@ module ModSpox
|
|
9
10
|
return Messages::Incoming::Pong.new(string, $1, $2)
|
10
11
|
else
|
11
12
|
Logger.log('Failed to parse PONG message')
|
13
|
+
return nil
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Privmsg < Handler
|
@@ -12,15 +13,26 @@ module ModSpox
|
|
12
13
|
base_source = $1
|
13
14
|
source = find_model(base_source.gsub(/!.+$/, ''))
|
14
15
|
if(base_source =~ /!(.+)@(.+)$/)
|
15
|
-
|
16
|
-
source.
|
17
|
-
|
18
|
-
|
16
|
+
do_save = false
|
17
|
+
unless(source.username == $1)
|
18
|
+
source.username == $1
|
19
|
+
do_save = true
|
20
|
+
end
|
21
|
+
unless(source.address == $2)
|
22
|
+
source.address = $2
|
23
|
+
do_save = true
|
24
|
+
end
|
25
|
+
unless(source.source == base_source)
|
26
|
+
source.source = base_source
|
27
|
+
do_save = true
|
28
|
+
end
|
29
|
+
source.save if do_save
|
19
30
|
end
|
20
31
|
Models::NickChannel.find_or_create(:channel_id => target.pk, :nick_id => source.pk) if target.is_a?(ModSpox::Models::Channel)
|
21
32
|
return Messages::Incoming::Privmsg.new(string, source, target, message)
|
22
33
|
else
|
23
34
|
Logger.log('Failed to match PRIVMSG message')
|
35
|
+
return nil
|
24
36
|
end
|
25
37
|
end
|
26
38
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Quit < Handler
|
@@ -14,6 +15,7 @@ module ModSpox
|
|
14
15
|
return Messages::Incoming::Quit.new(string, nick, reason)
|
15
16
|
else
|
16
17
|
Logger.log('Failed to parse KICK message')
|
18
|
+
return nil
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Topic < Handler
|
@@ -21,6 +22,7 @@ module ModSpox
|
|
21
22
|
return Messages::Incoming::TopicInfo.new(string, channel, nick, time)
|
22
23
|
else
|
23
24
|
Logger.log('Failed to parse TOPIC type string')
|
25
|
+
return nil
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Welcome < Handler
|
@@ -24,9 +25,11 @@ module ModSpox
|
|
24
25
|
return Messages::Incoming::Welcome.new(string, server, message, nick, username, hostname)
|
25
26
|
else
|
26
27
|
Logger.log('Failed to match user string in welcome message')
|
28
|
+
return nil
|
27
29
|
end
|
28
30
|
else
|
29
31
|
Logger.log('Failed to match welcome message')
|
32
|
+
return nil
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Who < Handler
|
@@ -44,6 +45,7 @@ module ModSpox
|
|
44
45
|
Models::NickMode.filter(:channel_id => channel.pk, :nick_id => nick.pk).each{|m| m.destroy}
|
45
46
|
end
|
46
47
|
end
|
48
|
+
return nil
|
47
49
|
elsif(string =~ /#{RPL_ENDOFWHO}\s\S+\s(\S+)\s/)
|
48
50
|
location = $1
|
49
51
|
loc = find_model(location)
|
@@ -54,8 +56,8 @@ module ModSpox
|
|
54
56
|
return message
|
55
57
|
else
|
56
58
|
Logger.log('Failed to match RPL_WHO type message')
|
59
|
+
return nil
|
57
60
|
end
|
58
|
-
return nil
|
59
61
|
end
|
60
62
|
end
|
61
63
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class Whois < Handler
|
@@ -21,6 +22,7 @@ module ModSpox
|
|
21
22
|
nick.real_name = $4
|
22
23
|
@cache[$1] = Messages::Incoming::Whois.new(nick)
|
23
24
|
@cache[$1].raw_push(string)
|
25
|
+
return nil
|
24
26
|
elsif(string =~ /#{RPL_WHOISCHANNELS}\s\S+\s(\S+)\s:(.+)$/)
|
25
27
|
nick = $1
|
26
28
|
$2.split(/\s/).each{|chan|
|
@@ -35,18 +37,23 @@ module ModSpox
|
|
35
37
|
end
|
36
38
|
}
|
37
39
|
@cache[$1].raw_push(string)
|
40
|
+
return nil
|
38
41
|
elsif(string =~ /#{RPL_WHOISSERVER}\s\S+\s(\S+)\s(\S+)\s:(.+)$/)
|
39
42
|
@cache[$1].nick.connected_to = $2
|
40
43
|
@cache[$1].raw_push(string)
|
44
|
+
return nil
|
41
45
|
elsif(string =~ /#{RPL_WHOISIDENTIFIED}\s\S+\s(\S+)\s/)
|
42
46
|
@cache[$1].nick.auth.services_identified = true
|
43
47
|
@cache[$1].raw_push(string)
|
48
|
+
return nil
|
44
49
|
elsif(string =~ /#{RPL_WHOISIDLE}\s\S+\s(\S+)\s(\d+)\s(\d+)\s:(.+?),(.+?)/)
|
45
50
|
@cache[$1].nick.seconds_idle = $2.to_i
|
46
51
|
@cache[$1].nick.connected_at = Time.at($3.to_i)
|
47
52
|
@cache[$1].raw_push(string)
|
53
|
+
return nil
|
48
54
|
elsif(string =~ /#{RPL_WHOISOPERATOR}\s\S+\s(\S+)/)
|
49
55
|
@cache[$1].raw_push(string)
|
56
|
+
return nil
|
50
57
|
elsif(string =~ /#{RPL_ENDOFWHOIS}\s\S+\s(\S+)\s:/)
|
51
58
|
@cache[$1].raw_push(string)
|
52
59
|
message = @cache[$1]
|
@@ -56,6 +63,7 @@ module ModSpox
|
|
56
63
|
return message
|
57
64
|
else
|
58
65
|
Logger.log('Failed to parse WHOIS type reply')
|
66
|
+
return nil
|
59
67
|
end
|
60
68
|
end
|
61
69
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'mod_spox/handlers/Handler'
|
1
2
|
module ModSpox
|
2
3
|
module Handlers
|
3
4
|
class YourHost < Handler
|
@@ -10,6 +11,7 @@ module ModSpox
|
|
10
11
|
return Messages::Incoming::YourHost.new(string, $1, $2)
|
11
12
|
else
|
12
13
|
Logger.log('Failed to match Your Host message')
|
14
|
+
return nil
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|