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 есть специальный класс сообщений - "ошибка", так что это будет работать корректно везде. |