Этот документ описывает все публичные классы и функции, экспортируемые пакетом
gpoa_lib. Обзор высокого уровня см. в README.md; инструкции по разработке
плагинов --- в PLUGIN_DEVELOPMENT_GUIDE.md.
- Result
- StorageAdapter
- StorageWriter
- ApplierRunner
- plugin (абстрактный базовый класс)
- FrontendPlugin
- applier_frontend
- DualContextApplier
- plugin_manager
- Dconf_registry
- GppStateManager
- DynamicAttributes / RegistryKeyMetadata
- Типы данных
- Фильтры (FilterChecker)
- Вспомогательные функции
- Функции путей
from gpoa_lib import (
Result,
StorageAdapter,
StorageWriter,
ApplierRunner,
FrontendPlugin,
applier_frontend,
DualContextApplier,
Dconf_registry,
GppStateManager,
DynamicAttributes,
RegistryKeyMetadata,
)gpoa_lib.result.Result
Типобезопасная обёртка возвращаемых значений для операций gpoa_lib.
Следует тому же шаблону, что и Result в Rust/Go: успешные операции
несут data, неудачные --- error.
Result(ok, data=None, error=None)| Параметр | Тип | Описание |
|---|---|---|
ok |
bool |
Успешность операции. |
data |
any | Данные при успешном результате. |
error |
str |
Описание ошибки при неудаче. |
Создать успешный результат.
Возвращает: Result
Создать неудачный результат.
| Параметр | Тип | Описание |
|---|---|---|
error |
str или Exception |
Описание ошибки. |
Возвращает: Result
| Атрибут | Тип | Описание |
|---|---|---|
ok |
bool |
True при успехе, False при неудаче. |
data |
any | Данные (имеют смысл только при ok=True). |
error |
str |
Строка ошибки (имеет смысл только при ok=False). |
result = runner.run('control')
if result:
print('Применено:', result.data)
else:
print('Ошибка:', result.error)gpoa_lib.storage.storage_adapter.StorageAdapter
Легковесный автономный читатель данных политик. Загружает данные реестра из
бинарной базы dconf или из обычного словаря Python и предоставляет тот же
интерфейс запросов, который ожидают встроенные применители (filter_hklm_entries,
get_entry и т.д.). В отличие от Dconf_registry, не хранит глобальное
состояние.
StorageAdapter(db_name=None, uid=None, prefix=None, keys=None, data=None)| Параметр | Тип | Описание |
|---|---|---|
db_name |
str или None |
Имя файла базы данных в /etc/dconf/db/. |
uid |
int или None |
UID пользователя; при указании определяется пользовательский путь dconf. |
prefix |
str или None |
Префикс пути реестра; сохраняются только ключи под этим префиксом. |
keys |
list[str] или None |
Точные пути ключей реестра для извлечения. |
data |
dict или None |
Словарь для использования напрямую (без доступа к dconf). |
Должен быть указан только один из параметров db_name или data. Не более
одного из prefix или keys.
Создать адаптер из обычного словаря Python.
adapter = StorageAdapter.from_dict({
'Software/BaseALT/Policies/Control': {
'sshd-gssapi-auth': '1',
}
})| Параметр | Тип | Описание |
|---|---|---|
data |
dict |
Вложенный словарь, сопоставляющий пути реестра с {имя: значение}. |
Возвращает: StorageAdapter
Загрузить данные политик из бинарной базы dconf.
adapter = StorageAdapter.from_dconf_db('policy')
adapter = StorageAdapter.from_dconf_db('policy', uid=1000)| Параметр | Тип | Описание |
|---|---|---|
db_name |
str |
Имя файла базы данных в /etc/dconf/db/. |
uid |
int |
Необязательный UID пользователя. Читает /etc/dconf/db/policy{uid}. |
Возвращает: StorageAdapter
Требует: пакеты GObject Introspection для GVdb и GLib.
Разрешение путей:
from_dconf_db('policy')→/etc/dconf/db/policyfrom_dconf_db('policy', uid=1000)→/etc/dconf/db/policy1000from_dconf_db('local')→/etc/dconf/db/local
Загрузить из базы dconf, оставив только ключи под указанным префиксом.
adapter = StorageAdapter.from_dconf_db_prefix('policy',
'Software/BaseALT/Policies/Control')| Параметр | Тип | Описание |
|---|---|---|
db_name |
str |
Имя файла базы данных в /etc/dconf/db/. |
prefix |
str |
Префикс пути реестра для фильтрации. |
uid |
int |
Необязательный UID пользователя. |
Возвращает: StorageAdapter
Загрузить из базы dconf, оставив только перечисленные ключи.
adapter = StorageAdapter.from_dconf_db_keys('policy', [
'Software/BaseALT/Policies/Control/sshd-gssapi-auth',
'Software/BaseALT/Policies/Control/ldap-tls-check',
])| Параметр | Тип | Описание |
|---|---|---|
db_name |
str |
Имя файла базы данных в /etc/dconf/db/. |
keys |
list[str] |
Точные пути ключей реестра для извлечения. |
uid |
int |
Необязательный UID пользователя. |
Возвращает: StorageAdapter
Возвращает список объектов PregDconf, имя ключа которых начинается с
startswith. Завершающий символ % в startswith удаляется перед
сопоставлением.
for entry in adapter.filter_hklm_entries('Software/BaseALT/Policies/Control'):
print(entry.keyname, entry.valuename, entry.data)| Параметр | Тип | Описание |
|---|---|---|
startswith |
str |
Префикс пути реестра. Завершающий % допускается и удаляется. |
Возвращает: list[PregDconf]
Псевдоним для filter_hklm_entries. Адаптер не различает кусты HKLM / HKCU.
Возвращает: list[PregDconf]
Псевдоним для filter_hklm_entries.
Возвращает: list[PregDconf]
Получить одну запись в виде объекта PregDconf.
| Параметр | Тип | Описание |
|---|---|---|
hive_key |
str |
Полный путь реестра, напр. Software/BaseALT/Policies/Control/sshd-gssapi-auth. |
Возвращает: PregDconf или None
Псевдоним для get_hklm_entry.
Возвращает: PregDconf или None
Получить одну запись или необработанное значение.
| Параметр | Тип | Описание |
|---|---|---|
path |
str |
Полный путь реестра. Обратные слеши нормализуются. |
preg |
bool |
Если True (по умолчанию), возвращает PregDconf. Если False --- необработанное значение. |
Возвращает: PregDconf | any | None
Сокращение для get_entry(key, preg=False).
Возвращает: необработанное значение или None
Возвращает глубокую копию внутреннего словаря данных. Безопасно передавать в плагины или изменять без влияния на адаптер.
data = adapter.get_dict()
# data --- независимая копияВозвращает: dict
Проверяет, является ли значение ключа реестра «истинным». Распознаёт строковые
значения True, true, TRUE, yes, Yes, enabled, enable, Enabled,
Enable, 1 и ненулевые целые числа.
Возвращает: bool
gpoa_lib.storage.storage_writer.StorageWriter
Записывает данные политик в произвольную базу dconf и компилирует её.
StorageWriter(db_name, uid=None)| Параметр | Тип | Описание |
|---|---|---|
db_name |
str |
Имя базы данных в /etc/dconf/db/. Например, 'local' записывает в /etc/dconf/db/local.d/local.ini. |
uid |
int |
Необязательный UID пользователя для пользовательских баз. |
Каждый вызов write() или write_keys() сливает новые данные с
существующим INI-файлом. Дублирующиеся секции никогда не создаются.
Используйте clear() для очистки базы.
Записать вложенный словарь {секция: {ключ: значение}} в INI-файл базы данных
и создать записи блокировок.
writer = StorageWriter('local')
writer.write({
'Software/BaseALT/Policies/Control': {
'sshd-gssapi-auth': '1',
}
})
writer.compile()| Параметр | Тип | Описание |
|---|---|---|
data |
dict |
Вложенный словарь секций и пар ключ-значение. |
Записать плоский словарь {полный_путь: значение}. Пути разделяются по
последнему / на секцию и имя значения.
writer = StorageWriter('local')
writer.write_keys({
'Software/BaseALT/Policies/Control/sshd-gssapi-auth': '1',
'Software/BaseALT/Policies/Control/ssh-gssapi-auth': 'enabled',
})
writer.compile()| Параметр | Тип | Описание |
|---|---|---|
keys_dict |
dict |
Плоский словарь, сопоставляющий полные пути реестра со значениями. |
Удалить указанные ключи из INI-файла базы данных. Перезаписывает файл, исключая перечисленные ключи.
| Параметр | Тип | Описание |
|---|---|---|
keys |
list[str] |
Полные пути реестра для удаления. |
Удалить INI-файл базы данных. Скомпилированная бинарная база не затрагивается;
вызовите compile() после очистки для её перегенерации.
Возвращает self для цепочки вызовов.
writer.clear().write({'Section': {'key': 'val'}}).compile()Скомпилировать базу данных из INI-источников, выполнив dconf compile.
gpoa_lib.applier_runner.ApplierRunner
Высокоуровневый фасад для создания и запуска встроенных применителей.
Обрабатывает создание StorageAdapter, внедрение дополнительных аргументов
(username, file_cache) и журналирование ошибок.
ApplierRunner(db_name=None, uid=None, data=None, force=False)| Параметр | Тип | Описание |
|---|---|---|
db_name |
str или None |
Имя базы dconf (передаётся в StorageAdapter). |
uid |
int или None |
UID пользователя. |
data |
dict или None |
Словарь; при указании доступ к dconf не выполняется. |
force |
bool |
Если True, читать только из указанной базы (обход объединённого профиля) и повторно применять, даже если целевое состояние уже достигнуто. По умолчанию False. |
Создать экземпляр применителя без его запуска.
runner = ApplierRunner(data=my_dict)
result = runner.create('control')
if result:
applier = result.data
applier.apply()| Параметр | Тип | Описание |
|---|---|---|
applier_name |
str |
Ключ во внутренней карте применителей (см. таблицу ниже). |
prefix |
str |
Переопределить базовый префикс. Имя применителя добавляется автоматически: prefix + '/' + applier_name. |
keys |
list[str] |
Конкретные ключи реестра для загрузки. |
Возвращает: Result --- result.data содержит экземпляр применителя при успехе.
Создать применитель и вызвать его метод apply(). Исключения перехватываются
и возвращаются как неудачный Result.
runner = ApplierRunner(data=my_dict)
result = runner.run('control')
if not result:
print('Ошибка:', result.error)
runner.run('gsettings', prefix='Software/MyOrg')Возвращает: Result
Определить имя применителя по пути ключа реестра или префиксу. Сравнение нечувствительно к регистру и нормализует обратные слеши.
>>> ApplierRunner.resolve('Software/BaseALT/Policies/Control/sshd-gssapi-auth')
'control'
>>> ApplierRunner.resolve('Software/Policies/Mozilla/Firefox')
'firefox'
>>> ApplierRunner.resolve('Software/Unknown/Path')
None| Параметр | Тип | Описание |
|---|---|---|
key_or_prefix |
str |
Полный путь реестра или префикс. |
Возвращает: str или None
Автоматически определить применитель по первому пути ключа и запустить его.
runner = ApplierRunner(data=my_dict)
name = runner.run_auto([
'Software/BaseALT/Policies/Control/sshd-gssapi-auth',
])
print(name) # 'control'| Параметр | Тип | Описание |
|---|---|---|
keys |
list[str] |
Пути ключей реестра для применения. |
Возвращает: str или None --- имя запущенного применителя.
Возвращает список доступных имён применителей.
>>> ApplierRunner.list_appliers()
['control', 'chromium', 'firefox', 'thunderbird', 'yandex_browser',
'firewall', 'gsettings', 'kde', 'ntp', 'package', 'polkit', 'systemd']| Имя | Класс | Ветка реестра | Доп. аргументы |
|---|---|---|---|
control |
control_applier |
Software/BaseALT/Policies/Control |
--- |
chromium |
chromium_applier |
Software/Policies/Google/Chrome |
username |
firefox |
firefox_applier |
Software/Policies/Mozilla/Firefox |
username |
thunderbird |
thunderbird_applier |
Software/Policies/Mozilla/Thunderbird |
username |
yandex_browser |
yandex_browser_applier |
Software/Policies/YandexBrowser |
username |
firewall |
firewall_applier |
SOFTWARE\Policies\Microsoft\WindowsFirewall\FirewallRules |
--- |
gsettings |
gsettings_applier |
Software\BaseALT\Policies\gsettings |
file_cache |
kde |
kde_applier |
Software/BaseALT/Policies/KDE |
--- |
ntp |
ntp_applier |
Software\Policies\Microsoft\W32time\Parameters |
--- |
package |
package_applier |
Software\BaseALT\Policies\Packages |
--- |
polkit |
polkit_applier |
Software\BaseALT\Policies\Polkit |
--- |
systemd |
systemd_applier |
Software/BaseALT/Policies/SystemdUnits |
--- |
gpoa_lib.plugin.plugin.plugin
Абстрактный базовый класс для всех плагинов (встроенных и внешних).
Предоставляет apply(), apply_user(), get_dict_registry() и
структурированное журналирование.
plugin(dict_dconf_db=None, username=None, fs_file_cache=None, registry_path=None)| Параметр | Тип | Описание |
|---|---|---|
dict_dconf_db |
dict |
Данные политик (обычно из StorageAdapter.get_dict() или plugin_manager). |
username |
str |
Ия пользователя для плагинов пользовательского контекста. |
fs_file_cache |
object | Экземпляр файлового кэша. |
registry_path |
str |
Пользовательский префикс пути реестра для этого плагина. |
Применить плагин с текущими привилегиями. Вызывает self.run(**kwargs).
Применить плагин с привилегиями пользователя через with_privileges().
| Параметр | Тип | Описание |
|---|---|---|
username |
str |
Пользователь, от имени которого выполняется запуск. |
Возвращает: результат run() при успехе, False при неудаче.
Получить словарь из реестра для указанного префикса.
| Параметр | Тип | Описание |
|---|---|---|
prefix |
str |
Префикс ключа реестра. По умолчанию: '' (все данные). |
Возвращает: dict
Основная логика плагина. Должна быть переопределена в подклассах.
Инициализировать журнализатор плагина.
| Параметр | Тип | Описание |
|---|---|---|
message_dict |
dict |
Соответствие кодов сообщений строкам форматирования. |
locale_dir |
str |
Путь к каталогу локализации. |
domain |
str |
Домен gettext. |
Записать сообщение в журнал. Использует журнализатор плагина, если
инициализирован, иначе --- глобальный log().
| Параметр | Тип | Описание |
|---|---|---|
message_code |
str |
Код, например 'W1', 'E2', 'D134'. |
data |
dict |
Контекстные данные для сообщения. |
| Атрибут | Тип | Описание |
|---|---|---|
dict_dconf_db |
dict |
Данные политик. |
file_cache |
object | Файловый кэш. |
username |
str |
Ия пользователя. |
_registry_path |
str или None |
Пользовательский префикс пути реестра. |
plugin_name |
str |
Ия класса (устанавливается автоматически). |
gpoa_lib.plugin.plugin_base.FrontendPlugin
Базовый класс для внешних плагинов. Наследуется от plugin.
Создайте подкласс, реализуйте run() и установите модуль в
/usr/lib/gpoa/plugins/. Менеджер плагинов обнаружит и загрузит его
автоматически.
FrontendPlugin(dict_dconf_db=None, username=None, fs_file_cache=None, registry_path=None)Основная логика плагина. Должна быть переопределена.
from gpoa_lib.plugin import FrontendPlugin
class MyPlugin(FrontendPlugin):
def run(self, **kwargs):
data = self.get_dict_registry('Software/MyOrg/Policies')
for key, value in data.items():
self.log('D1', {'key': key, 'value': value})
def create_machine_applier(dict_dconf_db, username, file_cache):
return MyPlugin(dict_dconf_db, username, file_cache)
def create_user_applier(dict_dconf_db, username, file_cache):
return MyPlugin(dict_dconf_db, username, file_cache)gpoa_lib.frontend.applier_frontend.applier_frontend
Абстрактный базовый класс для аплаеров политик. Все аплаеры наследуют от
этого ABC и должны реализовать :meth:apply.
class applier_frontend(ABC):
def __init__(self, regobj):
pass
@abstractmethod
def apply(self, **kwargs):
raise NotImplementedError| Параметр | Тип | Описание |
|---|---|---|
regobj |
Dconf_registry |
Объект хранилища реестра. |
check_experimental_enabled(storage) -> bool
check_windows_mapping_enabled(storage) -> bool
check_module_enabled(storage, module_name) -> Optional[bool]
check_enabled(storage, module_name, is_experimental) -> boolЭти функции проверяют флаги реестра в Software/BaseALT/Policies/GPUpdate,
чтобы определить, должен ли модуль аплаера запускаться.
gpoa_lib.frontend.applier_frontend.DualContextApplier
Промежуточный базовый класс для применителей, которым требуются отдельные фазы
выполнения в контексте администратора и пользователя. Наследуется от
applier_frontend.
Используйте этот класс, когда применитель выполняет разную логику в зависимости от того, запущен ли он с привилегиями root (контекст администратора) или со сброшенными привилегиями пользователя (пользовательский контекст).
| Метод | Описание |
|---|---|
admin_context_apply() |
Переопределить для реализации применения политик с привилегиями администратора. По умолчанию: pass. |
user_context_apply() |
Переопределить для реализации применения политик в пользовательском контексте. По умолчанию: pass. |
apply() |
Вызывает admin_context_apply(). Не переопределять в подклассах. |
from gpoa_lib import DualContextApplier
class my_applier_user(DualContextApplier):
def __init__(self, storage, username):
self.storage = storage
self.username = username
def admin_context_apply(self):
# выполняется от имени root
pass
def user_context_apply(self):
# выполняется с привилегиями пользователя
passgpoa_lib.plugin.plugin_manager.plugin_manager
Внутренний класс, который обнаруживает, загружает и запускает плагины из
/usr/lib/gpoa/plugins/ (путь внешних плагинов).
plugin_manager(is_machine, username)| Параметр | Тип | Описание |
|---|---|---|
is_machine |
bool |
True для машинного контекста, False для пользовательского. |
username |
str |
Ия целевого пользователя. |
Выполнить все загруженные плагины. Использует apply() для машинного
контекста, apply_user() --- для пользовательского.
Обнаружить и создать экземпляры плагинов из каталога плагинов.
Возвращает: list[plugin]
Получить загруженный экземпляр плагина по имени.
| Параметр | Тип | Описание |
|---|---|---|
name |
str |
Ия класса плагина. |
Возвращает: экземпляр plugin или None.
gpoa_lib.storage.dconf_registry.Dconf_registry
Низкоуровневый доступ к реестру dconf. Использует состояние на уровне
класса (общее для всех экземпляров). Этот класс используется внутри
полного стека gpupdate. Внешним потребителям рекомендуется использовать
StorageAdapter.
| Метод | Описание |
|---|---|
get_key_value(key) |
Прочитать один ключ через dconf read, с fallback на бинарную базу _dconf_db при отсутствии D-Bus. |
get_key_values(keys) |
Прочитать несколько ключей. |
get_matching_keys(path) |
Рекурсивно вывести список ключей под путём dconf. |
get_dictionary_from_dconf_file_db(uid=None, path_bin=None, save_dconf_db=False) |
Прочитать бинарную базу GVdb в словарь. |
dconf_update(uid=None, db_name=None) |
Скомпилировать базу dconf. Если задан db_name, компилируется /etc/dconf/db/{db_name}; иначе --- policy (или policy{uid}). |
filter_entries(startswith, registry_dict=None) |
Фильтровать глобальный словарь реестра по префиксу. |
apply_template(uid) |
Записать профиль dconf для пользователя. |
set_info(key, data) |
Сохранить метаданные. |
get_info(key) |
Получить метаданные. |
| Атрибут | Описание |
|---|---|
global_registry_dict |
Объединённый реестр из всех GPT. |
_dconf_db |
Необработанный словарь базы dconf. |
_username |
Текущее имя пользователя. |
_uid |
Текущий UID. |
_envprofile |
Профиль окружения ('system' или пользователь). |
gpoa_lib.storage.gpp_state.GppStateManager
Управляет жизненным циклом элементов GPP между запусками gpupdate:
applyOnce, removePolicy и очистка при отвязке GPO.
GppStateManager(username=None)| Параметр | Тип | Описание |
|---|---|---|
username |
str или None |
Ия пользователя; None или 'Machine' для машинного контекста. |
Получить ранее применённые элементы для заданного типа.
| Параметр | Тип | Описание |
|---|---|---|
element_type |
str |
Ия типа элемента (напр. 'Files', 'Shortcuts'). |
Возвращает: list[dict]
Найти элементы, удалённые с момента последнего запуска.
| Параметр | Тип | Описание |
|---|---|---|
element_type |
str |
Ия типа элемента. |
current |
list[dict] |
Текущий список элементов. |
Возвращает: list[dict]
Проверить, был ли элемент с applyOnce уже применён.
| Параметр | Тип | Описание |
|---|---|---|
element |
dict |
Словарь элемента (должен содержать uid и apply_once). |
element_type |
str |
Ия типа элемента. |
Возвращает: bool --- True означает, что элемент следует пропустить.
Пометить элемент как применённый (сохраняется метка времени).
| Параметр | Тип | Описание |
|---|---|---|
element |
dict |
Словарь элемента. |
element_type |
str |
Ия типа элемента. |
element_obj |
object | Исходный объект элемента для установки .applied. |
Найти и очистить удалённые элементы с помощью предоставленного обработчика.
| Параметр | Тип | Описание |
|---|---|---|
element_type |
str |
Ия типа элемента. |
current |
list[dict] |
Текущий список элементов. |
handler |
callable |
handler(element_dict, username) выполняет очистку. |
| Функция | Описание |
|---|---|
get_previous_elements(element_type, username=None) |
Получить предыдущие элементы из dconf. |
find_removed_elements(current, previous, key_field='uid') |
Сравнить текущие и предыдущие элементы. |
find_gpo_removed_elements(current_gpos, previous_elements) |
Найти элементы из отвязанных GPO. |
is_element_applied(element, element_type, username=None) |
Проверить статус applyOnce. |
mark_element_applied(element, element_type, username=None, element_obj=None) |
Пометить как применённый. |
get_current_gpo_guids() |
Получить текущие привязанные GUID GPO. |
cleanup_file(element, username=None) |
Удалить развёрнутый файл. |
cleanup_shortcut(element, username=None) |
Удалить файл .desktop. |
cleanup_folder(element, username=None) |
Удалить развёрнутую папку. |
cleanup_envvar(element, username=None) |
Удалить переменную окружения. |
cleanup_inifile(element, username=None) |
Удалить настройку INI. |
| Ия класса | Имя в хранилище |
|---|---|
inifile |
Inifiles |
fileentry |
Files |
folderentry |
Folders |
shortcut |
Shortcuts |
drivemap |
Drives |
envvar |
Environmentvariables |
networkshare |
Networkshares |
printer |
Printers |
service |
Services |
gpoa_lib.storage.dynamic_attributes
Универсальный контейнер атрибутов, хранящий произвольные пары ключ-значение и санитизирующий строковые значения (заменяет кавычки на символы двойного штриха).
attr = DynamicAttributes(name='test', value=42)
attr.items() # возвращает пары (ключ, значение)
dict(attr) # преобразовать в словарьDynamicAttributes(**kwargs)| Метод | Описание |
|---|---|
items() |
Итерация пар (ключ, значение); filters всегда последним. |
get_original_value(key) |
Получить значение с восстановлением кавычек. |
Подкласс DynamicAttributes, хранящий метаданные о ключе реестра.
meta = RegistryKeyMetadata(
policy_name='ControlPolicy',
type='string',
is_list=False,
mod_previous_value=None,
)RegistryKeyMetadata(policy_name, type, is_list=None, mod_previous_value=None)| Параметр | Тип | Описание |
|---|---|---|
policy_name |
str |
Ия политики. |
type |
str |
Тип значения ('string', 'int' и т.д.). |
is_list |
bool или None |
Является ли значение списком. |
mod_previous_value |
any | Модификатор предыдущего значения. |
| Атрибут | Описание |
|---|---|
policy_name |
Ия политики. |
type |
Тип значения. |
reloaded_with_policy_key |
Изначально None. |
is_list |
Флаг списка. |
mod_previous_value |
Модификатор. |
gpoa_lib.storage.dconf_registry.PregDconf
Представляет одну запись реестра, извлечённую из dconf.
PregDconf(keyname, valuename, type_preg, data)| Атрибут | Тип | Описание |
|---|---|---|
keyname |
str |
Путь ключа реестра (без имени значения). |
valuename |
str |
Ия значения. |
hive_key |
str |
keyname + '/' + valuename (генерируется автоматически). |
type |
int |
Константа типа PREG. |
data |
any | Фактическое значение. |
gpoa_lib.storage.dconf_registry.gplist
Подкласс list с двумя вспомогательными методами:
| Метод | Описание |
|---|---|
first() |
Вернуть первый элемент или None. |
count() |
Вернуть len(self). |
gpoa_lib.util.check_filters
Класс FilterChecker оценивает фильтры таргетинга GPO. Все методы проверки ---
@staticmethod или @classmethod и принимают (filter_obj, username=None).
from gpoa_lib.util.check_filters import FilterCheckerКаждый возвращает bool (True = фильтр пройден).
| Метод | Класс фильтра | Описание | Ключевые атрибуты |
|---|---|---|---|
check_computer |
FilterComputer |
Соответствие имени компьютера | name, type ('NETBIOS' или 'DNS') |
check_domain |
FilterDomain |
Соответствие домену | name, userContext |
check_date |
FilterDate |
Соответствие дате | period ('WEEKLY'/'MONTHLY'/'YEARLY'), dow, day, month, year |
check_user |
FilterUser |
Соответствие пользователю или SID | name, sid |
check_group |
FilterGroup |
Соответствие членству в группе | name, sid, userContext |
check_variable |
FilterVariable |
Соответствие переменной окружения | variableName, value |
check_time |
FilterTime |
Диапазон времени суток | begin, end (формат ISO) |
check_cpu |
FilterCpu |
Минимальная частота ЦП | speedMHz |
check_battery |
FilterBattery |
Наличие батареи | (нет) |
check_disk |
FilterDisk |
Минимальное свободное место на диске | drive ('%SystemDrive%'), freeSpace (ГБ) |
check_language |
FilterLanguage |
Локаль системы/пользователя | language (LCID), default, system |
check_ram |
FilterRam |
Минимальный объём ОЗУ | totalMB |
check_file |
FilterFile |
Существование файла/папки | path, type ('EXISTS'), folder ('0'/'1') |
check_iprange |
FilterIpRange |
IP-адрес в диапазоне | min, max, useIPv6 |
check_macrange |
FilterMacRange |
MAC-адрес в диапазоне | min, max |
| Метод | Описание |
|---|---|
reset_cache() |
Очистить все внутренние кэши (вызывать между сеансами обработки GPO). |
set_domain_resolver(resolver_func)Переопределить функцию разрешения домена. Полезно в тестах или нестандартных окружениях.
gpoa_lib.util.util
| Функция | Сигнатура | Описание |
|---|---|---|
get_machine_name() |
() -> str |
Получить NetBIOS-имя машины (напр. DC0$). |
is_machine_name(name) |
(str) -> bool |
Проверить, является ли имя именем машины. |
get_homedir(username) |
(str) -> str |
Получить путь к домашнему каталогу пользователя. |
get_user_info(username) |
(str) -> pwd.struct_passwd |
Получить запись passwd (кэшируется). |
homedir_exists(username) |
(str) -> bool |
Проверить существование домашнего каталога. |
mk_homedir_path(username, path) |
(str, str) -> None |
Создать подкаталог в домашнем каталоге пользователя. |
string_to_literal_eval(string_) |
(str) -> any |
Безопасно вычислить строковый литерал. |
get_uid_by_username(username) |
(str) -> int |
Разрешить имя пользователя в UID. |
runcmd(command_name) |
(list) -> (int, str) |
Выполнить команду, вернуть (код возврата, stdout). |
traverse_dir(root_dir) |
(str) -> list[str] |
Рекурсивно получить список файлов. |
utc_to_local(utc_str) |
(str) -> str |
Преобразовать метку времени UTC в локальное время. |
gpoa_lib.util.paths
| Функция | Возвращает | Описание |
|---|---|---|
get_custom_policy_dir() |
str |
/etc/local-policy |
local_policy_path(default_template_name='default') |
Path |
Каталог шаблона локальной политики. |
cache_dir() |
Path |
/var/cache/gpupdate |
file_cache_dir() |
Path |
/var/cache/gpupdate_file_cache |
file_cache_path_home(username) |
str |
~user/.cache/gpupdate |
local_policy_cache() |
Path |
Каталог кэша локальной политики. |
get_dconf_config_path(uid=None) |
str |
Каталог INI dconf (/etc/dconf/db/policy.d/ или policy{uid}.d/). |
get_dconf_config_file(uid=None) |
str |
Путь к INI-файлу dconf. |
get_dconf_db_path(db_name) |
str |
Путь к каталогу INI для произвольной базы данных (/etc/dconf/db/{db_name}.d/). |
get_dconf_db_file(db_name) |
str |
Путь к INI-файлу для произвольной базы данных (/etc/dconf/db/{db_name}.d/{db_name}.ini). |
gpupdate_plugins_path() |
str |
Путь к встроенным плагинам. Примечание: не используется plugin_manager — плагины загружаются только из /usr/lib/gpoa/plugins/. |
get_desktop_files_directory() |
str |
/usr/share/applications |
gpoa_lib.util.paths.UNCPath
Разбирает пути UNC (\\сервер\ресурс) или URI (smb://сервер/ресурс).
| Метод | Возвращает | Описание |
|---|---|---|
get_uri() |
str |
Преобразовать в URI smb://. |
get_unc() |
str |
Преобразовать в UNC-путь \\. |
get_domain() |
str |
Извлечь домен/имя сервера. |
get_path() |
str |
Извлечь компонент пути. |