diff --git a/ood-portal-generator/lib/ood_portal_generator/view.rb b/ood-portal-generator/lib/ood_portal_generator/view.rb index 608f8e05d1..e14108bec9 100644 --- a/ood-portal-generator/lib/ood_portal_generator/view.rb +++ b/ood-portal-generator/lib/ood_portal_generator/view.rb @@ -1,5 +1,6 @@ require "digest/sha1" require "erb" +require 'socket' module OodPortalGenerator # A view class that renders an OOD portal Apache configuration file @@ -131,13 +132,31 @@ def log_filename(value,log_type) def allowed_hosts config_hosts = [] - config_hosts << @servername unless @servername.nil? + + add_servername_or_ips(config_hosts) config_hosts << @proxy_server unless @proxy_server.nil? config_hosts.concat(@server_aliases) + return nil if config_hosts.empty? + config_hosts.sort.uniq end + def add_servername_or_ips(config_hosts) + # if @servername is nil, they're trying to use ip addresses + if @servername.nil? + config_hosts.concat(ip_addresses) + else + config_hosts << @servername + end + end + + def ip_addresses + Socket.ip_address_list.select(&:ipv4?) + .reject(&:ipv4_loopback?) + .map(&:ip_address) + end + # Helper method to escape IP for maintenance rewrite condition def escape_ip(value) # Value is already escaped diff --git a/ood-portal-generator/spec/application_spec.rb b/ood-portal-generator/spec/application_spec.rb index bcdfdd2c1c..428ece2603 100644 --- a/ood-portal-generator/spec/application_spec.rb +++ b/ood-portal-generator/spec/application_spec.rb @@ -40,6 +40,7 @@ allow(OodPortalGenerator).to receive(:debian?).and_return(false) allow_any_instance_of(OodPortalGenerator::Dex).to receive(:default_secret_path).and_return(dex_secret_path.path) allow(SecureRandom).to receive(:uuid).and_return('83bc78b7-6f5e-4010-9d80-22f328aa6550') + allow(Socket).to receive(:ip_address_list).and_return([Addrinfo.ip("8.8.8.8")]) end after(:each) do diff --git a/ood-portal-generator/spec/fixtures/ood-portal.conf.dex b/ood-portal-generator/spec/fixtures/ood-portal.conf.dex index e6c7e1032f..6fc344cb19 100644 --- a/ood-portal-generator/spec/fixtures/ood-portal.conf.dex +++ b/ood-portal-generator/spec/fixtures/ood-portal.conf.dex @@ -96,7 +96,7 @@ # SetEnv OOD_PUN_STAGE_CMD "sudo /opt/ood/nginx_stage/sbin/nginx_stage" - SetEnv OOD_ALLOWED_HOSTS "example.com" + SetEnv OOD_ALLOWED_HOSTS "8.8.8.8,example.com" # # Below is used for sub-uri's this Open OnDemand portal supports diff --git a/ood-portal-generator/spec/fixtures/ood-portal.conf.maint_with_ips b/ood-portal-generator/spec/fixtures/ood-portal.conf.maint_with_ips index 32e02fb04f..a1e3b83db7 100644 --- a/ood-portal-generator/spec/fixtures/ood-portal.conf.maint_with_ips +++ b/ood-portal-generator/spec/fixtures/ood-portal.conf.maint_with_ips @@ -78,7 +78,7 @@ # SetEnv OOD_PUN_STAGE_CMD "sudo /opt/ood/nginx_stage/sbin/nginx_stage" - SetEnv OOD_ALLOWED_HOSTS "example.com" + SetEnv OOD_ALLOWED_HOSTS "8.8.8.8,example.com" # # Below is used for sub-uri's this Open OnDemand portal supports diff --git a/ood-portal-generator/spec/fixtures/ood-portal.conf.nomaint b/ood-portal-generator/spec/fixtures/ood-portal.conf.nomaint index 61a4c61287..3f41a024e1 100644 --- a/ood-portal-generator/spec/fixtures/ood-portal.conf.nomaint +++ b/ood-portal-generator/spec/fixtures/ood-portal.conf.nomaint @@ -69,7 +69,7 @@ # SetEnv OOD_PUN_STAGE_CMD "sudo /opt/ood/nginx_stage/sbin/nginx_stage" - SetEnv OOD_ALLOWED_HOSTS "example.com" + SetEnv OOD_ALLOWED_HOSTS "8.8.8.8,example.com" # # Below is used for sub-uri's this Open OnDemand portal supports diff --git a/ood-portal-generator/spec/fixtures/output/auth.conf b/ood-portal-generator/spec/fixtures/output/auth.conf index 59c4715b4c..891cd7edba 100644 --- a/ood-portal-generator/spec/fixtures/output/auth.conf +++ b/ood-portal-generator/spec/fixtures/output/auth.conf @@ -76,7 +76,7 @@ # SetEnv OOD_PUN_STAGE_CMD "sudo /opt/ood/nginx_stage/sbin/nginx_stage" - SetEnv OOD_ALLOWED_HOSTS "example.com" + SetEnv OOD_ALLOWED_HOSTS "8.8.8.8,example.com" # # Below is used for sub-uri's this Open OnDemand portal supports diff --git a/ood-portal-generator/spec/fixtures/output/auth_deb.conf b/ood-portal-generator/spec/fixtures/output/auth_deb.conf index 7c23c7d4af..e7a7099f62 100644 --- a/ood-portal-generator/spec/fixtures/output/auth_deb.conf +++ b/ood-portal-generator/spec/fixtures/output/auth_deb.conf @@ -76,7 +76,7 @@ # SetEnv OOD_PUN_STAGE_CMD "sudo /opt/ood/nginx_stage/sbin/nginx_stage" - SetEnv OOD_ALLOWED_HOSTS "example.com" + SetEnv OOD_ALLOWED_HOSTS "8.8.8.8,example.com" # # Below is used for sub-uri's this Open OnDemand portal supports diff --git a/ood-portal-generator/spec/update_ood_portal_spec.rb b/ood-portal-generator/spec/update_ood_portal_spec.rb index 035a703120..ebc1a439b5 100644 --- a/ood-portal-generator/spec/update_ood_portal_spec.rb +++ b/ood-portal-generator/spec/update_ood_portal_spec.rb @@ -35,6 +35,7 @@ allow(OodPortalGenerator).to receive(:apache_group).and_return('apache') allow(OodPortalGenerator).to receive(:debian?).and_return(false) allow(OodPortalGenerator).to receive(:fqdn).and_return('example.com') + allow(Socket).to receive(:ip_address_list).and_return([Addrinfo.ip("8.8.8.8")]) end after(:each) do