allow to set the host name (RFE 2898948)

This commit is contained in:
Roland Gruber 2009-11-24 21:50:17 +00:00
parent b0e57a1de9
commit b2c358c770
1 changed files with 32 additions and 8 deletions

View File

@ -227,6 +227,12 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
);
// upload fields
$return['upload_columns'] = array(
array(
'name' => 'dhcp_settings_host-name',
'description' => _('Host name'),
'help' => 'host-name',
'example' => _('server01'),
),
array(
'name' => 'dhcp_settings_subnet',
'description' => _('Subnet'),
@ -327,6 +333,7 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
$this->messages['domainname'][4] = array('ERROR', _('Account %s:') . ' dhcp_settings_domainName', _('The domain name needs to have at least 3 characters.'));
$this->messages['domainname'][5] = array('ERROR', _('Account %s:') . ' dhcp_settings_domainName', _('The domain name includes invalid characters. Valid characters are A-Z, a-z, 0-9, ".", "_","-".'));
$this->messages['host-name'][0] = array('ERROR', _('Host name'), _('Host name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
$this->messages['host-name'][1] = array('ERROR', _('Account %s:') . ' dhcp_settings_host-name', _('Host name contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
}
/* This function returns an array with 4 entries:
@ -404,7 +411,7 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
$errors[] = $this->messages['domainname'][2];
}
}
$this->setDHCPOption('domain-name', $_POST['domainname']);
$this->setDHCPOption('domain-name', '"' . $_POST['domainname'] . '"');
// Check DNS
if (!empty($_POST['dns'])) {
@ -477,6 +484,13 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
$this->setDHCPOption('netbios-node-type', $_POST['netbios_node_type']);
if ($this->getAccountContainer()->dn_orig!=$_SESSION['config']->get_suffix('dhcp')) {
// check host name
if ($_POST['host-name'] != '') {
if (!get_preg($_POST['host-name'], 'hostname')) {
$errors[] = $this->messages['host-name'][0];
}
}
$this->setDHCPOption('host-name', '"' . $_POST['host-name'] . '"');
// Check subnet
$_POST['subnet'] = trim($_POST['subnet']);
if (!check_ip($_POST['subnet'], true)) {
@ -535,12 +549,6 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
}
}
// host name
$return[] = array(
array('kind' => 'text', 'text' => _('Host name') . ": "),
array('kind' => 'input', 'name' => 'host-name', 'value' => $this->getDHCPOption('host-name')),
array('kind' => 'help', 'value' => 'host-name'));
// Subnet name
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
$return[] = array(
@ -549,7 +557,12 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
array('kind' => 'help', 'value' => 'subnet'));
}
else {
// host name
$return[] = array(
array('kind' => 'text', 'text' => _('Host name') . ": "),
array('kind' => 'input', 'name' => 'host-name', 'value' => $this->getDHCPOption('host-name')),
array('kind' => 'help', 'value' => 'host-name'));
$return[] = array(
array('kind' => 'text', 'text' => _('Subnet') . ":* "),
array('kind' => 'input', 'name' => 'cn', 'value' => $this->attributes['cn'][0]),
array('kind' => 'help', 'value' => 'subnet'),
@ -696,7 +709,7 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
* @param String $name option name
* @return String value
*/
private function getDHCPOption($name) {
public function getDHCPOption($name) {
$return = null;
if (is_array($this->attributes['dhcpOption'])) {
for ($i = 0; $i < sizeof($this->attributes['dhcpOption']); $i++) {
@ -821,6 +834,17 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
// add object class
if (!in_array("dhcpOptions", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "dhcpOptions";
if (!in_array("dhcpSubnet", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "dhcpSubnet";
// host name
if ($rawAccounts[$i][$ids['dhcp_settings_host-name']] != '') {
if (get_preg($rawAccounts[$i][$ids['dhcp_settings_host-name']], 'hostname')) {
$partialAccounts[$i]['dhcpOption'][] = 'host-name "' . $rawAccounts[$i][$ids['dhcp_settings_host-name']] . '"';
}
else {
$error = $this->messages['host-name'][1];
array_push($error, $i);
$messages[] = $error;
}
}
// subnet
if (check_ip($rawAccounts[$i][$ids['dhcp_settings_subnet']],true)) {
$partialAccounts[$i]['cn'] = $rawAccounts[$i][$ids['dhcp_settings_subnet']];