Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6176 - Реализовать модуль управления Dnsmasq.   Make a simular bug
Summary: Реализовать модуль управления Dnsmasq.
Status: CLOSED FIXED
Alias: None
Product: Tartarus
Classification: Свободные проекты (Open source projects)
Component: Settingsd modules (show other bugs)
Version: не указана
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Devaev Maxim
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
Depends on: 4915
Blocks: 5903
  Show dependency treegraph
 
In work:
Reported: 2010-10-12 19:42 MSD by Devaev Maxim
Modified: 2010-12-15 11:58 MSK (History)
4 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Devaev Maxim 2010-10-12 19:42:06 MSD
Бинд имен, раздачу адресов и минимальные конфиги.
Comment 1 Devaev Maxim 2010-12-03 22:07:05 MSK
Написал общий каркас модуля. Поскольку возможности dnsmasq достаточно обширны, я сделал лишь несколько основных методов, которые будут нужны при реализации домашнего сервера:
setServers() и servers() - устанавливает и возвращает список DNS верхнего уровня;
setRange() и range() - устанавливает и возвращает диапазон динамической раздачи адресов, дополнительно можно указать маску и таймаут;
addStaticHost(), removeStaticHost(), staticHosts() - устанавливает хост, удалает хост и возвращает список адресов со статическими адресами. При добавлении можно указать имя хоста. Удаление производится либо по MAC, IP или по имени хоста;
update() - обновляет параметры сервера без его перезагрузки.

Dnsmasq так же обладает своим собственным DBus-API - рассылка сигналов о подключенни/отключении хостов, добавление и удаление серверов, однако этим возможности и ограничиваются: http://www.thekelleys.org.uk/dnsmasq/docs/DBus-interface
Comment 2 Devaev Maxim 2010-12-04 16:17:49 MSK
Реализовал метод обновления кэша и чтения конфигов без перезапуска демона
Comment 3 Pavel Vainerman 2010-12-04 17:06:08 MSK
> update() - обновляет параметры сервера без его перезагрузки.
 В 'service' это называют 'reload'. Может такое название сделать?
(хотя не знаю насколько это общепринято).
Comment 4 Devaev Maxim 2010-12-06 15:34:27 MSK
Ну, можно и такое, я думаю
Comment 5 Devaev Maxim 2010-12-06 22:05:15 MSK
Написал черновой вариант замены опций, но получилось достаточно много повторяющегося кода. Нужно выносить парсеры в отдельные библиотечные функции.
Comment 6 Devaev Maxim 2010-12-07 20:37:58 MSK
Переписал парсеры, теперь происходит корректная замена в тексте конфига, вместо удаления и дописывания в конец файла. Добавил еще несколько методов, например, для управления прослушиваемыми интерфейсами. Текущее API выглядит так:
-------------------------
void addStaticHost(QString mac, QString ip, QString name)
void removeStaticHost(QString identifier)
{QString mac, QString ip, QString name} staticHosts()

void setServers(QStringList servers_list)
QStringList servers()

void setRange(QString start_ip, QString stop_ip, QString netmask, QString lease)
[QString start_ip, QString stop_ip, QString netmask, QString lease] QString range()

void setInterfaces(QStringList interfaces_list)
QStringList interfaces()
void setExceptInterfaces(QStringList interfaces_list)
QStringList exceptInterfaces()

void reload()
-------------------------
Comment 7 Devaev Maxim 2010-12-07 20:38:17 MSK
<fixed>
Comment 8 Pavel Vainerman 2010-12-07 20:44:37 MSK
> void addStaticHost(QString mac, QString ip, QString name)
 "QString" - интерфейс на QT что-ли?
Comment 9 Devaev Maxim 2010-12-07 20:50:07 MSK
Нет, просто так отображает клиент.
Comment 10 Pavel Vainerman 2010-12-07 20:59:02 MSK
ну заодно..
Функции 'void'. Неудачное завершение - исключением?
Comment 11 Devaev Maxim 2010-12-07 21:46:09 MSK
Да, исключением. В D-Bus есть специальный класс сообщений - "ошибка", так что это будет работать корректно везде.