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 +4 -4
- data/config/config.rb +3 -0
- data/lib/zabbirc/irc/plugin.rb +4 -0
- data/lib/zabbirc/irc/plugin_methods.rb +40 -10
- data/lib/zabbirc/op.rb +3 -2
- data/lib/zabbirc/op_list.rb +3 -3
- data/lib/zabbirc/services/ops.rb +7 -7
- data/spec/bot_spec.rb +2 -1
- data/spec/support/mock_bot.rb +9 -1
- metadata +3 -4
- data/thread_test.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df680508aa555565efa407d3e430ab753a9eb4b4
|
4
|
+
data.tar.gz: 74e9be479d72a9f44a347af645a4e7b62ee6937e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c83af7f1d8f025023bf7d96dc3b36b0218894aabe663014df01e6bea4a250eeaa4c09656b60458a557e534be2aa41b2850bef5abb59df564506874f475434127
|
7
|
+
data.tar.gz: f714c131e9e43ec77bd52c4507cc5e48cd596c4f62e35d695b3c8a2292604bc3d47e1d37aff0ed682ef00728966621ba3ca774cf1504c4aa91c8103a61700128
|
data/config/config.rb
CHANGED
data/lib/zabbirc/irc/plugin.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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
|
-
|
155
|
-
ops.authenticate
|
173
|
+
login = get_login obj
|
174
|
+
ops.authenticate login
|
156
175
|
end
|
157
176
|
|
158
177
|
def get_op obj
|
159
|
-
|
160
|
-
ops.get
|
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
|
data/lib/zabbirc/op.rb
CHANGED
@@ -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
|
-
@
|
8
|
+
@login= zabbix_user.alias
|
9
|
+
@nick = irc_user.nick
|
9
10
|
@zabbix_user = zabbix_user
|
10
11
|
@irc_user = irc_user
|
11
12
|
|
data/lib/zabbirc/op_list.rb
CHANGED
data/lib/zabbirc/services/ops.rb
CHANGED
@@ -11,17 +11,17 @@ module Zabbirc
|
|
11
11
|
|
12
12
|
private
|
13
13
|
|
14
|
-
def
|
15
|
-
channel.users.keys.collect(
|
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,
|
19
|
-
channel.users.keys.find { |irc_user| irc_user.
|
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
|
-
|
24
|
-
zabbix_users = Zabbix::User.get filter: { alias:
|
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
|
32
|
+
op.remove_channel channel unless logins.include? op.login
|
33
33
|
end
|
34
34
|
true
|
35
35
|
end
|
data/spec/bot_spec.rb
CHANGED
@@ -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
|
data/spec/support/mock_bot.rb
CHANGED
@@ -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
|
-
|
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.
|
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
|
- - ">="
|
data/thread_test.rb
DELETED
@@ -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
|