jetpack 0.1.0 → 0.1.3

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 (52) hide show
  1. data/.gitignore +2 -1
  2. data/LICENSE +14 -0
  3. data/README.markdown +35 -6
  4. data/Rakefile +14 -3
  5. data/bin/jetpack +39 -6
  6. data/bin_files/launch.erb +16 -0
  7. data/gems/bundler-1.1.0.gem +0 -0
  8. data/jetpack.gemspec +3 -3
  9. data/jetty_files/etc/fake.crt +31 -0
  10. data/jetty_files/etc/fake.jceks +0 -0
  11. data/jetty_files/etc/fake.key +51 -0
  12. data/jetty_files/etc/fake.pem +89 -0
  13. data/jetty_files/etc/jetty.xml.erb +53 -25
  14. data/jetty_files/jetty-init.erb +4 -0
  15. data/lib/jetpack/settings.rb +24 -10
  16. data/script/ci +1 -1
  17. data/spec/bundler_spec.rb +1 -1
  18. data/spec/filter_spec.rb +59 -0
  19. data/spec/rack_spec.rb +40 -0
  20. data/spec/sample_projects/has_gems_via_bundler/config/jetpack.yml +1 -1
  21. data/spec/sample_projects/has_gems_via_bundler_19/config/jetpack.yml +1 -1
  22. data/spec/sample_projects/has_gems_via_bundler_bad_gemfile_lock/config/jetpack.yml +1 -1
  23. data/spec/sample_projects/no_dependencies/config/jetpack.yml +1 -1
  24. data/spec/sample_projects/rack_19/Gemfile +3 -0
  25. data/spec/sample_projects/rack_19/Gemfile.lock +11 -0
  26. data/spec/sample_projects/rack_19/config.ru +8 -0
  27. data/spec/sample_projects/rack_19/config/jetpack.yml +9 -0
  28. data/spec/sample_projects/webapp/config/jetpack.yml +8 -5
  29. data/spec/sample_projects/webapp_filters/Gemfile +3 -0
  30. data/spec/sample_projects/webapp_filters/Gemfile.lock +88 -0
  31. data/spec/sample_projects/webapp_filters/app/controllers/application_controller.rb +5 -0
  32. data/spec/sample_projects/webapp_filters/config.ru +4 -0
  33. data/spec/sample_projects/webapp_filters/config/application.rb +46 -0
  34. data/spec/sample_projects/webapp_filters/config/boot.rb +6 -0
  35. data/spec/sample_projects/webapp_filters/config/environment.rb +5 -0
  36. data/spec/sample_projects/webapp_filters/config/environments/development.rb +25 -0
  37. data/spec/sample_projects/webapp_filters/config/environments/test.rb +35 -0
  38. data/spec/sample_projects/webapp_filters/config/initializers/secret_token.rb +7 -0
  39. data/spec/sample_projects/webapp_filters/config/jetpack.yml +10 -0
  40. data/spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/custom-project-specific-jetty.xml +5 -0
  41. data/spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/template-from-project-jetty.xml.erb +9 -0
  42. data/spec/sample_projects/webapp_filters/config/routes.rb +60 -0
  43. data/spec/sample_projects/webapp_filters/public/index.html +239 -0
  44. data/spec/sample_projects/webapp_filters/script/rails +6 -0
  45. data/spec/spec_helper.rb +0 -7
  46. data/spec/web_spec.rb +25 -9
  47. data/src/java/jetpack/filter/IgnoreUnknownHttpMethodsFilter.java +43 -0
  48. data/src/java/jetpack/filter/ValidUrlFilter.java +62 -0
  49. data/web_inf_files/web.xml.erb +46 -4
  50. metadata +110 -32
  51. data/gems/bundler-1.0.18.gem +0 -0
  52. data/gems/bundler-1.1.rc.gem +0 -0
@@ -0,0 +1,43 @@
1
+ package jetpack.filter;
2
+
3
+ import java.io.IOException;
4
+ import javax.servlet.Filter;
5
+ import javax.servlet.FilterChain;
6
+ import javax.servlet.FilterConfig;
7
+ import javax.servlet.ServletException;
8
+ import javax.servlet.ServletRequest;
9
+ import javax.servlet.ServletResponse;
10
+ import javax.servlet.http.HttpServletRequest;
11
+ import javax.servlet.http.HttpServletResponse;
12
+
13
+ public class IgnoreUnknownHttpMethodsFilter implements Filter {
14
+
15
+ java.util.List<String> allowedMethodList;
16
+
17
+ public void init(FilterConfig filterConfig) throws ServletException {
18
+ allowedMethodList = new java.util.ArrayList<String>();
19
+ allowedMethodList.add("GET");
20
+ allowedMethodList.add("PUT");
21
+ allowedMethodList.add("DELETE");
22
+ allowedMethodList.add("POST");
23
+ allowedMethodList.add("HEAD");
24
+ }
25
+
26
+ public void destroy() {
27
+ allowedMethodList = null;
28
+ }
29
+
30
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
31
+ throws IOException, ServletException {
32
+
33
+ HttpServletRequest req = (HttpServletRequest)request;
34
+
35
+ if ( allowedMethodList.contains(req.getMethod()) ) {
36
+ chain.doFilter(request, response);
37
+ } else {
38
+ HttpServletResponse res = (HttpServletResponse)response;
39
+ res.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
40
+ return;
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,62 @@
1
+ package jetpack.filter;
2
+
3
+ import java.io.IOException;
4
+ import java.util.regex.Pattern;
5
+ import javax.servlet.Filter;
6
+ import javax.servlet.FilterChain;
7
+ import javax.servlet.FilterConfig;
8
+ import javax.servlet.ServletException;
9
+ import javax.servlet.ServletRequest;
10
+ import javax.servlet.ServletResponse;
11
+ import javax.servlet.http.HttpServletRequest;
12
+ import javax.servlet.http.HttpServletResponse;
13
+ import org.apache.commons.validator.routines.RegexValidator;
14
+ import org.apache.commons.validator.routines.UrlValidator;
15
+
16
+ public class ValidUrlFilter implements Filter {
17
+
18
+ UrlValidator urlValidator;
19
+
20
+ public void init(FilterConfig filterConfig) throws ServletException {
21
+ String[] schemes = {"http","https"};
22
+ RegexValidator authorityValidator = new RegexValidator("^([\\p{Alnum}\\-\\.]*)(:\\d*)?(.*)?", false);
23
+ urlValidator = new UrlValidator(schemes, authorityValidator, UrlValidator.ALLOW_LOCAL_URLS);
24
+ }
25
+
26
+ public void destroy() {
27
+ urlValidator = null;
28
+ }
29
+
30
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
31
+ throws IOException, ServletException {
32
+
33
+ HttpServletRequest req = (HttpServletRequest)request;
34
+
35
+ String requestUrl = req.getRequestURL().toString();
36
+ String queryString = req.getQueryString();
37
+ if (queryString != null) {
38
+ requestUrl += "?" + queryString;
39
+ }
40
+
41
+ if (urlValidator.isValid(requestUrl) && isValidQuery(queryString)) {
42
+ chain.doFilter(request, response);
43
+ } else {
44
+ HttpServletResponse res = (HttpServletResponse)response;
45
+ res.sendError(HttpServletResponse.SC_BAD_REQUEST);
46
+ return;
47
+ }
48
+ }
49
+
50
+ // commons validator allows any character in query string, we want to restrict it a bit
51
+ // and not allow unescaped angle brackets for example.
52
+ private static final String QUERY_REGEX = "^([-\\w:@&=~+,.!*'%$_;\\(\\)]*)$";
53
+ private static final Pattern QUERY_PATTERN = Pattern.compile(QUERY_REGEX);
54
+
55
+ protected boolean isValidQuery(String query) {
56
+ if (query == null) {
57
+ return true;
58
+ }
59
+
60
+ return QUERY_PATTERN.matcher(query).matches();
61
+ }
62
+ }
@@ -11,6 +11,12 @@
11
11
  <param-value>1</param-value>
12
12
  </context-param>
13
13
 
14
+ <context-param>
15
+ <param-name>jruby.compat.version</param-name>
16
+ <param-value><%= @settings.ruby_version %></param-value>
17
+ </context-param>
18
+
19
+
14
20
  <context-param>
15
21
  <param-name>rails.root</param-name>
16
22
  <param-value>.</param-value>
@@ -31,17 +37,53 @@
31
37
  <param-value><%= @gem_path %></param-value>
32
38
  </context-param>
33
39
 
40
+ <% if @settings.jetty_filters? %>
41
+ <filter>
42
+ <filter-name>IgnoreUnknownHttpMethodsFilter</filter-name>
43
+ <filter-class>jetpack.filter.IgnoreUnknownHttpMethodsFilter</filter-class>
44
+ </filter>
45
+
46
+ <filter-mapping>
47
+ <filter-name>IgnoreUnknownHttpMethodsFilter</filter-name>
48
+ <url-pattern>/*</url-pattern>
49
+ </filter-mapping>
50
+
34
51
  <filter>
35
- <filter-name>RackFilter</filter-name>
36
- <filter-class>org.jruby.rack.RackFilter</filter-class>
52
+ <filter-name>ValidUrlFilter</filter-name>
53
+ <filter-class>jetpack.filter.ValidUrlFilter</filter-class>
37
54
  </filter>
38
55
 
39
56
  <filter-mapping>
40
- <filter-name>RackFilter</filter-name>
57
+ <filter-name>ValidUrlFilter</filter-name>
41
58
  <url-pattern>/*</url-pattern>
42
59
  </filter-mapping>
60
+ <% end %>
61
+
62
+ <filter>
63
+ <filter-name>GzipFilter</filter-name>
64
+ <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>
65
+ <init-param>
66
+ <param-name>mimeTypes</param-name>
67
+ <param-value>text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml</param-value>
68
+ </init-param>
69
+ </filter>
70
+
71
+ <filter-mapping>
72
+ <filter-name>GzipFilter</filter-name>
73
+ <url-pattern>/*</url-pattern>
74
+ </filter-mapping>
75
+
76
+ <servlet>
77
+ <servlet-name>RackServlet</servlet-name>
78
+ <servlet-class>org.jruby.rack.RackServlet</servlet-class>
79
+ </servlet>
80
+
81
+ <servlet-mapping>
82
+ <servlet-name>RackServlet</servlet-name>
83
+ <url-pattern>/*</url-pattern>
84
+ </servlet-mapping>
43
85
 
44
86
  <listener>
45
- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
87
+ <listener-class><%= @listener %></listener-class>
46
88
  </listener>
47
89
  </web-app>
metadata CHANGED
@@ -1,51 +1,73 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jetpack
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 3
10
+ version: 0.1.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Steve Conover
14
+ - Xavier Shay
15
+ - Taylor Phillips
16
+ - Chris Heisterkamp
9
17
  autorequire:
10
18
  bindir: bin
11
19
  cert_chain: []
12
- date: 2012-01-19 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
20
+
21
+ date: 2013-01-16 00:00:00 Z
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
15
24
  name: bundler
16
- requirement: &2166391640 !ruby/object:Gem::Requirement
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
17
27
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 3
32
+ segments:
33
+ - 0
34
+ version: "0"
22
35
  type: :development
23
- prerelease: false
24
- version_requirements: *2166391640
36
+ version_requirements: *id001
25
37
  description:
26
- email:
38
+ email:
27
39
  - steve@squareup.com
28
- executables:
40
+ - xavier@squareup.com
41
+ - taylor@squareup.com
42
+ - cheister@squareup.com
43
+ executables:
29
44
  - jetpack
30
45
  extensions: []
46
+
31
47
  extra_rdoc_files: []
32
- files:
48
+
49
+ files:
33
50
  - .gitignore
34
51
  - .wrong
35
52
  - Gemfile
36
53
  - Gemfile.lock
54
+ - LICENSE
37
55
  - README.markdown
38
56
  - Rakefile
39
57
  - bin/jetpack
40
58
  - bin_files/.rake_runner.erb
59
+ - bin_files/launch.erb
41
60
  - bin_files/rake.erb
42
61
  - bin_files/ruby.erb
43
- - gems/bundler-1.0.18.gem
44
- - gems/bundler-1.1.rc.gem
62
+ - gems/bundler-1.1.0.gem
45
63
  - gems/jruby-openssl-0.7.4.gem
46
64
  - install_gem.sh
47
65
  - jetpack.gemspec
66
+ - jetty_files/etc/fake.crt
67
+ - jetty_files/etc/fake.jceks
68
+ - jetty_files/etc/fake.key
48
69
  - jetty_files/etc/fake.p12
70
+ - jetty_files/etc/fake.pem
49
71
  - jetty_files/etc/jetty.xml.erb
50
72
  - jetty_files/jetty-init.erb
51
73
  - jetty_files/run/.gitkeep
@@ -55,6 +77,8 @@ files:
55
77
  - script/ci
56
78
  - spec/basics_spec.rb
57
79
  - spec/bundler_spec.rb
80
+ - spec/filter_spec.rb
81
+ - spec/rack_spec.rb
58
82
  - spec/ruby_19_spec.rb
59
83
  - spec/sample_projects/has_gems_via_bundler/Gemfile
60
84
  - spec/sample_projects/has_gems_via_bundler/Gemfile.lock
@@ -70,6 +94,10 @@ files:
70
94
  - spec/sample_projects/has_gems_via_bundler_bad_gemfile_lock/config/jetpack.yml
71
95
  - spec/sample_projects/no_dependencies/Rakefile
72
96
  - spec/sample_projects/no_dependencies/config/jetpack.yml
97
+ - spec/sample_projects/rack_19/Gemfile
98
+ - spec/sample_projects/rack_19/Gemfile.lock
99
+ - spec/sample_projects/rack_19/config.ru
100
+ - spec/sample_projects/rack_19/config/jetpack.yml
73
101
  - spec/sample_projects/webapp/Gemfile
74
102
  - spec/sample_projects/webapp/Gemfile.lock
75
103
  - spec/sample_projects/webapp/app/controllers/application_controller.rb
@@ -86,37 +114,66 @@ files:
86
114
  - spec/sample_projects/webapp/config/routes.rb
87
115
  - spec/sample_projects/webapp/public/index.html
88
116
  - spec/sample_projects/webapp/script/rails
117
+ - spec/sample_projects/webapp_filters/Gemfile
118
+ - spec/sample_projects/webapp_filters/Gemfile.lock
119
+ - spec/sample_projects/webapp_filters/app/controllers/application_controller.rb
120
+ - spec/sample_projects/webapp_filters/config.ru
121
+ - spec/sample_projects/webapp_filters/config/application.rb
122
+ - spec/sample_projects/webapp_filters/config/boot.rb
123
+ - spec/sample_projects/webapp_filters/config/environment.rb
124
+ - spec/sample_projects/webapp_filters/config/environments/development.rb
125
+ - spec/sample_projects/webapp_filters/config/environments/test.rb
126
+ - spec/sample_projects/webapp_filters/config/initializers/secret_token.rb
127
+ - spec/sample_projects/webapp_filters/config/jetpack.yml
128
+ - spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/custom-project-specific-jetty.xml
129
+ - spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/template-from-project-jetty.xml.erb
130
+ - spec/sample_projects/webapp_filters/config/routes.rb
131
+ - spec/sample_projects/webapp_filters/public/index.html
132
+ - spec/sample_projects/webapp_filters/script/rails
89
133
  - spec/spec_helper.rb
90
134
  - spec/suite.rb
91
135
  - spec/web_spec.rb
136
+ - src/java/jetpack/filter/IgnoreUnknownHttpMethodsFilter.java
137
+ - src/java/jetpack/filter/ValidUrlFilter.java
92
138
  - web_inf_files/web.xml.erb
93
139
  homepage: https://github.com/square/jetpack
94
140
  licenses: []
141
+
95
142
  post_install_message:
96
143
  rdoc_options: []
97
- require_paths:
144
+
145
+ require_paths:
98
146
  - lib
99
- required_ruby_version: !ruby/object:Gem::Requirement
147
+ required_ruby_version: !ruby/object:Gem::Requirement
100
148
  none: false
101
- requirements:
102
- - - ! '>='
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- required_rubygems_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ hash: 3
153
+ segments:
154
+ - 0
155
+ version: "0"
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
157
  none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ hash: 3
162
+ segments:
163
+ - 0
164
+ version: "0"
111
165
  requirements: []
166
+
112
167
  rubyforge_project:
113
- rubygems_version: 1.8.10
168
+ rubygems_version: 1.8.24
114
169
  signing_key:
115
170
  specification_version: 3
116
171
  summary: Jetpack prepares your jRuby project for jvm deployment.
117
- test_files:
172
+ test_files:
118
173
  - spec/basics_spec.rb
119
174
  - spec/bundler_spec.rb
175
+ - spec/filter_spec.rb
176
+ - spec/rack_spec.rb
120
177
  - spec/ruby_19_spec.rb
121
178
  - spec/sample_projects/has_gems_via_bundler/Gemfile
122
179
  - spec/sample_projects/has_gems_via_bundler/Gemfile.lock
@@ -132,6 +189,10 @@ test_files:
132
189
  - spec/sample_projects/has_gems_via_bundler_bad_gemfile_lock/config/jetpack.yml
133
190
  - spec/sample_projects/no_dependencies/Rakefile
134
191
  - spec/sample_projects/no_dependencies/config/jetpack.yml
192
+ - spec/sample_projects/rack_19/Gemfile
193
+ - spec/sample_projects/rack_19/Gemfile.lock
194
+ - spec/sample_projects/rack_19/config.ru
195
+ - spec/sample_projects/rack_19/config/jetpack.yml
135
196
  - spec/sample_projects/webapp/Gemfile
136
197
  - spec/sample_projects/webapp/Gemfile.lock
137
198
  - spec/sample_projects/webapp/app/controllers/application_controller.rb
@@ -148,6 +209,23 @@ test_files:
148
209
  - spec/sample_projects/webapp/config/routes.rb
149
210
  - spec/sample_projects/webapp/public/index.html
150
211
  - spec/sample_projects/webapp/script/rails
212
+ - spec/sample_projects/webapp_filters/Gemfile
213
+ - spec/sample_projects/webapp_filters/Gemfile.lock
214
+ - spec/sample_projects/webapp_filters/app/controllers/application_controller.rb
215
+ - spec/sample_projects/webapp_filters/config.ru
216
+ - spec/sample_projects/webapp_filters/config/application.rb
217
+ - spec/sample_projects/webapp_filters/config/boot.rb
218
+ - spec/sample_projects/webapp_filters/config/environment.rb
219
+ - spec/sample_projects/webapp_filters/config/environments/development.rb
220
+ - spec/sample_projects/webapp_filters/config/environments/test.rb
221
+ - spec/sample_projects/webapp_filters/config/initializers/secret_token.rb
222
+ - spec/sample_projects/webapp_filters/config/jetpack.yml
223
+ - spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/custom-project-specific-jetty.xml
224
+ - spec/sample_projects/webapp_filters/config/jetpack_files/vendor/jetty/etc/template-from-project-jetty.xml.erb
225
+ - spec/sample_projects/webapp_filters/config/routes.rb
226
+ - spec/sample_projects/webapp_filters/public/index.html
227
+ - spec/sample_projects/webapp_filters/script/rails
151
228
  - spec/spec_helper.rb
152
229
  - spec/suite.rb
153
230
  - spec/web_spec.rb
231
+ has_rdoc:
Binary file
Binary file