def check_addon_alteration(self, addon, dir_path, temp_directory):
addon_url = "{}{}.{}.zip".format(self.download_addon_url, addon["name"], addon["version"])
if addon["version"] == "trunk":
addon_url = "{}{}.zip".format(self.download_addon_url, addon["name"])
log.print_cms("default", "To download the addon: " + addon_url, "", 1)
try:
response = requests.get(addon_url)
response.raise_for_status()
if response.status_code == 200:
zip_file = zipfile.ZipFile(io.BytesIO(response.content), 'r')
zip_file.extractall(temp_directory)
zip_file.close()
project_dir = os.path.join(dir_path, self.wp_content, "plugins", addon["name"])
project_dir_hash = dirhash(project_dir, 'sha1')
ref_dir = os.path.join(temp_directory, addon["name"])
ref_dir_hash = dirhash(ref_dir, 'sha1')
if project_dir_hash == ref_dir_hash:
altered = "NO"
log.print_cms("good", "Different from sources : " + altered, "", 1)
else:
altered = "YES"
log.print_cms("alert", "Different from sources : " + altered, "", 1)
ignored = ["css", "img", "js", "fonts", "images"]
dcmp = dircmp(project_dir, ref_dir, ignored)
uCMS.diff_files(dcmp, addon["alterations"], project_dir)
addon["edited"] = altered
if addon["alterations"] is not None:
msg = "[+] For further analysis, archive downloaded here : " + ref_dir
log.print_cms("info", msg, "", 1)
except requests.exceptions.HTTPError as e:
msg = "The download link is not standard. Search manually !"
log.print_cms("alert", msg, "", 1)
addon["notes"] = msg
return msg, e
return altered, None
评论列表
文章目录