diff --git a/attributes/default.rb b/attributes/default.rb index 714d0f4..70456a1 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -1,9 +1,37 @@ node.default['ipfs']['version'] = '0.4.17' node.default['ipfs']['checksum'] = '1bb1050ebe74f9042ac721eb1b71f92e1b0e78e54c59dadfde13080facb2901c' -# Do not contact local network addresses. This will stop platforms like Hetzner -# to block your server (https://github.com/ipfs/go-ipfs/issues/1226) -node.default['ipfs']['config']['swarm']['addr_filter'] = ['/ip4/10.0.0.0/ipcidr/8', '/ip4/100.64.0.0/ipcidr/10', '/ip4/169.254.0.0/ipcidr/16', '/ip4/172.16.0.0/ipcidr/12', '/ip4/192.0.0.0/ipcidr/24', '/ip4/192.0.0.0/ipcidr/29', '/ip4/192.0.0.8/ipcidr/32', '/ip4/192.0.0.170/ipcidr/32', '/ip4/192.0.0.171/ipcidr/32', '/ip4/192.0.2.0/ipcidr/24', '/ip4/192.168.0.0/ipcidr/16', '/ip4/198.18.0.0/ipcidr/15', '/ip4/198.51.100.0/ipcidr/24', '/ip4/203.0.113.0/ipcidr/24', '/ip4/240.0.0.0/ipcidr/4'] node.default['ipfs']['cluster']['version'] = '0.4.0' node.default['ipfs']['cluster']['service']['checksum'] = 'a168e9d3544f53f3d734098533d606b88417f6319bc8f83b1af7ef1328ed246a' node.default['ipfs']['cluster']['ctl']['checksum'] = 'c82ba76b21a6fc42c8c635962a356c51fe6d4d0fbac2a77bfdd159cbe6a56f49' + +node.default['ipfs']['config'] = { + # Do not contact local network addresses. This will stop platforms like Hetzner + # to block your server (https://github.com/ipfs/go-ipfs/issues/1226) + 'Swarm.AddrFilters' => ['/ip4/10.0.0.0/ipcidr/8', + '/ip4/100.64.0.0/ipcidr/10', + '/ip4/169.254.0.0/ipcidr/16', + '/ip4/172.16.0.0/ipcidr/12', + '/ip4/192.0.0.0/ipcidr/24', + '/ip4/192.0.0.0/ipcidr/29', + '/ip4/192.0.0.8/ipcidr/32', + '/ip4/192.0.0.170/ipcidr/32', + '/ip4/192.0.0.171/ipcidr/32', + '/ip4/192.0.2.0/ipcidr/24', + '/ip4/192.168.0.0/ipcidr/16', + '/ip4/198.18.0.0/ipcidr/15', + '/ip4/198.51.100.0/ipcidr/24', + '/ip4/203.0.113.0/ipcidr/24', + '/ip4/240.0.0.0/ipcidr/4'], + # Do not keep track of bandwidth metrics. Disabling bandwidth metrics can + # lead to a slight performance improvement, as well as a reduction in memory + # usage. + 'Swarm.DisableBandwidthMetrics' => true, + # Disable the p2p-circuit relay transport + 'Swarm.DisableRelay' => true, + # Number of connections that, when exceeded, will trigger a connection GC + # operation + 'Swarm.ConnMgr.HighWater' => 10, + # Minimum number of connections to maintain + 'Swarm.ConnMgr.LowWater' => 1, +} diff --git a/metadata.rb b/metadata.rb index a8b7488..1ee7900 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,7 +4,7 @@ maintainer_email 'mail@kosmos.org' license 'MIT' description 'Installs/Configures ipfs' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '0.2.0' +version '0.3.0' supports %w(ubuntu debian) diff --git a/recipes/default.rb b/recipes/default.rb index 91dd18f..73799a6 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -79,30 +79,8 @@ else end end -# Configure ipfs to not contact local network addresses -ipfs_config 'Swarm.AddrFilters' do - value node['ipfs']['config']['swarm']['addr_filter'] -end - -# Do not keep track of bandwidth metrics. Disabling bandwidth metrics can -# lead to a slight performance improvement, as well as a reduction in memory -# usage. -ipfs_config 'Swarm.DisableBandwidthMetrics' do - value true -end - -# Disable the p2p-circuit relay transport -ipfs_config 'Swarm.DisableRelay' do - value true -end - -# Number of connections that, when exceeded, will trigger a connection GC -# operation -ipfs_config 'Swarm.ConnMgr.HighWater' do - value 10 -end - -# Minimum number of connections to maintain -ipfs_config 'Swarm.ConnMgr.LowWater' do - value 1 +node['ipfs']['config'].each do |k, v| + ipfs_config k do + value v + end end diff --git a/test/integration/default/serverspec/ipfs_spec.rb b/test/integration/default/serverspec/ipfs_spec.rb index 7db110d..48cb2b4 100644 --- a/test/integration/default/serverspec/ipfs_spec.rb +++ b/test/integration/default/serverspec/ipfs_spec.rb @@ -1,4 +1,5 @@ require 'serverspec' +require 'json' # Required by serverspec set :backend, :exec @@ -21,4 +22,37 @@ describe 'IPFS' do expect(service('ipfs')).to be_running expect(service('ipfs')).to be_enabled end + + addr_filters = <<-EOF +[ + "/ip4/10.0.0.0/ipcidr/8", + "/ip4/100.64.0.0/ipcidr/10", + "/ip4/169.254.0.0/ipcidr/16", + "/ip4/172.16.0.0/ipcidr/12", + "/ip4/192.0.0.0/ipcidr/24", + "/ip4/192.0.0.0/ipcidr/29", + "/ip4/192.0.0.8/ipcidr/32", + "/ip4/192.0.0.170/ipcidr/32", + "/ip4/192.0.0.171/ipcidr/32", + "/ip4/192.0.2.0/ipcidr/24", + "/ip4/192.168.0.0/ipcidr/16", + "/ip4/198.18.0.0/ipcidr/15", + "/ip4/198.51.100.0/ipcidr/24", + "/ip4/203.0.113.0/ipcidr/24", + "/ip4/240.0.0.0/ipcidr/4" +] + EOF + + { + 'Swarm.AddrFilters' => addr_filters.rstrip, + 'Swarm.DisableBandwidthMetrics' => true, + 'Swarm.DisableRelay' => true, + 'Swarm.ConnMgr.HighWater' => 10, + 'Swarm.ConnMgr.LowWater' => 1, + }.each do |k, v| + describe command("IPFS_PATH=/home/ipfs/.ipfs ipfs config '#{k}'") do + let(:sudo_options) { '-u ipfs -i' } + its(:stdout) { should eq "#{v}\n" } + end + end end