#-----------------------------------------------------------------------------
# /etc/check.d/base.exp - expressions for check table of configuration params
#
# Creation:     2003-09-14  fm
# Last Update:  $Id$
#
# Copyright (c) 2001-@@YEAR@@ the eisfair team, team(at)eisfair(dot)org
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#-----------------------------------------------------------------------------
NONE            = '.*'                  : ''
NOTEMPTY        = '.*[^ ]+.*'           : 'may not be empty'
NOBLANK         = '[^ ]+'               : 'may not contain spaces'
ENOBLANK        = '()|(RE:NOBLANK)'
                : 'neither without spaces nor empty'
NUMERIC         = '[0-9]+'              : 'should be numeric (decimal)'
ENUMERIC        = '()|(RE:NUMERIC)'
                : 'neither numeric nor empty'
DOT_NUMERIC     = '(RE:NUMERIC).(RE:NUMERIC)'
                : 'should be numeric (decimal) with dot e.g. 5.0'
EDOT_NUMERIC    = '()|(RE:NUMERIC).(RE:NUMERIC)'
                : 'neither numeric (decimal) with dot e.g. 5.0 nor empty'
NUM_HEX         = '0x[[:xdigit:]]+'
                : 'should be a hexadecimal number
                   (a number starting with "0x")'
NUM_ANY         = '(RE:NUMERIC)|(RE:NUM_HEX)'
                : 'should be a decimal or hexadecimal number'
YESNO           = 'yes|no'              : 'only yes or no are allowed'
MACADDR         = '[[:xdigit:]][[:xdigit:]](:[[:xdigit:]][[:xdigit:]]){5}'
                : 'wrong mac address, should be 6 hex numbers each
                   represented by two digits
                   and devided by ":" (for instance 00:00:E8:83:72:92)'
HOSTNAME        = '[[:alnum:]](-?[[:alnum:]])*'
                : 'wrong hostname, only letters, numbers and minus sign
                   are allowed;
                   no leading or trailing minus sign'
EHOSTNAME       = '()|(RE:HOSTNAME)'
                : 'no valid hostname, should be empty or contain only
                   letters, numbers and minus sign are allowed; no
                   leading or trailing minus sign.'
DOMAIN          = '[[:alnum:]]([-[:alnum:]])*(\.[[:alnum:]](-?[[:alnum:]])*)*'
                : 'wrong domain name, only letters, numbers and minus sign
                   are allowed; parts are divided by a dot (for instance
                   lan.fli4l); no leading or trailing minus sign or dot'
EDOMAIN         = '()|(RE:DOMAIN)'
                : 'neither valid domain name (only letters, numbers and minus
                   sign are allowed; parts are divided by a dot (for instance
                   lan.fli4l); no leading or trailing minus sign or dot) nor empty'
FQDN            = '(RE:HOSTNAME)\.(RE:DOMAIN)'
                : 'wrong fully qualified domain name, should consist of a
                   host name and a domain name diveded by a dot; only
                   letters, numbers and minus sign are allowed, no leading
                   or trailing minus sign'
EFQDN           = '()|(RE:FQDN)'
                : 'neither a fully qualified domain name (should consist of a
                   host name and a domain name diveded by a dot; only letters,
                   numbers and minus sign are allowed, no leading or trailing
                   minus sign) nor empty'
OCTET           = '1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]'
                : 'should be a value between 0 and 255'
IPADDR          = '((RE:OCTET)\.){3}(RE:OCTET)' : 'no valid ip address'
IPADDRESSES     = '(RE:IPADDR)([[:space:]]+(RE:IPADDR))*'
                : 'no valid ip address, please specify one or more valid
                   ip addresses'
EIPADDR         = '()|(RE:IPADDR)'
                : 'neither valid ip address nor empty'
EIPADDRESSES    = '()|(RE:IPADDRESSES)'
                : 'should be empty or contain one or more valid
                   ip addresses'
DNS_SPEC        = '(RE:DOMAIN)[[:space:]]+(RE:IPADDR)'
                : 'invalid specification for special dns servers, should
                   be a domain name followed by one ip address'
MASK            = '3[0-2]|[1-2]?[0-9]'
                : 'no valid netmask spezified, please specify a value
                   between 0 and 32'
NETWORK         = '(RE:IPADDR)/(RE:MASK)'
                : 'no valid network specification, should be a network
                  address followed by a netmask, for instance 192.168.6.0/24'
NETWORKS        = '(RE:NETWORK)([[:space:]]+(RE:NETWORK))*'
                : 'no valid network specification, should be one or more
                  network addresse(s) followed by a netmask,
                  for instance 192.168.6.0/24'
ENETWORKS       = '()|(RE:NETWORKS)'
                : 'no valid network specification, should be empty or
                  should contain one or more
                  network addresse(s) followed by a netmask,
                  for instance 192.168.6.0/24'
MULTIPLE_NETWORKS       = '(RE:NETWORK)([[:space:]]+(RE:NETWORK))+'
                : 'no valid network specification, should be two or more
                  network addresses followed by their netmasks,
                  for instance "192.168.6.0/24 192.168.7.0/24"'
EMULTIPLE_NETWORKS      = '()|(RE:MULTIPLE_NETWORKS)'
                : 'no valid network specification, should be empty or
                  contain two or more
                  network addresses followed by their netmasks,
                  for instance "192.168.6.0/24 192.168.7.0/24"'
IPADDR_NETWORK  = '(RE:IPADDR)|(RE:NETWORK)'
                : 'neither valid ip address nor valid network'
EIPADDR_NETWORK = '()|(RE:IPADDR)|(RE:NETWORK)'
                : 'no valid ip address, network or empty'
MAILADDR        = '[[:alnum:]]([[:alnum:]._-]+)?@((RE:DOMAIN)|localhost)'
                : 'not a valid mail address, use e.g. "aaaa@bbbb.ccc"'
EMAILADDR       = '()|(RE:MAILADDR)'
                : 'neither a mail address nor empty'
CRONTAB         = '([0-9,/*-]+) *([0-9,/*-]+) *([0-9,/*-]+) *([0-9,/*(jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec)-]+) *([0-7,/*(mon,tue,wed,thu,fri,sat,sun)-]+)'
                : 'not a valid crontab string, use e.g. "3 5 * * *"'
ECRONTAB        = '()|(RE:CRONTAB)'
                : 'neither empty or a valid crontab string, use e.g. "3 5 * * *"'
DISK            = '(sd[a-p]|hd[a-l]|c0d[0-7])'
                : 'no valid disk'
PARTITION       = '(RE:DISK)[1-8]|c0d[0-7]p[1-7]'
                : 'no valid partion'
REL_PATH        = '(([[:alnum:]]|[-_.])+)(/([[:alnum:]]|[-_.])+)*/?'
                : 'no valid relative path, only numbers, letters, "-" and
                   "_" divided by "/" are allowed'
E_REL_PATH      = '()|(RE:REL_PATH)'
                : 'neither empty or valid relative path; only numbers,
                  letters, "-" and "_" divided by "/" are allowed'
ABS_PATH        = '/(RE:REL_PATH)?'
                : 'no valid absolute path (must start with a slash and
                   only numbers, letters, "-" and "_" divided by "/" are
                   allowed)'
E_ABS_PATH      = '()|(RE:ABS_PATH)'
                : 'neither empty or
                   valid absolute path (must start with a slash and
                   only numbers, letters, "-" and "_" divided by "/" are
                   allowed)'
LOG_INTERVAL    = 'daily|weekly|monthly'
                : 'no valid interval, should be daily, weekly or monthly'
PORT            = '[0-9]{0,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]'
                : 'port must be in range 1..65535'
EPORT           = '()|(RE:PORT)'
                : 'neither empty or valid port number'
ETH_BASE_DEV_NAME = 'eth[1-9]?[0-9]'
                  : 'Invalid ethernet device name, ether devices are named eth0, eth1, ..., eth9'
ETH_DEV_NAME    = '(RE:ETH_BASE_DEV_NAME)(:[1-9]?[0-9])?'
                : 'Invalid ethernet device name, ether devices are named eth0, eth1:3, eth2:0'
TR_DEV_NAME     = 'tr[1-9]?[0-9]'
                : 'Invalid tokenring device name, tokenring devices are named tr0, tr1, ..., tr9'
BR_BASE_DEV_NAME = 'br[1-9]?[0-9]'
                 : 'Invalid bridge device name, bridge devices are named br0, br1, ..., br9'
BR_DEV_NAME     = '(RE:BR_BASE_DEV_NAME)(:[1-9]?[0-9])?'
                : 'Invalid bridge device name, bridge devices are named br0, br1:3, br2:0'
BOND_BASE_DEV_NAME = 'bond[1-9]?[0-9]'
                   : 'Invalid bonding device name, bonding devices are named bond0, bond1, ..., bond9'
BOND_DEV_NAME   = '(RE:BOND_BASE_DEV_NAME)(:[1-9]?[0-9])?'
                : 'Invalid bonding device name, bonding devices are named bond0, bond1:3, bond2:0'
XEN_BASE_DEV_NAME = 'xenbr[1-9]?[0-9]'
                  : 'Invalid xen bridge device name, xen bridge devices are named xenbr0, xenbr1, ..., xenbr9'
XEN_DEV_NAME     = '(RE:XEN_BASE_DEV_NAME)(:[1-9]?[0-9])?'
                 : 'Invalid xen bridge device name, xen bridge devices are named xenbr0, xenbr1:3, xenbr2:0'
DUMMY_DEV_NAME  = 'dummy[0-9]+'
                : 'Invalid dummy device name, dummy devices are named dummy<number>'
VENET_BASE_DEV_NAME = 'venet[1-9]?[0-9]'
                    : 'Invalid venet device name, venet devices are named venet0, venet1, ..., venet9'
VENET_DEV_NAME  = '(RE:VENET_BASE_DEV_NAME)(:[1-9]?[0-9])?'
                : 'Invalid venet device name, venet devices are named venet0,                   venet1:3, venet2:0'
IP_NET_NAME     = '(RE:TR_DEV_NAME)|(RE:BR_DEV_NAME)|(RE:ETH_DEV_NAME)|(RE:BOND_DEV_NAME)|(RE:XEN_DEV_NAME)|(RE:DUMMY_DEV_NAME)'
                : 'Invalid device name, only ethernet (eth), token ring (tr), bridge (br),
                   bonding (bond), xen bridge (xen-br) or dummy (dummy<number>) devices are allowed.'
IP_ROUTE        = '(RE:IPADDR)[[:space:]]+(RE:IPADDR)[[:space:]]+(RE:IPADDR)'
                : 'no valid route specification (network netmask gateway)'
IP_ROUTE_CIDR   = '(RE:NETWORK)[[:space:]]+(((RE:IPADDR)|(RE:IP_NET_NAME))|((RE:IPADDR)[[:space:]]+(RE:IP_NET_NAME)))'
                : 'no valid route specification (network/cidr gateway)'
PASSWD          = '(RE:NONE)'
                : ''
READONLY        = '(RE:NONE)'
                : ''
HIDDEN          = '(RE:NONE)'
                : ''
CONSOLE_KEYMAP  = '(RE:NOTEMPTY)'
                : 'select a keyboard, for german: de-nodeadkeys'
CONSOLEFONT_NAME = '(RE:NOTEMPTY)'
                : 'select a console font name'
MODULE_ACTION   = 'option|alias|blacklist|forcedstart'
                : 'select the action to aplicate to the module'