support splitted dhcpService/dhcpServer entries
|
@ -2,6 +2,7 @@ March 2013 4.1
|
||||||
- updated EDU person module (RFE 3599128)
|
- updated EDU person module (RFE 3599128)
|
||||||
- Personal: allow management of user certificates (RFE 1753030)
|
- Personal: allow management of user certificates (RFE 1753030)
|
||||||
- Unix: Support Samba Unix Id pool for automatic UID/GID generation
|
- Unix: Support Samba Unix Id pool for automatic UID/GID generation
|
||||||
|
- DHCP: support separated dhcpServer and dhcpService entries
|
||||||
- LAM Pro:
|
- LAM Pro:
|
||||||
-> support Qmail groups
|
-> support Qmail groups
|
||||||
- fixed bugs:
|
- fixed bugs:
|
||||||
|
|
|
@ -3116,8 +3116,13 @@ Have fun!
|
||||||
<para>You can mange your DHCP server with LAM. It supports to manage
|
<para>You can mange your DHCP server with LAM. It supports to manage
|
||||||
subnets, fixed IP entries, IP ranges and DDNS. The DHCP can be activated
|
subnets, fixed IP entries, IP ranges and DDNS. The DHCP can be activated
|
||||||
by adding the account type DHCP to your server profile. Please also add
|
by adding the account type DHCP to your server profile. Please also add
|
||||||
the DHCP modules. LAM requires that you use an LDAP entry with the
|
the DHCP modules.</para>
|
||||||
object class "dhcpServer" as suffix for this account type.</para>
|
|
||||||
|
<para>LAM requires that you use an LDAP entry with the object class
|
||||||
|
"dhcpService" or "dhcpServer" as suffix for this account type. If the
|
||||||
|
"dhcpServer" entry points to a "dhcpService" entry via "dhcpServiceDN"
|
||||||
|
then you need to use the DN of the "dhcpService" entry as LDAP suffix
|
||||||
|
for DHCP.</para>
|
||||||
|
|
||||||
<literallayout>
|
<literallayout>
|
||||||
</literallayout>
|
</literallayout>
|
||||||
|
@ -3208,7 +3213,8 @@ Run slapindex to rebuild the index.
|
||||||
|
|
||||||
</literallayout></para>
|
</literallayout></para>
|
||||||
|
|
||||||
<para>You can manage the settings of your DHCP server entry:</para>
|
<para>You can manage the settings of your DHCP service/server
|
||||||
|
entry:</para>
|
||||||
|
|
||||||
<screenshot>
|
<screenshot>
|
||||||
<mediaobject>
|
<mediaobject>
|
||||||
|
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 41 KiB |
|
@ -1643,7 +1643,7 @@ class accountContainer {
|
||||||
for ($j=0; $j<count($ops); $j++) {
|
for ($j=0; $j<count($ops); $j++) {
|
||||||
$attrs = array_keys($temp[$DNs[$i]][$ops[$j]]);
|
$attrs = array_keys($temp[$DNs[$i]][$ops[$j]]);
|
||||||
for ($k=0; $k<count($attrs); $k++) {
|
for ($k=0; $k<count($attrs); $k++) {
|
||||||
$attributes[$DNs[$i]][$ops[$j]][$attrs[$k]] = array_unique($attributes[$DNs[$i]][$ops[$j]][$attrs[$k]]);
|
$attributes[$DNs[$i]][$ops[$j]][$attrs[$k]] = array_values(array_unique($attributes[$DNs[$i]][$ops[$j]][$attrs[$k]]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ $Id$
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2008 Thomas Manninger
|
Copyright (C) 2008 Thomas Manninger
|
||||||
2008 - 2012 Roland Gruber
|
2008 - 2013 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -43,19 +43,6 @@ class ddns extends baseModule {
|
||||||
public $ddns = array();
|
public $ddns = array();
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the module after it became part of an {@link accountContainer}
|
|
||||||
*
|
|
||||||
* Calling this method requires the existence of an enclosing {@link accountContainer}.
|
|
||||||
*
|
|
||||||
* @param string $base the name of the {@link accountContainer} object ($_SESSION[$base])
|
|
||||||
*/
|
|
||||||
public function init($base) {
|
|
||||||
parent::init($base);
|
|
||||||
$this->attributes = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes;
|
|
||||||
$this->orig = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->orig;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns meta data that is interpreted by parent class.
|
* Returns meta data that is interpreted by parent class.
|
||||||
*
|
*
|
||||||
|
@ -168,7 +155,7 @@ class ddns extends baseModule {
|
||||||
public function module_complete() {
|
public function module_complete() {
|
||||||
if ($this->getAccountContainer()->dn_orig==$_SESSION['config']->get_suffix('dhcp')) {
|
if ($this->getAccountContainer()->dn_orig==$_SESSION['config']->get_suffix('dhcp')) {
|
||||||
// check if DHCP main settings and valid DHCP entry
|
// check if DHCP main settings and valid DHCP entry
|
||||||
if (!in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
if (!in_array_ignore_case('dhcpService', $this->attributes['objectClass']) && !in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//Main settings
|
//Main settings
|
||||||
|
@ -193,6 +180,22 @@ class ddns extends baseModule {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of modifications which have to be made to the LDAP account.
|
||||||
|
*
|
||||||
|
* @return array list of modifications
|
||||||
|
* <br>This function returns an array with 3 entries:
|
||||||
|
* <br>array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... )
|
||||||
|
* <br>DN is the DN to change. It may be possible to change several DNs (e.g. create a new user and add him to some groups via attribute memberUid)
|
||||||
|
* <br>"add" are attributes which have to be added to LDAP entry
|
||||||
|
* <br>"remove" are attributes which have to be removed from LDAP entry
|
||||||
|
* <br>"modify" are attributes which have to been modified in LDAP entry
|
||||||
|
* <br>"info" are values with informational value (e.g. to be used later by pre/postModify actions)
|
||||||
|
*/
|
||||||
|
public function save_attributes() {
|
||||||
|
// done by dhcp_server object
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function check if ddns is enable.
|
* This function check if ddns is enable.
|
||||||
*/
|
*/
|
||||||
|
@ -249,7 +252,7 @@ class ddns extends baseModule {
|
||||||
* Process for mainsettings
|
* Process for mainsettings
|
||||||
*/
|
*/
|
||||||
public function process_attributes_mainSettings() {
|
public function process_attributes_mainSettings() {
|
||||||
if (!in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
if (!in_array_ignore_case('dhcpService', $this->attributes['objectClass']) && !in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
$errors = array();
|
$errors = array();
|
||||||
|
@ -339,11 +342,13 @@ class ddns extends baseModule {
|
||||||
* @return htmlElement HTML meta data
|
* @return htmlElement HTML meta data
|
||||||
*/
|
*/
|
||||||
public function display_html_attributes() {
|
public function display_html_attributes() {
|
||||||
|
$this->attributes = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes;
|
||||||
|
$this->orig = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->orig;
|
||||||
$return = new htmlTable();
|
$return = new htmlTable();
|
||||||
// check if DHCP main settings and valid DHCP entry
|
// check if DHCP main settings and valid DHCP entry
|
||||||
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
||||||
if (!in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
if (!in_array_ignore_case('dhcpService', $this->attributes['objectClass']) && !in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
||||||
$return->addElement(new htmlStatusMessage('ERROR', _('Please set your LDAP suffix to an LDAP entry with object class "dhcpServer".')));
|
$return->addElement(new htmlStatusMessage('ERROR', _('Please set your LDAP suffix to an LDAP entry with object class "dhcpService" or "dhcpServer".')));
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -364,7 +369,6 @@ class ddns extends baseModule {
|
||||||
else {
|
else {
|
||||||
// DNS server
|
// DNS server
|
||||||
$serverInput = new htmlTableExtendedInputField(_('IP address of the DNS server'), 'ip', $this->getDNSServer(), 'dns');
|
$serverInput = new htmlTableExtendedInputField(_('IP address of the DNS server'), 'ip', $this->getDNSServer(), 'dns');
|
||||||
$serverInput->setRequired(true);
|
|
||||||
$return->addElement($serverInput, true);
|
$return->addElement($serverInput, true);
|
||||||
|
|
||||||
$zones = $this->getZoneNames();
|
$zones = $this->getZoneNames();
|
||||||
|
@ -378,11 +382,9 @@ class ddns extends baseModule {
|
||||||
}
|
}
|
||||||
// zone names
|
// zone names
|
||||||
$zoneInput = new htmlTableExtendedInputField(_('Zone names'), 'zone', $zone, 'zone');
|
$zoneInput = new htmlTableExtendedInputField(_('Zone names'), 'zone', $zone, 'zone');
|
||||||
$zoneInput->setRequired(true);
|
|
||||||
$return->addElement($zoneInput, true);
|
$return->addElement($zoneInput, true);
|
||||||
// reverse zone names
|
// reverse zone names
|
||||||
$revZoneInput = new htmlTableExtendedInputField(_('Reverse zone names'), 'zone_reverse', $revzone, 'zone_reverse');
|
$revZoneInput = new htmlTableExtendedInputField(_('Reverse zone names'), 'zone_reverse', $revzone, 'zone_reverse');
|
||||||
$revZoneInput->setRequired(true);
|
|
||||||
$return->addElement($revZoneInput);
|
$return->addElement($revZoneInput);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -396,6 +398,9 @@ class ddns extends baseModule {
|
||||||
* @return array list of possible PDF entries
|
* @return array list of possible PDF entries
|
||||||
*/
|
*/
|
||||||
public function get_pdfEntries() {
|
public function get_pdfEntries() {
|
||||||
|
// attributes are taken from DHCP server object
|
||||||
|
$this->attributes = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes;
|
||||||
|
$this->orig = &$this->getAccountContainer()->getAccountModule('dhcp_settings')->orig;
|
||||||
$zones = $this->getZoneNames();
|
$zones = $this->getZoneNames();
|
||||||
$zone = '';
|
$zone = '';
|
||||||
$revzone = '';
|
$revzone = '';
|
||||||
|
|
|
@ -4,7 +4,7 @@ $Id$
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
||||||
Copyright (C) 2008 Thomas Manninger
|
Copyright (C) 2008 Thomas Manninger
|
||||||
2008 - 2012 Roland Gruber
|
2008 - 2013 Roland Gruber
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -342,7 +342,7 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
|
||||||
public function process_attributes() {
|
public function process_attributes() {
|
||||||
// check if DHCP main settings and valid DHCP entry
|
// check if DHCP main settings and valid DHCP entry
|
||||||
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
||||||
if (!in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
if (!in_array_ignore_case('dhcpService', $this->attributes['objectClass']) && !in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -517,8 +517,8 @@ By default, the nodes are configured as H-Nodes which fits for small networks. I
|
||||||
$return = new htmlTable();
|
$return = new htmlTable();
|
||||||
// check if DHCP main settings and valid DHCP entry
|
// check if DHCP main settings and valid DHCP entry
|
||||||
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
if ($_SESSION['config']->get_suffix('dhcp') == $this->getAccountContainer()->dn_orig) {
|
||||||
if (!in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
if (!in_array_ignore_case('dhcpService', $this->attributes['objectClass']) && !in_array_ignore_case('dhcpServer', $this->attributes['objectClass'])) {
|
||||||
$return->addElement(new htmlStatusMessage('ERROR', _('Please set your LDAP suffix to an LDAP entry with object class "dhcpServer".')));
|
$return->addElement(new htmlStatusMessage('ERROR', _('Please set your LDAP suffix to an LDAP entry with object class "dhcpService" or "dhcpServer".')));
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|