From 18300eddc9b7b0db2ef4b026a2680a5ee8de0c73 Mon Sep 17 00:00:00 2001 From: Marc Singer Date: Sat, 31 Mar 2012 15:29:18 -0700 Subject: [PATCH] Issue 116: A shellinthebox runner / configuration file o Added contib/siab.rb and README from user. --- contrib/README-siab.rb | 24 +++++++++++ contrib/siab.rb | 97 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 contrib/README-siab.rb create mode 100644 contrib/siab.rb diff --git a/contrib/README-siab.rb b/contrib/README-siab.rb new file mode 100644 index 0000000..14f8e4c --- /dev/null +++ b/contrib/README-siab.rb @@ -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 diff --git a/contrib/siab.rb b/contrib/siab.rb new file mode 100644 index 0000000..fcacdda --- /dev/null +++ b/contrib/siab.rb @@ -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()