jpmobile 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/README.rdoc +29 -15
- data/Rakefile +3 -3
- data/lib/jpmobile/emoticon/conversion_table.rb +10 -9
- data/lib/jpmobile/emoticon.rb +14 -6
- data/lib/jpmobile/filter.rb +2 -9
- data/lib/jpmobile/helpers.rb +2 -0
- data/lib/jpmobile/hook_action_view.rb +5 -5
- data/lib/jpmobile/mobile/softbank.rb +2 -2
- data/lib/jpmobile/mobile/z_display_info_docomo.rb +577 -528
- data/lib/jpmobile/mobile/z_ip_addresses_au.rb +5 -1
- data/lib/jpmobile/mobile/z_ip_addresses_softbank.rb +2 -2
- data/lib/jpmobile/mobile/z_ip_addresses_willcom.rb +53 -13
- data/lib/jpmobile/trans_sid.rb +28 -14
- data/lib/jpmobile/version.rb +1 -1
- data/test/legacy/emoticon_test.rb +6 -0
- data/test/legacy/helpers_test.rb +6 -5
- data/test/rails/2.3.2/spec/controllers/trans_sid_spec.rb +99 -0
- data/test/rails/overrides/app/controllers/{application.rb → application_controller.rb} +0 -0
- data/test/rails/overrides/app/controllers/filter_controller.rb +1 -0
- data/test/rails/overrides/spec/controllers/filter_spec.rb +1 -0
- data/test/rails/overrides/spec/controllers/trans_sid_spec.rb +20 -2
- data/test/rails/rails_root/README +6 -19
- data/test/rails/rails_root/app/controllers/{application.rb → application_controller.rb} +0 -0
- data/test/rails/rails_root/app/controllers/trans_sid_controller.rb +4 -2
- data/test/rails/rails_root/app/views/filter/index.html.erb +0 -0
- data/test/rails/rails_root/app/views/hankaku_filter/index.html.erb +0 -0
- data/test/rails/rails_root/app/views/template_path/_partial.html.erb +1 -0
- data/test/rails/rails_root/app/views/template_path/_partial_mobile.html.erb +1 -0
- data/test/rails/rails_root/app/views/template_path/_partial_mobile_docomo.html.erb +1 -0
- data/test/rails/rails_root/app/views/template_path/partial.html.erb +2 -0
- data/test/rails/rails_root/config/boot.rb +2 -1
- data/test/rails/rails_root/config/environment.rb +15 -48
- data/test/rails/rails_root/config/environments/production.rb +11 -7
- data/test/rails/rails_root/config/environments/test.rb +6 -0
- data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails/rails_root/config/initializers/new_rails_defaults.rb +4 -0
- data/test/rails/rails_root/config/initializers/session_store.rb +15 -0
- data/test/rails/rails_root/config/routes.rb +1 -1
- data/test/rails/rails_root/db/development.sqlite3 +0 -0
- data/test/rails/rails_root/db/seeds.rb +7 -0
- data/test/rails/rails_root/db/test.sqlite3 +0 -0
- data/test/rails/rails_root/doc/README_FOR_APP +2 -5
- data/test/rails/rails_root/log/development.log +9 -9
- data/test/rails/rails_root/log/test.log +198 -148
- data/test/rails/rails_root/public/500.html +0 -3
- data/test/rails/rails_root/public/index.html +1 -0
- data/test/rails/rails_root/script/about +2 -2
- data/test/rails/rails_root/script/console +1 -1
- data/test/rails/rails_root/script/dbconsole +1 -1
- data/test/rails/rails_root/script/destroy +1 -1
- data/test/rails/rails_root/script/generate +1 -1
- data/test/rails/rails_root/script/performance/benchmarker +1 -1
- data/test/rails/rails_root/script/performance/profiler +1 -1
- data/test/rails/rails_root/script/plugin +1 -1
- data/test/rails/rails_root/script/runner +1 -1
- data/test/rails/rails_root/script/server +1 -1
- data/test/rails/rails_root/spec/controllers/template_path_spec.rb +49 -19
- data/test/rails/rails_root/spec/controllers/trans_sid_spec.rb +11 -8
- data/test/rails/rails_root/test/test_helper.rb +1 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/MIT-LICENSE +2 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/README.rdoc +31 -15
- data/test/rails/rails_root/vendor/plugins/jpmobile/Rakefile +1 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +3 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +3 -10
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +2 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +12 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +79 -91
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_request.rb +2 -10
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +9 -3
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +2 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_display_info_docomo.rb +577 -528
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_au.rb +5 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_softbank.rb +2 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_willcom.rb +53 -13
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/auth.rb +55 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/combined_logger.rb +54 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/request.rb +7 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/trans_sid.rb +14 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +76 -65
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/version.rb +1 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/tasks/jpmobile_tasks.rake +26 -6
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/{update_display_info_docomo.rb → disabled_update_display_info_docomo.rb} +11 -6
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_docomo_emoticon_table.rb +0 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_softbank_emoticon_table.rb +0 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/update_ip_addresses_au.rb +4 -3
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/update_ip_addresses_willcom.rb +2 -2
- data/tools/{update_display_info_docomo.rb → disabled_update_display_info_docomo.rb} +11 -6
- data/tools/generate_docomo_emoticon_table.rb +0 -1
- data/tools/generate_softbank_emoticon_table.rb +0 -1
- data/tools/update_ip_addresses_au.rb +4 -3
- data/tools/update_ip_addresses_willcom.rb +2 -2
- metadata +65 -35
- data/test/rails/rails_root/public/dispatch.cgi +0 -10
- data/test/rails/rails_root/public/dispatch.fcgi +0 -24
- data/test/rails/rails_root/public/dispatch.rb +0 -10
- data/test/rails/rails_root/script/performance/request +0 -3
- data/test/rails/rails_root/script/process/inspector +0 -3
- data/test/rails/rails_root/script/process/reaper +0 -3
- data/test/rails/rails_root/script/process/spawner +0 -3
@@ -19,4 +19,8 @@ Jpmobile::Mobile::Au::IP_ADDRESSES =
|
|
19
19
|
"118.152.214.192/26",
|
20
20
|
"118.159.131.0/25",
|
21
21
|
"118.159.133.0/25",
|
22
|
-
"118.159.132.160/27"
|
22
|
+
"118.159.132.160/27",
|
23
|
+
"111.86.142.0/26",
|
24
|
+
"111.86.141.64/26",
|
25
|
+
"111.86.141.128/26",
|
26
|
+
"111.86.141.192/26"].map {|ip| IPAddr.new(ip) }
|
data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_softbank.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# = IPアドレス帯域テーブル(手動更新分)
|
2
3
|
# == SoftBank
|
3
4
|
# http://developers.softbankmobile.co.jp/dp/tech_svc/web/ip.php
|
@@ -10,8 +11,7 @@ Jpmobile::Mobile::Softbank::IP_ADDRESSES = %w(
|
|
10
11
|
210.146.7.192/26
|
11
12
|
210.146.60.192/26
|
12
13
|
210.151.9.128/26
|
13
|
-
210.169.130.112/28
|
14
14
|
210.175.1.128/25
|
15
|
-
210.228.189.0/24
|
16
15
|
211.8.159.128/25
|
16
|
+
210.175.1.128/25
|
17
17
|
).map {|ip| IPAddr.new(ip) }
|
data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_willcom.rb
CHANGED
@@ -56,12 +56,28 @@ Jpmobile::Mobile::Willcom::IP_ADDRESSES =
|
|
56
56
|
"61.204.93.0/24",
|
57
57
|
"61.204.94.0/24",
|
58
58
|
"61.204.95.0/24",
|
59
|
+
"114.20.49.0/24",
|
60
|
+
"114.20.50.0/24",
|
61
|
+
"114.20.51.0/24",
|
62
|
+
"114.20.52.0/24",
|
63
|
+
"114.20.53.0/24",
|
64
|
+
"114.20.54.0/24",
|
65
|
+
"114.20.55.0/24",
|
66
|
+
"114.20.56.0/24",
|
67
|
+
"114.20.57.0/24",
|
68
|
+
"114.20.58.0/24",
|
69
|
+
"114.20.59.0/24",
|
70
|
+
"114.20.60.0/24",
|
71
|
+
"114.20.61.0/24",
|
72
|
+
"114.20.62.0/24",
|
73
|
+
"114.20.63.0/24",
|
74
|
+
"114.20.64.0/24",
|
75
|
+
"114.20.65.0/24",
|
76
|
+
"114.20.66.0/24",
|
77
|
+
"114.20.67.0/24",
|
78
|
+
"114.21.255.0/27",
|
59
79
|
"125.28.0.0/24",
|
60
80
|
"125.28.1.0/24",
|
61
|
-
"125.28.11.0/24",
|
62
|
-
"125.28.12.0/24",
|
63
|
-
"125.28.13.0/24",
|
64
|
-
"125.28.14.0/24",
|
65
81
|
"125.28.15.0/24",
|
66
82
|
"125.28.16.0/24",
|
67
83
|
"125.28.17.0/24",
|
@@ -69,8 +85,6 @@ Jpmobile::Mobile::Willcom::IP_ADDRESSES =
|
|
69
85
|
"125.28.3.0/24",
|
70
86
|
"125.28.4.0/24",
|
71
87
|
"125.28.5.0/24",
|
72
|
-
"125.28.6.0/24",
|
73
|
-
"125.28.7.0/24",
|
74
88
|
"125.28.8.0/24",
|
75
89
|
"210.168.246.0/24",
|
76
90
|
"210.168.247.0/24",
|
@@ -89,17 +103,12 @@ Jpmobile::Mobile::Willcom::IP_ADDRESSES =
|
|
89
103
|
"211.18.235.0/24",
|
90
104
|
"211.18.236.0/24",
|
91
105
|
"211.18.237.0/24",
|
92
|
-
"211.18.238.0/24",
|
93
|
-
"211.18.239.0/24",
|
94
106
|
"219.108.10.0/24",
|
95
107
|
"219.108.11.0/24",
|
96
108
|
"219.108.12.0/24",
|
97
109
|
"219.108.13.0/24",
|
98
110
|
"219.108.14.0/24",
|
99
111
|
"219.108.15.0/24",
|
100
|
-
"219.108.4.0/24",
|
101
|
-
"219.108.5.0/24",
|
102
|
-
"219.108.6.0/24",
|
103
112
|
"219.108.7.0/24",
|
104
113
|
"219.108.8.0/24",
|
105
114
|
"219.108.9.0/24",
|
@@ -108,10 +117,41 @@ Jpmobile::Mobile::Willcom::IP_ADDRESSES =
|
|
108
117
|
"221.119.2.0/24",
|
109
118
|
"221.119.3.0/24",
|
110
119
|
"221.119.4.0/24",
|
111
|
-
"221.119.5.0/24",
|
112
120
|
"221.119.6.0/24",
|
113
121
|
"221.119.7.0/24",
|
114
122
|
"221.119.8.0/24",
|
115
123
|
"221.119.9.0/24",
|
124
|
+
"114.20.49.0/24",
|
125
|
+
"114.20.50.0/24",
|
126
|
+
"114.20.51.0/24",
|
127
|
+
"114.20.52.0/24",
|
128
|
+
"114.20.53.0/24",
|
129
|
+
"114.20.54.0/24",
|
130
|
+
"114.20.55.0/24",
|
131
|
+
"114.20.56.0/24",
|
132
|
+
"114.20.57.0/24",
|
133
|
+
"114.20.58.0/24",
|
134
|
+
"114.20.59.0/24",
|
135
|
+
"114.20.60.0/24",
|
136
|
+
"114.20.61.0/24",
|
137
|
+
"114.20.62.0/24",
|
138
|
+
"114.20.63.0/24",
|
139
|
+
"114.20.64.0/24",
|
140
|
+
"114.20.65.0/24",
|
141
|
+
"114.20.66.0/24",
|
142
|
+
"114.20.67.0/24",
|
143
|
+
"114.21.255.0/27",
|
116
144
|
"219.108.2.0/24",
|
117
|
-
"219.108.3.0/24"
|
145
|
+
"219.108.3.0/24",
|
146
|
+
"125.28.6.0/24",
|
147
|
+
"125.28.7.0/24",
|
148
|
+
"125.28.11.0/24",
|
149
|
+
"125.28.12.0/24",
|
150
|
+
"125.28.13.0/24",
|
151
|
+
"125.28.14.0/24",
|
152
|
+
"211.18.238.0/24",
|
153
|
+
"211.18.239.0/24",
|
154
|
+
"219.108.4.0/24",
|
155
|
+
"219.108.5.0/24",
|
156
|
+
"219.108.6.0/24",
|
157
|
+
"221.119.5.0/24"].map {|ip| IPAddr.new(ip) }
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Jpmobile
|
2
|
+
module Rack
|
3
|
+
# in your_app.ru
|
4
|
+
#
|
5
|
+
# check ip
|
6
|
+
# require 'jpmobile/rack'
|
7
|
+
# use Jpmobile::Rack::Auth::Docomo
|
8
|
+
|
9
|
+
# (but allow localhost), {
|
10
|
+
# :ident => %w( xxxxxx ),
|
11
|
+
# :check_ip => true,
|
12
|
+
# :allow_ip => %w( 127.0.0.1 )
|
13
|
+
# } # you can use block
|
14
|
+
|
15
|
+
# req is Jpmobile::Rack::Request's subclass instance.
|
16
|
+
# require 'jpmobile/rack'
|
17
|
+
# use Jpmobile::Rack::Auth {|req|
|
18
|
+
# Your::Model::AuSubno.count(:subno => req.ident) != 0
|
19
|
+
# }
|
20
|
+
class Auth
|
21
|
+
FORBIDDEN = [403, {'Content-Type' => 'text/plain' }, 'Forbidden' ]
|
22
|
+
|
23
|
+
def initialize(app, hash=nil, &block)
|
24
|
+
@app = app
|
25
|
+
if hash
|
26
|
+
@allow_ip = hash[:allow_ip]
|
27
|
+
end
|
28
|
+
@cond = block
|
29
|
+
end
|
30
|
+
|
31
|
+
def career
|
32
|
+
end
|
33
|
+
|
34
|
+
def call(env)
|
35
|
+
request = Request.new(env)
|
36
|
+
|
37
|
+
if request.mobile? and request.valid_ip?
|
38
|
+
@app.call(env)
|
39
|
+
else
|
40
|
+
FORBIDDEN
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
::Jpmobile::Mobile.constants.each do |career|
|
45
|
+
klass = Class.new(self)
|
46
|
+
klass.class_eval do
|
47
|
+
define_method :career do
|
48
|
+
::Jpmobile::Mobile.const_get(career)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
const_set(career, klass)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Jpmobile
|
2
|
+
module Rack
|
3
|
+
# Rack::CommonLogger show too few infomation to debugging mobile web application.
|
4
|
+
# So you can Rack::Jpmobile::CombinedLogger as alternate.
|
5
|
+
# SYNOPSIS
|
6
|
+
# in your_app.up
|
7
|
+
# require 'jpmobile/rack'
|
8
|
+
# class Rack::CommonLogger
|
9
|
+
# include Jpmobile::Rack::CombinedLogger
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# use Rack::CommonLogger, STDERR # you need not write this when you use rackup on development.
|
13
|
+
#
|
14
|
+
module CombinedLogger
|
15
|
+
|
16
|
+
# XXX: It's evil way for replacing Rack::CommonLogger#each.
|
17
|
+
def self.included klass
|
18
|
+
klass.class_eval do
|
19
|
+
alias orig_each each
|
20
|
+
remove_method :each
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def each
|
25
|
+
length = 0
|
26
|
+
@body.each { |part|
|
27
|
+
length += part.size
|
28
|
+
yield part
|
29
|
+
}
|
30
|
+
|
31
|
+
@now = Time.now
|
32
|
+
|
33
|
+
# Combined Log Format: http://httpd.apache.org/docs/1.3/logs.html#combined
|
34
|
+
# 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
|
35
|
+
# "%h %l %u [%t] \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
|
36
|
+
@logger << %{%s - %s [%s] "%s %s%s %s" %d %s %s "%s" %0.4f\n} %
|
37
|
+
[
|
38
|
+
@env['HTTP_X_FORWARDED_FOR'] || @env["REMOTE_ADDR"] || "-",
|
39
|
+
@env["REMOTE_USER"] || @env["HTTP_X_DCMGUID"] || @env["HTTP_X_UP_SUBNO"] || @env["HTTP_X_JPHONE_UID"] || @env["HTTP_X_EM_UID"] || "-",
|
40
|
+
@now.strftime("%d/%b/%Y %H:%M:%S"),
|
41
|
+
@env["REQUEST_METHOD"],
|
42
|
+
@env["PATH_INFO"],
|
43
|
+
@env["QUERY_STRING"].empty? ? "" : "?"+@env["QUERY_STRING"],
|
44
|
+
@env["HTTP_VERSION"],
|
45
|
+
@status.to_s[0..3],
|
46
|
+
(length.zero? ? "-" : length.to_s),
|
47
|
+
@env["HTTP_REFERER"] ? %{"#{@env['Referer']}"} : '-',
|
48
|
+
@env["HTTP_USER_AGENT"],
|
49
|
+
@now - @time
|
50
|
+
]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,58 +1,81 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
# = セッションIDの付与
|
2
|
-
|
3
|
-
# based on http://moriq.tdiary.net/20070209.html#p01
|
4
|
-
# by moriq <moriq@moriq.com>
|
5
|
-
#
|
6
|
-
# cookie support detection inspired by takai http://recompile.net/
|
7
|
-
#
|
8
|
-
# Rails 2.0.2 support is based on the code contributed
|
9
|
-
# by masuidrive <masuidrive (at) masuidrive.jp>
|
3
|
+
require 'active_support/version'
|
10
4
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
5
|
+
module ParamsOverCookie
|
6
|
+
def self.included(base)
|
7
|
+
base.class_eval do
|
8
|
+
# cookie よりも params を先に見るパッチ
|
9
|
+
def load_session_with_jpmobile(env)
|
10
|
+
request = Rack::Request.new(env)
|
11
|
+
unless @cookie_only
|
12
|
+
sid = request.params[@key]
|
13
|
+
end
|
14
|
+
sid ||= request.cookies[@key]
|
15
|
+
|
16
|
+
sid, session = get_session(env, sid)
|
17
|
+
[sid, session]
|
18
|
+
end
|
19
|
+
alias_method_chain :load_session, :jpmobile
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
session_id = (CGI.parse(cgi.env_table['RAW_POST_DATA'])[key] rescue nil) ||
|
44
|
-
(CGI.parse(ENV['QUERY_STRING'] || cgi.query_string)[key] rescue nil)
|
45
|
-
cgi.params[key] = session_id unless session_id.blank?
|
46
|
-
end
|
47
|
-
initialize_without_session_key_fixation(cgi, options)
|
48
|
-
end
|
49
|
-
end
|
24
|
+
module ActionController
|
25
|
+
# cookie よりも params を先に見るパッチ
|
26
|
+
Session::AbstractStore.send :include, ParamsOverCookie
|
27
|
+
|
28
|
+
class Base #:nodoc:
|
29
|
+
class_inheritable_accessor :trans_sid_mode
|
30
|
+
alias :redirect_to_full_url_without_jpmobile :redirect_to_full_url
|
31
|
+
|
32
|
+
def transit_sid_mode(*args)
|
33
|
+
STDERR.puts "Method transit_sid is now deprecated. Use trans_sid instead."
|
34
|
+
trans_sid_mode(*args)
|
35
|
+
end
|
36
|
+
|
37
|
+
def redirect_to_full_url(url, status)
|
38
|
+
if apply_trans_sid? and !url.match(/#{session_key}/)
|
39
|
+
uri = URI.parse(url)
|
40
|
+
if uri.query
|
41
|
+
uri.query += "&#{session_key}=#{jpmobile_session_id}"
|
42
|
+
else
|
43
|
+
uri.query = "#{session_key}=#{jpmobile_session_id}"
|
50
44
|
end
|
45
|
+
url = uri.to_s
|
51
46
|
end
|
47
|
+
|
48
|
+
redirect_to_full_url_without_jpmobile(url, status)
|
52
49
|
end
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
|
51
|
+
class << self
|
52
|
+
# 2.3.x or higher
|
53
|
+
def trans_sid(mode = :mobile)
|
54
|
+
include Jpmobile::TransSid
|
55
|
+
self.trans_sid_mode = mode
|
56
|
+
end
|
57
|
+
|
58
|
+
def transit_sid(*args)
|
59
|
+
STDERR.puts "Method transit_sid is now deprecated. Use trans_sid instead."
|
60
|
+
trans_sid(*args)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
# trans_sidを適用すべきかを返す。
|
66
|
+
def apply_trans_sid?
|
67
|
+
case trans_sid_mode
|
68
|
+
when :always
|
69
|
+
session.inspect
|
70
|
+
return true
|
71
|
+
when :mobile
|
72
|
+
if request.mobile? and !request.mobile.supports_cookie?
|
73
|
+
session.inspect
|
74
|
+
return true
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
return false
|
56
79
|
end
|
57
80
|
end
|
58
81
|
end
|
@@ -68,19 +91,21 @@ module Jpmobile::TransSid #:nodoc:
|
|
68
91
|
result = super || {}
|
69
92
|
return result unless request # for test process
|
70
93
|
return result unless apply_trans_sid?
|
71
|
-
return result.merge({ session_key =>
|
94
|
+
return result.merge({ session_key => jpmobile_session_id })
|
72
95
|
end
|
73
96
|
|
74
97
|
private
|
75
98
|
# session_keyを返す。
|
76
99
|
def session_key
|
77
|
-
|
78
|
-
|
79
|
-
|
100
|
+
ActionController::Base.session_options.merge(request.session_options || {})[:key]
|
101
|
+
end
|
102
|
+
# session_idを返す
|
103
|
+
def jpmobile_session_id
|
104
|
+
request.session_options[:id] rescue session.session_id
|
80
105
|
end
|
81
106
|
# session_idを埋め込むためのhidden fieldを出力する。
|
82
107
|
def sid_hidden_field_tag
|
83
|
-
"<input type=\"hidden\" name=\"#{CGI::escapeHTML session_key}\" value=\"#{CGI::escapeHTML
|
108
|
+
"<input type=\"hidden\" name=\"#{CGI::escapeHTML session_key}\" value=\"#{CGI::escapeHTML jpmobile_session_id}\" />"
|
84
109
|
end
|
85
110
|
# formにsession_idを追加する。
|
86
111
|
def append_session_id_parameter
|
@@ -88,18 +113,4 @@ module Jpmobile::TransSid #:nodoc:
|
|
88
113
|
return unless apply_trans_sid?
|
89
114
|
response.body.gsub!(%r{(</form>)}i, sid_hidden_field_tag+'\1')
|
90
115
|
end
|
91
|
-
# trans_sidを適用すべきかを返す。
|
92
|
-
def apply_trans_sid?
|
93
|
-
return false unless session_enabled?
|
94
|
-
return false if trans_sid_mode == :none
|
95
|
-
return true if trans_sid_mode == :always
|
96
|
-
if trans_sid_mode == :mobile
|
97
|
-
if request.mobile?
|
98
|
-
return !request.mobile.supports_cookie?
|
99
|
-
else
|
100
|
-
return false
|
101
|
-
end
|
102
|
-
end
|
103
|
-
return false
|
104
|
-
end
|
105
116
|
end
|
@@ -27,15 +27,18 @@ namespace :test do
|
|
27
27
|
end
|
28
28
|
desc "Generate rails app and run jpmobile tests in the app"
|
29
29
|
task :rails, [:versions] do |t, args|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
rails_root = "test/rails/rails_root"
|
31
|
+
relative_root = "../../../"
|
32
|
+
rails_versions = args.versions.split("/") rescue ["2.3.5"]
|
33
|
+
|
34
|
+
puts "Running tests in Rails #{rails_versions.join(', ')}"
|
33
35
|
|
36
|
+
rails_versions.each do |rails_version|
|
37
|
+
puts " for #{rails_version}"
|
34
38
|
# generate rails app
|
35
|
-
rails_root = "test/rails/rails_root"
|
36
39
|
FileUtils.rm_rf(rails_root)
|
37
40
|
FileUtils.mkdir_p(rails_root)
|
38
|
-
system "rails _#{rails_version}_
|
41
|
+
system "rails _#{rails_version}_ --force #{rails_root}"
|
39
42
|
|
40
43
|
# setup jpmobile
|
41
44
|
plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile')
|
@@ -49,11 +52,28 @@ namespace :test do
|
|
49
52
|
FileUtils.cp_r(file, rails_root)
|
50
53
|
end
|
51
54
|
|
55
|
+
# for 2.3.2
|
56
|
+
if rails_version == "2.3.2"
|
57
|
+
FileList["test/rails/2.3.2/*"].each do |file|
|
58
|
+
FileUtils.cp_r(file, rails_root)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# for cookie_only option
|
63
|
+
config_path = File.join(rails_root, 'config', 'environment.rb')
|
64
|
+
File.open(config_path, 'a') do |file|
|
65
|
+
file.write <<-END
|
66
|
+
|
67
|
+
ActionController::Base.session = {:key => "_session_id", :cookie_only => false}
|
68
|
+
END
|
69
|
+
end
|
70
|
+
|
52
71
|
# run tests in rails
|
53
72
|
cd rails_root
|
54
73
|
sh "rake db:migrate"
|
55
74
|
sh "rake spec"
|
75
|
+
|
76
|
+
cd relative_root
|
56
77
|
end
|
57
78
|
end
|
58
79
|
end
|
59
|
-
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby -Ku
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
require 'rubygems'
|
3
4
|
require 'open-uri'
|
4
|
-
require 'kconv'
|
5
5
|
require 'hpricot'
|
6
6
|
require 'pp'
|
7
7
|
|
@@ -12,19 +12,24 @@ user_agents = {}
|
|
12
12
|
(Hpricot(src)/"//div[@id='maincol']//table").each do |table|
|
13
13
|
(table/"tr[@class='acenter']").each do |tr|
|
14
14
|
a = (tr/:td).map {|x| x.inner_text }
|
15
|
+
i = 0
|
15
16
|
if a.size == 7
|
16
|
-
a
|
17
|
+
if a[0] =~ /[A-Z]{1,2}\-\d{2}A/ # iモードブラウザ2.0
|
18
|
+
i = 1
|
19
|
+
else
|
20
|
+
a.shift # remove rowspan
|
21
|
+
end
|
17
22
|
elsif a.size != 6
|
18
23
|
raise "something is wrong"
|
19
24
|
end
|
20
25
|
a[0].sub!(/(.*)/,"")
|
21
26
|
a[0].sub!(/\(.+\)/,"")
|
22
27
|
a[0].sub!(/-/,'') # F-01A -> F01A
|
28
|
+
a[0].sub!(/$/,'3') if i == 1 # iモードブラウザ2.0
|
23
29
|
|
24
|
-
a[3].sub!(/^.*?(\d+×\d+).*$/,'\1')
|
25
|
-
width, height = a[3].split(/×/,2).map{|x| x.to_i}
|
26
|
-
|
27
|
-
case a[5]
|
30
|
+
a[3+i].sub!(/^.*?(\d+×\d+).*$/,'\1')
|
31
|
+
width, height = a[3+i].split(/×/,2).map{|x| x.to_i}
|
32
|
+
case a[5+i]
|
28
33
|
when /^カラー\s*(\d+)色$/
|
29
34
|
color_p = true
|
30
35
|
colors = $1.to_i
|
@@ -1,21 +1,22 @@
|
|
1
1
|
#!/usr/bin/env ruby -Ku
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
# auのwebページからIPリストを抽出する場当たり的なスクリプト。
|
3
4
|
|
4
|
-
require 'kconv'
|
5
5
|
require 'open-uri'
|
6
6
|
require 'pp'
|
7
7
|
require 'rubygems'
|
8
8
|
require 'hpricot'
|
9
|
+
require 'nkf'
|
9
10
|
|
10
11
|
ips = []
|
11
12
|
|
12
|
-
src = open("http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html").read
|
13
|
+
src = NKF.nkf("-m0 -Sw", open("http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html").read)
|
13
14
|
doc = Hpricot(src)
|
14
15
|
(doc/'//table').each do |table|
|
15
16
|
trs = (table/'tr')
|
16
17
|
next if trs.first && (trs.first/'td[2]').inner_text != 'IPアドレス'
|
17
18
|
trs.each do |tr|
|
18
|
-
a = (tr/'td').to_a.map
|
19
|
+
a = (tr/'td').to_a.map{|t| t.inner_text}
|
19
20
|
next if a[1] == 'IPアドレス'
|
20
21
|
ips << a[1..2].join if a[3] != '廃止'
|
21
22
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby -Ku
|
2
2
|
# willcomのwebページからIPリストを抽出する場当たり的なスクリプト。
|
3
3
|
|
4
|
-
require 'kconv'
|
5
4
|
require 'open-uri'
|
6
5
|
require 'pp'
|
6
|
+
require 'nkf'
|
7
7
|
|
8
|
-
src = open("http://www.willcom-inc.com/ja/service/contents_service/create/center_info/index.html").read
|
8
|
+
src = NKF.nkf("-m0 -Sw", open("http://www.willcom-inc.com/ja/service/contents_service/create/center_info/index.html").read)
|
9
9
|
|
10
10
|
src.sub!(%r{^.*<b>Webアクセス時のIPアドレス帯域</b>(.+?)</table>.*$}m, '\\1')
|
11
11
|
ips = src.scan(/(\d+\.\d+\.\d+\.\d+\/\d+)/).flatten
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby -Ku
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
require 'rubygems'
|
3
4
|
require 'open-uri'
|
4
|
-
require 'kconv'
|
5
5
|
require 'hpricot'
|
6
6
|
require 'pp'
|
7
7
|
|
@@ -12,19 +12,24 @@ user_agents = {}
|
|
12
12
|
(Hpricot(src)/"//div[@id='maincol']//table").each do |table|
|
13
13
|
(table/"tr[@class='acenter']").each do |tr|
|
14
14
|
a = (tr/:td).map {|x| x.inner_text }
|
15
|
+
i = 0
|
15
16
|
if a.size == 7
|
16
|
-
a
|
17
|
+
if a[0] =~ /[A-Z]{1,2}\-\d{2}A/ # iモードブラウザ2.0
|
18
|
+
i = 1
|
19
|
+
else
|
20
|
+
a.shift # remove rowspan
|
21
|
+
end
|
17
22
|
elsif a.size != 6
|
18
23
|
raise "something is wrong"
|
19
24
|
end
|
20
25
|
a[0].sub!(/(.*)/,"")
|
21
26
|
a[0].sub!(/\(.+\)/,"")
|
22
27
|
a[0].sub!(/-/,'') # F-01A -> F01A
|
28
|
+
a[0].sub!(/$/,'3') if i == 1 # iモードブラウザ2.0
|
23
29
|
|
24
|
-
a[3].sub!(/^.*?(\d+×\d+).*$/,'\1')
|
25
|
-
width, height = a[3].split(/×/,2).map{|x| x.to_i}
|
26
|
-
|
27
|
-
case a[5]
|
30
|
+
a[3+i].sub!(/^.*?(\d+×\d+).*$/,'\1')
|
31
|
+
width, height = a[3+i].split(/×/,2).map{|x| x.to_i}
|
32
|
+
case a[5+i]
|
28
33
|
when /^カラー\s*(\d+)色$/
|
29
34
|
color_p = true
|
30
35
|
colors = $1.to_i
|