auto_response 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/Gemfile +2 -15
- data/Gemfile.lock +34 -17
- data/Rakefile +23 -0
- data/auto_response.gemspec +29 -0
- data/bin/{ar → auto_resp} +0 -0
- data/lib/ar/proxy_server.rb +23 -10
- data/lib/ar/rule_manager.rb +2 -7
- data/lib/ar/version.rb +1 -1
- data/lib/ar/viewer/components/jquery/.gitignore +1 -0
- data/lib/auto_response.rb +42 -14
- data/rdoc/AutoResp.html +124 -0
- data/rdoc/AutoResp/AutoResponder.html +487 -0
- data/rdoc/AutoResp/Parser.html +230 -0
- data/rdoc/AutoResp/ProxyServer.html +327 -0
- data/rdoc/AutoResp/RuleDSL.html +230 -0
- data/rdoc/AutoResp/RuleManager.html +332 -0
- data/rdoc/created.rid +7 -0
- data/rdoc/images/add.png +0 -0
- data/rdoc/images/brick.png +0 -0
- data/rdoc/images/brick_link.png +0 -0
- data/rdoc/images/bug.png +0 -0
- data/rdoc/images/bullet_black.png +0 -0
- data/rdoc/images/bullet_toggle_minus.png +0 -0
- data/rdoc/images/bullet_toggle_plus.png +0 -0
- data/rdoc/images/date.png +0 -0
- data/rdoc/images/delete.png +0 -0
- data/rdoc/images/find.png +0 -0
- data/rdoc/images/loadingAnimation.gif +0 -0
- data/rdoc/images/macFFBgHack.png +0 -0
- data/rdoc/images/package.png +0 -0
- data/rdoc/images/page_green.png +0 -0
- data/rdoc/images/page_white_text.png +0 -0
- data/rdoc/images/page_white_width.png +0 -0
- data/rdoc/images/plugin.png +0 -0
- data/rdoc/images/ruby.png +0 -0
- data/rdoc/images/tag_blue.png +0 -0
- data/rdoc/images/tag_green.png +0 -0
- data/rdoc/images/transparent.png +0 -0
- data/rdoc/images/wrench.png +0 -0
- data/rdoc/images/wrench_orange.png +0 -0
- data/rdoc/images/zoom.png +0 -0
- data/rdoc/index.html +79 -0
- data/rdoc/js/darkfish.js +153 -0
- data/rdoc/js/jquery.js +18 -0
- data/rdoc/js/navigation.js +142 -0
- data/rdoc/js/search.js +94 -0
- data/rdoc/js/search_index.js +1 -0
- data/rdoc/js/searcher.js +228 -0
- data/rdoc/rdoc.css +543 -0
- data/rdoc/table_of_contents.html +107 -0
- data/readme.md +12 -3
- metadata +384 -341
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55273ec6191009c7efcb1309c6d5eca04cbfec6c
|
|
4
|
+
data.tar.gz: 34944371d7b91159742e123801817853ad1b77bf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a7a6d317bbb1f6902d31d7e9563d999789d18b7662f9bd7271a21853731e381828946e0b981ec53eeb7c8618686ce44e7edf51bd3e4416773082b1cfdad59dbb
|
|
7
|
+
data.tar.gz: dcea5a717b81771799b18e0580bf73cd8257ad82991cd2d0a85b8600ea50d1e72622a653b6204852de1b0e2e78d87aa9e13f9191c14a546250aa38b309f503b0
|
data/.gitignore
ADDED
data/Gemfile
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
source '
|
|
2
|
-
|
|
3
|
-
gem 'colorize'
|
|
4
|
-
gem 'daemons'
|
|
5
|
-
gem 'rb-inotify', '~> 0.9'
|
|
6
|
-
gem 'string_utf8'
|
|
7
|
-
gem 'ptools'
|
|
8
|
-
|
|
9
|
-
group :test do
|
|
10
|
-
gem 'test-unit'
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
group :development do
|
|
14
|
-
gem 'gem-this'
|
|
15
|
-
end
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
gemspec
|
data/Gemfile.lock
CHANGED
|
@@ -1,26 +1,43 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
auto_response (0.2.0)
|
|
5
|
+
colorize
|
|
6
|
+
daemons (~> 1.1.9)
|
|
7
|
+
listen (~> 2.0)
|
|
8
|
+
ptools
|
|
9
|
+
rb-inotify (~> 0.9)
|
|
10
|
+
string_utf8
|
|
11
|
+
|
|
1
12
|
GEM
|
|
2
|
-
remote:
|
|
13
|
+
remote: https://rubygems.org/
|
|
3
14
|
specs:
|
|
4
|
-
|
|
15
|
+
celluloid (0.16.0)
|
|
16
|
+
timers (~> 4.0.0)
|
|
17
|
+
colorize (0.7.3)
|
|
5
18
|
daemons (1.1.9)
|
|
6
|
-
ffi (1.9.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
ffi (1.9.6)
|
|
20
|
+
hitimes (1.2.2)
|
|
21
|
+
json (1.8.1)
|
|
22
|
+
listen (2.7.11)
|
|
23
|
+
celluloid (>= 0.15.2)
|
|
24
|
+
rb-fsevent (>= 0.9.3)
|
|
25
|
+
rb-inotify (>= 0.9)
|
|
26
|
+
ptools (1.2.6)
|
|
27
|
+
rake (10.3.2)
|
|
28
|
+
rb-fsevent (0.9.4)
|
|
29
|
+
rb-inotify (0.9.5)
|
|
11
30
|
ffi (>= 0.5.0)
|
|
12
|
-
|
|
13
|
-
|
|
31
|
+
rdoc (4.1.2)
|
|
32
|
+
json (~> 1.4)
|
|
33
|
+
string_utf8 (0.1.1)
|
|
34
|
+
timers (4.0.1)
|
|
35
|
+
hitimes
|
|
14
36
|
|
|
15
37
|
PLATFORMS
|
|
16
38
|
ruby
|
|
17
39
|
|
|
18
40
|
DEPENDENCIES
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
listen
|
|
23
|
-
ptools
|
|
24
|
-
rb-inotify (~> 0.9)
|
|
25
|
-
string_utf8
|
|
26
|
-
test-unit
|
|
41
|
+
auto_response!
|
|
42
|
+
rake
|
|
43
|
+
rdoc
|
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'rake/clean'
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'rubygems/package_task'
|
|
4
|
+
require 'rdoc/task'
|
|
5
|
+
|
|
6
|
+
Rake::RDocTask.new do |rd|
|
|
7
|
+
rd.main = "README.rdoc"
|
|
8
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
|
|
9
|
+
rd.title = 'Your application title'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
spec = eval(File.read('auto_response.gemspec'))
|
|
13
|
+
|
|
14
|
+
Gem::PackageTask.new(spec) do |pkg|
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
require 'rake/testtask'
|
|
18
|
+
Rake::TestTask.new do |t|
|
|
19
|
+
t.libs << "test"
|
|
20
|
+
t.test_files = FileList['test/tc_*.rb']
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
task :default => :test
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Ensure we require the local version and not one we might have installed already
|
|
2
|
+
require File.join( File.dirname(__FILE__),'lib/ar/version.rb')
|
|
3
|
+
spec = Gem::Specification.new do |s|
|
|
4
|
+
s.name = 'auto_response'
|
|
5
|
+
s.description = <<-EOF
|
|
6
|
+
HTTP debugging made easy.
|
|
7
|
+
EOF
|
|
8
|
+
s.version = AutoResp::VERSION
|
|
9
|
+
s.author = 'qhwa'
|
|
10
|
+
s.email = 'qhwa@163.com'
|
|
11
|
+
s.homepage = 'https://github.com/qhwa/auto_response'
|
|
12
|
+
s.platform = Gem::Platform::RUBY
|
|
13
|
+
s.summary = 'HTTP debugging tool'
|
|
14
|
+
# Add your other files here if you make them
|
|
15
|
+
s.files = `git ls-files`.split("
|
|
16
|
+
")
|
|
17
|
+
s.require_paths << 'lib'
|
|
18
|
+
s.has_rdoc = false
|
|
19
|
+
s.bindir = 'bin'
|
|
20
|
+
s.executables << 'auto_resp'
|
|
21
|
+
s.add_development_dependency 'rake'
|
|
22
|
+
s.add_development_dependency 'rdoc'
|
|
23
|
+
s.add_runtime_dependency %q<listen>, "~> 2.0"
|
|
24
|
+
s.add_runtime_dependency %q<colorize>, ">= 0"
|
|
25
|
+
s.add_runtime_dependency %q<daemons>, "~> 1.1.9"
|
|
26
|
+
s.add_runtime_dependency %q<string_utf8>, ">= 0"
|
|
27
|
+
s.add_runtime_dependency %q<rb-inotify>, "~> 0.9"
|
|
28
|
+
s.add_runtime_dependency %q<ptools>, ">= 0"
|
|
29
|
+
end
|
data/bin/{ar → auto_resp}
RENAMED
|
File without changes
|
data/lib/ar/proxy_server.rb
CHANGED
|
@@ -33,18 +33,30 @@ module AutoResp
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
begin
|
|
37
|
+
header, body, status = find_auto_res(req.unparsed_uri)
|
|
38
|
+
rescue => e
|
|
39
|
+
header = {}
|
|
40
|
+
body = <<-MSG
|
|
41
|
+
ERROR:
|
|
42
|
+
#{e.message}
|
|
43
|
+
#{e.backtrace.join "\n"}
|
|
44
|
+
MSG
|
|
45
|
+
status = 500
|
|
46
|
+
end
|
|
47
|
+
|
|
37
48
|
res.status = status if status
|
|
38
49
|
|
|
39
50
|
if @rule
|
|
40
51
|
|
|
41
52
|
logger.debug "match".ljust(8) << ": #{req.unparsed_uri}"
|
|
42
53
|
logger.debug "header".ljust(8) << ": #{header}"
|
|
43
|
-
logger.debug "body".ljust(8) << ": \n#{body}"
|
|
54
|
+
logger.debug "body".ljust(8) << ": \n#{body[0..200]}#{'...' if body.size > 200}"
|
|
44
55
|
logger.debug "-"*50
|
|
45
56
|
|
|
46
57
|
res['x-auto-response-condition'] = @rule.first.to_s
|
|
47
58
|
res['x-auto-response-with'] = @rule.last.to_s
|
|
59
|
+
|
|
48
60
|
if header
|
|
49
61
|
header.each do |k,v|
|
|
50
62
|
v = v.join("\n") if v.respond_to?(:join)
|
|
@@ -82,6 +94,7 @@ module AutoResp
|
|
|
82
94
|
@rule = rule
|
|
83
95
|
if rule
|
|
84
96
|
condition, handlers = *rule
|
|
97
|
+
handlers = [handlers] unless handlers.is_a?(Array)
|
|
85
98
|
handlers.each {|proc| proc.call if proc.respond_to?(:call) }
|
|
86
99
|
fetch(handlers.last, condition, url)
|
|
87
100
|
end
|
|
@@ -91,9 +104,9 @@ module AutoResp
|
|
|
91
104
|
trim_url(rule) === trim_url(url)
|
|
92
105
|
end
|
|
93
106
|
|
|
94
|
-
def fetch(
|
|
107
|
+
def fetch(handler, declare, uri)
|
|
95
108
|
|
|
96
|
-
case
|
|
109
|
+
case handler
|
|
97
110
|
when nil
|
|
98
111
|
Net::HTTP.get_response(URI(uri)) do |res|
|
|
99
112
|
return [res.to_hash, res.read_body, res.code]
|
|
@@ -101,12 +114,12 @@ module AutoResp
|
|
|
101
114
|
when Proc
|
|
102
115
|
if Regexp === declare
|
|
103
116
|
mtc = uri.match(declare)
|
|
104
|
-
fetch(
|
|
117
|
+
fetch( handler.call(*mtc), declare, uri )
|
|
105
118
|
else
|
|
106
|
-
fetch(
|
|
119
|
+
fetch( handler.call, declare, uri )
|
|
107
120
|
end
|
|
108
121
|
when String
|
|
109
|
-
if goto = redirect_path(
|
|
122
|
+
if goto = redirect_path(handler)
|
|
110
123
|
if is_uri?(goto)
|
|
111
124
|
Net::HTTP.get_response(URI(goto)) do |res|
|
|
112
125
|
return [res.to_hash, res.read_body, res.code]
|
|
@@ -123,12 +136,12 @@ module AutoResp
|
|
|
123
136
|
end
|
|
124
137
|
end
|
|
125
138
|
else
|
|
126
|
-
parse(
|
|
139
|
+
parse(handler)
|
|
127
140
|
end
|
|
128
141
|
when Fixnum
|
|
129
|
-
[{}, "",
|
|
142
|
+
[{}, "", handler]
|
|
130
143
|
when Array
|
|
131
|
-
[
|
|
144
|
+
[handler[1], handler[2], handler[0]]
|
|
132
145
|
end
|
|
133
146
|
end
|
|
134
147
|
|
data/lib/ar/rule_manager.rb
CHANGED
|
@@ -30,15 +30,10 @@ module AutoResp
|
|
|
30
30
|
when Hash
|
|
31
31
|
@last_rule = target.keys.first
|
|
32
32
|
rules.merge! target
|
|
33
|
-
when String
|
|
33
|
+
when String, Regexp
|
|
34
34
|
rules[target] = args[1]
|
|
35
|
-
when Regexp
|
|
36
|
-
if block_given?
|
|
37
|
-
rules[target] = block
|
|
38
|
-
else
|
|
39
|
-
rules[target] = args[1]
|
|
40
|
-
end
|
|
41
35
|
end
|
|
36
|
+
rules[target] ||= block if block
|
|
42
37
|
end
|
|
43
38
|
|
|
44
39
|
end
|
data/lib/ar/version.rb
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
build
|
data/lib/auto_response.rb
CHANGED
|
@@ -4,8 +4,7 @@ require 'fileutils'
|
|
|
4
4
|
require 'listen'
|
|
5
5
|
require 'colorize'
|
|
6
6
|
require 'logger'
|
|
7
|
-
|
|
8
|
-
$: << File.expand_path( File.dirname(__FILE__) )
|
|
7
|
+
require 'socket'
|
|
9
8
|
|
|
10
9
|
require 'ar/version'
|
|
11
10
|
require 'ar/proxy_server'
|
|
@@ -19,18 +18,43 @@ module AutoResp
|
|
|
19
18
|
class AutoResponder
|
|
20
19
|
|
|
21
20
|
ARHOME = "#{ENV["HOME"]}/.auto_response"
|
|
22
|
-
RULES
|
|
21
|
+
RULES = "#{ARHOME}/rules"
|
|
22
|
+
|
|
23
|
+
def initialize(config = {})
|
|
24
|
+
|
|
25
|
+
@config = config
|
|
26
|
+
@rule_manager = RuleManager.new
|
|
27
|
+
@logger = init_logger
|
|
28
|
+
|
|
29
|
+
@logger.debug { "Starting AutoResp v#{VERSION}" }
|
|
30
|
+
@logger.debug { "Listening at " << "#{ip_address}:#{proxy_port}".yellow }
|
|
23
31
|
|
|
24
|
-
def initialize(config={})
|
|
25
|
-
@config = config
|
|
26
|
-
@rule_manager = RuleManager.new
|
|
27
|
-
@logger = Logger.new( $stderr, Logger::WARN )
|
|
28
32
|
init_autoresponse_home
|
|
29
33
|
load_rules
|
|
30
34
|
monitor_rules_change
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
protected
|
|
38
|
+
|
|
39
|
+
def init_logger
|
|
40
|
+
Logger.new( $stderr, Logger::WARN ).tap do |logger|
|
|
41
|
+
logger.formatter = proc do |serverity, datetime, prog, msg|
|
|
42
|
+
indent = {
|
|
43
|
+
:debug => '--',
|
|
44
|
+
:info => ' ',
|
|
45
|
+
:warn => '[W]',
|
|
46
|
+
:error => '[E]',
|
|
47
|
+
:fatal => '[F]'
|
|
48
|
+
}[serverity.downcase.to_sym]
|
|
49
|
+
"#{indent} #{msg}\n"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def ip_address
|
|
55
|
+
Socket.ip_address_list.detect {|intf| intf.ipv4_private? }.ip_address
|
|
56
|
+
end
|
|
57
|
+
|
|
34
58
|
def init_autoresponse_home
|
|
35
59
|
unless File.exist?(RULES)
|
|
36
60
|
pwd = File.expand_path('..', File.dirname(__FILE__))
|
|
@@ -44,13 +68,17 @@ module AutoResp
|
|
|
44
68
|
@server = ProxyServer.new(
|
|
45
69
|
self,
|
|
46
70
|
:BindAddress => @config[:host] || '0.0.0.0',
|
|
47
|
-
:Port =>
|
|
71
|
+
:Port => proxy_port,
|
|
48
72
|
:logger => @logger
|
|
49
73
|
)
|
|
50
74
|
trap('INT') { stop_and_exit }
|
|
51
75
|
@server
|
|
52
76
|
end
|
|
53
77
|
|
|
78
|
+
def proxy_port
|
|
79
|
+
@config[:port] || 9000
|
|
80
|
+
end
|
|
81
|
+
|
|
54
82
|
def start_proxy
|
|
55
83
|
@proxy_thread = Thread.new { init_proxy_server.start }
|
|
56
84
|
end
|
|
@@ -103,8 +131,7 @@ module AutoResp
|
|
|
103
131
|
|
|
104
132
|
private
|
|
105
133
|
def load_rules(path=nil)
|
|
106
|
-
path ||= @config[:rule_config]
|
|
107
|
-
path ||= "#{ARHOME}/rules"
|
|
134
|
+
path ||= @config[:rule_config] || "#{ARHOME}/rules"
|
|
108
135
|
if File.readable?(path)
|
|
109
136
|
begin
|
|
110
137
|
@rule_manager.instance_eval File.read(path)
|
|
@@ -116,15 +143,16 @@ module AutoResp
|
|
|
116
143
|
end
|
|
117
144
|
|
|
118
145
|
def log_rules
|
|
119
|
-
@logger.
|
|
146
|
+
@logger.debug "Mapping rules:"
|
|
120
147
|
rules.each do |n,v|
|
|
121
|
-
@logger.info "
|
|
148
|
+
@logger.info ""
|
|
149
|
+
@logger.info n.to_s.ljust(30).green
|
|
150
|
+
@logger.info "=> #{v}"
|
|
122
151
|
end
|
|
123
152
|
end
|
|
124
153
|
|
|
125
154
|
def monitor_rules_change
|
|
126
|
-
listener = Listen.to(ARHOME)
|
|
127
|
-
listener.change { reload_rules }
|
|
155
|
+
listener = Listen.to(ARHOME) { reload_rules }
|
|
128
156
|
Thread.new { listener.start }
|
|
129
157
|
end
|
|
130
158
|
|
data/rdoc/AutoResp.html
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
|
|
6
|
+
|
|
7
|
+
<title>module AutoResp - RDoc Documentation</title>
|
|
8
|
+
|
|
9
|
+
<link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
|
|
10
|
+
|
|
11
|
+
<script type="text/javascript">
|
|
12
|
+
var rdoc_rel_prefix = "./";
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
|
|
16
|
+
<script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
|
|
17
|
+
<script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
|
|
18
|
+
<script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
|
|
19
|
+
<script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
|
|
20
|
+
<script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<body id="top" class="module">
|
|
24
|
+
<nav id="metadata">
|
|
25
|
+
<nav id="home-section" class="section">
|
|
26
|
+
<h3 class="section-header">
|
|
27
|
+
<a href="./index.html">Home</a>
|
|
28
|
+
<a href="./table_of_contents.html#classes">Classes</a>
|
|
29
|
+
<a href="./table_of_contents.html#methods">Methods</a>
|
|
30
|
+
</h3>
|
|
31
|
+
</nav>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
<nav id="search-section" class="section project-section" class="initially-hidden">
|
|
35
|
+
<form action="#" method="get" accept-charset="utf-8">
|
|
36
|
+
<h3 class="section-header">
|
|
37
|
+
<input type="text" name="search" placeholder="Search" id="search-field"
|
|
38
|
+
title="Type to search, Up and Down to navigate, Enter to load">
|
|
39
|
+
</h3>
|
|
40
|
+
</form>
|
|
41
|
+
|
|
42
|
+
<ul id="search-results" class="initially-hidden"></ul>
|
|
43
|
+
</nav>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div id="file-metadata">
|
|
47
|
+
<nav id="file-list-section" class="section">
|
|
48
|
+
<h3 class="section-header">Defined In</h3>
|
|
49
|
+
<ul>
|
|
50
|
+
<li>lib/ar/parser.rb
|
|
51
|
+
<li>lib/ar/proxyserver.rb
|
|
52
|
+
<li>lib/ar/rule_dsl.rb
|
|
53
|
+
<li>lib/ar/rule_manager.rb
|
|
54
|
+
<li>lib/autoresponse.rb
|
|
55
|
+
</ul>
|
|
56
|
+
</nav>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div id="class-metadata">
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div id="project-metadata">
|
|
69
|
+
|
|
70
|
+
<nav id="classindex-section" class="section project-section">
|
|
71
|
+
<h3 class="section-header">Class and Module Index</h3>
|
|
72
|
+
|
|
73
|
+
<ul class="link-list">
|
|
74
|
+
|
|
75
|
+
<li><a href="./AutoResp.html">AutoResp</a>
|
|
76
|
+
|
|
77
|
+
<li><a href="./AutoResp/AutoResponder.html">AutoResp::AutoResponder</a>
|
|
78
|
+
|
|
79
|
+
<li><a href="./AutoResp/Parser.html">AutoResp::Parser</a>
|
|
80
|
+
|
|
81
|
+
<li><a href="./AutoResp/ProxyServer.html">AutoResp::ProxyServer</a>
|
|
82
|
+
|
|
83
|
+
<li><a href="./AutoResp/RuleDSL.html">AutoResp::RuleDSL</a>
|
|
84
|
+
|
|
85
|
+
<li><a href="./AutoResp/RuleManager.html">AutoResp::RuleManager</a>
|
|
86
|
+
|
|
87
|
+
</ul>
|
|
88
|
+
</nav>
|
|
89
|
+
|
|
90
|
+
</div>
|
|
91
|
+
</nav>
|
|
92
|
+
|
|
93
|
+
<div id="documentation">
|
|
94
|
+
<h1 class="module">module AutoResp</h1>
|
|
95
|
+
|
|
96
|
+
<div id="description" class="description">
|
|
97
|
+
|
|
98
|
+
</div><!-- description -->
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<section id="5Buntitled-5D" class="documentation-section">
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
<!-- Methods -->
|
|
113
|
+
|
|
114
|
+
</section><!-- 5Buntitled-5D -->
|
|
115
|
+
|
|
116
|
+
</div><!-- documentation -->
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
<footer id="validator-badges">
|
|
120
|
+
<p><a href="http://validator.w3.org/check/referer">[Validate]</a>
|
|
121
|
+
<p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
|
|
122
|
+
<p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
|
|
123
|
+
</footer>
|
|
124
|
+
|