# # Author:: Kyle McGovern () # Cookbook Name:: java # Recipe:: oracle_jce # # Copyright 2014, Kyle McGovern # # 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. include_recipe 'java::set_attributes_from_version' jdk_version = node['java']['jdk_version'].to_s jce_url = node['java']['oracle']['jce'][jdk_version]['url'] jce_checksum = node['java']['oracle']['jce'][jdk_version]['checksum'] jce_cookie = node['java']['oracle']['accept_oracle_download_terms'] ? 'oraclelicense=accept-securebackup-cookie;gpw_e24=http://edelivery.oracle.com' : '' if jce_checksum =~ /^[0-9a-f]{32}$/ checksum_bin = "md5sum" else checksum_bin = "sha256sum" end package "unzip" package "curl" directory ::File.join(node['java']['oracle']['jce']['home'],jdk_version) do mode '0755' recursive true end execute 'download jce' do command <<-EOF rm -rf #{Chef::Config[:file_cache_path]}/java_jce mkdir -p #{Chef::Config[:file_cache_path]}/java_jce cd #{Chef::Config[:file_cache_path]}/java_jce curl -L --cookie '#{jce_cookie}' -o jce.zip #{jce_url} # fail the resource if the checksum does not match # this should only happen if oracle download terms are not accepted and downloading directly from oracle echo "#{jce_checksum} jce.zip" | #{checksum_bin} -c >/dev/null EOF # if jar is already in the right location then don't need to download the JCE again not_if { ::File.exist?( ::File.join(node['java']['oracle']['jce']['home'], jdk_version,'US_export_policy.jar') ) } end execute 'extract jce' do command <<-EOF unzip -o jce.zip find -name '*.jar' | xargs -I JCE_JAR mv JCE_JAR #{node['java']['oracle']['jce']['home']}/#{jdk_version}/ EOF cwd "#{Chef::Config[:file_cache_path]}/java_jce" creates ::File.join(node['java']['oracle']['jce']['home'], jdk_version,'US_export_policy.jar') end %w(local_policy.jar US_export_policy.jar).each do |jar| jar_path = ::File.join(node['java']['java_home'], 'jre', 'lib', 'security', jar) # remove the jars already in the directory file jar_path do action :delete not_if {::File.symlink? jar_path} end link jar_path do to ::File.join(node['java']['oracle']['jce']['home'], jdk_version, jar) end end