shellinabox/contrib/siab.rb

98 lines
2.2 KiB
Ruby
Raw Normal View History

#!/usr/bin/ruby
#===============================================================================
#
# FILE: siab.rb
#
# USAGE: ruby siab.rb [start|stop|restar|help]
#
# DESCRIPTION: a ShellInAbox control script and configuration system reader.
# To auto-configure a shellinabox service create a conf directory
# in the shellinabox home dir. The URL will be the name of the file(s)
# that reside in conf, and the command will be the contents of the file.
#
# EX configuration file : conf/nethack
# conf/nethack contents : /usr/games/nethack
#
# Change the value of @siab_home to where you install shellinabox
# OPTIONS: none
# REQUIREMENTS: ruby
# BUGS: ---
# NOTES: ---
# AUTHOR: Brad Reeves (brad.reeves@openlogic.com)
# COMPANY: OpenLogic,Inc
# VERSION: 0.4
# CREATED: 01/24/2011 14:26:36 MDT
# REVISION: 1.0
#===============================================================================
@siab_home="/opt/shellinabox"
@urls = Hash.new
@urllist=""
@top_dir=Dir.pwd
def read_configuration()
Dir.chdir("#{@siab_home}/conf")
@urllist = Dir["*"]
@urllist.each do |u|
@urls[u]=File.open("#{u}","r").readlines.to_s.chomp!
end
Dir.chdir("#{@top_dir}")
end
def start
command_line = ""
@urls.each_pair do |k,v|
command_line = command_line + "-s " + "/#{k}:root:root:/:'#{v}' "
end
exec("#{@siab_home}/bin/shellinaboxd --background='#{@siab_home}/siab.pid' -c /tmp #{command_line}") if fork.nil?
end
def stop()
if File.exists?("#{@siab_home}/siab.pid")
pid=File.open("#{@siab_home}/siab.pid","r").readlines.to_s
system("kill -9 #{pid}")
system("rm -rf #{@siab_home}/siab.pid")
end
end
def restart()
stop()
start()
end
def usage()
puts "Usage: siab.rb [start|stop|restart]"
exit(0)
end
def get_args()
case ARGV.size
when 0
read_configuration
restart()
when 1
case ARGV[0]
when "start"
read_configuration
restart()
when "restart"
read_configuration
restart()
when "stop"
stop()
when "help"
usage()
else
usage()
end
else
usage()
end
end
#Main
get_args()