diff options
| -rw-r--r-- | provider_base/files/service-definitions/provider.json.erb | 5 | ||||
| -rw-r--r-- | provider_base/lib/macros.rb | 1 | ||||
| -rw-r--r-- | provider_base/lib/macros/provider.rb | 20 | ||||
| -rw-r--r-- | provider_base/provider.json | 3 | 
4 files changed, 23 insertions, 6 deletions
| diff --git a/provider_base/files/service-definitions/provider.json.erb b/provider_base/files/service-definitions/provider.json.erb index be8ae484..e51f9c3a 100644 --- a/provider_base/files/service-definitions/provider.json.erb +++ b/provider_base/files/service-definitions/provider.json.erb @@ -6,11 +6,6 @@    )    hsh['domain'] = domain.full_suffix -  # advertise services that are 'user services' and for which there are actually nodes -  hsh['services'] ||= global.services[:service_type => :user_service].field(:name).select do |service| -    nodes_like_me[:services => service].any? -  end -    hsh['api_version'] = "1"    hsh['api_uri'] = ["https://", api.domain, ':', api.port].join diff --git a/provider_base/lib/macros.rb b/provider_base/lib/macros.rb index ecc3e6ba..fdb9a94e 100644 --- a/provider_base/lib/macros.rb +++ b/provider_base/lib/macros.rb @@ -13,3 +13,4 @@ require_relative 'macros/keys'  require_relative 'macros/nodes'  require_relative 'macros/secrets'  require_relative 'macros/stunnel' +require_relative 'macros/provider' diff --git a/provider_base/lib/macros/provider.rb b/provider_base/lib/macros/provider.rb new file mode 100644 index 00000000..84c4e1b8 --- /dev/null +++ b/provider_base/lib/macros/provider.rb @@ -0,0 +1,20 @@ +# +# These macros are intended only for use in provider.json, although they are +# currently loaded in all .json contexts. +# + +module LeapCli +  module Macro + +    # +    # returns an array of the service names, including only those services that +    # are enabled for this environment. +    # +    def enabled_services +      manager.env(self.environment).services[:service_type => :user_service].field(:name).select { |service| +        manager.nodes[:environment => self.environment][:services => service].any? +      } +    end + +  end +end diff --git a/provider_base/provider.json b/provider_base/provider.json index 9b6e73ca..81b2ea98 100644 --- a/provider_base/provider.json +++ b/provider_base/provider.json @@ -14,6 +14,7 @@    "languages": ["en"],    "default_language": "en",    "enrollment_policy": "open", +  "services": "= enabled_services",    "service": {       // bandwidth limit is in Bytes, storage limit is in MB.       // for example: @@ -31,7 +32,7 @@      "bandwidth_limit": 102400,      "allow_free": "= provider.service.levels.select {|l| l['rate'].nil?}.any?",      "allow_paid": "= provider.service.levels.select {|l| !l['rate'].nil?}.any?", -    "allow_anonymous": "= provider.service.levels.select {|l| l['name'] == 'anonymous'}.any?", +    "allow_anonymous": "= provider.service.levels.select {|l| l['name'] == 'anonymous'}.any? && services.include?('openvpn')",      "allow_registration": "= provider.enrollment_policy != 'closed' && provider.service.levels.select {|l| l['name'] != 'anonymous'}.any?",      "allow_limited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'] == 'limited'}.any?",      "allow_unlimited_bandwidth": "= provider.service.levels.select {|l| l['bandwidth'].nil?}.any?" | 
