egalite 0.0.7 → 1.0.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.
- data/README.md +19 -0
- data/lib/egalite/version.rb +1 -1
- data/lib/egalite.rb +11 -2
- data/test/test_auth.rb +1 -2
- data/test/test_blank.rb +2 -3
- data/test/test_errorconsole.rb +5 -5
- data/test/test_keitai.rb +2 -2
- data/test/test_m17n.rb +1 -3
- data/test/test_template.rb +11 -0
- metadata +4 -87
- data/auth/basic.rb +0 -32
- data/blank.rb +0 -53
- data/egalite.rb +0 -742
- data/errorconsole.rb +0 -77
- data/helper.rb +0 -251
- data/keitai/keitai.rb +0 -107
- data/keitai/ketai.rb +0 -11
- data/keitai/rack/ketai/carrier/abstract.rb +0 -131
- data/keitai/rack/ketai/carrier/au.rb +0 -78
- data/keitai/rack/ketai/carrier/docomo.rb +0 -80
- data/keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb +0 -1391
- data/keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb +0 -759
- data/keitai/rack/ketai/carrier/emoji/emojidata.rb +0 -836
- data/keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb +0 -1119
- data/keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb +0 -499
- data/keitai/rack/ketai/carrier/iphone.rb +0 -8
- data/keitai/rack/ketai/carrier/softbank.rb +0 -82
- data/keitai/rack/ketai/carrier.rb +0 -17
- data/keitai/rack/ketai/middleware.rb +0 -24
- data/m17n.rb +0 -193
- data/rack/auth/abstract/handler.rb +0 -37
- data/rack/auth/abstract/request.rb +0 -37
- data/rack/auth/basic.rb +0 -58
- data/rack/auth/digest/md5.rb +0 -124
- data/rack/auth/digest/nonce.rb +0 -51
- data/rack/auth/digest/params.rb +0 -55
- data/rack/auth/digest/request.rb +0 -40
- data/rack/builder.rb +0 -80
- data/rack/cascade.rb +0 -41
- data/rack/chunked.rb +0 -49
- data/rack/commonlogger.rb +0 -49
- data/rack/conditionalget.rb +0 -47
- data/rack/config.rb +0 -15
- data/rack/content_length.rb +0 -29
- data/rack/content_type.rb +0 -23
- data/rack/deflater.rb +0 -96
- data/rack/directory.rb +0 -157
- data/rack/etag.rb +0 -32
- data/rack/file.rb +0 -92
- data/rack/handler/cgi.rb +0 -62
- data/rack/handler/evented_mongrel.rb +0 -8
- data/rack/handler/fastcgi.rb +0 -89
- data/rack/handler/lsws.rb +0 -63
- data/rack/handler/mongrel.rb +0 -90
- data/rack/handler/scgi.rb +0 -59
- data/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/rack/handler/thin.rb +0 -18
- data/rack/handler/webrick.rb +0 -73
- data/rack/handler.rb +0 -88
- data/rack/head.rb +0 -19
- data/rack/lint.rb +0 -567
- data/rack/lobster.rb +0 -65
- data/rack/lock.rb +0 -16
- data/rack/logger.rb +0 -20
- data/rack/methodoverride.rb +0 -27
- data/rack/mime.rb +0 -208
- data/rack/mock.rb +0 -190
- data/rack/nulllogger.rb +0 -18
- data/rack/recursive.rb +0 -61
- data/rack/reloader.rb +0 -109
- data/rack/request.rb +0 -273
- data/rack/response.rb +0 -150
- data/rack/rewindable_input.rb +0 -103
- data/rack/runtime.rb +0 -27
- data/rack/sendfile.rb +0 -144
- data/rack/server.rb +0 -271
- data/rack/session/abstract/id.rb +0 -140
- data/rack/session/cookie.rb +0 -90
- data/rack/session/memcache.rb +0 -119
- data/rack/session/pool.rb +0 -100
- data/rack/showexceptions.rb +0 -349
- data/rack/showstatus.rb +0 -106
- data/rack/static.rb +0 -38
- data/rack/urlmap.rb +0 -55
- data/rack/utils.rb +0 -662
- data/rack.rb +0 -81
- data/route.rb +0 -231
- data/sendmail.rb +0 -222
- data/sequel_helper.rb +0 -20
- data/session.rb +0 -132
- data/stringify_hash.rb +0 -63
- data/support.rb +0 -35
- data/template.rb +0 -287
data/README.md
CHANGED
@@ -89,3 +89,22 @@ URL以外で引き渡されるパラメーター(クエリパラメータやPOST
|
|
89
89
|
### フォームへの自動埋め込み
|
90
90
|
|
91
91
|
|
92
|
+
## セキュリティ対応
|
93
|
+
|
94
|
+
### 自動CSRF対策機能
|
95
|
+
|
96
|
+
egaliteには自動でCSRF対策のチェック値を埋め込む機能が付いています。この機能を有効にすると自動でCSRF対策を行うことができます。
|
97
|
+
|
98
|
+
【注意】外部のサイトにフォームを送信するときにセッション情報が送られてしまいますので、外部のサイトにフォームを送る必要があるシステムでは絶対に使わないでください。(そのうち改善します)
|
99
|
+
|
100
|
+
有効にする方法は以下の通りです。
|
101
|
+
|
102
|
+
egalite = Egalite::Handler.new(
|
103
|
+
:db => db,
|
104
|
+
:template_engine => Egalite::CSRFTemplate
|
105
|
+
)
|
106
|
+
|
107
|
+
class Pages < Egalite::CSRFController
|
108
|
+
end
|
109
|
+
|
110
|
+
|
data/lib/egalite/version.rb
CHANGED
data/lib/egalite.rb
CHANGED
@@ -101,7 +101,9 @@ module Egalite
|
|
101
101
|
:subject => 'Critical error at xcream.net'
|
102
102
|
})
|
103
103
|
end
|
104
|
-
|
104
|
+
if @@table
|
105
|
+
@@table.insert(hash) rescue nil
|
106
|
+
end
|
105
107
|
end
|
106
108
|
def write_exception(e, hash)
|
107
109
|
severity = 'exception'
|
@@ -126,6 +128,9 @@ class Controller
|
|
126
128
|
def after_filter_return_value(response) # right after controller
|
127
129
|
response
|
128
130
|
end
|
131
|
+
def after_filter_html(response) # html after template filter
|
132
|
+
response
|
133
|
+
end
|
129
134
|
def after_filter(response) # after filter for final http output
|
130
135
|
response
|
131
136
|
end
|
@@ -330,7 +335,7 @@ class Request
|
|
330
335
|
attr_accessor :session, :cookies, :authorization
|
331
336
|
attr_accessor :language, :method
|
332
337
|
attr_accessor :route, :controller, :action, :params, :path_info, :path_params
|
333
|
-
attr_accessor :controller_class, :action_method
|
338
|
+
attr_accessor :controller_class, :action_method, :inner_path
|
334
339
|
attr_reader :rack_request, :time, :handler
|
335
340
|
|
336
341
|
def initialize(values = {})
|
@@ -583,6 +588,9 @@ class Handler
|
|
583
588
|
inner_dispatch(req,values)[2]
|
584
589
|
}
|
585
590
|
t = Time.now - s
|
591
|
+
|
592
|
+
html = controller.after_filter_html(html)
|
593
|
+
|
586
594
|
@profile_logger.puts "#{Time.now}: view #{t}sec #{controller.class.name}.#{action} (#{req.path_info})" if @profile_logger
|
587
595
|
|
588
596
|
[200,{"Content-Type"=>"text/html"},[html]]
|
@@ -615,6 +623,7 @@ class Handler
|
|
615
623
|
req.controller_class = controller
|
616
624
|
req.action = action_name
|
617
625
|
req.action_method = action
|
626
|
+
req.inner_path = path
|
618
627
|
req.path_params = path_params
|
619
628
|
req.path_info = path_params.join('/')
|
620
629
|
|
data/test/test_auth.rb
CHANGED
data/test/test_blank.rb
CHANGED
data/test/test_errorconsole.rb
CHANGED
@@ -3,9 +3,9 @@ require 'rubygems'
|
|
3
3
|
require 'sequel'
|
4
4
|
require 'test/unit'
|
5
5
|
require 'egalite'
|
6
|
-
require 'helper'
|
7
|
-
require 'auth/basic'
|
8
|
-
require 'errorconsole'
|
6
|
+
require 'egalite/helper'
|
7
|
+
require 'egalite/auth/basic'
|
8
|
+
require 'egalite/errorconsole'
|
9
9
|
|
10
10
|
require 'rack/test'
|
11
11
|
require 'setup'
|
@@ -63,13 +63,13 @@ CREATE TABLE logs (
|
|
63
63
|
def test_group
|
64
64
|
basic_authorize('admin','9999')
|
65
65
|
get "/egalite/error/group/1234"
|
66
|
-
assert_match %r|<li
|
66
|
+
assert_match %r|<li>/hoge</li>\n*<li>hogehoge</li>|, last_response.body
|
67
67
|
end
|
68
68
|
def test_detail
|
69
69
|
basic_authorize('admin','9999')
|
70
70
|
get "/egalite/error/detail/1"
|
71
71
|
assert_not_equal "no record found.", last_response.body
|
72
|
-
assert_match %r|<li>127.0.0.1</li>\n*<li
|
72
|
+
assert_match %r|<li>127.0.0.1</li>\n*<li>/hoge</li>\n*<li>hogehoge</li>|, last_response.body
|
73
73
|
|
74
74
|
get "/egalite/error/detail/100"
|
75
75
|
assert_equal "no record found.", last_response.body
|
data/test/test_keitai.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
$KCODE = 'UTF8'
|
4
4
|
|
5
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__), '..')
|
6
5
|
$LOAD_PATH << File.join(File.dirname(__FILE__))
|
7
6
|
|
8
7
|
require 'rubygems'
|
9
8
|
require 'test/unit'
|
10
9
|
require 'egalite'
|
11
|
-
require 'keitai/keitai'
|
10
|
+
require 'egalite/keitai/keitai'
|
12
11
|
|
13
12
|
require 'rack'
|
14
13
|
require 'rack/multipart'
|
15
14
|
require 'rack/test'
|
15
|
+
require 'rack/ketai'
|
16
16
|
|
17
17
|
require 'kconv'
|
18
18
|
|
data/test/test_m17n.rb
CHANGED
data/test/test_template.rb
CHANGED
@@ -8,7 +8,13 @@ require 'rack/test'
|
|
8
8
|
|
9
9
|
require 'setup'
|
10
10
|
|
11
|
+
$filter = []
|
12
|
+
|
11
13
|
class TemplateController < Egalite::Controller
|
14
|
+
def after_filter_html(html)
|
15
|
+
$filter << req.inner_path
|
16
|
+
html
|
17
|
+
end
|
12
18
|
def get
|
13
19
|
{
|
14
20
|
:val => 'piyo',
|
@@ -70,6 +76,11 @@ class T_Template < Test::Unit::TestCase
|
|
70
76
|
assert last_response.body =~ /group4: 41/
|
71
77
|
assert last_response.body =~ /group4: 42/
|
72
78
|
end
|
79
|
+
def test_filter
|
80
|
+
$filter = []
|
81
|
+
get "/template"
|
82
|
+
assert_equal ["/template/inner", "/template/innerparam/9", "/template/innerparam/5", "/template"], $filter
|
83
|
+
end
|
73
84
|
end
|
74
85
|
|
75
86
|
class T_OnHtmlLoadFilter < Test::Unit::TestCase
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egalite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.7
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shunichi Arai
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-07
|
18
|
+
date: 2013-08-07 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: bundler
|
@@ -75,32 +75,13 @@ files:
|
|
75
75
|
- LICENSE.txt
|
76
76
|
- README.md
|
77
77
|
- Rakefile
|
78
|
-
- auth/basic.rb
|
79
|
-
- blank.rb
|
80
78
|
- egalite.gemspec
|
81
|
-
- egalite.rb
|
82
|
-
- errorconsole.rb
|
83
79
|
- examples/simple/config.ru
|
84
80
|
- examples/simple/example.rb
|
85
81
|
- examples/simple/pages/test.html
|
86
82
|
- examples/simple/run_webrick.rb
|
87
83
|
- examples/simple_db/example_db.rb
|
88
84
|
- examples/simple_db/pages/edit.html
|
89
|
-
- helper.rb
|
90
|
-
- keitai/keitai.rb
|
91
|
-
- keitai/ketai.rb
|
92
|
-
- keitai/rack/ketai/carrier.rb
|
93
|
-
- keitai/rack/ketai/carrier/abstract.rb
|
94
|
-
- keitai/rack/ketai/carrier/au.rb
|
95
|
-
- keitai/rack/ketai/carrier/docomo.rb
|
96
|
-
- keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb
|
97
|
-
- keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb
|
98
|
-
- keitai/rack/ketai/carrier/emoji/emojidata.rb
|
99
|
-
- keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb
|
100
|
-
- keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb
|
101
|
-
- keitai/rack/ketai/carrier/iphone.rb
|
102
|
-
- keitai/rack/ketai/carrier/softbank.rb
|
103
|
-
- keitai/rack/ketai/middleware.rb
|
104
85
|
- lib/egalite.rb
|
105
86
|
- lib/egalite/auth/basic.rb
|
106
87
|
- lib/egalite/blank.rb
|
@@ -129,70 +110,6 @@ files:
|
|
129
110
|
- lib/egalite/support.rb
|
130
111
|
- lib/egalite/template.rb
|
131
112
|
- lib/egalite/version.rb
|
132
|
-
- m17n.rb
|
133
|
-
- rack.rb
|
134
|
-
- rack/auth/abstract/handler.rb
|
135
|
-
- rack/auth/abstract/request.rb
|
136
|
-
- rack/auth/basic.rb
|
137
|
-
- rack/auth/digest/md5.rb
|
138
|
-
- rack/auth/digest/nonce.rb
|
139
|
-
- rack/auth/digest/params.rb
|
140
|
-
- rack/auth/digest/request.rb
|
141
|
-
- rack/builder.rb
|
142
|
-
- rack/cascade.rb
|
143
|
-
- rack/chunked.rb
|
144
|
-
- rack/commonlogger.rb
|
145
|
-
- rack/conditionalget.rb
|
146
|
-
- rack/config.rb
|
147
|
-
- rack/content_length.rb
|
148
|
-
- rack/content_type.rb
|
149
|
-
- rack/deflater.rb
|
150
|
-
- rack/directory.rb
|
151
|
-
- rack/etag.rb
|
152
|
-
- rack/file.rb
|
153
|
-
- rack/handler.rb
|
154
|
-
- rack/handler/cgi.rb
|
155
|
-
- rack/handler/evented_mongrel.rb
|
156
|
-
- rack/handler/fastcgi.rb
|
157
|
-
- rack/handler/lsws.rb
|
158
|
-
- rack/handler/mongrel.rb
|
159
|
-
- rack/handler/scgi.rb
|
160
|
-
- rack/handler/swiftiplied_mongrel.rb
|
161
|
-
- rack/handler/thin.rb
|
162
|
-
- rack/handler/webrick.rb
|
163
|
-
- rack/head.rb
|
164
|
-
- rack/lint.rb
|
165
|
-
- rack/lobster.rb
|
166
|
-
- rack/lock.rb
|
167
|
-
- rack/logger.rb
|
168
|
-
- rack/methodoverride.rb
|
169
|
-
- rack/mime.rb
|
170
|
-
- rack/mock.rb
|
171
|
-
- rack/nulllogger.rb
|
172
|
-
- rack/recursive.rb
|
173
|
-
- rack/reloader.rb
|
174
|
-
- rack/request.rb
|
175
|
-
- rack/response.rb
|
176
|
-
- rack/rewindable_input.rb
|
177
|
-
- rack/runtime.rb
|
178
|
-
- rack/sendfile.rb
|
179
|
-
- rack/server.rb
|
180
|
-
- rack/session/abstract/id.rb
|
181
|
-
- rack/session/cookie.rb
|
182
|
-
- rack/session/memcache.rb
|
183
|
-
- rack/session/pool.rb
|
184
|
-
- rack/showexceptions.rb
|
185
|
-
- rack/showstatus.rb
|
186
|
-
- rack/static.rb
|
187
|
-
- rack/urlmap.rb
|
188
|
-
- rack/utils.rb
|
189
|
-
- route.rb
|
190
|
-
- sendmail.rb
|
191
|
-
- sequel_helper.rb
|
192
|
-
- session.rb
|
193
|
-
- stringify_hash.rb
|
194
|
-
- support.rb
|
195
|
-
- template.rb
|
196
113
|
- test.bat
|
197
114
|
- test/french.html
|
198
115
|
- test/french_msg.html
|
data/auth/basic.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
|
2
|
-
module Egalite
|
3
|
-
module Auth
|
4
|
-
class Basic
|
5
|
-
def self.authorize(req,realm)
|
6
|
-
auth = req.authorization
|
7
|
-
return unauthorized(realm) if auth.blank?
|
8
|
-
(method,credentials) = auth.split(' ', 2)
|
9
|
-
return bad_request if method.downcase != "basic"
|
10
|
-
(username,password) = credentials.unpack("m*").first.split(/:/,2)
|
11
|
-
return unauthorized(realm) unless yield(username,password)
|
12
|
-
true
|
13
|
-
end
|
14
|
-
def self.unauthorized(realm)
|
15
|
-
return [ 401,
|
16
|
-
{ 'Content-Type' => 'text/plain',
|
17
|
-
'Content-Length' => '0',
|
18
|
-
'WWW-Authenticate' => 'Basic realm="%s"' % realm },
|
19
|
-
[]
|
20
|
-
]
|
21
|
-
end
|
22
|
-
def self.bad_request
|
23
|
-
return [ 400,
|
24
|
-
{ 'Content-Type' => 'text/plain',
|
25
|
-
'Content-Length' => '0' },
|
26
|
-
[]
|
27
|
-
]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
data/blank.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# I stole it from ActiveSupport library of Ruby on Rails
|
2
|
-
# (MIT License)
|
3
|
-
|
4
|
-
class Object
|
5
|
-
# An object is blank if it's nil, empty, or a whitespace string.
|
6
|
-
# For example, "", " ", nil, [], and {} are blank.
|
7
|
-
#
|
8
|
-
# This simplifies
|
9
|
-
# if !address.nil? && !address.empty?
|
10
|
-
# to
|
11
|
-
# if !address.blank?
|
12
|
-
def blank?
|
13
|
-
respond_to?(:empty?) ? empty? : !self
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
class NilClass #:nodoc:
|
18
|
-
def blank?
|
19
|
-
true
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class FalseClass #:nodoc:
|
24
|
-
def blank?
|
25
|
-
true
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
class TrueClass #:nodoc:
|
30
|
-
def blank?
|
31
|
-
false
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class Array #:nodoc:
|
36
|
-
alias_method :blank?, :empty?
|
37
|
-
end
|
38
|
-
|
39
|
-
class Hash #:nodoc:
|
40
|
-
alias_method :blank?, :empty?
|
41
|
-
end
|
42
|
-
|
43
|
-
class String #:nodoc:
|
44
|
-
def blank?
|
45
|
-
self !~ /\S/
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class Numeric #:nodoc:
|
50
|
-
def blank?
|
51
|
-
false
|
52
|
-
end
|
53
|
-
end
|