zabcon 0.0.356 → 0.0.357

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.
@@ -1 +1 @@
1
- REVISION=356
1
+ REVISION=357
@@ -31,6 +31,8 @@ class ZabbixServer_overload < ZabbixAPI
31
31
  alias zbxapi_initialize initialize
32
32
  alias zbxapi_do_request do_request
33
33
 
34
+ attr_accessor :major, :minor
35
+
34
36
  def initialize(url,debug_level=0)
35
37
  @env = env
36
38
  zbxapi_initialize(url,debug_level)
@@ -94,6 +96,13 @@ class ZabbixServer
94
96
  puts "#{@server_url} connected" if env["echo"]
95
97
  puts "API Version: #{@version}" if env["echo"]
96
98
 
99
+ if env["session_file"] && !env["session_file"].empty?
100
+ path=File.expand_path(env["session_file"])
101
+ File.open(path,"w") do |f|
102
+ f.write({"auth"=>@connection.auth}.to_yaml)
103
+ end
104
+ end
105
+
97
106
  end
98
107
 
99
108
  def logout
@@ -111,6 +120,20 @@ class ZabbixServer
111
120
  end
112
121
  end
113
122
 
123
+ def use_auth(auth)
124
+ @server_url = @server_url.nil? ? env["server"] : @server_url
125
+
126
+ @connection = ZabbixServer_overload.new(@server_url,env["debug"])
127
+ @connection.auth=auth
128
+ major,minor=@connection.do_request(@connection.json_obj('APIInfo.version',{}))['result'].split('.')
129
+ @connection.major=major.to_i
130
+ @connection.minor=minor.to_i
131
+ @version=@connection.API_version
132
+ @connected=true
133
+
134
+ true
135
+ end
136
+
114
137
  def loggedin?
115
138
  @connected
116
139
  end
@@ -82,6 +82,11 @@ end
82
82
  ZabconCommand.add_command "logout" do
83
83
  set_method do
84
84
  server.logout
85
+ path=File.expand_path(env["session_file"])
86
+ begin
87
+ File.delete(path)
88
+ rescue Errno::ENOENT
89
+ end
85
90
  end
86
91
  set_help_tag :logout
87
92
  end
@@ -408,7 +413,8 @@ end
408
413
 
409
414
  ZabconCommand.add_command "add host group" do
410
415
  set_method do |params|
411
- server.connection.hostgroup.create(params)
416
+ groupid = server.connection.hostgroup.create(params)
417
+ "Created host groupid: #{groupid["groupids"]}"
412
418
  end
413
419
  set_flag :login_required
414
420
  set_flag :print_output
@@ -519,7 +525,7 @@ ZabconCommand.add_command "delete user" do
519
525
  else
520
526
  id=params["id"]
521
527
  end
522
- result=@connection.user.delete(id)
528
+ result=server.connection.user.delete(id)
523
529
 
524
530
  if !result.empty?
525
531
  puts "Deleted user id #{result["userids"]}"
@@ -564,7 +570,7 @@ ZabconCommand.add_command "update user" do
564
570
  elsif parameters["userid"].nil?
565
571
  puts "Missing required userid statement."
566
572
  end
567
- @connection.user.update([parameters])
573
+ server.connection.user.update([parameters])
568
574
  end
569
575
  end
570
576
  set_valid_args 'userid','name', 'surname', 'alias', 'passwd', 'url',
@@ -60,7 +60,25 @@ class ZabconCore
60
60
  #TODO Remove reference to ArgumentProcessor when new command objects in use
61
61
  debug(5,:msg=>"Setting up ArgumentProcessor")
62
62
 
63
- if !env["server"].nil? and !env["username"].nil? and !env["password"].nil? then
63
+ loaded_session=false
64
+ begin
65
+ if !env["server"].nil? && !env["session_file"].nil? &&
66
+ !env["session_file"].empty?
67
+ path=File.expand_path(env["session_file"])
68
+ puts "Attempting to load previous session key from #{env["session_file"]}" if env["echo"]
69
+ yaml=YAML::load(File.open(path))
70
+ loaded_session=ZabbixServer.instance.use_auth(yaml["auth"])
71
+ puts "#{env["server"]} connected" if env["echo"]
72
+ puts "API Version: #{ZabbixServer.instance.version}" if env["echo"]
73
+ end
74
+ rescue Errno::ENOENT
75
+ puts "Failed to load previous session key" if env["echo"]
76
+ rescue ZbxAPI_ExceptionLoginPermission
77
+ puts "Failed to load previous session key" if env["echo"]
78
+ end
79
+
80
+ if !loaded_session && !env["server"].nil? &&
81
+ !env["username"].nil? && !env["password"].nil?
64
82
  puts "Found valid login credentials, attempting login" if env["echo"]
65
83
  begin
66
84
  ZabbixServer.instance.login
@@ -22,4 +22,8 @@
22
22
  * Added deprecate_function to Command class
23
23
  Will show a warning message with new function name to use along with
24
24
  command file path and line numbers/command name
25
- * Fixed Ruby version check for 1.9.x
25
+ * Fixed Ruby version check for 1.9.x
26
+ * Added session loading. Zabcon will save the auth key upon login to a file
27
+ which is determined by the config file option "session_file". When starting
28
+ this file is interrogated if an auth key is found, Zabcon will try to use it.
29
+ If the auth key does not work it continues with the normal startup sequence.
@@ -8,6 +8,12 @@ password=zabbix
8
8
  # Set the debug level. 0=off
9
9
  #debug=0
10
10
 
11
+ #Where will the login session information be stored.
12
+ #If a valid session is found, it's credentials will be tried first
13
+ #thus speeding up the login/connection process.
14
+ #Leave empty to disable.
15
+ #session_file=~/zabcon.session
16
+
11
17
  # Attempt to show help for a bad command.
12
18
  #show_help=false
13
19
 
data/zabcon.rb CHANGED
@@ -147,6 +147,12 @@ class ZabconApp
147
147
  opts.on("-d", "--debug LEVEL", Integer, "Specify debug level (Overrides config","file)") do |level|
148
148
  @cmd_opts.debug=level
149
149
  end
150
+ opts.on("-s","--session PATH","Path to the file to store session information.") do |session|
151
+ @cmd.session_file=session
152
+ end
153
+ opts.on("--no-session","Disable checking of the session file on startup") do
154
+ @cmd.session_file=""
155
+ end
150
156
  opts.on("-e", "--[no-]echo", "Enable startup echo. Default is on ","for interactive") do |echo|
151
157
  @cmd_opts.echo=echo
152
158
  end
@@ -178,6 +184,7 @@ class ZabconApp
178
184
  env["load_config"]=true
179
185
  env["truncate_length"]=5000
180
186
  env["custom_commands"]=nil
187
+ env["session_file"]="~/zabcon.session"
181
188
 
182
189
  #output related environment variables
183
190
  env["table_output"]=STDIN.tty? # Is the output a well formatted table, or csv like?
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zabcon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 727
4
+ hash: 725
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 356
10
- version: 0.0.356
9
+ - 357
10
+ version: 0.0.357
11
11
  platform: ruby
12
12
  authors:
13
13
  - A. Nelson