Расширить сервис Dbus - PullRequest
       36

Расширить сервис Dbus

0 голосов
/ 18 ноября 2018

Большая цель:

Написание пакетного менеджера пользователей, предназначенного для школьной среды.

Проблема

Я хочу написать пользователяМенеджер, который использует графический интерфейс для добавления, управления и удаления пользователей в аудиториях.Программа, над которой я работаю: ltsp-manager .

До сих пор все управление пользователями осуществлялось с помощью команд bash.Из скрипта Python.Это означает, что весь графический интерфейс должен запускаться с правами root, и все вручную.

Цель

Создать службу Dbus, которая обрабатывает все управление учетными записями, и позволить графическому интерфейсу работать как обычный пользователь, требующий парольвремя от времени.

Я оглянулся и обнаружил, что в org.freedesktop.Accounts уже есть служба , выполняющая большую часть функций, которые я хочу сделать.Однако, это также испытывает недостаток в некоторых.Что-то, чего совершенно не хватает, - это управление группами.

Какой хороший способ использовать функциональность org.freedesktop.Accounts и добавить некоторые дополнительные функции / методы?

Пока мысли

Вот что мне пришло в голову:

  1. просто переделать все, что означает много дублирующихся работ.
  2. скопировать интерфейсы и написать функции, которые вызывают исходные
  3. написать сервис, который реализует только дополнительные функции, не касаясь оригинальных.Затем клиент будет использовать исходный сервис и только что написанный.

Все мои эксперименты по тестированию выполняются с python3 и pydbus, что, по-видимому, является лучшим выбором среди многих.

Я никогда не писал реальный сервис dbus - хотя эксперименты показывают некоторые результаты в d-feet.Этот вопрос на самом деле не является тем, что мне нужно, чтобы напечатать тип вопроса, а скорее вопросом наилучшей практики.

1 Ответ

0 голосов
/ 21 ноября 2018

Лучшим долгосрочным ответом было бы исправить учетную запись в восходящем направлении для реализации поддержки групп .Для этого уже есть работа;ему просто нужно, чтобы кто-то взял его и закончил. accountsservice - это проект, который обеспечивает каноническую реализацию org.freedesktop.Accounts.

. Другие подходы плохи, потому что:

просто переделывать все, что означает многодублируемая работа.

Как вы говорите, это много дублируемой работы, и вам придется поддерживать ее все.

копировать интерфейсы и писать функции, которые вызываюторигинальные

Это означает, что вы должны всегда быть в курсе изменений и дополнений в обслуживании учетных записей.

написать службу, которая реализует только дополнительные функции, не затрагивая оригинальные,После этого клиент будет использовать исходный сервис и только что написанный.

Это не связано с какими-либо дополнительными проблемами обслуживания, но означает, что ваш сервис не будет хорошо интегрирован с обслуживанием учетных записей.Например, могут быть условия состязания между обновлениями ваших объектов D-Bus и обновлениями объектов обслуживания учетных записей.Вы не сможете разделить нагрузку по обслуживанию кода групп с (многими) другими пользователями accountservice.

...