Fix maven_artifact.py when your maven is behind a cloudflare (#53495)

Cloudflare has a feature that checks Browser Integrity Check, when the user agent is not present, it can fail on BIC.

Since we are defining the default value of variable "self.module.params['http_agent']" to None, this will cause that
User-Agent header will not be added, because of the conditional if present on module_utils/urls.py [1]

[1] https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/urls.py#L1135-L1136

This fix will ensure that the "self.module.params['http_agent']" will be defined

URLs:
https://support.cloudflare.com/hc/en-us/articles/200171806-Error-1010-The-owner-of-this-website-has-banned-your-access-based-on-your-browser-s-signature
https://support.cloudflare.com/hc/en-us/articles/200170086-What-does-the-Browser-Integrity-Check-do-
This commit is contained in:
Pedro Magalhães 2019-07-18 23:55:36 +01:00 committed by ansibot
parent 4acbb83c84
commit c010a6d288

View file

@ -297,7 +297,7 @@ class MavenDownloader:
self.base = base
self.local = local
self.headers = headers
self.user_agent = "Maven Artifact Downloader/1.0"
self.user_agent = "Ansible {0} maven_artifact".format(self.module.ansible_version)
self.latest_version_found = None
self.metadata_file_name = "maven-metadata-local.xml" if local else "maven-metadata.xml"
@ -380,7 +380,7 @@ class MavenDownloader:
# Hack to add parameters in the way that fetch_url expects
self.module.params['url_username'] = self.module.params.get('username', '')
self.module.params['url_password'] = self.module.params.get('password', '')
self.module.params['http_agent'] = self.module.params.get('user_agent', None)
self.module.params['http_agent'] = self.user_agent
response, info = fetch_url(self.module, url_to_use, timeout=req_timeout, headers=self.headers)
if info['status'] == 200: