Datatypes

Dan Lüdtke edited this page Oct 29, 2016 · 2 revisions

Datatypes are functions to dynamically validate the user input on the client side using Javascript.

Table of Contents

Definition

A datatype is defined as a

  • Standard validation:
  #!lua
  cbi_element.datatype = "type"
  • Validation with arguments:
 #!lua
 cbi_element.datatype = "type(123, 'arg2')"
  • Combination of a meta type and mixed types and strings:
 #!lua
 cbi_element.datatype = [[ metatype(type(123, "arg2"), type, "string", 456) ]]

Meta types

and

Makes it possible to validate against one or more datatypes in the same field.

Example usage:

 #!lua
 cbi_element.datatype = [[ and(max(2048), uinteger) ]]
  • Would allow using integers from 0 to 2048, no decimals.

or

Makes it possible to use different datatypes in the same field.

Example usage:

 #!lua
 cbi_element.datatype = [[ or(min(30), -1, "infinity") ]]
  • Would allow using -1, a positive number except from 0 to 29 and allow the term infinity to be used.

neg

Allow using an exclamation mark in front of the value.

Example usage:

 #!lua
 cbi_element.datatype = "neg(ipaddr)"

list

Allow the usage of a space separated multi-value.

Types

bool

Verify if the value is either 1, yes, on, true or 0, no, off, false.

Example: on

uinteger

Verify if the value is a positive (unsigned) number and doesn't contain decimals.

Example: 2900

integer

Verify if the value is a number doesn't contain decimals.

Example: -1090

ufloat

Verify if the value is a positive number.

Example: 87.5

float

Verify if the value is a number.

Example: -192.34

ipaddr

Verify if the value is an IP address, either IPv4 or IPv6.

ip4addr

Verify if the value is an IPv4 address.

Example: 198.51.100.49

ip4prefix

Verify if the value is an IPv4 address and allow to add a mask.

Example: 203.0.113.0/24

ip6addr

Verify if the value is an IPv6 address.

Example: 2001:db8:1200::ab:45ff:fe12:3456

ip6prefix

Verify if the value is an IPv6 address and allow to add a mask.

Example: 2001:db8:1234::/48

port

Verify if the value is a port between 0 and 65535.

Example: 8080

portrange

Verify if the value contains one or more port separated by a dash.

Example: 67-69

macaddr

Verify if the value is a valid MAC address separated by colons. The address may contain uppercase and lowercase hexadecimal characters.

Examples: 62:11:22:aa:bb:cc

hostname

Verify if the value is a valid DNS domain name or hostname. The hostname can contain uppercase and lowercase alphanumerical characters, underscore, dash and dots. Hostname cannot start with a dash or end with a dot.

Example: this_IS-a.valid.host.name

host

Verify if the value is a valid hostname or IP address.

Example: openwrt.domain.local

network

Same as host but also allows UCI network names found in the Network, Interfaces page.

Example: lan

wpakey

Verify if the value is a valid WPA pre-shared key, from 8 to 63 characters or a valid WPA key containing exactly 64 hexadecimal characters.

Example: *This is+a,valid WPA key 123%

wepkey

Verify if the value is a valid 40 bits or 104 bit WEP key or string. If the WEP key is defined as a string, it must start with s: and contain either 5 or 13 characters. If the key is defined as hexadecimal, it must contain exactly 10 or 26 hexadecimal characters.

Example: 123abcd890

string

Does not validate anything.

directory

Tests on the server side whether the value is a path pointing to a directory or a path pointing to a symlink of a directory.

Example: /tmp

file

Tests on the server side whether the value is a path pointing to a directory or a path pointing to a symlink of a directory.

Example: /tmp/resolv.conf

device

Tests on the server side whether the value is a path pointing to a device or a path pointing to a symlink of a device.

Example: /dev/null

uciname

Verify if the value is a valid UCI name.

Example: lan

range(min, max)

Verify if the value is a valid number between min and max.

Example: 100

min(min)

Verify if the value is a valid number above or equal to min.

Example: 152

max(max)

Verify if the value is a valid number below or equal to max.

Example: -80

rangelength(min, max)

Verify if the value fits in length between min characters and max characters.

Example: This is a test string

minlength(min)

Verify if the value has at least min characters or more.

Example: 1200

maxlength(max)

Verify if the value has at most max characters or less.

Example: 500

phonedigit

Verify if the value qualifies as a phone number containing digits from 0 to 9, star, or pound.

Example: 18005555555##123*

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.