A kernel CVE's exploitability often hangs on code that is not there: a module neither loaded nor shipped, an option the kernel was built without. netOrk's KB precondition vocabulary asks exactly that (kernel_module, kernel_config). Reading it is the same on every Linux host, so the command and its parse live here and a driver supplies only the transport: - KERNEL_FACTS_COMMAND: one read-only POSIX sh line, no privileges. Release, /proc/modules, modules.builtin, modules.dep and the build configuration (/boot/config-* or /proc/config.gz). The report is framed, gzipped and base64-encoded, so nothing in it can look like a shell prompt to a screen-scraping transport, and ~300 kB of configuration crosses as a fifth. - parse_kernel_facts(): a section the command could not print comes back None, never empty -- "could not read" and "read, and nothing there" must stay apart. - module_name(): no path, no .ko suffix, "-" folded to "_", as the kernel does. - KernelFactsMixin, in the template form: get_kernel_facts() is concrete, _run_kernel_facts_command() is the driver's hook. Mixed in by the drivers that can, not by OSDriver -- a Windows host is an OS driver too, and hasattr(driver, "get_kernel_facts") has to stay truthful. - KernelFactsDict in models.py. Version 2.1.0.
66 lines
1.6 KiB
TOML
66 lines
1.6 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "napalm-device-types"
|
|
version = "2.1.0"
|
|
description = "Abstract device-type base classes for NAPALM drivers"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
license = { text = "Apache-2.0" }
|
|
authors = [
|
|
{ name = "Christian Manivong", email = "christian@manivong.de" },
|
|
]
|
|
keywords = [
|
|
"napalm",
|
|
"network",
|
|
"automation",
|
|
"driver",
|
|
"access-point",
|
|
"switch",
|
|
"firewall",
|
|
"hypervisor",
|
|
"storage",
|
|
"nas",
|
|
]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: System Administrators",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: System :: Networking",
|
|
"Topic :: System :: Systems Administration",
|
|
"Typing :: Typed",
|
|
]
|
|
dependencies = [
|
|
"napalm>=4.0",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/chrismanivong/napalm-device-types"
|
|
Repository = "https://github.com/chrismanivong/napalm-device-types"
|
|
Issues = "https://github.com/chrismanivong/napalm-device-types/issues"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest",
|
|
"mypy",
|
|
"build",
|
|
"twine",
|
|
]
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["napalm_device_types*"]
|
|
|
|
[tool.mypy]
|
|
python_version = "3.10"
|
|
strict = true
|
|
ignore_missing_imports = true
|