diff --git a/Rakefile b/Rakefile index 6bd93497..fa7b10ae 100644 --- a/Rakefile +++ b/Rakefile @@ -65,13 +65,27 @@ task :update_blocked_ips => [:environment] do end end -desc 'Compile domain map for nginx' -task :compile_domain_map => [:environment] do +desc 'Compile nginx mapfiles' +task :compile_nginx_mapfiles => [:environment] do File.open('./files/map.txt', 'w') do |file| - Site.exclude(domain: nil).exclude(domain: '').select(:username,:domain).all.collect do |site| + Site.exclude(domain: nil).exclude(domain: '').select(:username,:domain).all.each do |site| file.write ".#{site.values[:domain]} #{site.username};\n" end end + + File.open('./files/supporter-map.txt', 'w') do |file| + file.write "hostnames;\n" + file.write "default 0;\n" + Site.select(:username, :domain).exclude(plan_type: 'free').exclude(plan_type: nil).all.each do |parent_site| + sites = [parent_site] + parent_site.children + sites.each do |site| + file.write "#{site.username}.neocities.org 1;\n" + unless site.host.match(/\.neocities\.org$/) + file.write ".#{site.values[:domain]} 1;\n" + end + end + end + end end desc 'Produce SSL config package for proxy' diff --git a/models/site.rb b/models/site.rb index 6202c4a0..f7fd2ba5 100644 --- a/models/site.rb +++ b/models/site.rb @@ -1052,7 +1052,7 @@ class Site < Sequel::Model ((total_space_used.to_f / maximum_space) * 100).round(1) end - # Note: Change Stat#prune! if you change this business logic. + # Note: Change Stat#prune! and the nginx map compiler if you change this business logic. def supporter? owner.plan_type != 'free' end @@ -1078,7 +1078,7 @@ class Site < Sequel::Model !values[:plan_type].match(/plan_/).nil? end - # Note: Change Stat#prune! if you change this business logic. + # Note: Change Stat#prune! and the nginx map compiler if you change this business logic. def plan_type return 'supporter' if owner.values[:paypal_active] == true return 'free' if owner.values[:plan_type].nil?