mod_spox 0.0.4 → 0.0.5
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.
- 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
|