class Knocker::Pattern
Attributes
name[R]
Public Class Methods
new(name, text)
click to toggle source
# File lib/knocker/pattern.rb, line 5 def initialize(name, text) @name = name @text = text end
Public Instance Methods
host()
click to toggle source
# File lib/knocker/pattern.rb, line 18 def host host = @text.scan(/ h (.*)/).flatten.first raise Knocker::Errors::NoHostSpecified if host.nil? or host.empty? host end
knock_command()
click to toggle source
# File lib/knocker/pattern.rb, line 24 def knock_command patterns = [] patterns = @text.scan(/ ([ut]) (\d+)/).collect do |proto, port| valid_port!(port) "#{port}:#{protocol!(proto)}" end raise Knocker::Errors::NoKnockSpecified if patterns.empty? "knock #{host} #{patterns.join(" ")}" end
post_commands()
click to toggle source
# File lib/knocker/pattern.rb, line 37 def post_commands cmds = @text.scan(/^ c (.*)$/).flatten cmds.map! do |cmd| cmd.gsub(/\$host/, host) end end
to_hash()
click to toggle source
# File lib/knocker/pattern.rb, line 10 def to_hash { :host => host, :knock_command => knock_command, :name => @name } end
Private Instance Methods
protocol!(char)
click to toggle source
# File lib/knocker/pattern.rb, line 46 def protocol!(char) return "udp" if char == "u" return "tcp" if char == "t" raise Knocker::Errors::InvalidProtocol, char end
valid_port!(port)
click to toggle source
# File lib/knocker/pattern.rb, line 52 def valid_port!(port) raise Errors::InvalidPort, port if port.to_i.zero? raise Errors::InvalidPort, port if port.to_i > 65535 end