summaryrefslogtreecommitdiff
path: root/lib/oxidized/input/http.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/oxidized/input/http.rb')
-rw-r--r--lib/oxidized/input/http.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/oxidized/input/http.rb b/lib/oxidized/input/http.rb
new file mode 100644
index 0000000..5ce1e2b
--- /dev/null
+++ b/lib/oxidized/input/http.rb
@@ -0,0 +1,39 @@
+module Oxidized
+ require_relative "cli"
+
+ begin
+ require "mechanize"
+ rescue LoadError
+ raise OxidizedError, "mechanize not found: sudo gem install mechanize"
+ end
+
+ class HTTP < Input
+ include Input::CLI
+
+ def connect node
+ @node = node
+ @m = Mechanize.new
+ @log = File.open(Oxidized::Config::Log + "/#{@node.ip}-http", "w") if Oxidized.config.input.debug?
+
+ @node.model.cfg["http"].each { |cb| instance_exec(&cb) }
+
+ url = URI::HTTP.build host: @node.ip, path: @main_page
+ @m_page = @m.get(url.to_s)
+ login
+ end
+
+ def cmd callback
+ instance_exec(&callback)
+ end
+
+ private
+
+ def log str
+ @log.write(str) if @log
+ end
+
+ def disconnect
+ @log.close if Oxidized.config.input.debug?
+ end
+ end
+end