Alterator/module/types
Материал из ALT Linux Wiki
Ilis (обсуждение | вклад) |
(→Список типов) |
||
Строка 58: | Строка 58: | ||
</source> | </source> | ||
- | ==== | + | ==== Стандартные типы ==== |
{| class="tiles" | {| class="tiles" | ||
|- | |- | ||
- | !название типа || | + | !название типа || описание |
|- | |- | ||
- | |boolean||#t или #f | + | |boolean||булевский тип в стиле scheme, строка "#t" или "#f" |
|- | |- | ||
- | |date|| | + | |date|| дата, строка формата "ГГГГ-ММ-ДД" |
|- | |- | ||
- | |time|| | + | |time|| время, строка формата "ЧЧ:ММ:СС" |
|- | |- | ||
- | |ipv4-address||NNN.NNN.NNN.NNN | + | |ipv4-address||IP-адрес, строка формата "NNN.NNN.NNN.NNN" |
|- | |- | ||
- | |ipv4-address-list||список адресов, разделенный пробелами | + | |ipv4-address-list||список IP адресов, разделенный пробелами |
|- | |- | ||
- | |ipv4-network||NNN.NNN.NNN.NNN/MM | + | |ipv4-network||описание IP-сети, строка формата "NNN.NNN.NNN.NNN/MM" |
|- | |- | ||
- | |hostname|| | + | |hostname||имя компьютера, строка состоящая из латинских букв, цифр и символов '_','.','-'. |
|- | |- | ||
- | |hostname-list||список имен, разделенный пробелами | + | |hostname-list||список имен компьютеров, разделенный пробелами |
|- | |- | ||
- | |tcp-port|| 0. | + | |tcp-port|| TCP-порт, целое число от 0 до 65535. |
|- | |- | ||
- | |iso-3166-alpha-2||двухбуквенный код страны | + | |iso-3166-alpha-2||двухбуквенный код страны согласно стандарту ISO-3166-alpha2 |
|- | |- | ||
- | |system-account-name|| | + | |system-account-name|| имя системной пользовательской или групповой записи, строка, состоящая из малых латинских букы, цифр и символов '-' и '_'. При этом начинаться строка может только с маленькой латинской буквы. |
+ | |} | ||
+ | |||
+ | === Пользовательские типы=== | ||
+ | Если стандартных типов недостаточно, то можете определить свой. | ||
+ | При этом стоит придерживаться следующего соглашения: имя типа должно начинаться с префикса "<имямодуля>-", например, "foo-type" для модуля alterator-foo. | ||
+ | |||
+ | На данный момент известны следующие типы, если вы обнаружите, что некий из этих типов пригодится и в вашем модуле,то стоит сделать запрос на признание типа стандартным. | ||
+ | |||
+ | {| class="tiles" | ||
+ | |- | ||
+ | ! название || модуль || описание | ||
+ | |- | ||
+ | |postfix-address || alterator-postfix-restrictions || компьютер или адрес, строка малых латинских букв, цифр и символов '@','.','-' и '_'. | ||
+ | |- | ||
+ | |postfix-limit || alterator-postfix-restrictions || пороговое значение, целое неотрицательное число | ||
+ | |- | ||
+ | |ahttpd-cert-field || alterator-ahttpd || поле данных в SSL сертификате, строка из латинских букв, цифр, пробелов и символов '_','-'. | ||
+ | |- | ||
+ | |spamassassin-score || alterator-spamassassin || пороговое значение баллов, неотрицательное целое число | ||
+ | |- | ||
+ | |dhcp-mac-address || alterator-dhcp || MAC-адрес сетевой карты, строка формата "HH:HH:HH:HH:HH:HH", где H - шестнадцатиричное число. | ||
+ | |- | ||
+ | |samba-resource || alterator-samba || ресурс SMB, строка из латинских букв, цифр и подчёркивания. | ||
|} | |} |
Версия 08:08, 7 ноября 2008
Содержание |
Автоматическая проверка данных
Иногда необходимо производить валидацию введённых пользователем данных. Можно это делать вручную в бэкенде, но гораздо удобнее воспользоваться автоматической проверкой типов, выполняемой альтератором при передаче данных в бэкенд.
Изменения в бэкенде
Делается это следующим образом. В бэкенде добавляется ответ на запрос «type». В нем перечисляются параметры, с которыми работает бэкенд, и их типы. Для формирования правильного ответа стоит воспользоваться стандартной библиотекой, например для бэкенда на shell объявление типов будет выглядить следующим образом.
. alterator-sh-functions on_message() { case "$in_action" in type) write_type_item a ipv4-address write_type_item b tcp-port ;; read) ... esac }
В примере выше объявлено что параметр 'a' будет иметь тип 'IP адрес', 'b' — 'TCP порт' и теперь пользователь не сможет передать в бэкенд в качестве 'a' что-либо отличное IP адреса и в качестве 'b' что-либо отличное от целого числа находящегося в определённом диапазоне.
Изменения в интерфейсе
На этом возможности системы типов не исчерпываются. Предположим, что пользователь ввёл-таки неправильное значение в поле, соотвествующее параметру 'a'. Он увидит следующее сообщение об ошибке:
a: недопустимый IP-адрес
Однако никакого 'a' на его экране не наблюдается. В каком именно поле случилась ошибка?
Система типов alterator в состоянии справиться с этим. Для этого всего-лишь необходимо, чтобы у названия поля был задан атрибут 'name' содержащий имя параметра бэкенда, которому соответствует это поле.
Пример для qt:
... (label text "Field" name "a") (edit name "a") ...
Теперь в случае ошибки, пользователь увидит следующее сообщение:
Field: недопустимый IP-адрес
Аналогичный пример для html:
.... <span name="a" translate="_">Field:</span> <input type="text" name="a"/> ...
Стандартные типы
название типа | описание |
---|---|
boolean | булевский тип в стиле scheme, строка "#t" или "#f" |
date | дата, строка формата "ГГГГ-ММ-ДД" |
time | время, строка формата "ЧЧ:ММ:СС" |
ipv4-address | IP-адрес, строка формата "NNN.NNN.NNN.NNN" |
ipv4-address-list | список IP адресов, разделенный пробелами |
ipv4-network | описание IP-сети, строка формата "NNN.NNN.NNN.NNN/MM" |
hostname | имя компьютера, строка состоящая из латинских букв, цифр и символов '_','.','-'. |
hostname-list | список имен компьютеров, разделенный пробелами |
tcp-port | TCP-порт, целое число от 0 до 65535. |
iso-3166-alpha-2 | двухбуквенный код страны согласно стандарту ISO-3166-alpha2 |
system-account-name | имя системной пользовательской или групповой записи, строка, состоящая из малых латинских букы, цифр и символов '-' и '_'. При этом начинаться строка может только с маленькой латинской буквы. |
Пользовательские типы
Если стандартных типов недостаточно, то можете определить свой. При этом стоит придерживаться следующего соглашения: имя типа должно начинаться с префикса "<имямодуля>-", например, "foo-type" для модуля alterator-foo.
На данный момент известны следующие типы, если вы обнаружите, что некий из этих типов пригодится и в вашем модуле,то стоит сделать запрос на признание типа стандартным.
название | модуль | описание |
---|---|---|
postfix-address | alterator-postfix-restrictions | компьютер или адрес, строка малых латинских букв, цифр и символов '@','.','-' и '_'. |
postfix-limit | alterator-postfix-restrictions | пороговое значение, целое неотрицательное число |
ahttpd-cert-field | alterator-ahttpd | поле данных в SSL сертификате, строка из латинских букв, цифр, пробелов и символов '_','-'. |
spamassassin-score | alterator-spamassassin | пороговое значение баллов, неотрицательное целое число |
dhcp-mac-address | alterator-dhcp | MAC-адрес сетевой карты, строка формата "HH:HH:HH:HH:HH:HH", где H - шестнадцатиричное число. |
samba-resource | alterator-samba | ресурс SMB, строка из латинских букв, цифр и подчёркивания. |