handle unsupported unicode in software names #60
This commit is contained in:
parent
cffc422bd1
commit
57af8e84e1
|
@ -1,3 +1,4 @@
|
|||
import string
|
||||
from time import sleep
|
||||
from loguru import logger
|
||||
from tacticalrmm.celery import app
|
||||
|
@ -80,21 +81,29 @@ def get_installed_software(pk):
|
|||
r = agent.salt_api_cmd(timeout=30, func="pkg.list_pkgs")
|
||||
|
||||
if r == "timeout" or r == "error":
|
||||
logger.error(f"Unable to get installed software on {agent.salt_id}")
|
||||
logger.error(f"Timed out trying to get installed software on {agent.salt_id}")
|
||||
return
|
||||
|
||||
printable = set(string.printable)
|
||||
|
||||
try:
|
||||
software = [{"name": k, "version": v} for k, v in r.items()]
|
||||
except Exception:
|
||||
logger.error(f"Unable to get installed software on {agent.salt_id}")
|
||||
software = [
|
||||
{
|
||||
"name": "".join(filter(lambda x: x in printable, k)),
|
||||
"version": "".join(filter(lambda x: x in printable, v)),
|
||||
}
|
||||
for k, v in r.items()
|
||||
]
|
||||
except Exception as e:
|
||||
logger.error(f"Unable to get installed software on {agent.salt_id}: {e}")
|
||||
return
|
||||
|
||||
if not InstalledSoftware.objects.filter(agent=agent).exists():
|
||||
InstalledSoftware(agent=agent, software=software).save()
|
||||
else:
|
||||
current = InstalledSoftware.objects.filter(agent=agent).get()
|
||||
current.software = software
|
||||
current.save(update_fields=["software"])
|
||||
s = agent.installedsoftware_set.get()
|
||||
s.software = software
|
||||
s.save(update_fields=["software"])
|
||||
|
||||
return "ok"
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import string
|
||||
|
||||
from django.conf import settings
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
|
@ -53,16 +55,24 @@ def refresh_installed(request, pk):
|
|||
elif r == "error":
|
||||
return notify_error("Something went wrong")
|
||||
|
||||
printable = set(string.printable)
|
||||
|
||||
try:
|
||||
software = [{"name": k, "version": v} for k, v in r.items()]
|
||||
software = [
|
||||
{
|
||||
"name": "".join(filter(lambda x: x in printable, k)),
|
||||
"version": "".join(filter(lambda x: x in printable, v)),
|
||||
}
|
||||
for k, v in r.items()
|
||||
]
|
||||
except Exception:
|
||||
return notify_error("Something went wrong")
|
||||
|
||||
if not InstalledSoftware.objects.filter(agent=agent).exists():
|
||||
InstalledSoftware(agent=agent, software=software).save()
|
||||
else:
|
||||
current = InstalledSoftware.objects.filter(agent=agent).get()
|
||||
current.software = software
|
||||
current.save(update_fields=["software"])
|
||||
s = agent.installedsoftware_set.get()
|
||||
s.software = software
|
||||
s.save(update_fields=["software"])
|
||||
|
||||
return Response("ok")
|
||||
|
|
Loading…
Reference in New Issue