<commit_before>#
# Cookbook Name:: openssh
# Recipe:: default
#
# Copyright 2008-2009, Opscode, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

def listen_addr_for interface, type
  interface_node = node['network']['interfaces'][interface]['addresses']

  interface_node.select { |address, data| data['family'] == type }[0][0]
end

node['openssh']['package_name'].each do |pkg|
  package pkg
end

service "ssh" do
  service_name node['openssh']['service_name']
  supports value_for_platform(
    "debian" => { "default" => [ :restart, :reload, :status ] },
    "ubuntu" => {
      "8.04" => [ :restart, :reload ],
      "default" => [ :restart, :reload, :status ]
    },
    "centos" => { "default" => [ :restart, :reload, :status ] },
    "redhat" => { "default" => [ :restart, :reload, :status ] },
    "fedora" => { "default" => [ :restart, :reload, :status ] },
    "scientific" => { "default" => [ :restart, :reload, :status ] },
    "arch" => { "default" => [ :restart ] },
    "default" => { "default" => [:restart, :reload ] }
  )
  action [ :enable, :start ]
end

sorted_client ||= Hash.new
node['openssh']['client'].sort.map{ |k,v| sorted_client[k] = v }

template "/etc/ssh/ssh_config" do
  source "ssh_config.erb"
  mode '0644'
  owner 'root'
  group 'root'
  variables(:settings => sorted_client)
end

if node['openssh']['listen_interfaces']
  listen_addresses = Array.new.tap do |a|
    node['openssh']['listen_interfaces'].each_pair do |interface, type|
      a << listen_addr_for(interface, type)
    end
  end

  node.set['openssh']['server']['listen_address'] = listen_addresses
end

sorted_server ||= Hash.new
node['openssh']['client'].sort.map{ |k,v| sorted_server[k] = v }

template "/etc/ssh/sshd_config" do<commit_msg>fixed client->server typo<commit_after>#
# Cookbook Name:: openssh
# Recipe:: default
#
# Copyright 2008-2009, Opscode, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

def listen_addr_for interface, type
  interface_node = node['network']['interfaces'][interface]['addresses']

  interface_node.select { |address, data| data['family'] == type }[0][0]
end

node['openssh']['package_name'].each do |pkg|
  package pkg
end

service "ssh" do
  service_name node['openssh']['service_name']
  supports value_for_platform(
    "debian" => { "default" => [ :restart, :reload, :status ] },
    "ubuntu" => {
      "8.04" => [ :restart, :reload ],
      "default" => [ :restart, :reload, :status ]
    },
    "centos" => { "default" => [ :restart, :reload, :status ] },
    "redhat" => { "default" => [ :restart, :reload, :status ] },
    "fedora" => { "default" => [ :restart, :reload, :status ] },
    "scientific" => { "default" => [ :restart, :reload, :status ] },
    "arch" => { "default" => [ :restart ] },
    "default" => { "default" => [:restart, :reload ] }
  )
  action [ :enable, :start ]
end

sorted_client ||= Hash.new
node['openssh']['client'].sort.map{ |k,v| sorted_client[k] = v }

template "/etc/ssh/ssh_config" do
  source "ssh_config.erb"
  mode '0644'
  owner 'root'
  group 'root'
  variables(:settings => sorted_client)
end

if node['openssh']['listen_interfaces']
  listen_addresses = Array.new.tap do |a|
    node['openssh']['listen_interfaces'].each_pair do |interface, type|
      a << listen_addr_for(interface, type)
    end
  end

  node.set['openssh']['server']['listen_address'] = listen_addresses
end

sorted_server ||= Hash.new
node['openssh']['server'].sort.map{ |k,v| sorted_server[k] = v }

template "/etc/ssh/sshd_config" do
{'fraction_non_alphanumeric': 0.16600088770528185, 'fraction_numerical': 0.009320905459387484, 'mean_word_length': 4.252913752913753, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 40, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3261340', 'n_tokens_mistral': 1512, 'n_tokens_neox': 1463, 'n_words': 411}