Namespace test

Материал из ISPWiki
Перейти к: навигация, поиск

Пространство имён test


Описание:

namespace test

И так, валидатор должен определить удовлетворяет ли строка некоторым условиям. Кроме этого, он может попытаться исправить неточности в строке: удалить начальные/завершающие пустые символы, изменить регистр или иным способом привести строку к каноническому виду.

Примеры:

test::EmptyOr<test::UserName>(val) test::Trim<test::EmptyOr<test::UserName>>(val)

Выглядит страшновато, но зато понятно что делает. И не надо плодить кучу одинаковых валидаторов.

Классы

class test::InEnum

Открытые типы (кратко)

typedef bool(* Valid )(string &data)

Открытые члены (кратко)

template <Validfuncfunc>

bool

Orig ( string &data )
template <Validfuncfunc>

bool

Const ( string &data )
bool Numeric ( string &data )
bool AsciiPrintable ( string &data )
bool FileName ( string &data )
bool FileNameList ( string &data )
bool Path ( string &data )
bool UnixUserName ( string &data )
bool Date ( string &data )
bool MultiLine ( string &data )
bool Ip4 ( string &data )
bool Net ( string &val )
bool NetMask ( string &val )
bool IpRange ( string &val )
bool Mac ( string &data )
bool HostName ( string &data )
bool Url ( string &data )
template <Validfuncfunc>

bool

WithAster ( string &data )
bool SubDomain ( string &data )
bool DomainRecordName ( string &data )
bool Domain ( string &data )
bool Email ( string &data )
bool TsigKey ( string &data )

Функции

bool Orig ( string &data )

Гарантирует что проверяемая последовательность не изменится и что проверенная и возможно изменная последовательность совпадает с оригинальной

bool Const ( string &data )

Гарантирует что проверяемая последовательность не изменится

bool Numeric ( string &data )

Символы [0-9] без пробелов

bool AsciiPrintable ( string &data )

Печатные символы ASCII: [0x20-0x7F]

bool FileName ( string &data )

Последовательность, которая может быть использована в качестве имени файла или каталога - символы с кодами>= 32 исключая [;<>|&\'] XXX A `$' is allowed as the final character for userids and groups, mainly for the benefit of samba

bool FileNameList ( string &data )

Последовательность строк FileName разделенная пробелами повторяющиеся подстроки будут удалены

bool Path ( string &data )

Win или Unix путь. Примеры: /usr/local/ ../local/ ./local c:\Windows\Program files

bool UnixUserName ( string &data )

Последовательность, которая может быть использована в качестве имени пользователя - символы с кодами> 32 исключая [,:+&#%$^(){}[]!*?<>=|\/"]

bool Date ( string &data )

Последовательность в формате Y-m-d (2011-12-31)

bool MultiLine ( string &data )

Многострочный параметр В зависимости от ОС он может быть разделен или CR или CRLF данный валидатор удаляет все символы возврата каретки

bool Ip4 ( string &data )

IP адреса

bool Net ( string &val )

Последовательность является сетью вида ip-адрес/маска Корректными также являются значения ip-адрес/0 и ip-адрес/32 для v4 сетей и ip-адрес/0 и ip-адрес/128 для v6 сетей

bool NetMask ( string &val )

Последовательность является маской подсети Корректными являются значения 0-32 и маски вида 255.255.255.0 для v4 сетей 0-128 для v6 сетей

bool IpRange ( string &val )

Последовательность является диапазоном ip-адресов. Корректными значениями являются отдельный адрес, сеть и диапазон адресов заданный через "-"

bool Mac ( string &data )

Последовательность может быть использована в качестве MAC адреса. Принимаются последовательности вида aabbccddeeff и aa:bb:cc:dd:ee:ff, в первом случае будут добавлены разделители. Последовательность будет сконвертирована в верхний регистр и разделители заменены на ':'.

bool HostName ( string &data )

Последовательность может быть использована в качестве hostname (RFC 952). Длина последовательности не менее 2 и не более 24 символов. Состоит из латинских букв и цифр. Пробелы внутри имени недопустимы. Первый символ должен являться буквой. Последний символ не должен быть "-" или ".". Результат возвращается в нижнем регистре.

bool Url ( string &data )

Последовательность может быть использована в качестве URL Длина URL не проверяется т.к. у каждого браузера свои ограничения

Вид: <схема>="">://[<логин>="">:<пароль>="">@]<хост>="">[:<порт>="">][/<URL ‐путь>="">?<параметры>="">#<якорь>="">] схема - только цифры и буквы (будет сковертирована в нижний регистр) [<логин>="">:<пароль>="">@] - AsciiPrintable хост - IP или Domain (будет переведен в punycode в нижний регистр) порт - только цифры все что после порта - AsciiPrintable

bool WithAster ( string &data )

Доменные имена

bool SubDomain ( string &data )

Последовательность может быть использована в качестве части доменного имени (возможны подчерки для имен сервисов) Последовательность будет сконвертирована в punycode в нижний регистр.

bool DomainRecordName ( string &data )

Последовательность может быть использована в качестве имени ресурсной записи домена (возможны подчерки для имен сервисов) (возможен знак "*") Последовательность будет сконвертирована в punycode в нижний регистр.

bool Domain ( string &data )

Последовательность может быть зарегистрированна в качестве доменного имени соответсвует требованиям национальных регистраторов Результат возвращается в нижнем регистре. Если исходный домен был кодирован в punycode, то он будет декодирован.

bool Email ( string &data )

Последовательность можеть быть использована в качестве почтового ящика (RFC #5322 пункт 3.4.1) Доменная часть будет декодирована из punycode. Результат возвращается в нижнем регистре.

bool TsigKey ( string &data )

Последовательность может быть использована в качестве имени ключа Tsig

Типы

typedef bool(* Valid )(string &data)