zabbirc 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa6b2a62b76aecb1541a8608444b54aa0435258a
4
- data.tar.gz: cd3e76f12c22caed15cf276cf4518dac82160946
3
+ metadata.gz: df680508aa555565efa407d3e430ab753a9eb4b4
4
+ data.tar.gz: 74e9be479d72a9f44a347af645a4e7b62ee6937e
5
5
  SHA512:
6
- metadata.gz: ec786a1141cff5e769b91cefe1ca45b9e2fa97b7f4a15ad70f5fa13c614acfb63c4674f606f365d473e2f92938589fc154703ea2cad767b661f8869196141be9
7
- data.tar.gz: 3a0b23a5017ceb2f8aabdcc73af0a300bb2795595a2f813a77d1ff054a35d0ed469b7b44869c9a2dfd5071777eca7269b20af4d07651cb9bc907098fb5748a4a
6
+ metadata.gz: c83af7f1d8f025023bf7d96dc3b36b0218894aabe663014df01e6bea4a250eeaa4c09656b60458a557e534be2aa41b2850bef5abb59df564506874f475434127
7
+ data.tar.gz: f714c131e9e43ec77bd52c4507cc5e48cd596c4f62e35d695b3c8a2292604bc3d47e1d37aff0ed682ef00728966621ba3ca774cf1504c4aa91c8103a61700128
@@ -2,4 +2,7 @@ Zabbirc.configure do |config|
2
2
  config.zabbix_api_url = ENV['ZABBIX_API_URL']
3
3
  config.zabbix_login = ENV['ZABBIX_LOGIN']
4
4
  config.zabbix_password = ENV['ZABBIX_PASSWORD']
5
+
6
+ config.irc_server = "irc.devel.redhat.com"
7
+ config.irc_channels = ["#libra-zabbix"]
5
8
  end
@@ -9,12 +9,16 @@ module Zabbirc
9
9
  listen_to :join, method: :sync_ops
10
10
  listen_to :leaving, method: :sync_ops
11
11
 
12
+ match "zabbirc status", method: :zabbirc_status
12
13
  match "settings", method: :show_settings
13
14
  match /settings set ([#_a-zA-Z0-9]+)( ([#\-_a-zA-Z0-9]+))?/, method: :set_setting
15
+ match /settings set\s*$/, method: :set_setting_help
14
16
  match "events", method: :list_events
15
17
  match /status ([a-zA-Z0-9\-.]+)/, method: :host_status
16
18
  match /latest ([a-zA-Z0-9\-.]+)( (\d+))?/, method: :host_latest
17
19
  match /ack (\d+) (.*)/, method: :acknowledge_event
20
+ match /ack\s*$/, method: :acknowledge_event_usage
21
+ match /ack ([^ ]+)\s*$/, method: :acknowledge_event_usage
18
22
  end
19
23
  end
20
24
  end
@@ -2,8 +2,20 @@ module Zabbirc
2
2
  module Irc
3
3
  module PluginMethods
4
4
 
5
+ def zabbirc_status m
6
+ ops_msg = ops.collect{|o| "#{o.nick} as #{o.login}"}
7
+ m.reply("#{m.user.nick}: Identified ops: #{ops_msg.join(", ")}")
8
+ end
9
+
10
+ def acknowledge_event_usage m
11
+ return unless authenticate m
12
+ op = get_op m
13
+ usage = "Usage: !ack <event-id> <ack-message>"
14
+ m.reply("#{op.nick}: #{usage}")
15
+ end
16
+
5
17
  def acknowledge_event m, eventid, message
6
- return unless authenticate m.user.nick
18
+ return unless authenticate m
7
19
  op = get_op m
8
20
  event = find_event m, eventid
9
21
  return unless event
@@ -16,7 +28,7 @@ module Zabbirc
16
28
  end
17
29
 
18
30
  def host_status m, host
19
- return unless authenticate m.user.nick
31
+ return unless authenticate m
20
32
  op = get_op m
21
33
  host = find_host m, host
22
34
  return unless host
@@ -37,7 +49,7 @@ module Zabbirc
37
49
 
38
50
  def host_latest m, host, _rest, limit
39
51
  limit ||= 8
40
- return unless authenticate m.user.nick
52
+ return unless authenticate m
41
53
  op = get_op m
42
54
  host = find_host m, host
43
55
  return unless host
@@ -62,13 +74,20 @@ module Zabbirc
62
74
 
63
75
  ### Settings
64
76
  def show_settings m
65
- return unless authenticate m.user.nick
77
+ return unless authenticate m
66
78
  op = get_op m
67
79
  m.reply "#{op.nick}: #{op.setting}"
68
80
  end
69
81
 
82
+ def set_setting_help m
83
+ return unless authenticate m
84
+ op = get_op m
85
+ usage = "Usage: !setting set <setting-name> <setting-value>"
86
+ m.reply("#{op.nick}: #{usage}")
87
+ end
88
+
70
89
  def set_setting m, key, _rest, value
71
- return unless authenticate m.user.nick
90
+ return unless authenticate m
72
91
  op = get_op m
73
92
  case key
74
93
  when "notify"
@@ -133,7 +152,7 @@ module Zabbirc
133
152
 
134
153
  ### Events
135
154
  def list_events m
136
- return unless authenticate m.user.nick
155
+ return unless authenticate m
137
156
  events = Zabbix::Event.recent
138
157
  msg = if events.any?
139
158
  events.collect do |e|
@@ -151,13 +170,13 @@ module Zabbirc
151
170
 
152
171
  ### Authentication and helpers
153
172
  def authenticate obj
154
- nick = get_nick obj
155
- ops.authenticate nick
173
+ login = get_login obj
174
+ ops.authenticate login
156
175
  end
157
176
 
158
177
  def get_op obj
159
- nick = get_nick obj
160
- ops.get nick
178
+ login = get_login obj
179
+ ops.get login
161
180
  end
162
181
 
163
182
  def get_nick obj
@@ -171,6 +190,17 @@ module Zabbirc
171
190
  end
172
191
  end
173
192
 
193
+ def get_login obj
194
+ case obj
195
+ when Cinch::Message
196
+ obj.user.user.sub("~","")
197
+ when Cinch::User
198
+ obj.user.user.sub("~","")
199
+ when String
200
+ obj
201
+ end
202
+ end
203
+
174
204
  private
175
205
 
176
206
  def find_host m, host
@@ -1,11 +1,12 @@
1
1
  module Zabbirc
2
2
  class Op
3
3
 
4
- attr_reader :channels, :setting, :nick
4
+ attr_reader :channels, :setting, :nick, :login
5
5
  def initialize zabbix_user: nil, irc_user: nil
6
6
  raise ArgumentError, 'zabbix_user' if zabbix_user.nil?
7
7
  raise ArgumentError, 'irc_user' if irc_user.nil?
8
- @nick = zabbix_user.alias
8
+ @login= zabbix_user.alias
9
+ @nick = irc_user.nick
9
10
  @zabbix_user = zabbix_user
10
11
  @irc_user = irc_user
11
12
 
@@ -22,10 +22,10 @@ module Zabbirc
22
22
  end
23
23
 
24
24
  def add op
25
- if exists? op.nick
26
- return get(op.nick)
25
+ if exists? op.login
26
+ return get(op.login)
27
27
  end
28
- @ops[op.nick] = op
28
+ @ops[op.login] = op
29
29
  end
30
30
 
31
31
  def each &block
@@ -11,17 +11,17 @@ module Zabbirc
11
11
 
12
12
  private
13
13
 
14
- def channel_nicks channel
15
- channel.users.keys.collect(&:nick)
14
+ def channel_logins channel
15
+ channel.users.keys.collect{|u| u.user.sub("~","") }
16
16
  end
17
17
 
18
- def channel_find_user channel, nick
19
- channel.users.keys.find { |irc_user| irc_user.nick == nick }
18
+ def channel_find_user channel, login
19
+ channel.users.keys.find { |irc_user| irc_user.user.sub("~","") == login }
20
20
  end
21
21
 
22
22
  def sync_ops channel
23
- nicks = channel_nicks channel
24
- zabbix_users = Zabbix::User.get filter: { alias: nicks }
23
+ logins = channel_logins channel
24
+ zabbix_users = Zabbix::User.get filter: { alias: logins }
25
25
  zabbix_users.each do |zabbix_user|
26
26
  irc_user = channel_find_user channel, zabbix_user.alias
27
27
  op = @service.ops.add(Op.new(zabbix_user: zabbix_user, irc_user: irc_user))
@@ -29,7 +29,7 @@ module Zabbirc
29
29
  end
30
30
 
31
31
  @service.ops.each do |op|
32
- op.remove_channel channel unless nicks.include? op.nick
32
+ op.remove_channel channel unless logins.include? op.login
33
33
  end
34
34
  true
35
35
  end
@@ -1,9 +1,10 @@
1
1
  describe Zabbirc::Irc::PluginMethods do
2
2
  # let(:service) { Zabbirc::ServiceMock.new }
3
3
  let(:mock_message) { double("Cinch::Message", user: mock_user) }
4
- let(:mock_user) { double("Cinch::User", nick: mock_nick) }
4
+ let(:mock_user) { double("Cinch::User", nick: mock_nick, login: mock_login) }
5
5
  let(:bot) { Zabbirc::MockBot.new }
6
6
  let(:mock_nick) { "op1" }
7
+ let(:mock_login) { "op1" }
7
8
  let(:mock_user_settings) { nil }
8
9
 
9
10
  before do
@@ -1,6 +1,7 @@
1
1
  module Zabbirc
2
2
  class MockBot
3
3
  include Zabbirc::Irc::PluginMethods
4
+ include RSpec::Mocks::ExampleMethods
4
5
 
5
6
  def initialize
6
7
  @ops = OpList.new
@@ -16,10 +17,17 @@ module Zabbirc
16
17
  return get_nick(obj.user) if obj.respond_to? :user
17
18
  end
18
19
 
20
+ def get_login obj
21
+ return obj if obj.is_a? String
22
+ return obj.login if obj.respond_to? :login
23
+ return get_login(obj.user) if obj.respond_to? :user
24
+ end
25
+
19
26
  def setup_op name, settings=nil
20
27
  @@op_ids ||= 0
21
28
  zabbix_user = Zabbix::User.new(alias: name, userid: (@@op_ids+=1))
22
- op = Op.new(zabbix_user: zabbix_user, irc_user: Object.new)
29
+ irc_user = double "IrcUser", nick: name, user: name
30
+ op = Op.new(zabbix_user: zabbix_user, irc_user: irc_user)
23
31
  settings.each do |key, value|
24
32
  op.setting.set key, value
25
33
  end if settings
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabbirc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Zachar
@@ -141,7 +141,6 @@ files:
141
141
  - spec/spec_helper.rb
142
142
  - spec/support/mock_bot.rb
143
143
  - templates/zabbirc_config.rb
144
- - thread_test.rb
145
144
  - tmp/playground.rb
146
145
  homepage: http://rubygems.org/gems/zabbirc
147
146
  licenses:
@@ -153,9 +152,9 @@ require_paths:
153
152
  - lib
154
153
  required_ruby_version: !ruby/object:Gem::Requirement
155
154
  requirements:
156
- - - ">="
155
+ - - "~>"
157
156
  - !ruby/object:Gem::Version
158
- version: '0'
157
+ version: '2.0'
159
158
  required_rubygems_version: !ruby/object:Gem::Requirement
160
159
  requirements:
161
160
  - - ">="
@@ -1,46 +0,0 @@
1
- require 'pry'
2
- StopError = Object.new
3
- $f = File.open("thread.log", "w")
4
-
5
- def lg msg
6
- $f.puts msg
7
- $f.flush
8
- end
9
- main_thread = Thread.current
10
-
11
- def make_thread
12
- Thread.new do
13
- begin
14
- loop do
15
- Thread.handle_interrupt(StopError => :never) do
16
- lg "Start - critical"
17
- sleep 5
18
- lg "Stop - critical"
19
-
20
- Thread.handle_interrupt(StopError => :immediate) do
21
- lg "Start - interruptibly"
22
- sleep 10
23
- lg "Stop - interruptibly"
24
- end
25
- end
26
- end
27
- rescue => e
28
- puts "Chyba: #{e}"
29
- main_thread.raise e
30
- end
31
- end
32
- end
33
-
34
- def start
35
- $t = make_thread
36
- end
37
-
38
- def stop
39
- $t.raise StopError
40
- end
41
-
42
- def q
43
- $t.raise StandardError
44
- end
45
-
46
- binding.pry