| Summary: | Реализовать модуль управления Dnsmasq. | ||
|---|---|---|---|
| Product: | [Свободные проекты (Open source projects)] Tartarus | Reporter: | Devaev Maxim <mdevaev> |
| Component: | Settingsd modules | Assignee: | Devaev Maxim <mdevaev> |
| Status: | CLOSED FIXED | QA Contact: | Vitaly Lipatov <lav> |
| Severity: | minor | ||
| Priority: | P4 | CC: | lav, pav, pv, sin |
| Version: | не указана | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | All | ||
| Whiteboard: | |||
| Заявки RT: | Связано с: | ||
| Дата напоминания: | |||
| Bug Depends on: | 4915 | ||
| Bug Blocks: | 5903 | ||
|
Description
Devaev Maxim
2010-10-12 19:42:06 MSD
Написал общий каркас модуля. Поскольку возможности dnsmasq достаточно обширны, я сделал лишь несколько основных методов, которые будут нужны при реализации домашнего сервера: setServers() и servers() - устанавливает и возвращает список DNS верхнего уровня; setRange() и range() - устанавливает и возвращает диапазон динамической раздачи адресов, дополнительно можно указать маску и таймаут; addStaticHost(), removeStaticHost(), staticHosts() - устанавливает хост, удалает хост и возвращает список адресов со статическими адресами. При добавлении можно указать имя хоста. Удаление производится либо по MAC, IP или по имени хоста; update() - обновляет параметры сервера без его перезагрузки. Dnsmasq так же обладает своим собственным DBus-API - рассылка сигналов о подключенни/отключении хостов, добавление и удаление серверов, однако этим возможности и ограничиваются: http://www.thekelleys.org.uk/dnsmasq/docs/DBus-interface Реализовал метод обновления кэша и чтения конфигов без перезапуска демона > update() - обновляет параметры сервера без его перезагрузки.
В 'service' это называют 'reload'. Может такое название сделать?
(хотя не знаю насколько это общепринято).
Ну, можно и такое, я думаю Написал черновой вариант замены опций, но получилось достаточно много повторяющегося кода. Нужно выносить парсеры в отдельные библиотечные функции. Переписал парсеры, теперь происходит корректная замена в тексте конфига, вместо удаления и дописывания в конец файла. Добавил еще несколько методов, например, для управления прослушиваемыми интерфейсами. Текущее 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()
-------------------------
<fixed> > void addStaticHost(QString mac, QString ip, QString name)
"QString" - интерфейс на QT что-ли?
Нет, просто так отображает клиент. ну заодно.. Функции 'void'. Неудачное завершение - исключением? Да, исключением. В D-Bus есть специальный класс сообщений - "ошибка", так что это будет работать корректно везде. |