module Tcpkicker::Cli

Public Class Methods

start(args = ARGV) click to toggle source
# File lib/tcpkicker/cli.rb, line 9
def start(args = ARGV)

  opt = OptionParser.new

  options = {
    :config_path => '/etc/tcpkicker/config.yaml',
  }

  opt.on('-c', '--config PATH', 'configuration file path') { |v|
    options[:config_path] = v
  }

  opt.parse(ARGV)
  
  config = YAML.load_file(options[:config_path])

  config['servers'].each { |server|
    puts '[' + server['name'] + '] Listen to port ' + server['port'].to_s
    Thread.start {
      tcp_server = TCPServer.open(server['port'])
      socket = tcp_server.accept
      socket.close
      tcp_server.close
      puts '[' + server['name'] + '] Execute command `' + server['execute'] + '`'
      system server['execute']
    }
  }

  tcp_server = TCPServer.open(config['port'])
  socket = tcp_server.accept
  socket.close
  tcp_server.close

end