} else { if ($server_address && $server_address != "" || $server_port && !is_numeric($server_port)) { $input_errors[] = "'Address' and 'port' should be empty when a 'Forwardto' frontend is chosen other than 'Address+Port'."; } } if (!preg_match("/.{2,}/", $server_name)) { $input_errors[] = "The field 'Name' is required (and must be at least 2 characters)."; } if ($server_weight && !is_numeric($server_weight)) { $input_errors[] = "The field 'Weight' value is not a number."; } if ($server_port && !is_numeric($server_port)) { $input_errors[] = "The field 'Port' value is not a number."; } } $a_errorfiles = haproxy_htmllist_get_values($fields_errorfile); if ($_POST['strict_transport_security'] !== "" && !is_numeric($_POST['strict_transport_security'])) { $input_errors[] = "The field 'Strict-Transport-Security' is not empty or a number."; } // if (!$input_errors) { $pool = array(); if (isset($id) && $a_pools[$id]) { $pool = $a_pools[$id]; } if ($pool['name'] != $_POST['name']) { // name changed: if (!is_array($config['installedpackages']['haproxy']['ha_backends']['item'])) { $config['installedpackages']['haproxy']['ha_backends']['item'] = array(); } $a_backend =& $config['installedpackages']['haproxy']['ha_backends']['item']; for ($i = 0; $i < count($a_backend); $i++) {
$input_errors[] = "The field 'Port' value '" . htmlspecialchars($port) . "' is not a number or alias thereof."; } } if ($_POST['client_timeout'] !== "" && !is_numeric($_POST['client_timeout'])) { $input_errors[] = "The field 'Client timeout' value is not a number."; } } /* Ensure that our pool names are unique */ for ($i = 0; isset($config['installedpackages']['haproxy']['ha_backends']['item'][$i]); $i++) { if ($_POST['name'] == $config['installedpackages']['haproxy']['ha_backends']['item'][$i]['name'] && $i != $id) { $input_errors[] = "This frontend name has already been used. Frontend names must be unique. {$i} != {$id}"; } } $a_certificates = haproxy_htmllist_get_values($fields_sslCertificates); $pconfig['a_certificates'] = $a_certificates; $a_acl = haproxy_htmllist_get_values($fields_aclSelectionList); $pconfig['a_acl'] = $a_acl; foreach ($a_acl as $acl) { $acl_name = $acl['name']; $acl_value = $acl['value']; if (preg_match("/[^a-zA-Z0-9\\.\\-_]/", $acl_name)) { $input_errors[] = "The field 'Name' contains invalid characters."; } if (!preg_match("/.{1,}/", $acl_value)) { $input_errors[] = "The field 'Value' is required."; } if (!preg_match("/.{2,}/", $acl_name)) { $input_errors[] = "The field 'Name' is required with at least 2 characters."; } } if (!$input_errors) {
$input_errors[] = "The field 'Stats Username' contains invalid characters."; } // the colon ":" can also be used in the password if (preg_match("/[^a-zA-Z0-9!-~ ]/", $_POST['stats_password'])) { $input_errors[] = "The field 'Stats Password' contains invalid characters."; } if (preg_match("/[^a-zA-Z0-9\\-_]/", $_POST['stats_node'])) { $input_errors[] = "The field 'Stats Node' contains invalid characters. Should be a string with digits(0-9), letters(A-Z, a-z), hyphen(-) or underscode(_)"; } /* Ensure that our pool names are unique */ for ($i = 0; isset($config['installedpackages']['haproxy']['ha_pools']['item'][$i]); $i++) { if ($_POST['name'] == $config['installedpackages']['haproxy']['ha_pools']['item'][$i]['name'] && $i != $id) { $input_errors[] = "This pool name has already been used. Pool names must be unique."; } } $a_servers = haproxy_htmllist_get_values($fields_servers); foreach ($a_servers as $server) { $server_name = $server['name']; $server_address = $server['address']; $server_port = $server['port']; $server_weight = $server['weight']; if (preg_match("/[^a-zA-Z0-9\\.\\-_]/", $server_name)) { $input_errors[] = "The field 'Name' contains invalid characters."; } if (!is_ipaddr($server_address) && !is_hostname($server_address)) { $input_errors[] = "The field 'Address' is not a valid ip address or hostname."; } if (!preg_match("/.{2,}/", $server_name)) { $input_errors[] = "The field 'Name' is required (and must be at least 2 characters)."; } if ($server_weight && !is_numeric($server_weight)) {
$input_errors[] = "The field 'Stats Username' contains invalid characters."; } // the colon ":" can also be used in the password if (preg_match("/[^a-zA-Z0-9!-~ ]/", $_POST['stats_password'])) { $input_errors[] = "The field 'Stats Password' contains invalid characters."; } if (preg_match("/[^a-zA-Z0-9\\-_]/", $_POST['stats_node'])) { $input_errors[] = "The field 'Stats Node' contains invalid characters. Should be a string with digits(0-9), letters(A-Z, a-z), hyphen(-) or underscode(_)"; } /* Ensure that our pool names are unique */ for ($i = 0; isset($config['installedpackages']['haproxy']['ha_pools']['item'][$i]); $i++) { if ($_POST['name'] == $config['installedpackages']['haproxy']['ha_pools']['item'][$i]['name'] && $i != $id) { $input_errors[] = "This pool name has already been used. Pool names must be unique."; } } $a_servers = haproxy_htmllist_get_values(array_merge($fields_servers, $fields_servers_details)); foreach ($a_servers as $server) { $server_name = $server['name']; $server_address = $server['address']; $server_port = $server['port']; $server_weight = $server['weight']; if (preg_match("/[^a-zA-Z0-9\\.\\-_]/", $server_name)) { $input_errors[] = "The field 'Name' contains invalid characters."; } if (!isset($server['forwardto']) || $server['forwardto'] == "") { if (!is_ipaddr($server_address) && !is_hostname($server_address) && !haproxy_is_frontendname($server_address)) { $input_errors[] = "The field 'Address' for server {$server_name} is not a valid ip address or hostname." . $server_address; } } else { if ($server_address && $server_address != "" || $server_port && !is_numeric($server_port)) { $input_errors[] = "'Address' and 'port' should be empty when a 'Forwardto' frontend is chosen other than 'Address+Port'.";
} /* Ensure that our pool names are unique */ for ($i = 0; isset($config['installedpackages']['haproxy']['ha_backends']['item'][$i]); $i++) { if ($_POST['name'] == $config['installedpackages']['haproxy']['ha_backends']['item'][$i]['name'] && $i != $id) { $input_errors[] = "This frontend name has already been used. Frontend names must be unique. {$i} != {$id}"; } } $a_certificates = haproxy_htmllist_get_values($fields_sslCertificates); $pconfig['a_certificates'] = $a_certificates; $a_clientcert_ca = haproxy_htmllist_get_values($fields_caCertificates); $pconfig['clientcert_ca'] = $a_clientcert_ca; $a_clientcert_crl = haproxy_htmllist_get_values($fields_crlCertificates); $pconfig['clientcert_crl'] = $a_clientcert_crl; $a_acl = haproxy_htmllist_get_values($fields_aclSelectionList); $pconfig['a_acl'] = $a_acl; $a_extaddr = haproxy_htmllist_get_values($fields_externalAddress); $pconfig['a_extaddr'] = $a_extaddr; foreach ($a_acl as $acl) { $acl_name = $acl['name']; $acl_value = $acl['value']; $acltype = haproxy_find_acl($acl['expression']); if (preg_match("/[^a-zA-Z0-9\\.\\-_]/", $acl_name)) { $input_errors[] = "The field 'Name' contains invalid characters."; } if (!isset($acltype['novalue'])) { if (!preg_match("/.{1,}/", $acl_value)) { $input_errors[] = "The field 'Value' is required."; } } if (!preg_match("/.{2,}/", $acl_name)) { $input_errors[] = "The field 'Name' is required with at least 2 characters.";