Это все будет делаться плагинами. Концепция нового NoDeny несколько иная. Сейчас расскажу.
Я уже упоминал о том, что в какой-то из параллельных версий я убрал абсолютно все постоянные поля. Т.е юзаются только дополнительные, включая логин/пароль/ip и т.д.
Есть модуль Data.pm, который управляет:
- отображением поля
- редактированием поля
- проверкой поля на валидность
Сейчас ввел такие типы:
'целое',
'целое положительное',
'вещественное',
'вещественное положительное',
'строковое однострочное',
'строковое многострочное',
'да/нет',
'выпадающий список',
'пароль',
'трафик',
'время',
'дата',
'деньги'.
Чем интересен вынос всех полей в дополнительные?
1. Можно повыкидывать ненужные/добавить нужные
2. Единообразное (в одном месте) управление созданием/обработкой/сохранением полей (это для меня и разработчиков)
3. Возможность нафигачить доселя неведомые науке схемы. Например, введение нескольких балансов на абонента, бонусные счета, любое количество категорий трафика, много ip адресов без алиасов (алиасов ваще не будет), сети ip адресов, учет времени и времен чего угодно.
Что еще важно - предусмотрел подключение собственных типов полей в плагинах. Это сделает биллинг максимально гибким. Вы можете написать модуль, который выдаст ip адрес из любых соображений, например сделает запрос к какому-нить оборудованию.
Что еще делаю однообразным так это стирание граней между "клиент/работник/оборудование" и т.д. Для NoDeny - это все список объектов в разных группах с разными характеристиками и обработчиками.
В связи с значительными изменениями концепции (фактически переписываю NoDeny полностью) хотелось бы, что бы разработчики модулей непосредственно принимали участие в написании моделей в то время пока NoDeny пишется. Со своей стороны я делаю максимально простым подключение плагинов