class SiSU_Webserv::WebrickStart
Public Class Methods
new()
click to toggle source
# File lib/sisu/webrick.rb, line 69 def initialize @cX=SiSU_Screen::Ansi.new('yes').cX @env=SiSU_Env::InfoEnv.new port=SiSU_Env::InfoPort.new @host=@env.url.webrick @port=port.webrick @serve=[] Dir.foreach(@env.path.webserv) do |x| if x !~/^\./ \ and FileTest.directory?("#{@env.path.webserv}/#{x}") @serve << x end end @mount=[] @serve.each {|x| @mount << ["/#{x}", "#{@env.path.webserv}/#{x}"]} @pwd=Dir.pwd @week=Time.now.strftime(%{%Yw%W}) puts "\n" @mount.each { |x,y| puts " * #{@cX.blue}#{@host}:#{@port}#{x}/#{@cX.off}" } get=Dir.pwd brick(@port,get) end
Public Instance Methods
brick(port,get='')
click to toggle source
# File lib/sisu/webrick.rb, line 93 def brick(port,get='') cgidir=if get=~/pwd/ then Dir.pwd else '/usr/lib/cgi-bin' end port=SiSU_Env::InfoPort.new.webrick begin s=HTTPServer.new( Port: port, DocumentRoot: Dir::pwd + '/htdocs', CGIPathEnv: ENV['PATH'] ) cgi_dir=File.expand_path(cgidir) @mount.each { |x,y| # mount subdirectories s.mount(x, HTTPServlet::FileHandler, y, true) } s.mount('/cgi-bin', HTTPServlet::FileHandler, cgi_dir, { FancyIndexing: true }) trap("INT"){ s.shutdown } s.start rescue SiSU_Errors::Rescued.new($!,$@,'-W',nil).location do #fix __LINE__.to_s + ':' + __FILE__ end ensure end end
wb_cgi()
click to toggle source
# File lib/sisu/webrick.rb, line 118 def wb_cgi begin #% wb_s2='' #% writes file wb.cgi to shared directories ... #% wb_top wb_top=%q(#!/usr/bin/env ruby # * arch-tag: webrick info on environment, mounted directories, and contents of pwd begin require 'time' require 'cgi' require 'fcgi' rescue LoadError puts 'time, cgi or fcgi NOT FOUND (LoadError)' end ls=Dir.entries('./') dir_contents=[] ls.each { |x| dir_contents << "<a href=\"./#{x}/\">#{x}</a><br>" unless x =~/^(\.)+$/ } dir_contents=dir_contents.sort.join(' ') #host=ENV['HOSTNAME'] #host=%x{echo $HOSTNAME} ) wb_s1=<<-WOK page=CGI.new "html3" page.out { page.html { page.head { page.title {"#{@host} Webrick Report"} } + page.body { page.h1 {"Webrick #{@host}"} + page.p {"Webrick is Ruby's built in webserver."} + page.center {"Host name: " + page.b{"#{@host} "} + "(#{@host}) port: " + page.b{"#{@port}"}} + page.center {"#{Time.now}"} + page.center {"#{Time.now.strftime(%{%Yw%W})}"} + page.p {''} + page.p {''} + page.p {page.b{"Webrick Served Directories: "}} + WOK #% wb_s2 (mounts) @mount.each do |x,y| wb_s2 += <<-WOK page.p {%{<a href="#{@host}:#{@port}#{x}/">#{x}</a> } + %{<a href="#{@host}:#{@port}#{x}/">#{@host}:#{@port}#{x}</a> (mounts: #{y}/) <a href="#{@host}:#{@port}#{x}/wb.cgi">info (wb.cgi)</a>}} + WOK end #% wb_end wb_end=<<-WOK page.p {page.b{"Contents of PWD (see URL): "}} + page.p {"#\{dir_contents}"} } } } WOK @mount.each { |x,y| #% wb puts puts y filename=File.new("#{y}/wb.cgi",'w') filename << wb_top filename << wb_s1 filename << wb_s2 filename << wb_end filename.close FileUtils::chmod(0755,"#{y}/wb.cgi &") if FileTest.file?("#{y}/wb.cgi &") } rescue SiSU_Errors::Rescued.new($!,$@,'-W',nil).location do #fix __LINE__.to_s + ':' + __FILE__ end ensure end end