diff options
Diffstat (limited to 'provider_base/files')
5 files changed, 115 insertions, 45 deletions
| diff --git a/provider_base/files/service-definitions/eip-service.json.erb b/provider_base/files/service-definitions/eip-service.json.erb deleted file mode 100644 index 8dc7211d..00000000 --- a/provider_base/files/service-definitions/eip-service.json.erb +++ /dev/null @@ -1,37 +0,0 @@ -<%= -  def underscore(words) -    words = words.to_s.dup -    words.downcase! -    words.gsub! /[^a-z]/, '_' -    words -  end - -  hsh = {} -  hsh["serial"] = 1 -  hsh["version"] = 1 -  clusters = {} -  gateways = [] -  global.services['openvpn'].node_list.each_node do |node| -    next if node.vagrant? -    gateway = {} -    gateway["capabilities"] = node.openvpn.pick( -      :ports, :protocols, :user_ips, :adblock, :filter_dns) -    gateway["capabilities"]["transport"] = ["openvpn"] -    gateway["ip_address"] = node.openvpn.gateway_address -    gateway["host"] = node.domain.full -    gateway["cluster"] = underscore(node.openvpn.location) -    gateways << gateway -    clusters[gateway["cluster"]] ||= { -      "name" => gateway["cluster"], -      "label" => {"en" => node.openvpn.location} -    } -  end -  hsh["gateways"] = gateways -  hsh["clusters"] = clusters.values -  hsh["openvpn_configuration"] = { -    "tls-cipher" => "DHE-RSA-AES128-SHA", -    "auth" => "SHA1", -    "cipher" => "AES-128-CBC" -  } -  generate_json hsh -%>
\ No newline at end of file diff --git a/provider_base/files/service-definitions/provider.json.erb b/provider_base/files/service-definitions/provider.json.erb index f26f25a2..5d4c63a0 100644 --- a/provider_base/files/service-definitions/provider.json.erb +++ b/provider_base/files/service-definitions/provider.json.erb @@ -1,20 +1,21 @@  <%= -  hsh = {} -    # grab some fields from provider.json    hsh = global.provider.pick(      :languages, :description, :name, -    :enrollment_policy, :default_language, :domain +    :enrollment_policy, :default_language, :service    ) +  hsh['domain'] = domain.full_suffix -  # advertise services that are 'user services' -  hsh['services'] = global.services[:service_type => :user_service].field(:name) +  # 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 +  hsh['api_uri'] = ["https://", api.domain, ':', api.port].join -  hsh['ca_cert_uri'] = 'https://' + global.provider.domain + '/ca.crt' +  hsh['ca_cert_uri'] = 'https://' + domain.full_suffix + '/ca.crt'    hsh['ca_cert_fingerprint'] = fingerprint(:ca_cert) -  generate_json hsh +  hsh.dump_json  %>
\ No newline at end of file diff --git a/provider_base/files/service-definitions/v1/eip-service.json.erb b/provider_base/files/service-definitions/v1/eip-service.json.erb new file mode 100644 index 00000000..feaea25b --- /dev/null +++ b/provider_base/files/service-definitions/v1/eip-service.json.erb @@ -0,0 +1,48 @@ +<%= +  def underscore(words) +    words = words.to_s.dup +    words.downcase! +    words.gsub! /[^a-z]/, '_' +    words +  end + +  def add_gateway(node, locations, options={}) +    return nil if options[:ip] == 'REQUIRED' +    gateway = {} +    gateway["capabilities"] = node.openvpn.pick(:ports, :protocols, :user_ips, :adblock, :filter_dns) +    gateway["capabilities"]["transport"] = ["openvpn"] +    gateway["host"] = node.domain.full +    gateway["ip_address"] = options[:ip] +    gateway["capabilities"]["limited"] = options[:limited] +    if node['location'] +      location_name = underscore(node.location.name) +      gateway["location"] = location_name +      locations[location_name] ||= node.location +    end +    gateway +  end + +  hsh = {} +  hsh["serial"] = 1 +  hsh["version"] = 1 +  locations = {} +  gateways = [] +  nodes_like_me[:services => 'openvpn'].each_node do |node| +    if node.openvpn.allow_limited && node.openvpn.allow_unlimited +      gateways << add_gateway(node, locations, :ip => node.openvpn.gateway_address, :limited => false) +      gateways << add_gateway(node, locations, :ip => node.openvpn.second_gateway_address, :limited => true) +    elsif node.openvpn.allow_unlimited +      gateways << add_gateway(node, locations, :ip => node.openvpn.gateway_address, :limited => false) +    elsif node.openvpn.allow_limited +      gateways << add_gateway(node, locations, :ip => node.openvpn.gateway_address, :limited => true) +    end +  end +  hsh["gateways"] = gateways.compact +  hsh["locations"] = locations +  hsh["openvpn_configuration"] = { +    "tls-cipher" => "DHE-RSA-AES128-SHA", +    "auth" => "SHA1", +    "cipher" => "AES-128-CBC" +  } +  JSON.sorted_generate hsh +%>
\ No newline at end of file diff --git a/provider_base/files/service-definitions/v1/smtp-service.json.erb b/provider_base/files/service-definitions/v1/smtp-service.json.erb new file mode 100644 index 00000000..60129f5f --- /dev/null +++ b/provider_base/files/service-definitions/v1/smtp-service.json.erb @@ -0,0 +1,29 @@ +<%= +  def underscore(words) +    words = words.to_s.dup +    words.downcase! +    words.gsub! /[^a-z]/, '_' +    words +  end + +  hsh = {} +  hsh["serial"] = 1 +  hsh["version"] = 1 +  locations = {} +  hosts = {} +  nodes_like_me[:services => 'mx'].each_node do |node| +    host = {} +    host["hostname"] = node.domain.full +    host["ip_address"] = node.ip_address +    host["port"] = 25 # hard coded for now, later node.smtp.port +    if node['location'] +      location_name = underscore(node.location.name) +      host["location"] = location_name +      locations[location_name] ||= node.location +    end +    hosts[node.name] = host +  end +  hsh["hosts"] = hosts +  hsh["locations"] = locations +  JSON.sorted_generate hsh +%>
\ No newline at end of file diff --git a/provider_base/files/service-definitions/v1/soledad-service.json.erb b/provider_base/files/service-definitions/v1/soledad-service.json.erb new file mode 100644 index 00000000..0cd1c927 --- /dev/null +++ b/provider_base/files/service-definitions/v1/soledad-service.json.erb @@ -0,0 +1,29 @@ +<%= +  def underscore(words) +    words = words.to_s.dup +    words.downcase! +    words.gsub! /[^a-z]/, '_' +    words +  end + +  hsh = {} +  hsh["serial"] = 1 +  hsh["version"] = 1 +  locations = {} +  hosts = {} +  nodes_like_me[:services => 'soledad'].each_node do |node| +    host = {} +    host["hostname"] = node.domain.full +    host["ip_address"] = node.ip_address +    host["port"] = node.soledad.port +    if node['location'] +      location_name = underscore(node.location.name) +      host["location"] = location_name +      locations[location_name] ||= node.location +    end +    hosts[node.name] = host +  end +  hsh["hosts"] = hosts +  hsh["locations"] = locations +  JSON.sorted_generate hsh +%>
\ No newline at end of file | 
