auto_response 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a1ffff50cd0255268c8bf7006a4bbf1ce1a8358a
4
+ data.tar.gz: ab2d9bea2a0260fc4b439af40326da5fb7e0df5b
5
+ SHA512:
6
+ metadata.gz: 43be67ddb064d306b793eedd23f27a9810d833657103c2618312d2d4e2742e240d2799643f48a379509e6605dc349ece4084c0acac4e087ececb3c31dc855743
7
+ data.tar.gz: 50ce17a96b9d3e5ff68506f73a0d640e927425f83e16ae90ac4738f4aac21c63dd690d346e5ac98b3161578c3c0fc7dd728ebb42ddc075026a9beaa7db4f5243
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
1
  source :rubygems
2
2
  gem 'listen'
3
3
  gem 'colorize'
4
+ gem 'sinatra'
5
+ gem 'haml'
4
6
  gem 'daemons'
5
7
 
6
8
  group :test do
data/Gemfile.lock CHANGED
@@ -3,8 +3,18 @@ GEM
3
3
  specs:
4
4
  colorize (0.5.8)
5
5
  daemons (1.1.9)
6
+ gem-this (0.3.7)
7
+ haml (3.1.7)
6
8
  listen (0.6.0)
9
+ rack (1.4.1)
10
+ rack-protection (1.3.2)
11
+ rack
12
+ sinatra (1.3.3)
13
+ rack (~> 1.3, >= 1.3.6)
14
+ rack-protection (~> 1.2)
15
+ tilt (~> 1.3, >= 1.3.3)
7
16
  test-unit (2.5.3)
17
+ tilt (1.3.3)
8
18
 
9
19
  PLATFORMS
10
20
  ruby
@@ -12,5 +22,8 @@ PLATFORMS
12
22
  DEPENDENCIES
13
23
  colorize
14
24
  daemons
25
+ gem-this
26
+ haml
15
27
  listen
28
+ sinatra
16
29
  test-unit
@@ -0,0 +1 @@
1
+ 12016
@@ -9,6 +9,7 @@ module AutoResp
9
9
  class ProxyServer < WEBrick::HTTPProxyServer
10
10
 
11
11
  include Parser
12
+ attr_reader :sessions
12
13
 
13
14
  def initialize(core, config={})
14
15
  @core = core
@@ -16,9 +17,12 @@ module AutoResp
16
17
  :AccessLog => [],
17
18
  :Logger => WEBrick::Log.new("/dev/null")
18
19
  }))
20
+ @sessions = []
19
21
  end
20
22
 
21
23
  def service(req, res)
24
+ puts "[#{req.unparsed_uri}]"
25
+ sessions << [req, res]
22
26
  header, body, status = find_auto_res(req.unparsed_uri)
23
27
  res.status = status if status
24
28
 
@@ -0,0 +1,24 @@
1
+ require 'sinatra/base'
2
+ require 'haml'
3
+
4
+ module AutoResp
5
+
6
+ class SessionViewer < Sinatra::Base
7
+
8
+ class << self
9
+ attr_accessor :proxy_server
10
+ end
11
+
12
+ set :views, File.join(settings.root, 'viewer/tmpl')
13
+
14
+ get '/' do
15
+ haml :index
16
+ end
17
+
18
+ before('/') do
19
+ @sessions = SessionViewer.proxy_server.sessions.dup
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,55 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %title sessions - AutoResponse
5
+
6
+ :css
7
+ html, body {
8
+ height: 100%;
9
+ padding: 0;
10
+ margin: 0;
11
+ }
12
+ .sessions {
13
+ height: 100%;
14
+ }
15
+
16
+ .sessions .list {
17
+ width: 50%;
18
+ float: left;
19
+ height: 100%;
20
+ overflow-y: scroll;
21
+ }
22
+
23
+ .sessions .list table {
24
+ }
25
+
26
+ .sessions .list td {
27
+ word-break: break-all;
28
+ }
29
+
30
+ .sessions .list tr.stt-200 { }
31
+ .sessions .list tr.stt-500 { color: red; }
32
+
33
+ .sessions .inspect {
34
+ width: 50%;
35
+ float: left;
36
+ background: #ccc;
37
+ height: 100%;
38
+ }
39
+
40
+ %body
41
+ .sessions
42
+ .list
43
+ %table
44
+ %thead
45
+ %tr
46
+ %th status
47
+ %th url
48
+ %tbody
49
+ - @sessions.each do |req, res|
50
+ %tr( class="stt-#{res.status}")
51
+ %td= res.status
52
+ %td= req.unparsed_uri
53
+ .inspect
54
+ detail
55
+
data/lib/autoresponse.rb CHANGED
@@ -4,9 +4,18 @@ require 'fileutils'
4
4
  require 'listen'
5
5
  require 'colorize'
6
6
 
7
+ unless Kernel.respond_to?(:require_relative)
8
+ module Kernel
9
+ def require_relative(path)
10
+ require File.expand_path(path.to_str, File.dirname(caller[0]))
11
+ end
12
+ end
13
+ end
14
+
7
15
  require_relative 'ar/proxyserver'
8
16
  require_relative 'ar/rule_manager'
9
17
  require_relative 'ar/parser'
18
+ require_relative 'ar/session_viewer'
10
19
 
11
20
  module AutoResp
12
21
 
@@ -23,6 +32,7 @@ module AutoResp
23
32
  init_proxy_server
24
33
  load_rules
25
34
  monitor_rules_change
35
+ start_viewer
26
36
  end
27
37
 
28
38
  protected
@@ -44,9 +54,21 @@ module AutoResp
44
54
  trap('INT') { stop_and_exit }
45
55
  end
46
56
 
57
+ def start_viewer
58
+ @sv_thread = Thread.new {
59
+ sleep 0.2
60
+ SessionViewer.proxy_server = @server
61
+ SessionViewer.run!
62
+ Thread.pass
63
+ }
64
+ end
65
+
47
66
  public
48
67
  def start
49
- @thread = Thread.new { @server.start }
68
+ @thread = Thread.new {
69
+ sleep 0.1
70
+ @server.start
71
+ }
50
72
  @thread.join
51
73
  end
52
74
 
data/test/all-test.rb CHANGED
@@ -1,8 +1,17 @@
1
+ require 'rubygems'
1
2
  gem 'test-unit'
2
3
  require 'test/unit'
3
4
  require 'test/unit/testsuite'
4
5
  require 'test/unit/ui/console/testrunner'
5
6
 
7
+ unless Kernel.respond_to?(:require_relative)
8
+ module Kernel
9
+ def require_relative(path)
10
+ require File.expand_path(path.to_str, File.dirname(caller[0]))
11
+ end
12
+ end
13
+ end
14
+
6
15
  require_relative 'respond_with_file_test'
7
16
  require_relative 'respond_with_string_test'
8
17
  require_relative 'respond_with_url_test'
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_response
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
5
- prerelease:
4
+ version: 0.1.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - qhwa
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-24 00:00:00.000000000 Z
11
+ date: 2013-07-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: listen
16
- requirement: &14883740 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *14883740
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: colorize
27
- requirement: &14895420 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *14895420
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: daemons
38
- requirement: &14893680 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *14893680
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: gem-this
49
- requirement: &14890540 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *14890540
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: test-unit
60
- requirement: &14900700 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *14900700
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description:
70
84
  email: qhwa@163.com
71
85
  executables:
@@ -80,6 +94,7 @@ files:
80
94
  - Gemfile.lock
81
95
  - bin/ar
82
96
  - bin/start_ar.rb
97
+ - bin/start_ar.rb.pid
83
98
  - test/respond_with_url_test.rb
84
99
  - test/all-test.rb
85
100
  - test/fixture/passwd
@@ -91,13 +106,16 @@ files:
91
106
  - test/respond_with_string_test.rb
92
107
  - test/response_text_parser_test.rb
93
108
  - test/match_with_reg_test.rb
109
+ - lib/ar/viewer/tmpl/index.haml
94
110
  - lib/ar/parser.rb
95
111
  - lib/ar/rule_dsl.rb
112
+ - lib/ar/session_viewer.rb
96
113
  - lib/ar/proxyserver.rb
97
114
  - lib/ar/rule_manager.rb
98
115
  - lib/autoresponse.rb
99
116
  homepage: https://github.com/qhwa/auto_response
100
117
  licenses: []
118
+ metadata: {}
101
119
  post_install_message:
102
120
  rdoc_options:
103
121
  - --main
@@ -105,21 +123,19 @@ rdoc_options:
105
123
  require_paths:
106
124
  - lib
107
125
  required_ruby_version: !ruby/object:Gem::Requirement
108
- none: false
109
126
  requirements:
110
- - - ! '>='
127
+ - - '>='
111
128
  - !ruby/object:Gem::Version
112
129
  version: '0'
113
130
  required_rubygems_version: !ruby/object:Gem::Requirement
114
- none: false
115
131
  requirements:
116
- - - ! '>='
132
+ - - '>='
117
133
  - !ruby/object:Gem::Version
118
134
  version: '0'
119
135
  requirements: []
120
136
  rubyforge_project:
121
- rubygems_version: 1.8.17
137
+ rubygems_version: 2.0.3
122
138
  signing_key:
123
- specification_version: 3
139
+ specification_version: 4
124
140
  summary: A proxy server for debugging HTTP requests.
125
141
  test_files: []