Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def update_rdns(host):
""" Update the reverse DNS for a host
"""
try:
reversedns = str(gethostbyaddr(host.ipaddress)[0])
except (gaierror, herror):
reversedns = 'None'
host.reversedns = reversedns.lower()
try:
host.save()
except DatabaseError as e:
error_message.send(sender=None, text=e)
def fail(self):
""" Records that the mirror has failed
Disables refresh on a mirror if it fails more than 28 times
"""
text = 'No usable mirror found at {0!s}'.format(self.url)
error_message.send(sender=None, text=text)
self.fail_count = self.fail_count + 1
if self.fail_count > 28:
self.refresh = False
text = 'Mirror has failed more than 28 times, disabling refresh'
error_message.send(sender=None, text=text)
mirrors = highest_package.mirror_set.filter(host_repos)
security = False
# If any of the containing repos are security,
# mark the update as security
for mirror in mirrors:
if mirror.repo.security:
security = True
try:
updates = PackageUpdate.objects.all()
with transaction.atomic():
update, c = updates.get_or_create(
oldpackage=package,
newpackage=highest_package,
security=security)
except IntegrityError as e:
error_message.send(sender=None, text=e)
update = updates.get(oldpackage=package,
newpackage=highest_package,
security=security)
except DatabaseError as e:
error_message.send(sender=None, text=e)
try:
with transaction.atomic():
self.updates.add(update)
info_message.send(sender=None, text='{0!s}'.format(update))
return update.id
except IntegrityError as e:
error_message.send(sender=None, text=e)
except DatabaseError as e:
error_message.send(sender=None, text=e)
except Mirror.DoesNotExist:
if repository:
Mirror.objects.create(repo=repository, url=r_url)
else:
unknown.append(r_url)
else:
repository = mirror.repo
if not repository:
repositories = Repository.objects.all()
try:
with transaction.atomic():
repository, c = repositories.get_or_create(name=r_name,
arch=r_arch,
repotype=r_type)
except IntegrityError as e:
error_message.send(sender=None, text=e)
repository = repositories.get(name=r_name,
arch=r_arch,
repotype=r_type)
except DatabaseError as e:
error_message.send(sender=None, text=e)
if r_id and repository.repo_id != r_id:
repository.repo_id = r_id
with transaction.atomic():
repository.save()
for url in unknown:
Mirror.objects.create(repo=repository, url=url)
for mirror in Mirror.objects.filter(repo=repository).values('url'):
if mirror['url'].find('cdn.redhat.com') != -1 or \
def update_errata(force=False):
""" Update CentOS errata from https://cefs.steve-meier.de/
and mark packages that are security updates
"""
data = download_errata_checksum()
expected_checksum = parse_errata_checksum(data)
data = download_errata()
actual_checksum = get_sha1(data)
if actual_checksum != expected_checksum:
e = 'CEFS checksum did not match, skipping errata parsing'
error_message.send(sender=None, text=e)
else:
if data:
parse_errata(bunzip2(data), force)
mark_security_updates()
except IntegrityError as e:
error_message.send(sender=None, text=e)
update = updates.get(oldpackage=package,
newpackage=highest_package,
security=security)
except DatabaseError as e:
error_message.send(sender=None, text=e)
try:
with transaction.atomic():
self.updates.add(update)
info_message.send(sender=None, text='{0!s}'.format(update))
return update.id
except IntegrityError as e:
error_message.send(sender=None, text=e)
except DatabaseError as e:
error_message.send(sender=None, text=e)
def get_sha(checksum_type, data):
""" Returns the checksum of the data. Returns None otherwise.
"""
if checksum_type == 'sha' or checksum_type == 'sha1':
sha = get_sha1(data)
elif checksum_type == 'sha256':
sha = get_sha256(data)
else:
text = 'Unknown checksum type: {0!s}'.format(checksum_type)
error_message.send(sender=None, text=text)
return sha
package is the pseudo package gpg-pubkey, or if it cannot create it
"""
package = None
name = name.lower()
if name == 'gpg-pubkey':
return
if epoch in [None, 0, '0']:
epoch = ''
try:
with transaction.atomic():
package_names = PackageName.objects.all()
p_name, c = package_names.get_or_create(name=name)
except IntegrityError as e:
error_message.send(sender=None, text=e)
p_name = package_names.get(name=name)
except DatabaseError as e:
error_message.send(sender=None, text=e)
package_arches = PackageArchitecture.objects.all()
with transaction.atomic():
p_arch, c = package_arches.get_or_create(name=arch)
try:
with transaction.atomic():
packages = Package.objects.all()
package, c = packages.get_or_create(name=p_name,
arch=p_arch,
epoch=epoch,
version=version,
release=release,
def get_url(url):
""" Perform a http GET on a URL. Return None on error.
"""
res = None
try:
res = requests.get(url, stream=True)
except requests.exceptions.Timeout:
error_message.send(sender=None, text='Timeout - {0!s}'.format(url))
except requests.exceptions.TooManyRedirects:
error_message.send(sender=None,
text='Too many redirects - {0!s}'.format(url))
except requests.exceptions.RequestException as e:
error_message.send(sender=None,
text='Error ({0!s}) - {1!s}'.format(e, url))
return res