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.
Files changed (93) hide show
  1. data/README.md +19 -0
  2. data/lib/egalite/version.rb +1 -1
  3. data/lib/egalite.rb +11 -2
  4. data/test/test_auth.rb +1 -2
  5. data/test/test_blank.rb +2 -3
  6. data/test/test_errorconsole.rb +5 -5
  7. data/test/test_keitai.rb +2 -2
  8. data/test/test_m17n.rb +1 -3
  9. data/test/test_template.rb +11 -0
  10. metadata +4 -87
  11. data/auth/basic.rb +0 -32
  12. data/blank.rb +0 -53
  13. data/egalite.rb +0 -742
  14. data/errorconsole.rb +0 -77
  15. data/helper.rb +0 -251
  16. data/keitai/keitai.rb +0 -107
  17. data/keitai/ketai.rb +0 -11
  18. data/keitai/rack/ketai/carrier/abstract.rb +0 -131
  19. data/keitai/rack/ketai/carrier/au.rb +0 -78
  20. data/keitai/rack/ketai/carrier/docomo.rb +0 -80
  21. data/keitai/rack/ketai/carrier/emoji/ausjisstrtoemojiid.rb +0 -1391
  22. data/keitai/rack/ketai/carrier/emoji/docomosjisstrtoemojiid.rb +0 -759
  23. data/keitai/rack/ketai/carrier/emoji/emojidata.rb +0 -836
  24. data/keitai/rack/ketai/carrier/emoji/softbankutf8strtoemojiid.rb +0 -1119
  25. data/keitai/rack/ketai/carrier/emoji/softbankwebcodetoutf8str.rb +0 -499
  26. data/keitai/rack/ketai/carrier/iphone.rb +0 -8
  27. data/keitai/rack/ketai/carrier/softbank.rb +0 -82
  28. data/keitai/rack/ketai/carrier.rb +0 -17
  29. data/keitai/rack/ketai/middleware.rb +0 -24
  30. data/m17n.rb +0 -193
  31. data/rack/auth/abstract/handler.rb +0 -37
  32. data/rack/auth/abstract/request.rb +0 -37
  33. data/rack/auth/basic.rb +0 -58
  34. data/rack/auth/digest/md5.rb +0 -124
  35. data/rack/auth/digest/nonce.rb +0 -51
  36. data/rack/auth/digest/params.rb +0 -55
  37. data/rack/auth/digest/request.rb +0 -40
  38. data/rack/builder.rb +0 -80
  39. data/rack/cascade.rb +0 -41
  40. data/rack/chunked.rb +0 -49
  41. data/rack/commonlogger.rb +0 -49
  42. data/rack/conditionalget.rb +0 -47
  43. data/rack/config.rb +0 -15
  44. data/rack/content_length.rb +0 -29
  45. data/rack/content_type.rb +0 -23
  46. data/rack/deflater.rb +0 -96
  47. data/rack/directory.rb +0 -157
  48. data/rack/etag.rb +0 -32
  49. data/rack/file.rb +0 -92
  50. data/rack/handler/cgi.rb +0 -62
  51. data/rack/handler/evented_mongrel.rb +0 -8
  52. data/rack/handler/fastcgi.rb +0 -89
  53. data/rack/handler/lsws.rb +0 -63
  54. data/rack/handler/mongrel.rb +0 -90
  55. data/rack/handler/scgi.rb +0 -59
  56. data/rack/handler/swiftiplied_mongrel.rb +0 -8
  57. data/rack/handler/thin.rb +0 -18
  58. data/rack/handler/webrick.rb +0 -73
  59. data/rack/handler.rb +0 -88
  60. data/rack/head.rb +0 -19
  61. data/rack/lint.rb +0 -567
  62. data/rack/lobster.rb +0 -65
  63. data/rack/lock.rb +0 -16
  64. data/rack/logger.rb +0 -20
  65. data/rack/methodoverride.rb +0 -27
  66. data/rack/mime.rb +0 -208
  67. data/rack/mock.rb +0 -190
  68. data/rack/nulllogger.rb +0 -18
  69. data/rack/recursive.rb +0 -61
  70. data/rack/reloader.rb +0 -109
  71. data/rack/request.rb +0 -273
  72. data/rack/response.rb +0 -150
  73. data/rack/rewindable_input.rb +0 -103
  74. data/rack/runtime.rb +0 -27
  75. data/rack/sendfile.rb +0 -144
  76. data/rack/server.rb +0 -271
  77. data/rack/session/abstract/id.rb +0 -140
  78. data/rack/session/cookie.rb +0 -90
  79. data/rack/session/memcache.rb +0 -119
  80. data/rack/session/pool.rb +0 -100
  81. data/rack/showexceptions.rb +0 -349
  82. data/rack/showstatus.rb +0 -106
  83. data/rack/static.rb +0 -38
  84. data/rack/urlmap.rb +0 -55
  85. data/rack/utils.rb +0 -662
  86. data/rack.rb +0 -81
  87. data/route.rb +0 -231
  88. data/sendmail.rb +0 -222
  89. data/sequel_helper.rb +0 -20
  90. data/session.rb +0 -132
  91. data/stringify_hash.rb +0 -63
  92. data/support.rb +0 -35
  93. 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
+
@@ -1,3 +1,3 @@
1
1
  module Egalite
2
- VERSION = "0.0.7"
2
+ VERSION = "1.0.0"
3
3
  end
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
- @@table.insert(hash) if @@table
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
@@ -1,10 +1,9 @@
1
1
  $LOAD_PATH << File.dirname(__FILE__)
2
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..')
3
2
 
4
3
  require 'rubygems'
5
4
  require 'test/unit'
6
5
  require 'egalite'
7
- require 'auth/basic'
6
+ require 'egalite/auth/basic'
8
7
 
9
8
  require 'rack/test'
10
9
 
data/test/test_blank.rb CHANGED
@@ -1,7 +1,6 @@
1
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..')
2
-
1
+ require 'rubygems'
3
2
  require 'test/unit'
4
- require 'blank'
3
+ require 'egalite/blank'
5
4
 
6
5
  class Empty
7
6
  def empty?
@@ -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>/hoge</li>\n*<li>hogehoge</li>|, last_response.body
66
+ assert_match %r|<li>&#x2F;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>/hoge</li>\n*<li>hogehoge</li>|, last_response.body
72
+ assert_match %r|<li>127.0.0.1</li>\n*<li>&#x2F;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
@@ -1,9 +1,7 @@
1
- $LOAD_PATH << File.join(File.dirname(__FILE__), '..')
2
-
3
1
  require 'rubygems'
4
2
  require 'test/unit'
5
3
  require 'egalite'
6
- require 'm17n'
4
+ require 'egalite/m17n'
7
5
 
8
6
  require 'rack/test'
9
7
 
@@ -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: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
+ - 1
7
8
  - 0
8
9
  - 0
9
- - 7
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-11 00:00:00 Z
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