mod_spox 0.0.3 → 0.0.4

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 (37) hide show
  1. data/CHANGELOG +38 -0
  2. data/INSTALL +5 -2
  3. data/bin/mod_spox +7 -3
  4. data/data/mod_spox/extras/Confess.rb +4 -4
  5. data/data/mod_spox/extras/Karma.rb +2 -2
  6. data/data/mod_spox/extras/Logger.rb +167 -0
  7. data/data/mod_spox/extras/Quotes.rb +2 -2
  8. data/data/mod_spox/extras/Roulette.rb +34 -16
  9. data/data/mod_spox/extras/Topten.rb +105 -0
  10. data/data/mod_spox/plugins/Authenticator.rb +2 -2
  11. data/data/mod_spox/plugins/Banner.rb +10 -10
  12. data/data/mod_spox/plugins/Initializer.rb +1 -1
  13. data/data/mod_spox/plugins/Triggers.rb +3 -3
  14. data/lib/mod_spox/Bot.rb +6 -5
  15. data/lib/mod_spox/BotConfig.rb +1 -1
  16. data/lib/mod_spox/ConfigurationWizard.rb +18 -17
  17. data/lib/mod_spox/Database.rb +9 -0
  18. data/lib/mod_spox/Helpers.rb +49 -0
  19. data/lib/mod_spox/Loader.rb +11 -0
  20. data/lib/mod_spox/PluginManager.rb +1 -0
  21. data/lib/mod_spox/Pool.rb +23 -107
  22. data/lib/mod_spox/Socket.rb +23 -37
  23. data/lib/mod_spox/Timer.rb +3 -3
  24. data/lib/mod_spox/handlers/Created.rb +1 -1
  25. data/lib/mod_spox/handlers/Handler.rb +1 -13
  26. data/lib/mod_spox/handlers/Invite.rb +1 -1
  27. data/lib/mod_spox/handlers/LuserOp.rb +1 -1
  28. data/lib/mod_spox/handlers/LuserUnknown.rb +1 -1
  29. data/lib/mod_spox/messages/internal/TimerAdd.rb +8 -0
  30. data/lib/mod_spox/messages/internal/TimerRemove.rb +8 -0
  31. data/lib/mod_spox/messages/internal/TimerResponse.rb +8 -1
  32. data/lib/mod_spox/models/Auth.rb +4 -4
  33. data/lib/mod_spox/models/Channel.rb +11 -0
  34. data/lib/mod_spox/models/Nick.rb +22 -11
  35. data/lib/mod_spox/models/Setting.rb +2 -2
  36. data/lib/mod_spox/models/Signature.rb +11 -2
  37. metadata +4 -2
@@ -4,10 +4,18 @@ module ModSpox
4
4
  class TimerRemove
5
5
  # action to remove
6
6
  attr_reader :action
7
+ # message identification
8
+ attr_reader :ident
7
9
  # action:: action to remove from timer
8
10
  # Remove action from timer
9
11
  def initialize(action)
10
12
  @action = action
13
+ @ident = rand(99999999)
14
+ end
15
+
16
+ # Message ID
17
+ def id
18
+ @ident
11
19
  end
12
20
  end
13
21
  end
@@ -4,13 +4,16 @@ module ModSpox
4
4
  class TimerResponse < Response
5
5
  # action from timer
6
6
  attr_reader :action
7
+ # response to message with this ID
8
+ attr_reader :ident
7
9
  # object:: object to send response to
8
10
  # action:: action removed from timer
9
11
  # Notification that action has been removed
10
- def initialize(object, action, added)
12
+ def initialize(object, action, added, id)
11
13
  super(object)
12
14
  @action = action
13
15
  @added = added
16
+ @ident = id
14
17
  end
15
18
  # Action was added to timer
16
19
  def action_added?
@@ -20,6 +23,10 @@ module ModSpox
20
23
  def action_removed?
21
24
  return !@added
22
25
  end
26
+ # ID of message this response is for
27
+ def id
28
+ @ident
29
+ end
23
30
  end
24
31
  end
25
32
  end
@@ -47,14 +47,14 @@ module ModSpox
47
47
 
48
48
  # Set services (nickserv) identification
49
49
  def services_identified=(val)
50
- set :authed => true if val && services
50
+ update_with_params :authed => true if val && services
51
51
  end
52
52
 
53
53
  # pass:: password to compare
54
54
  # Check and authenticate against password
55
55
  def check_password(pass)
56
56
  if(Digest::SHA1.hexdigest(pass) == password)
57
- set :authed => true
57
+ update_with_params :authed => true
58
58
  return true
59
59
  else
60
60
  return false
@@ -62,14 +62,14 @@ module ModSpox
62
62
  end
63
63
 
64
64
  def password=(pass)
65
- set :password => Digest::SHA1.hexdigest(pass)
65
+ update_values :password => Digest::SHA1.hexdigest(pass)
66
66
  end
67
67
 
68
68
  # source:: source to apply mask to
69
69
  # Check and authenticate by mask against source
70
70
  def check_mask(source)
71
71
  if(source =~ /^#{mask}$/)
72
- set :authed => true
72
+ update_with_params :authed => true
73
73
  end
74
74
  end
75
75
 
@@ -10,6 +10,17 @@ module ModSpox
10
10
  # parked:: Bot is currently in this channel
11
11
  class Channel < Sequel::Model(:channels)
12
12
 
13
+ set_cache Database.cache, :ttl => 3600 unless Database.cache.nil?
14
+
15
+ def Channel.locate(string, create = true)
16
+ chan = nil
17
+ if(Database.type == :pgsql)
18
+ chan = Channel.filter('name = lower(?)', string).first
19
+ end
20
+ chan = Channel.find_or_create(:name => string) if !chan && create
21
+ return chan
22
+ end
23
+
13
24
  # Modes for this channel
14
25
  def channel_modes
15
26
  ChannelMode.filter(:channel_id => pk)
@@ -16,22 +16,33 @@ module ModSpox
16
16
  # TODO: for nick field -> "tack a COLLATE NOCASE onto the columns"
17
17
  class Nick < Sequel::Model(:nicks)
18
18
 
19
+ set_cache Database.cache, :ttl => 3600 unless Database.cache.nil?
20
+
21
+ def Nick.locate(string, create = true)
22
+ nick = nil
23
+ if(Database.type == :pgsql)
24
+ nick = Nick.filter('nick = lower(?)', string).first
25
+ end
26
+ nick = Nick.find_or_create(:nick => string) if !nick && create
27
+ return nick
28
+ end
29
+
19
30
  def visible=(val)
20
31
  unless(val)
21
- set :username => nil
22
- set :real_name => nil
23
- set :address => nil
24
- set :source => nil
25
- set :connected_at => nil
26
- set :connected_to => nil
27
- set :seconds_idle => nil
28
- set :away => false
32
+ update_with_params :username => nil
33
+ update_with_params :real_name => nil
34
+ update_with_params :address => nil
35
+ update_with_params :source => nil
36
+ update_with_params :connected_at => nil
37
+ update_with_params :connected_to => nil
38
+ update_with_params :seconds_idle => nil
39
+ update_with_params :away => false
29
40
  end
30
- set :visible => val
41
+ update_values :visible => val
31
42
  end
32
43
 
33
44
  def source=(mask)
34
- set :source => mask
45
+ update_values :source => mask
35
46
  auth.check_mask(mask)
36
47
  end
37
48
 
@@ -45,7 +56,7 @@ module ModSpox
45
56
  groups = []
46
57
  auth_ids = []
47
58
  group_ids = []
48
- auth = Auth.filter{:nick_id == pk && :authed == true}.first
59
+ auth = Auth.filter('nick_id = ?', pk).filter('authed = ?', true).first
49
60
  if(auth)
50
61
  groups = auth.groups
51
62
  end
@@ -11,7 +11,7 @@ module ModSpox
11
11
  class Setting < Sequel::Model(:settings)
12
12
 
13
13
  def value=(val)
14
- set(:value => Base64.encode64(Marshal.dump(val)))
14
+ update_values(:value => Base64.encode64(Marshal.dump(val)))
15
15
  end
16
16
 
17
17
  def value
@@ -33,7 +33,7 @@ module ModSpox
33
33
  def self.[]=(key, val)
34
34
  key = key.to_s if key.is_a?(Symbol)
35
35
  model = Setting.find_or_create(:name => key)
36
- model.set(:value => Base64.encode64(Marshal.dump(val)))
36
+ model.update_with_params(:value => Base64.encode64(Marshal.dump(val)))
37
37
  end
38
38
  end
39
39
  end
@@ -1,3 +1,4 @@
1
+ require 'base64'
1
2
  module ModSpox
2
3
  module Models
3
4
  # Attributes provided by model:
@@ -10,19 +11,27 @@ module ModSpox
10
11
 
11
12
  def params=(prms)
12
13
  raise InvalidType.new('Parameter names must be provided in an array') unless prms.kind_of?(Array)
13
- set(:params => prms.join('|'))
14
+ update_values(:params => prms.join('|'))
14
15
  end
15
16
 
16
17
  def params
17
18
  return values[:params].nil? ? [] : values[:params].split('|')
18
19
  end
19
20
 
21
+ def signature=(sig)
22
+ update_values(:signature => Base64.encode64(Marshal.dump(sig)))
23
+ end
24
+
25
+ def signature
26
+ return values[:signature] ? Marshal.load(Base64.decode64(values[:signature])) : nil
27
+ end
28
+
20
29
  def group
21
30
  Group[group_id]
22
31
  end
23
32
 
24
33
  def group=(group)
25
- set :group_id => group.pk
34
+ update_values :group_id => group.pk
26
35
  end
27
36
 
28
37
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: mod_spox
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.3
7
- date: 2008-04-30 00:00:00 -07:00
6
+ version: 0.0.4
7
+ date: 2008-05-09 00:00:00 -07:00
8
8
  summary: The mod_spox IRC robot
9
9
  require_paths:
10
10
  - lib
@@ -241,6 +241,8 @@ files:
241
241
  - data/mod_spox/extras/Talk.rb
242
242
  - data/mod_spox/extras/EightBall.rb
243
243
  - data/mod_spox/extras/AOLSpeak.rb
244
+ - data/mod_spox/extras/Logger.rb
245
+ - data/mod_spox/extras/Topten.rb
244
246
  test_files: []
245
247
 
246
248
  rdoc_options: []