14 # XXX: weird hack, but it works...
15 n =
split($
0, param
, "|")
17 for (i =
6; i
<= n
; i
++) value = value
FS param
[i
]
23 if (value !~
/^
[0-9]*$
/) { valid =
0; verr =
"@TR<<Invalid value>>" }
26 # FIXME: add proper netmask validation
27 ($
1 ==
"ip") || ($
1 ==
"netmask") {
29 if ((value
!= "") && (value !~
/^
[0-9][0-9]*\.
[0-9][0-9]*\.
[0-9][0-9]*\.
[0-9][0-9]*$
/)) valid =
0
31 split(value
, ipaddr
, "\\.")
32 for (i =
1; i
<=
4; i
++) {
33 if ((ipaddr
[i
] < 0) || (ipaddr
[i
] > 255)) valid =
0
36 if (valid ==
0) verr =
"@TR<<Invalid value>>"
41 if (value !~
/^
[0-9A
-Fa
-f
]*$
/) {
43 verr =
"@TR<<Invalid value>>"
44 } else if ((length(value
) != 0) && (length(value
) != 10) && (length(value
) != 26)) {
46 verr =
"Invalid key length"
47 } else if (value ~
/0$
/) {
49 verr =
"Key must not end with '0'"
55 if (value !~
/^
[0-9a
-zA
-z\.\
-]*$
/) {
57 verr =
"@TR<<Invalid value>>"
67 if ((value
!= "") && (value !~
/^
[0-9a
-fA
-F
][0-9a
-fA
-F
]:[0-9a
-fA
-F
][0-9a
-fA
-F
]:[0-9a
-fA
-F
][0-9a
-fA
-F
]:[0-9a
-fA
-F
][0-9a
-fA
-F
]:[0-9a
-fA
-F
][0-9a
-fA
-F
]:[0-9a
-fA
-F
][0-9a
-fA
-F
]$
/)) {
69 verr =
"@TR<<Invalid value>>"
75 if (value !~
/^
[0-9]*$
/) {
77 verr =
"@TR<<Invalid value>>"
83 n =
split(value
",", ports
, ",")
84 for (i =
1; i
<= n
; i
++) {
85 if ((ports
[i
] !~
/^
[0-9]*$
/) && (ports
[i
] !~
/^
[0-9][0-9]*-[0-9][0-9]*$
/)) {
87 verr =
"@TR<<Invalid value>>"
94 if (length(value
) > 64) {
96 verr =
"String too long"
98 if ((length(value
) != 0) && (length(value
) < 8)) {
100 verr =
"String too short"
102 if ((length(value
) ==
64) && (value ~
/[^
0-9a
-fA
-F
]/)) {
104 verr =
"Invalid hex key"
108 valid_type
!= 1 { valid =
0 }
111 n =
split($
4, options
, " ")
112 for (i =
1; (valid ==
1) && (i
<= n
); i
++) {
113 if (options
[i
] ==
"required") {
114 if (value ==
"") { valid =
0; verr =
"No value entered" }
115 } else if ((options
[i
] ~
/^min=
/) && (value
!= "")) {
117 sub(/^min=
/, "", min
)
120 if (value
< min
) { valid =
0; verr =
"Value too small (minimum: " min
")" }
121 } else if ($
1 ==
"string") {
122 if (length(value
) < min
) { valid =
0; verr =
"Value too small (minimum length: " min
")"}
124 } else if ((options
[i
] ~
/^max=
/) && (value
!= "")) {
126 sub(/^max=
/, "", max
)
129 if (value
> max
) { valid =
0; verr =
"@TR<<Value too large>> (@TR<<maximum>>: " max
")" }
130 } else if ($
1 ==
"string") {
131 if (length(value
) > max
) { valid =
0; verr =
"@TR<<String too short>> (@TR<<maximum>>: " max
")" }
133 } else if ((options
[i
] ==
"nodots") && ($
1 ==
"hostname")) {
136 verr =
"@TR<<Invalid value>>"
143 if (valid ==
1) output = output $
2 "=\"" value
"\";\n"
144 else error = error
"Error in " $
3 ": " verr
"<br />"
148 print output
"ERROR=\"" error
"\";\n"
149 if (error ==
"") print "return 0"
150 else print "return 255"