diff options
Diffstat (limited to 'lib/sisu/v3/webrick.rb')
| -rw-r--r-- | lib/sisu/v3/webrick.rb | 195 | 
1 files changed, 101 insertions, 94 deletions
| diff --git a/lib/sisu/v3/webrick.rb b/lib/sisu/v3/webrick.rb index f8189bba..96280d0c 100644 --- a/lib/sisu/v3/webrick.rb +++ b/lib/sisu/v3/webrick.rb @@ -56,77 +56,54 @@      suffixes, see man pages for options  =end -def brick(port,get='') -  cgidir=if get=~/pwd/; Dir.pwd -  else                  '/usr/lib/cgi-bin'  # @env.path.cgi -  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::InfoError.new($!,$@,'-W',nil).error do #fix -      __LINE__.to_s + ':' + __FILE__ -    end -  ensure -  end -end -begin                                                                          #% -  require 'webrick' -    include WEBrick -  require 'time' -  require_relative 'sysenv'                             # sysenv.rb -    include SiSU_Env; include SiSU_Screen -  @cX=SiSU_Screen::Ansi.new('yes').cX -  @env=SiSU_Env::InfoEnv.new -  port=SiSU_Env::InfoPort.new -  @argv=$* -  @host=@env.url.webrick -  host='localhost' -  @port="#{@argv[0].to_i}" -  @port="#{port.webrick}" if @port =~ /^0$/ -  @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.cyan}#{x}#{@cX.off}\t#{@cX.grey}see#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/wb.cgi#{@cX.off} #{@cX.ruby}@#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/#{@cX.off}" -  } -  puts "#{@cX.grey}" -  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 -  require 'time' -  require 'cgi' -  require 'fcgi' -  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 +module SiSU_Webserv +  class WebrickStart +      require 'webrick' +        include WEBrick +      require 'time' +      require_relative 'sysenv'                             # sysenv.rb +        include SiSU_Env +        include SiSU_Screen +    def initialize +    begin                                                                          #% +      @cX=SiSU_Screen::Ansi.new('yes').cX +      @env=SiSU_Env::InfoEnv.new +      port=SiSU_Env::InfoPort.new +      @host=@env.url.webrick +      host='localhost' +      @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.cyan}#{x}#{@cX.off}\t#{@cX.grey}see#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/wb.cgi#{@cX.off} #{@cX.ruby}@#{@cX.off} #{@cX.blue}#{@host}:#{@port}#{x}/#{@cX.off}" +      } +      puts "#{@cX.grey}" +      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 +      require 'time' +      require 'cgi' +      require 'fcgi' +      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 { @@ -142,36 +119,66 @@ begin                                                                          #          page.p {''} +          page.p {page.b{"Webrick Served Directories: "}} +  WOK -                                                           #% wb_s2 (mounts) -  @mount.each do |x,y| wb_s2 <<<<WOK -        page.p {page.b{'<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>'} + +                                                               #% wb_s2 (mounts) +      @mount.each do |x,y| wb_s2 <<<<WOK +            page.p {page.b{'<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 +    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 &") -  } -  puts "        #{@cX.off}" -  get=@argv.shift if @argv[0] =~/pwd/                      #% argv -  brick(@port,get) -rescue; -  require_relative 'sysenv'                             # sysenv.rb -  SiSU_Errors::InfoError.new($!,$@,'-W',nil).error do #fix -    __LINE__.to_s + ':' + __FILE__ +      @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 &") +      } +      puts "        #{@cX.off}" +      #get=@argv.shift if @argv[0] =~/pwd/                      #% argv +      get=Dir.pwd +      brick(@port,get) +    rescue +      require_relative 'sysenv'                             # sysenv.rb +      SiSU_Errors::InfoError.new($!,$@,'-W',nil).error do #fix +        __LINE__.to_s + ':' + __FILE__ +      end +    ensure +    end +    end +    def brick(port,get='') +      cgidir=if get=~/pwd/; Dir.pwd +      else                  '/usr/lib/cgi-bin'  # @env.path.cgi +      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::InfoError.new($!,$@,'-W',nil).error do #fix +          __LINE__.to_s + ':' + __FILE__ +        end +      ensure +      end +    end    end  ensure  end | 
