diff options
author | Steve Kemp <steve@steve.org.uk> | 2012-11-22 06:49:21 +0000 |
---|---|---|
committer | Steve Kemp <steve@steve.org.uk> | 2012-11-22 06:49:21 +0000 |
commit | b6043eb5abc3b54d48ef1ed41f65ae71d427c588 (patch) | |
tree | 8b4d9feb4403c842af29451de35aa5f94836d70b | |
parent | 8e349f739803b3eaa8e196e257c92f90850c1296 (diff) |
Moved tests into a namespace.
-rw-r--r-- | cfg/steve.cfg | 4 | ||||
-rw-r--r-- | lib/custodian/protocoltest/dns.rb | 87 | ||||
-rw-r--r-- | lib/custodian/protocoltest/ftp.rb | 127 | ||||
-rw-r--r-- | lib/custodian/protocoltest/http.rb | 112 | ||||
-rw-r--r-- | lib/custodian/protocoltest/jabber.rb | 130 | ||||
-rw-r--r-- | lib/custodian/protocoltest/ldap.rb | 129 | ||||
-rw-r--r-- | lib/custodian/protocoltest/ping.rb | 155 | ||||
-rw-r--r-- | lib/custodian/protocoltest/rsync.rb | 129 | ||||
-rw-r--r-- | lib/custodian/protocoltest/smtp.rb | 129 | ||||
-rw-r--r-- | lib/custodian/protocoltest/ssh.rb | 135 | ||||
-rw-r--r-- | lib/custodian/protocoltest/tcp.rb | 249 |
11 files changed, 717 insertions, 669 deletions
diff --git a/cfg/steve.cfg b/cfg/steve.cfg index 2c9760e..174ba3d 100644 --- a/cfg/steve.cfg +++ b/cfg/steve.cfg @@ -1,8 +1,4 @@ mirror.bytemark.co.uk must run ftp on 21 otherwise 'Bytemark Mirror: FTP failure'. -https://auth.bytemark.co.uk/status must run https with status 200 otherwise 'Bytemark xmlrpc auth-server down?'. - ssh.steve.org.uk must run ssh on 2222 otherwise 'SSH failure'. - -http://www.taxcafe.co.uk/_db/ must run http with status 200 with content 'OK' otherwise 'taxcafe failure'. diff --git a/lib/custodian/protocoltest/dns.rb b/lib/custodian/protocoltest/dns.rb index ab26a30..0fccb96 100644 --- a/lib/custodian/protocoltest/dns.rb +++ b/lib/custodian/protocoltest/dns.rb @@ -9,75 +9,80 @@ ### # # -class DNSTest < TestFactory +module Custodian + module ProtocolTest + class DNSTest < TestFactory - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # Constructor - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # Constructor + # + def initialize( line ) - end + # + # Save the line + # + @line = line + end - # - # Helper for development. - # - def to_s - "dns-test - TODO." - end + # + # Helper for development. + # + def to_s + "dns-test - TODO." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the test. - # - def run_test - @error = "Not implemented" - false - end + # + # Run the test. + # + def run_test + @error = "Not implemented" + false + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "dns" + register_test_type "dns" + end + end end diff --git a/lib/custodian/protocoltest/ftp.rb b/lib/custodian/protocoltest/ftp.rb index c92f295..dfa86e1 100644 --- a/lib/custodian/protocoltest/ftp.rb +++ b/lib/custodian/protocoltest/ftp.rb @@ -11,105 +11,110 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional and defaults to 21 # -class FTPTest < TCPTest +module Custodian + module ProtocolTest + class FTPTest < TCPTest - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # Constructor + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 21 - end - end + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 21 + end + end - # - # Helper for development. - # - def to_s - "ftp-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "ftp-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # Run the TCP-protocol test. + # + def run_test - run_test_internal( @host, @port, "^220" ) - end + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, "^220" ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "ftp" + register_test_type "ftp" + end + end end diff --git a/lib/custodian/protocoltest/http.rb b/lib/custodian/protocoltest/http.rb index fa97223..1610698 100644 --- a/lib/custodian/protocoltest/http.rb +++ b/lib/custodian/protocoltest/http.rb @@ -9,89 +9,95 @@ ### # # -class HTTPTest < TestFactory +module Custodian + module ProtocolTest - # - # The line from which we were constructed. - # - attr_reader :line + class HTTPTest < TestFactory - # - # The URL to poll - # - attr_reader :url + # + # The line from which we were constructed. + # + attr_reader :line - # - # Constructor - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # The URL to poll + # + attr_reader :url - # - # Save the URL - # - @url = line.split( /\s+/)[0] + # + # Constructor + # + def initialize( line ) + # + # Save the line + # + @line = line - if ( @url !~ /^https?:/ ) - raise ArgumentError, "The target wasn't an URL" - end + # + # Save the URL + # + @url = line.split( /\s+/)[0] - end + if ( @url !~ /^https?:/ ) + raise ArgumentError, "The target wasn't an URL" + end + end - # - # Helper for development. - # - def to_s - "http-test of #{@url}." - end + # + # Helper for development. + # + def to_s + "http-test of #{@url}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the test. - # - def run_test - @error = "Not implemented" - false - end + # + # Run the test. + # + def run_test + @error = "Not implemented" + false + end - # - # If the test fails then report the error. - # - def error - @error - end + + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "http" - register_test_type "https" + register_test_type "http" + register_test_type "https" + end + end end diff --git a/lib/custodian/protocoltest/jabber.rb b/lib/custodian/protocoltest/jabber.rb index 166e98e..c8235fc 100644 --- a/lib/custodian/protocoltest/jabber.rb +++ b/lib/custodian/protocoltest/jabber.rb @@ -12,103 +12,109 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional, and defaults to 5222. # -class JABBERTest < TCPTest +module Custodian + module ProtocolTest - # - # The line from which we were constructed. - # - attr_reader :line + class JABBERTest < TCPTest - # - # The host to test against. - # - attr_reader :host + # + # The line from which we were constructed. + # + attr_reader :line - # - # The port to connect to. - # - attr_reader :port + # + # The host to test against. + # + attr_reader :host + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - def initialize( line ) - # - # Save the line - # - @line = line - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Constructor + # + def initialize( line ) - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 5222 - end - end + # + # Save the line + # + @line = line + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 5222 + end + end - # - # Helper for development. - # - def to_s - "jabber-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "jabber-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil - run_test_internal( @host, @port, "<stream:stream" ) - end + # + # Run the TCP-protocol test. + # + def run_test + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, "<stream:stream" ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "jabber" + register_test_type "jabber" + end + end end diff --git a/lib/custodian/protocoltest/ldap.rb b/lib/custodian/protocoltest/ldap.rb index 920c1d5..9c023e3 100644 --- a/lib/custodian/protocoltest/ldap.rb +++ b/lib/custodian/protocoltest/ldap.rb @@ -12,105 +12,110 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional and defaults to 389. # -class LDAPTest < TCPTest +module Custodian + module ProtocolTest + class LDAPTest < TCPTest - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - def initialize( line ) - # - # Save the line. - # - @line = line + # + # Constructor + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line. + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 389 - end - end + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 389 + end + end - # - # Helper for development. - # - def to_s - "ldap-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "ldap-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # + # Run the TCP-protocol test. + # + def run_test - run_test_internal( @host, @port, nil, false ) - end + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, nil, false ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "ldap" + register_test_type "ldap" + end + end end diff --git a/lib/custodian/protocoltest/ping.rb b/lib/custodian/protocoltest/ping.rb index cd8490d..765540c 100644 --- a/lib/custodian/protocoltest/ping.rb +++ b/lib/custodian/protocoltest/ping.rb @@ -11,119 +11,124 @@ require 'custodian/testfactory.rb' ### # # -class PINGTest < TestFactory +module Custodian + module ProtocolTest + class PINGTest < TestFactory - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # Constructor - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # Constructor + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] - end + # + # Save the line + # + @line = line + # + # Save the host + # + @host = line.split( /\s+/)[0] + end - # - # Helper for development. - # - def to_s - "ping-test - #{@host}." - end + # + # Helper for development. + # + def to_s + "ping-test - #{@host}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the test. - # - def run_test - # - # Find the binary we're going to invoke. - # - binary = nil - binary = "/usr/bin/multi-ping" if ( File.exists?( "/usr/bin/multi-ping" ) ) + # + # Run the test. + # + def run_test - if ( binary.nil? ) - @error = "Failed to find '/usr/bin/multi-ping'" - return false - end + # + # Find the binary we're going to invoke. + # + binary = nil + binary = "/usr/bin/multi-ping" if ( File.exists?( "/usr/bin/multi-ping" ) ) + if ( binary.nil? ) + @error = "Failed to find '/usr/bin/multi-ping'" + return false + end - # - # Sanity check the hostname for ping-tests, to - # avoid this security hole: - # - # $(/tmp/exploit.sh) must run ping .. - # - if ( @host !~ /^([a-zA-Z0-9:\-\.]+)$/ ) - @error = "Invalid hostname for ping-test: #{@host}" - return false - end + # + # Sanity check the hostname for ping-tests, to + # avoid this security hole: + # + # $(/tmp/exploit.sh) must run ping .. + # + if ( @host !~ /^([a-zA-Z0-9:\-\.]+)$/ ) + @error = "Invalid hostname for ping-test: #{@host}" + return false + end - # - # Run the test. - # - if ( system( "#{binary} #{host}" ) == true ) - return true - else - @error = "Ping failed." - return false - end - end + # + # Run the test. + # + if ( system( "#{binary} #{host}" ) == true ) + return true + else + @error = "Ping failed." + return false + end + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "ping" + register_test_type "ping" + end + end end diff --git a/lib/custodian/protocoltest/rsync.rb b/lib/custodian/protocoltest/rsync.rb index eb8614f..bb0a97c 100644 --- a/lib/custodian/protocoltest/rsync.rb +++ b/lib/custodian/protocoltest/rsync.rb @@ -12,104 +12,109 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional and defaults to 873 # -class RSYNCTest < TCPTest +module Custodian + module ProtocolTest - # - # The line from which we were constructed. - # - attr_reader :line + class RSYNCTest < TCPTest + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - def initialize( line ) - # - # Save the line. - # - @line = line + # + # Constructor + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line. + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 873 - end - end + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 873 + end + end - # - # Helper for development. - # - def to_s - "rsync-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "rsync-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # + # Run the protocol test. + # + def run_test - run_test_internal( @host, @port, "@RSYNCD" ) - end + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, "@RSYNCD" ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "rsync" + register_test_type "rsync" + end + end end diff --git a/lib/custodian/protocoltest/smtp.rb b/lib/custodian/protocoltest/smtp.rb index 374db6c..08912f1 100644 --- a/lib/custodian/protocoltest/smtp.rb +++ b/lib/custodian/protocoltest/smtp.rb @@ -12,105 +12,110 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional and defaults to 25. # -class SMTPTest < TCPTest +module Custodian + module ProtocolTest + class SMTPTest < TCPTest - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - def initialize( line ) - # - # Save the line. - # - @line = line + # + # Constructor + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line. + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 25 - end - end + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 25 + end + end - # - # Helper for development. - # - def to_s - "smtp-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "smtp-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # + # Run the TCP-protocol test. + # + def run_test - run_test_internal( @host, @port, "SMTP" ) - end + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, "SMTP" ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "smtp" + register_test_type "smtp" + end + end end diff --git a/lib/custodian/protocoltest/ssh.rb b/lib/custodian/protocoltest/ssh.rb index 792d114..b557a77 100644 --- a/lib/custodian/protocoltest/ssh.rb +++ b/lib/custodian/protocoltest/ssh.rb @@ -11,107 +11,112 @@ require 'custodian/protocoltest/tcp' # # The specification of the port is optional. # -class SSHTest < TCPTest +module Custodian + module ProtocolTest + class SSHTest < TCPTest - # - # The line from which we were constructed. - # - attr_reader :line + # + # The line from which we were constructed. + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # Constructor - # - # Ensure we received a port to run the test against. - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # Constructor + # + # Ensure we received a port to run the test against. + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = 22 - end - end + # + # Save the host + # + @host = line.split( /\s+/)[0] + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = 22 + end + end - # - # Helper for development. - # - def to_s - "ssh-test of #{@host}:#{@port}." - end + # + # Helper for development. + # + def to_s + "ssh-test of #{@host}:#{@port}." + end - # - # Convert this class to JSON such that it may be - # serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be + # serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # + # Run the TCP-protocol test. + # + def run_test - run_test_internal( @host, @port, "SSH" ) - end + # reset the error, in case we were previously executed. + @error = nil + run_test_internal( @host, @port, "SSH" ) + end - # - # If the test fails then report the error. - # - def error - @error - end + + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "ssh" + register_test_type "ssh" + end + end end diff --git a/lib/custodian/protocoltest/tcp.rb b/lib/custodian/protocoltest/tcp.rb index 4f80b42..c09eb6b 100644 --- a/lib/custodian/protocoltest/tcp.rb +++ b/lib/custodian/protocoltest/tcp.rb @@ -15,180 +15,185 @@ require 'timeout' # # The specification of the port is mandatory, the banner is optional. # -class TCPTest < TestFactory +module Custodian + module ProtocolTest + class TCPTest < TestFactory - # - # The input line - # - attr_reader :line + # + # The input line + # + attr_reader :line - # - # The host to test against. - # - attr_reader :host + # + # The host to test against. + # + attr_reader :host - # - # The port to connect to. - # - attr_reader :port + # + # The port to connect to. + # + attr_reader :port - # - # The banner to look for, may be nil. - # - attr_reader :banner + # + # The banner to look for, may be nil. + # + attr_reader :banner - # - # Constructor - # - # Ensure we received a port to run the TCP-test against. - # - def initialize( line ) - # - # Save the line - # - @line = line + # + # Constructor + # + # Ensure we received a port to run the TCP-test against. + # + def initialize( line ) - # - # Save the host - # - @host = line.split( /\s+/)[0] + # + # Save the line + # + @line = line - # - # Save the port - # - if ( line =~ /on\s+([0-9]+)/ ) - @port = $1.dup - else - @port = nil - end + # + # Save the host + # + @host = line.split( /\s+/)[0] - # - # Save the optional banner. - # - if ( line =~ /with\s+banner\s+'([^']+)'/ ) - @banner = $1.dup - else - @banner = nil - end + # + # Save the port + # + if ( line =~ /on\s+([0-9]+)/ ) + @port = $1.dup + else + @port = nil + end - @error = nil + # + # Save the optional banner. + # + if ( line =~ /with\s+banner\s+'([^']+)'/ ) + @banner = $1.dup + else + @banner = nil + end - if ( @port.nil? ) - raise ArgumentError, "Missing port to test against" - end - end + @error = nil + if ( @port.nil? ) + raise ArgumentError, "Missing port to test against" + end + end - # - # Helper for development. - # - def to_s - "tcp-test of #{@host}:#{@port} looking for banner '#{@banner}'." - end + # + # Helper for development. + # + def to_s + "tcp-test of #{@host}:#{@port} looking for banner '#{@banner}'." + end - # - # Convert this class to JSON such that it may be serialized. - # - def to_json - hash = { :line => @line } - hash.to_json - end + # + # Convert this class to JSON such that it may be serialized. + # + def to_json + hash = { :line => @line } + hash.to_json + end - # - # Run the TCP-protocol test. - # - def run_test - # reset the error, in case we were previously executed. - @error = nil + # + # Run the TCP-protocol test. + # + def run_test - return( run_test_internal( @host, @port, @banner ) ) - end + # reset the error, in case we were previously executed. + @error = nil + + return( run_test_internal( @host, @port, @banner ) ) + end - # - # Run the connection test - optionally matching against the banner. - # - # If the banner is nil then we're merely testing we can connect and - # send the string "quit". - # - # - def run_test_internal( host, port, banner = nil, do_read = true ) - begin - timeout(30) do + # + # Run the connection test - optionally matching against the banner. + # + # If the banner is nil then we're merely testing we can connect and + # send the string "quit". + # + # + def run_test_internal( host, port, banner = nil, do_read = true ) begin - socket = TCPSocket.new( host, port ) - socket.puts( "QUIT") - - # read a banner from the remote server - read = nil - read = socket.gets(nil) if ( do_read ) - - # trim to a sane length & strip newlines. - read = read[0,255] unless ( read.nil? ) - read.gsub!(/[\n\r]/, "") unless ( read.nil? ) - - socket.close() - - if ( banner.nil? ) - @error = nil - return true - else - # test for banner - if ( ( !read.nil? ) && ( read =~ /#{banner}/i ) ) - return true + timeout(30) do + begin + socket = TCPSocket.new( host, port ) + socket.puts( "QUIT") + + # read a banner from the remote server + read = nil + read = socket.gets(nil) if ( do_read ) + + # trim to a sane length & strip newlines. + read = read[0,255] unless ( read.nil? ) + read.gsub!(/[\n\r]/, "") unless ( read.nil? ) + + socket.close() + + if ( banner.nil? ) + @error = nil + return true + else + # test for banner + if ( ( !read.nil? ) && ( read =~ /#{banner}/i ) ) + return true + end + + @error = "We expected a banner matching '#{banner}' but we got '#{read}'" + return false + end + rescue + @error = "Exception connecting to host #{host}:#{port} - #{$!}" + return false end - - @error = "We expected a banner matching '#{banner}' but we got '#{read}'" - return false end - rescue - @error = "Exception connecting to host #{host}:#{port} - #{$!}" + rescue Timeout::Error => e + @error = "TIMEOUT: #{e}" return false end + @error = "Misc failure" + return false end - rescue Timeout::Error => e - @error = "TIMEOUT: #{e}" - return false - end - @error = "Misc failure" - return false - end - # - # If the test fails then report the error. - # - def error - @error - end + # + # If the test fails then report the error. + # + def error + @error + end - register_test_type "tcp" + register_test_type "tcp" + end + end end |