Issue 116: A shellinthebox runner / configuration file

o Added contib/siab.rb and README from user.
This commit is contained in:
Marc Singer 2012-03-31 15:29:18 -07:00
parent 6b2adb28d2
commit 18300eddc9
2 changed files with 121 additions and 0 deletions

24
contrib/README-siab.rb Normal file
View file

@ -0,0 +1,24 @@
Reported by bXXX.rXXX@oXXX.com, Mar 11, 2011
I found the need to have a nice start / stop / restart wrapper for
shellinabox, and a quick way to add new configurations and URLS.
Attached is a file that does just that.
It is ruby based, and expects a conf directory in the shellinthebox
home directory. All file(s) placed in the conf directory will become
a URL for shellinthebox, and the contents of the file(s) will be the
command run.
Ex : conf/nethack -> http://localhost:4200/nethack
/conf/nethack contents -> /usr/games/nethack
When you run the wrapper script (siab.rb) it will start up shellinabox
and the url will be active and you can play nethack in shellinabox.
It has been great for tossing in files with other services and
restarting shellinabox and testing. (siab.rb restart)
There can certainly be more done, and bulletproofing but, I though you
might be able to use it.
Brad

97
contrib/siab.rb Normal file
View file

@ -0,0 +1,97 @@
#!/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()