Module: Clarity::Server
Constant Summary
Constants included from ChunkHttp
Instance Attribute Summary collapse
-
#log_files ⇒ Object
Returns the value of attribute log_files.
-
#relative_root ⇒ Object
Returns the value of attribute relative_root.
-
#required_password ⇒ Object
Returns the value of attribute required_password.
-
#required_username ⇒ Object
Returns the value of attribute required_username.
Class Method Summary collapse
Instance Method Summary collapse
- #error_page(error) ⇒ Object
- #process_http_request ⇒ Object
- #results_page ⇒ Object
- #unbind ⇒ Object
- #welcome_page ⇒ Object
Methods included from ChunkHttp
#logfiles, #params, #path, #public_file, #render, #respond_with, #respond_with_chunks, #template
Methods included from BasicAuth
#authentication_data, #decode_credentials, #user_name_and_password
Instance Attribute Details
#log_files ⇒ Object
Returns the value of attribute log_files.
19 20 21 |
# File 'lib/clarity/server.rb', line 19 def log_files @log_files end |
#relative_root ⇒ Object
Returns the value of attribute relative_root.
18 19 20 |
# File 'lib/clarity/server.rb', line 18 def relative_root @relative_root end |
#required_password ⇒ Object
Returns the value of attribute required_password.
18 19 20 |
# File 'lib/clarity/server.rb', line 18 def required_password @required_password end |
#required_username ⇒ Object
Returns the value of attribute required_username.
18 19 20 |
# File 'lib/clarity/server.rb', line 18 def required_username @required_username end |
Class Method Details
.run(options) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/clarity/server.rb', line 21 def self.run() EventMachine::run do EventMachine.epoll EventMachine::start_server([:address], [:port], self) do |a| a.log_files = [:log_files] a.required_username = [:username] a.required_password = [:password] a.relative_root = [:relative_root] || "" end STDERR.puts "Clarity #{Clarity::VERSION} starting up." STDERR.puts " * listening on #{[:address]}:#{[:port]}" if [:user] STDERR.puts " * Running as user #{[:user]}" EventMachine.set_effective_user([:user]) end STDERR.puts " * Log mask(s): #{[:log_files].join(', ')}" if [:username].nil? or [:password].nil? STDERR.puts " * WARNING: No username/password specified. This is VERY insecure." end STDERR.puts end end |
Instance Method Details
#error_page(error) ⇒ Object
104 105 106 107 |
# File 'lib/clarity/server.rb', line 104 def error_page(error) @error = error render "error.html.erb" end |
#process_http_request ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/clarity/server.rb', line 52 def process_http_request authenticate! puts "action: #{path}" puts "params: #{params.inspect}" case path when '/' respond_with(200, welcome_page) when '/perform' if params.empty? respond_with(200, welcome_page) else # get command command = case params['tool'] when 'grep' then GrepCommandBuilder.new(params).command when 'tail' then TailCommandBuilder.new(params).command else raise InvalidParameterError, "Invalid Tool parameter" end response = respond_with_chunks response.chunk results_page # display page header puts "Running: #{command}" EventMachine::popen(command, GrepRenderer) do |grepper| @grepper = grepper @grepper.response = response end end when '/test' response = respond_with_chunks EventMachine::add_periodic_timer(1) do response.chunk "Lorem ipsum dolor sit amet<br/>" response.send_chunks end else respond_with(200, public_file(path), :content_type => Mime.for(path)) end rescue InvalidParameterError => e respond_with(500, error_page(e)) rescue NotFoundError => e respond_with(404, "<h1>Not Found</h1>") rescue NotAuthenticatedError => e puts "Could not authenticate user" headers = { "WWW-Authenticate" => %(Basic realm="Clarity")} respond_with(401, "HTTP Basic: Access denied.\n", :content_type => 'text/plain', :headers => headers) end |
#results_page ⇒ Object
113 114 115 |
# File 'lib/clarity/server.rb', line 113 def results_page render "index.html.erb" end |
#unbind ⇒ Object
117 118 119 120 |
# File 'lib/clarity/server.rb', line 117 def unbind @grepper.close_connection if @grepper close_connection end |
#welcome_page ⇒ Object
109 110 111 |
# File 'lib/clarity/server.rb', line 109 def welcome_page render "index.html.erb" end |