odania 0.0.16 → 0.0.17
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/Gemfile.lock +63 -21
- data/Guardfile +31 -0
- data/Rakefile +1 -0
- data/config/varnish_config.json +4 -2
- data/lib/odania/{plugin_config/models → config}/backend.rb +1 -1
- data/lib/odania/{plugin_config/models → config}/backend_group.rb +7 -2
- data/lib/odania/config/domain.rb +55 -0
- data/lib/odania/config/duplicates.rb +28 -0
- data/lib/odania/config/global_config.rb +154 -0
- data/lib/odania/config/internal.rb +48 -0
- data/lib/odania/config/layout.rb +35 -0
- data/lib/odania/config/page.rb +28 -0
- data/lib/odania/config/plugin_config.rb +51 -0
- data/lib/odania/config/style.rb +60 -0
- data/lib/odania/config/sub_domain.rb +125 -0
- data/lib/odania/config.rb +16 -0
- data/lib/odania/consul.rb +6 -2
- data/lib/odania/erb.rb +154 -0
- data/lib/odania/plugin.rb +12 -5
- data/lib/odania/plugin_config/{plugin_config.rb → base.rb} +26 -31
- data/lib/odania/varnish/generators/generate_backend_vcl.rb +12 -0
- data/lib/odania/varnish/generators/generate_site_vcl.rb +16 -0
- data/lib/odania/varnish/generators/generate_sites_vcl.rb +0 -4
- data/lib/odania/varnish.rb +11 -12
- data/lib/odania/version.rb +1 -1
- data/lib/odania.rb +7 -1
- data/odania.gemspec +3 -0
- data/spec/fixtures/global_config.json +142 -0
- data/spec/fixtures/plugin_config_1.json +93 -0
- data/spec/lib/odania/config/global_config_spec.rb +67 -0
- data/spec/lib/odania/config/plugin_config_spec.rb +28 -0
- data/spec/lib/odania/erb_spec.rb +16 -0
- data/spec/lib/odania/plugin_spec.rb +25 -0
- data/spec/lib/odania/varnish_spec.rb +37 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/consul_mock.rb +116 -0
- data/tasks/odania.rake +1 -5
- data/templates/varnish/backend.vcl.erb +7 -1
- data/templates/varnish/catch_all.vcl.erb +1 -0
- data/templates/varnish/default.vcl.erb +1 -0
- data/templates/varnish/general.vcl.erb +29 -13
- data/templates/varnish/general_site.vcl.erb +33 -0
- data/templates/varnish/redirects.vcl.erb +1 -0
- data/templates/varnish/site.vcl.erb +18 -8
- data/templates/varnish/sites.vcl.erb +1 -1
- data/templates/varnish/websocker.vcl.erb +1 -0
- metadata +79 -19
- data/lib/odania/plugin_config/models/domain.rb +0 -38
- data/lib/odania/plugin_config/models/layout.rb +0 -31
- data/lib/odania/plugin_config/models/page.rb +0 -23
- data/lib/odania/plugin_config/models/redirect.rb +0 -20
- data/lib/odania/plugin_config/models/sub_domain.rb +0 -99
- data/lib/odania/template/asset.rb +0 -15
- data/lib/odania/template/config.rb +0 -15
- data/lib/odania/template/page.rb +0 -16
- data/lib/odania/template.rb +0 -8
- data/lib/odania/varnish/generators/generate_site_assets_vcl.rb +0 -27
- data/templates/varnish/site_assets.vcl.erb +0 -24
- /data/spec/{odania → lib}/odania_spec.rb +0 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
vcl 4.0;
|
2
|
+
# generated varnish config: <%= ENVIRONMENT %>
|
3
|
+
# local test: <%= LOCAL_TEST_MODE ? 'ENABLED' : 'DISABLED' %>
|
4
|
+
|
5
|
+
sub vcl_recv {
|
6
|
+
std.log("pre varnish log info _general:" + req.http.host);
|
7
|
+
|
8
|
+
<% %w(direct dynamic).each do |type| %>
|
9
|
+
<% general_subdomain[type].each_pair do |url, page| %>
|
10
|
+
if (req.url ~ "^<%= prepare_url url %>") {
|
11
|
+
std.log("general page identified Page:'<%= url %>':" + req.url);
|
12
|
+
|
13
|
+
<% if 'direct'.eql? type %>
|
14
|
+
set req.backend_hint = <%= page.director %>.backend();
|
15
|
+
<% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
|
16
|
+
<% else %>
|
17
|
+
set req.backend_hint = core_backend_director.backend();
|
18
|
+
set req.url = "/template/page?req_url=" + req.url + "&req_host=" + req.http.host + "<%= template_url_for(domain, page) %>";
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
return (hash);
|
22
|
+
}
|
23
|
+
<% end %>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<% general_subdomain.get_redirects.each_pair do |src, target| %>
|
27
|
+
if (req.url ~ "<%= src %>") {
|
28
|
+
std.log("general redirect identified src:'<%= src %>':" + req.url);
|
29
|
+
set req.http.Location = "<%= target %>";
|
30
|
+
return (synth(750, "Permanently moved"));
|
31
|
+
}
|
32
|
+
<% end %>
|
33
|
+
}
|
@@ -3,6 +3,7 @@ is_first = true
|
|
3
3
|
%>
|
4
4
|
vcl 4.0;
|
5
5
|
# generated varnish config: <%= ENVIRONMENT %>
|
6
|
+
# local test: <%= LOCAL_TEST_MODE ? 'ENABLED' : 'DISABLED' %>
|
6
7
|
|
7
8
|
sub vcl_recv {
|
8
9
|
std.log("pre varnish log info '<%= domain.name %>':" + req.http.host);
|
@@ -13,13 +14,22 @@ sub vcl_recv {
|
|
13
14
|
<%= is_first ? '' : 'else ' %>if (req.http.host ~ "^<%= subdomain.name %>.<%= domain.name %>$") {
|
14
15
|
std.log("subdomain identified '<%= subdomain.name %>.<%= domain.name %>':" + req.http.host + " url: " + req.url );
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
<% %w(direct dynamic).each do |type| %>
|
18
|
+
<% subdomain[type].each_pair do |url, page| %>
|
19
|
+
if (req.url ~ "^<%= prepare_url url %>") {
|
20
|
+
std.log("page identified '<%= subdomain.name %>.<%= domain.name %>' Page:'<%= url %>':" + req.url);
|
21
|
+
|
22
|
+
<% if 'direct'.eql? type %>
|
23
|
+
set req.backend_hint = <%= page.director %>.backend();
|
24
|
+
<% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
|
25
|
+
<% else %>
|
26
|
+
set req.backend_hint = core_backend_director.backend();
|
27
|
+
set req.url = "/template/page?req_url=" + req.url + "&req_host=" + req.http.host + "<%= template_url_for(domain, page) %>";
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
return (hash);
|
31
|
+
}
|
32
|
+
<% end %>
|
23
33
|
<% end %>
|
24
34
|
|
25
35
|
<% subdomain.get_redirects.each_pair do |src, target| %>
|
@@ -34,7 +44,7 @@ sub vcl_recv {
|
|
34
44
|
<% is_first = false %>
|
35
45
|
<% end %>
|
36
46
|
|
37
|
-
else {
|
47
|
+
<%= is_first ? '' : 'else' %> {
|
38
48
|
# Redirect to default
|
39
49
|
std.log("varnish log info 'redirect to default':" + req.url);
|
40
50
|
set req.http.Location = "http://<%= default_subdomain_for(domain) %>.<%= domain.name %>" + req.url;
|
@@ -1,10 +1,10 @@
|
|
1
1
|
vcl 4.0;
|
2
2
|
# generated varnish config: <%= ENVIRONMENT %>
|
3
|
+
# local test: <%= LOCAL_TEST_MODE ? 'ENABLED' : 'DISABLED' %>
|
3
4
|
|
4
5
|
# @see https://www.varnish-cache.org/lists/pipermail/varnish-misc/2011-January/005449.html
|
5
6
|
|
6
7
|
# Sites
|
7
8
|
<% domains.each_pair do |domain_name, domain| %>
|
8
9
|
include "/etc/varnish/sites/<%= domain_name %>.vcl";
|
9
|
-
include "/etc/varnish/sites/<%= domain_name %>_assets.vcl";
|
10
10
|
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: odania
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Petersen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: diplomat
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +136,20 @@ dependencies:
|
|
108
136
|
- - ">="
|
109
137
|
- !ruby/object:Gem::Version
|
110
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: deep_merge
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
111
153
|
description: Helper for the odania portal
|
112
154
|
email:
|
113
155
|
- mike@odania-it.de
|
@@ -118,6 +160,7 @@ files:
|
|
118
160
|
- ".gitignore"
|
119
161
|
- Gemfile
|
120
162
|
- Gemfile.lock
|
163
|
+
- Guardfile
|
121
164
|
- LICENSE.txt
|
122
165
|
- README.md
|
123
166
|
- Rakefile
|
@@ -128,42 +171,51 @@ files:
|
|
128
171
|
- features/support/env.rb
|
129
172
|
- features/varnish.feature
|
130
173
|
- lib/odania.rb
|
174
|
+
- lib/odania/config.rb
|
175
|
+
- lib/odania/config/backend.rb
|
176
|
+
- lib/odania/config/backend_group.rb
|
177
|
+
- lib/odania/config/domain.rb
|
178
|
+
- lib/odania/config/duplicates.rb
|
179
|
+
- lib/odania/config/global_config.rb
|
180
|
+
- lib/odania/config/internal.rb
|
181
|
+
- lib/odania/config/layout.rb
|
182
|
+
- lib/odania/config/page.rb
|
183
|
+
- lib/odania/config/plugin_config.rb
|
184
|
+
- lib/odania/config/style.rb
|
185
|
+
- lib/odania/config/sub_domain.rb
|
131
186
|
- lib/odania/consul.rb
|
187
|
+
- lib/odania/erb.rb
|
132
188
|
- lib/odania/plugin.rb
|
133
|
-
- lib/odania/plugin_config/
|
134
|
-
- lib/odania/plugin_config/models/backend_group.rb
|
135
|
-
- lib/odania/plugin_config/models/domain.rb
|
136
|
-
- lib/odania/plugin_config/models/layout.rb
|
137
|
-
- lib/odania/plugin_config/models/page.rb
|
138
|
-
- lib/odania/plugin_config/models/redirect.rb
|
139
|
-
- lib/odania/plugin_config/models/sub_domain.rb
|
140
|
-
- lib/odania/plugin_config/plugin_config.rb
|
141
|
-
- lib/odania/template.rb
|
142
|
-
- lib/odania/template/asset.rb
|
143
|
-
- lib/odania/template/config.rb
|
144
|
-
- lib/odania/template/page.rb
|
189
|
+
- lib/odania/plugin_config/base.rb
|
145
190
|
- lib/odania/varnish.rb
|
146
191
|
- lib/odania/varnish/generators/generate_backend_vcl.rb
|
147
192
|
- lib/odania/varnish/generators/generate_catch_all_vcl.rb
|
148
193
|
- lib/odania/varnish/generators/generate_default_vcl.rb
|
149
194
|
- lib/odania/varnish/generators/generate_general_vcl.rb
|
150
195
|
- lib/odania/varnish/generators/generate_redirects_vcl.rb
|
151
|
-
- lib/odania/varnish/generators/generate_site_assets_vcl.rb
|
152
196
|
- lib/odania/varnish/generators/generate_site_vcl.rb
|
153
197
|
- lib/odania/varnish/generators/generate_sites_vcl.rb
|
154
198
|
- lib/odania/version.rb
|
155
199
|
- odania.gemspec
|
156
|
-
- spec/
|
200
|
+
- spec/fixtures/global_config.json
|
201
|
+
- spec/fixtures/plugin_config_1.json
|
202
|
+
- spec/lib/odania/config/global_config_spec.rb
|
203
|
+
- spec/lib/odania/config/plugin_config_spec.rb
|
204
|
+
- spec/lib/odania/erb_spec.rb
|
205
|
+
- spec/lib/odania/plugin_spec.rb
|
206
|
+
- spec/lib/odania/varnish_spec.rb
|
207
|
+
- spec/lib/odania_spec.rb
|
157
208
|
- spec/spec_helper.rb
|
209
|
+
- spec/support/consul_mock.rb
|
158
210
|
- tasks/odania.rake
|
159
211
|
- tasks/rspec.rake
|
160
212
|
- templates/varnish/backend.vcl.erb
|
161
213
|
- templates/varnish/catch_all.vcl.erb
|
162
214
|
- templates/varnish/default.vcl.erb
|
163
215
|
- templates/varnish/general.vcl.erb
|
216
|
+
- templates/varnish/general_site.vcl.erb
|
164
217
|
- templates/varnish/redirects.vcl.erb
|
165
218
|
- templates/varnish/site.vcl.erb
|
166
|
-
- templates/varnish/site_assets.vcl.erb
|
167
219
|
- templates/varnish/sites.vcl.erb
|
168
220
|
- templates/varnish/websocker.vcl.erb
|
169
221
|
homepage: http://www.odania.com
|
@@ -186,7 +238,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
238
|
version: '0'
|
187
239
|
requirements: []
|
188
240
|
rubyforge_project:
|
189
|
-
rubygems_version: 2.4.
|
241
|
+
rubygems_version: 2.4.8
|
190
242
|
signing_key:
|
191
243
|
specification_version: 4
|
192
244
|
summary: Helper for the odania portal
|
@@ -196,5 +248,13 @@ test_files:
|
|
196
248
|
- features/step_definitions/varnish_steps.rb
|
197
249
|
- features/support/env.rb
|
198
250
|
- features/varnish.feature
|
199
|
-
- spec/
|
251
|
+
- spec/fixtures/global_config.json
|
252
|
+
- spec/fixtures/plugin_config_1.json
|
253
|
+
- spec/lib/odania/config/global_config_spec.rb
|
254
|
+
- spec/lib/odania/config/plugin_config_spec.rb
|
255
|
+
- spec/lib/odania/erb_spec.rb
|
256
|
+
- spec/lib/odania/plugin_spec.rb
|
257
|
+
- spec/lib/odania/varnish_spec.rb
|
258
|
+
- spec/lib/odania_spec.rb
|
200
259
|
- spec/spec_helper.rb
|
260
|
+
- spec/support/consul_mock.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
module PluginConfig
|
3
|
-
class Domain
|
4
|
-
attr_accessor :name, :subdomains
|
5
|
-
|
6
|
-
def initialize(name)
|
7
|
-
self.name = name
|
8
|
-
self.subdomains = Hash.new { |hash, key| hash[key] = SubDomain.new(key) }
|
9
|
-
end
|
10
|
-
|
11
|
-
def add_subdomain(subdomain_name)
|
12
|
-
self.subdomains[subdomain_name]
|
13
|
-
end
|
14
|
-
|
15
|
-
def dump
|
16
|
-
subdomain_data = {}
|
17
|
-
subdomains.each_pair do |name, subdomain|
|
18
|
-
subdomain_data[name] = subdomain.dump
|
19
|
-
end
|
20
|
-
|
21
|
-
{
|
22
|
-
'name' => name,
|
23
|
-
'subdomains' => subdomain_data
|
24
|
-
}
|
25
|
-
end
|
26
|
-
|
27
|
-
def load(data)
|
28
|
-
self.name = data['name']
|
29
|
-
|
30
|
-
unless data['subdomains'].nil?
|
31
|
-
data['subdomains'].each_pair do |name, data|
|
32
|
-
self.subdomains[name].load(data)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
module PluginConfig
|
3
|
-
class Layout
|
4
|
-
attr_accessor :config
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
@plugins = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def set_config(config, plugin_name)
|
11
|
-
result = true
|
12
|
-
self.config = config
|
13
|
-
result = false unless @plugins.empty?
|
14
|
-
@plugins << plugin_name
|
15
|
-
result
|
16
|
-
end
|
17
|
-
|
18
|
-
def plugins
|
19
|
-
@plugins
|
20
|
-
end
|
21
|
-
|
22
|
-
def dump
|
23
|
-
config
|
24
|
-
end
|
25
|
-
|
26
|
-
def load(data)
|
27
|
-
self.config = data
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
module PluginConfig
|
3
|
-
class Page
|
4
|
-
attr_accessor :group_name, :plugin_url
|
5
|
-
|
6
|
-
def dump
|
7
|
-
{
|
8
|
-
'group_name' => group_name,
|
9
|
-
'plugin_url' => plugin_url
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def load(data)
|
14
|
-
self.group_name = data['group_name']
|
15
|
-
self.plugin_url = data['plugin_url']
|
16
|
-
end
|
17
|
-
|
18
|
-
def director
|
19
|
-
"#{Odania.varnish_sanitize(group_name)}_director"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
module PluginConfig
|
3
|
-
class Redirect
|
4
|
-
attr_accessor :src, :target, :plugins
|
5
|
-
|
6
|
-
def initialize(src)
|
7
|
-
self.src = src
|
8
|
-
self.plugins = []
|
9
|
-
end
|
10
|
-
|
11
|
-
def add(target, plugin_name)
|
12
|
-
self.target = target
|
13
|
-
self.plugins << plugin_name
|
14
|
-
|
15
|
-
return false if self.plugins.count > 1
|
16
|
-
true
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
module PluginConfig
|
3
|
-
class SubDomain
|
4
|
-
attr_accessor :name, :pages, :config, :assets, :from_plugin
|
5
|
-
|
6
|
-
def initialize(name)
|
7
|
-
self.name = name
|
8
|
-
self.config = {}
|
9
|
-
self.from_plugin = {:config => Hash.new { |hash, key| hash[key] = [] }}
|
10
|
-
self.pages = Hash.new { |hash, key| hash[key] = Page.new }
|
11
|
-
self.assets = Hash.new { |hash, key| hash[key] = Page.new }
|
12
|
-
@plugins = {:page => Hash.new { |hash, key| hash[key] = [] }, :asset => Hash.new { |hash, key| hash[key] = [] }}
|
13
|
-
end
|
14
|
-
|
15
|
-
def set_config(config_data, group_name)
|
16
|
-
errors = []
|
17
|
-
config_data.each_pair do |key, val|
|
18
|
-
from_plugin[:config][key] << group_name
|
19
|
-
errors << {:type => :config, :plugins => from_plugin[:config][key], :key => key} unless config[key].nil?
|
20
|
-
config[key] = val
|
21
|
-
end
|
22
|
-
errors
|
23
|
-
end
|
24
|
-
|
25
|
-
def add_page(web_url, group_name, plugin_url, plugin_name)
|
26
|
-
result = true
|
27
|
-
result = false unless self.assets.key? web_url
|
28
|
-
self.pages[web_url].group_name = group_name
|
29
|
-
self.pages[web_url].plugin_url = plugin_url
|
30
|
-
@plugins[:page][web_url] << plugin_name
|
31
|
-
result
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_asset(web_url, group_name, plugin_url, plugin_name)
|
35
|
-
result = true
|
36
|
-
result = false unless self.assets.key? web_url
|
37
|
-
self.assets[web_url].group_name = group_name
|
38
|
-
self.assets[web_url].plugin_url = plugin_url
|
39
|
-
@plugins[:asset][web_url] << plugin_name
|
40
|
-
result
|
41
|
-
end
|
42
|
-
|
43
|
-
def get_redirects
|
44
|
-
return {} if self.config.nil?
|
45
|
-
return {} if self.config['redirects'].nil?
|
46
|
-
self.config['redirects']
|
47
|
-
end
|
48
|
-
|
49
|
-
def plugins(type, key)
|
50
|
-
@plugins[type][key]
|
51
|
-
end
|
52
|
-
|
53
|
-
def dump
|
54
|
-
page_data = {}
|
55
|
-
pages.each_pair do |web_url, page|
|
56
|
-
page_data[web_url] = page.dump
|
57
|
-
end
|
58
|
-
|
59
|
-
asset_data = {}
|
60
|
-
assets.each_pair do |web_url, page|
|
61
|
-
asset_data[web_url] = page.dump
|
62
|
-
end
|
63
|
-
|
64
|
-
{
|
65
|
-
'name' => name,
|
66
|
-
'config' => config,
|
67
|
-
'pages' => page_data,
|
68
|
-
'assets' => asset_data
|
69
|
-
}
|
70
|
-
end
|
71
|
-
|
72
|
-
def load(data)
|
73
|
-
reset
|
74
|
-
self.config = data['config']
|
75
|
-
|
76
|
-
unless data['pages'].nil?
|
77
|
-
data['pages'].each_pair do |name, data|
|
78
|
-
self.pages[name].load(data)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
unless data['assets'].nil?
|
83
|
-
data['assets'].each_pair do |name, data|
|
84
|
-
self.assets[name].load(data)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def reset
|
92
|
-
self.from_plugin = {:config => Hash.new { |hash, key| hash[key] = [] }}
|
93
|
-
self.pages = Hash.new { |hash, key| hash[key] = Page.new }
|
94
|
-
self.assets = Hash.new { |hash, key| hash[key] = Page.new }
|
95
|
-
@plugins = {:page => Hash.new { |hash, key| hash[key] = [] }, :asset => Hash.new { |hash, key| hash[key] = [] }}
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
data/lib/odania/template/page.rb
DELETED
data/lib/odania/template.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module Odania
|
2
|
-
class GenerateSiteAssetsVcl
|
3
|
-
attr_accessor :domain, :assets, :template
|
4
|
-
|
5
|
-
def initialize(domain)
|
6
|
-
self.domain = domain
|
7
|
-
self.template = File.new("#{BASE_DIR}/templates/varnish/site_assets.vcl.erb").read
|
8
|
-
|
9
|
-
self.assets = Hash.new { |hash, key| hash[key] = Odania::PluginConfig::SubDomain.new(key) }
|
10
|
-
domain.subdomains.each_pair do |subdomain_name, subdomain|
|
11
|
-
asset_domain = subdomain.config['asset_url'].nil? ? "#{subdomain.name}.#{domain.name}" : subdomain.config['asset_url']
|
12
|
-
|
13
|
-
subdomain.assets.each_pair do |src, page|
|
14
|
-
self.assets[asset_domain].assets[src] = page
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def render
|
20
|
-
Erubis::Eruby.new(self.template).result(binding)
|
21
|
-
end
|
22
|
-
|
23
|
-
def write(out_dir)
|
24
|
-
File.write("#{out_dir}/sites/#{self.domain.name}_assets.vcl", self.render)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
is_first = true
|
3
|
-
%>
|
4
|
-
vcl 4.0;
|
5
|
-
# generated varnish config: <%= ENVIRONMENT %>
|
6
|
-
|
7
|
-
sub vcl_recv {
|
8
|
-
<% assets.each_pair do |asset_domain, subdomain| %>
|
9
|
-
<%= is_first ? '' : 'else ' %>if (req.http.host ~ "^<%= asset_domain %>$") {
|
10
|
-
std.log("subdomain identified assets '<%= asset_domain %>':" + req.http.host + " url: " + req.url );
|
11
|
-
|
12
|
-
<% subdomain.assets.each_pair do |src, page| %>
|
13
|
-
if (req.url ~ "^<%= src %>") {
|
14
|
-
std.log("page identified assets '<%= asset_domain %>' Page:'<%= src %>':" + req.url);
|
15
|
-
|
16
|
-
set req.backend_hint = <%= page.director %>.backend();
|
17
|
-
<% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
|
18
|
-
}
|
19
|
-
<% end %>
|
20
|
-
|
21
|
-
}
|
22
|
-
<% is_first = false %>
|
23
|
-
<% end %>
|
24
|
-
}
|
File without changes
|