OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python3
/
dist-packages
/
landscape
/
lib
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/09/2024 07:14:55 AM
rwxr-xr-x
📄
__init__.py
198 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📁
__pycache__
-
05/09/2024 07:14:55 AM
rwxr-xr-x
📄
amp.py
21.24 KB
02/22/2018 02:19:04 PM
rw-r--r--
📁
apt
-
05/09/2024 07:14:55 AM
rwxr-xr-x
📄
bootstrap.py
1.38 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
bpickle.py
6.31 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
cli.py
440 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
cloud.py
1.67 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
compat.py
564 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
config.py
12.15 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
disk.py
4.97 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
encoding.py
545 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
fd.py
751 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
fetch.py
6.49 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
format.py
959 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
fs.py
3.55 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
gpg.py
1.75 KB
11/18/2020 12:06:42 AM
rw-r--r--
📄
hashlib.py
264 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
jiffies.py
1.58 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
juju.py
860 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
lock.py
705 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
log.py
484 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
logging.py
2.47 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
lsb_release.py
893 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
message.py
1.91 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
monitor.py
6.13 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
network.py
8.91 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
persist.py
20.5 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
plugin.py
1.75 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
process.py
6.45 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
reactor.py
8.61 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
schema.py
5.97 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
scriptcontent.py
522 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
sequenceranges.py
5.59 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
store.py
1.38 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
sysstats.py
6.94 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
tag.py
505 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
testing.py
24.08 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
timestamp.py
233 bytes
02/22/2018 02:19:04 PM
rw-r--r--
📄
twisted_util.py
4.37 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
user.py
1.44 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
versioning.py
1.24 KB
02/22/2018 02:19:04 PM
rw-r--r--
📄
vm_info.py
3.2 KB
11/18/2020 12:06:42 AM
rw-r--r--
📄
warning.py
394 bytes
02/22/2018 02:19:04 PM
rw-r--r--
Editing: vm_info.py
Close
""" Network introspection utilities using ioctl and the /proc filesystem. """ import os from landscape.lib.fs import read_text_file DMI_FILES = ("sys_vendor", "chassis_vendor", "bios_vendor", "product_name") def get_vm_info(root_path="/"): """ Return a bytestring with the virtualization type if it's known, an empty bytestring otherwise. It loops through some possible configurations and return a bytestring with the name of the technology being used or None if there's no match """ if _is_vm_openvz(root_path): return b"openvz" if _is_vm_xen(root_path): return b"xen" # Iterate through all dmi *_vendors, as clouds can (and will) customize # sysinfo values. (https://libvirt.org/formatdomain.html#elementsSysinfo) dmi_info_path = os.path.join(root_path, "sys/class/dmi/id") for dmi_info_file in DMI_FILES: dmi_vendor_path = os.path.join(dmi_info_path, dmi_info_file) if not os.path.exists(dmi_vendor_path): continue vendor = _get_vm_by_vendor(dmi_vendor_path) if vendor: return vendor return _get_vm_legacy(root_path) def get_container_info(run_path="/run"): """ Return a string with the type of container the client is running in, if any, an empty string otherwise. """ for filename in ("container_type", "systemd/container"): path = os.path.join(run_path, filename) if os.path.exists(path): return read_text_file(path).strip() return "" def _is_vm_xen(root_path): """Check if the host is virtualized with Xen.""" sys_xen_path = os.path.join(root_path, "sys/bus/xen/devices") # Paravirtualized and HVM instances have device links under the directory return os.path.isdir(sys_xen_path) and os.listdir(sys_xen_path) def _is_vm_openvz(root_path): """Check if the host is virtualized with OpenVZ.""" return os.path.exists(os.path.join(root_path, "proc/vz")) def _get_vm_by_vendor(sys_vendor_path): """Return the VM type byte string (possibly empty) based on the vendor.""" vendor = read_text_file(sys_vendor_path).lower() # Use lower-key string for vendors, since we do case-insentive match. # We need bytes here as required by the message schema. # 2018-01: AWS and DO are now returning custom sys_vendor names # instead of qemu. If this becomes a trend, it may be worth also checking # dmi/id/chassis_vendor which seems to unchanged (bochs). content_vendors_map = ( ("amazon ec2", b"kvm"), ("bochs", b"kvm"), ("digitalocean", b"kvm"), ("google", b"gce"), ("innotek", b"virtualbox"), ("microsoft", b"hyperv"), ("nutanix", b"kvm"), ("openstack", b"kvm"), ("qemu", b"kvm"), ("kvm", b"kvm"), ("vmware", b"vmware")) for name, vm_type in content_vendors_map: if name in vendor: return vm_type return b"" def _get_vm_legacy(root_path): """Check if the host is virtualized looking at /proc/cpuinfo content.""" try: cpuinfo = read_text_file(os.path.join(root_path, "proc/cpuinfo")) except (IOError, OSError): return b"" if "qemu" in cpuinfo: return b"kvm" return b""