97 lines
2.2 KiB
Ruby
Executable file
97 lines
2.2 KiB
Ruby
Executable file
#!/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()
|