Alterator/module/types

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Список типов)
Строка 58: Строка 58:
</source>
</source>
-
==== Список типов ====
+
==== Стандартные типы ====
{| class="tiles"
{| class="tiles"
|-
|-
-
!название типа || комментарии
+
!название типа || описание
|-
|-
-
|boolean||#t или #f
+
|boolean||булевский тип в стиле scheme, строка "#t" или "#f"
|-
|-
-
|date||YYYY-MM-DD, месяц от 01 до 12, день от 01 до 31
+
|date|| дата, строка формата "ГГГГ-ММ-ДД"
|-
|-
-
|time||HH:MM:SS
+
|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||^[.a-zA-Z0-9_-]*$
+
|hostname||имя компьютера, строка состоящая из латинских букв, цифр и символов '_','.','-'.
|-
|-
-
|hostname-list||список имен, разделенный пробелами
+
|hostname-list||список имен компьютеров, разделенный пробелами
|-
|-
-
|tcp-port|| 0..65535
+
|tcp-port|| TCP-порт, целое число от 0 до 65535.
|-
|-
-
|iso-3166-alpha-2||двухбуквенный код страны
+
|iso-3166-alpha-2||двухбуквенный код страны согласно стандарту ISO-3166-alpha2
|-
|-
-
|system-account-name||^[a-z][a-z0-9_-]*$
+
|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-addressIP-адрес, строка формата "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, строка из латинских букв, цифр и подчёркивания.
 
Личные инструменты