Turbo Fredriksson
2005-06-08 09:06:59 UTC
Official release of the development branch (HEAD/REL_2_3_0).
Most notable changes is native support for Kerberos V and remote
ezmlm mailing lists.
DO REMEMBER:
This is a _development_ release. It might or might not work as
it's supposed...
- ----- W A R N I N G -----
Administrations of remote ezmlm lists is more or less done. It can
RETREIVE information, but WRITING (in one way or the other) have not
been tested AT ALL! Do not use on live lists, they might be totaly
fucked if I've missed something!!
- -------------------------
phpQLAdmin 2.3.0 Release (Jun 8 2005)
Bug fixes
- Session was started with the path specified in php.ini:session.cookie_path.
For me that was '/' which meant that if I have two (or more) phpQLAdmin
installations on the same server (which I do - stable, devel and demo etc),
they overwrote each others session variable.
To avoid this, we must set the 'session.cookie_path' using ini_set() BEFORE
session is started. Instead of doing this in every place where session_start()
is called, we include the new file 'include/pql_session.inc' which does
some additional magic.
+ The 'session.cookie_path' init value must always end with a slash, so make
sure it does...
Should fix some problems with sessions that won't die or get's overwritten.
+ Getting what type of browser the user is using is a session thing so move
it from left-head.html to include/pql_session.inc where it belongs...
This should REALLY fix the disappearance of the frame borders...
+ Don't hardcode require()/include() (etc) calls to './'. Use the session value
'path' as prefix in _ALL_ (?) calls to require()/include().
- Overloading of variables in tables/domain_details-websrv.inc fixed ($server*
to $web_srv*).
- If one enters a mailForwardingAddress and:
+ qmailDotMode != none
+ deliveryMode != noprogram
+ deliveryProgramPath != NULL
+ ldapDefaultDotMode == ldapwithprog
then there will be a COPY in the users local mailbox. Solve this by changing
the 'qmailDotMode' and 'deliveryMode'.
+ Make sure to re-enable local delivery for the user if not forwarding (any more).
- When (if) retreiving object classes the LDAP server understands, we must catch
attribute alias(es). A MAY/MUST on 'domainComponent' must translate to 'dc'
and back...
- Change the way 'cn' is modified. If we're called with an old value, we replace
_only_ that specific value. If no old value, replace the whole attribute list.
- When adding a user, the inclusion of the home directory must be done outside
of the 'if mailhost is allowed'.
- When _editing_ (changing) a common name for a user, include the old value in
the change.
+ Support additions and deletions of 'cn' value(s).
- When retreiving domain details information, don't retreive 'facsimileTelephoneNumber'
twice...
- The 'pql_split_oldvalues(pql_get_define("PQL_CONF_WEBSRV_OC"))' directly
returns an array() so no need to go through them and add them to a two
dimensional array (which was named wrong - use pql_get_define("PQL_ATTR_OBJECTCLASS")
as we're supposed to).
+ Use 'PQL_CONF_WEBSRV_OC' instead of the faulty 'PQL_ATTR_WEBSRV_OC'.
+ Add define for 'ApacheSectionName', used by the webserver object manager.
- Include 'ApacheSectionName=VirtualHost' when creating a web server object,
othervise mod_ldap_cfg won't get it's virtual hosts...
- If the user logging in can't be found, we must clear the '_POST' value between
attempts, othervise we're trying to authenticate again (and again...)
- When an object class violation occured when adding an attribute to a object,
the combination of the old and the new object classes failed.
- If the root DN don't contain the user reference value, retreival of
domains/branches fails. Use a 'resonable default' (uid).
- If the root DN is a 'dc' object and domain/branch reference is 'ou',
we must use 'organizationalUnit' in the object class filter when retreiving
domains/branches... => 'ou=domain2.tld,dc=domain2,dc=tld'. Ugly, but ok.
GUI layout changes
- Rewrite the way users are listed in the left frame. The attribute 'cn' is
the most obvious to show and the way that's shown is also rewritten.
+ If a user have more than two fields (space separated - 'Ulf Turbo Fredriksson'),
then the _last_ part is the lastname and all the others are first names...
If memory serves me correctly, this isn't true for arabic/chinese names, but...
+ After 'cn' comes 'givenName' and 'sn' and after that comes 'gecos'. Last
chance is the 'user reference attribute' (whatever that might be - it MUST
exists however).
- When creating a 'forwarding account' there are two possibilities. Either with
local delivery (as well as forwarding) or no local delivery (i.e. only forwarding).
Allow this with two radio buttons in the 'Additional account properties' page -
'Copy to' (default) or 'Forward to'.
+ Create objects with real home dirs...
- Include a 'NOT' option for user search. Describe what it does and how it works.
- Add a 'Force no local delivery' checkbox when _creating_ a mail forwarding address.
('Bug fixes' point 3 - mailForwardingAddress creation - above)
- If there is no MAY attributes in the user templates, we must say so (<i>None</i>)
instead of having an empty line.
- Change the sizes of the left frames (QmailLDAP/Controls an ezmlm should be WAY
smaller).
- Change wording from 'Server URL' to 'Server FQDN'.
- Have a resonable default welcome message (phpQLAdmin @ <SERVER NAME>) if
we don't have a PQL_CONF_WHOAREWE define.
- Change/fix the way the USER_HOST session value is set. I'm splitting and
combining in a way that was quite redundant - we ended up with the exact
same value as we started with! Wonder what I was thinking... :)
- Sort the domain/branch list according to the branch name value NOT the
DN. This means we must explode()/split() the DN into parts, recustruct a
new temporary array which we sort and then use that array as a base for
putting the new, correctly sorted array togheter.
+ The function pql_get_domains() is now sorting the domains/branch list better
than asort() can do so no need to call asort() after pql_get_domains().
- Better/More debugging support. I forgot to die() (and not forward to view)
if the file .DEBUG_ME existed in some places.
Schema changes
- Because of the change in the way 'forwarding accounts' where used/created,
I lost all purpose of the 'virtualBaseHomeDir' global attribute/configuration!
Remove all references to it.
- Four new attributes for remote ezmlm lists added to the 'phpQLAdminGlobal'
object class:
ezmlmRemote 1.3.6.1.4.1.8767.3.2.1.21
ezmlmRemoteHost 1.3.6.1.4.1.8767.3.2.4.20
ezmlmRemoteUser 1.3.6.1.4.1.8767.3.2.4.21
ezmlmRemoteRetreiveScript 1.3.6.1.4.1.8767.3.2.2.21
- To be able to remember localy added rcptHosts, I (phpQLAdmin) must put them
in another attribute. This to protected the value(s) from a manual replication.
The example comes from bug #257 - if the QLC host is only _listenening_ ('backup
MX') then there is no branch(es) that have the domain(s) configured as primary
nor additional domainname. If a manual replication takes place, then the information
about the domain(s) can't be found anywhere...
A new object class and a new attribute to add to the QLC object(s):
phpQLAdminMXHostAddition 1.3.6.1.4.1.8767.3.1.8 (object class)
nonPrimaryRcptHosts 1.3.6.1.4.1.8767.3.2.4.22 (attribute)
- Support SimScan configuration (added as MAY to phpQLAdminMXHostAddition and
phpQLAdminGlobal):
useSimScan 1.3.6.1.4.1.8767.3.2.1.22
simScanSpamAssassin 1.3.6.1.4.1.8767.3.2.1.23
simScanClamAntiVirus 1.3.6.1.4.1.8767.3.2.1.24
simScanTrophie 1.3.6.1.4.1.8767.3.2.1.25
simScanSpamAssassinHits 1.3.6.1.4.1.8767.3.2.4.23
simScanAttachmentSuffix 1.3.6.1.4.1.8767.3.2.4.24
+ Configured/enabled in two places:
* Globaly per MX host (in a QmailLDAP/Controls object).
* Per branch object
+ Script to extract and generate the simcontrol file (scripts/extract_simscan.pl)
is only started, not finished!
Documentation changes
- Map the QmailLDAP/Controls manager -> doc/README.QmailLDAP_Controls-GUI.
- Include httpd.conf configuration snippet for web server manager README.
API changes
- Administration of mailinglists located on remote server (i.e. not on the same
host where phpQLAdmin is running).
==> See WARNING.txt! <==
- Native support for Kerberos V, using the php4-kadm5 module (from the URL
http://freshmeat.net/projects/php-kadm5).
+ Do not export variables PQL_KADMIN_* to the support scripts.
+ Closes bug 273.
- New function - pql_format_return_unixtime() - to return current time as
a UNIX timestamp. Good for profiling
- Slight API cleanup. To be able to introduce caching, I need to remove all
calls to the PHP functions ldap_*() and instead use my own wrappers:
ldap_delete() pql_write_del() NEW!
ldap_add() pql_write_add()
- Started fixing the 'stupid URL's bug' (#212).
+ Combind 'submit ==1' and 'action == del' into one if() in websrv_edit_attributes.php.
+ All but domain and user edit is finished.
- Setup PQL_CONF_WEBSRV_OC in include/defaults.inc instead of in
include/config_attributes.inc.
- After using header() one MUST (!) use 'exit' so that the following code
isn't executed! Replace all calls to header() with my own wrapper that
does just that - calls header() (including the URI session value) and
then 'exit'...
- Merging two arrays don't work any more, so new PQL function:
pql_add2array(old, new) which adds the 'new' array to the 'old' via a
foreach() loop.
Misc changes
- Lot's more folding tags added.
- Some more de-globalization (mainly in the ezmlm manager).
- When calling pql_create_ldif(), make sure we know which 'function' that
called it.
+ Additional fourth param: add HTML newline or not.
- Slight rewrite in the user addition.
+ Retreive enryption schemes ONCE (in user_add.php instead of tables/user_add-details.inc)
+ New function pql_user_add_retreive_encryption_schemes() that takes
care of this easier.
+ Allow password/scheme to be entered if password is allowed by the template
in addition to if the default password scheme is empty, or we're running
in advanced mode.
- The attribute 'cn' (common name) is very good/nice to have multi-valued so
this is now supported in the [user]->User data page.
+ This forced a small change to include/pql_formating.inc:pql_format_table_single(),
namely the inclusion of a modify link/text entry (to get the edit button).
+ Use include/pql_formating.inc:pql_format_table_single() in the [user]->User
data page instead of hardcoded HTML table rows etc. Not only was that cleaner,
it gave a nicer look when using/allowing multiple values...
- Add the ACI attribute(s) in the branch object as well.
+ Simplify the ACI attributes - one line is enough.
Most notable changes is native support for Kerberos V and remote
ezmlm mailing lists.
DO REMEMBER:
This is a _development_ release. It might or might not work as
it's supposed...
- ----- W A R N I N G -----
Administrations of remote ezmlm lists is more or less done. It can
RETREIVE information, but WRITING (in one way or the other) have not
been tested AT ALL! Do not use on live lists, they might be totaly
fucked if I've missed something!!
- -------------------------
phpQLAdmin 2.3.0 Release (Jun 8 2005)
Bug fixes
- Session was started with the path specified in php.ini:session.cookie_path.
For me that was '/' which meant that if I have two (or more) phpQLAdmin
installations on the same server (which I do - stable, devel and demo etc),
they overwrote each others session variable.
To avoid this, we must set the 'session.cookie_path' using ini_set() BEFORE
session is started. Instead of doing this in every place where session_start()
is called, we include the new file 'include/pql_session.inc' which does
some additional magic.
+ The 'session.cookie_path' init value must always end with a slash, so make
sure it does...
Should fix some problems with sessions that won't die or get's overwritten.
+ Getting what type of browser the user is using is a session thing so move
it from left-head.html to include/pql_session.inc where it belongs...
This should REALLY fix the disappearance of the frame borders...
+ Don't hardcode require()/include() (etc) calls to './'. Use the session value
'path' as prefix in _ALL_ (?) calls to require()/include().
- Overloading of variables in tables/domain_details-websrv.inc fixed ($server*
to $web_srv*).
- If one enters a mailForwardingAddress and:
+ qmailDotMode != none
+ deliveryMode != noprogram
+ deliveryProgramPath != NULL
+ ldapDefaultDotMode == ldapwithprog
then there will be a COPY in the users local mailbox. Solve this by changing
the 'qmailDotMode' and 'deliveryMode'.
+ Make sure to re-enable local delivery for the user if not forwarding (any more).
- When (if) retreiving object classes the LDAP server understands, we must catch
attribute alias(es). A MAY/MUST on 'domainComponent' must translate to 'dc'
and back...
- Change the way 'cn' is modified. If we're called with an old value, we replace
_only_ that specific value. If no old value, replace the whole attribute list.
- When adding a user, the inclusion of the home directory must be done outside
of the 'if mailhost is allowed'.
- When _editing_ (changing) a common name for a user, include the old value in
the change.
+ Support additions and deletions of 'cn' value(s).
- When retreiving domain details information, don't retreive 'facsimileTelephoneNumber'
twice...
- The 'pql_split_oldvalues(pql_get_define("PQL_CONF_WEBSRV_OC"))' directly
returns an array() so no need to go through them and add them to a two
dimensional array (which was named wrong - use pql_get_define("PQL_ATTR_OBJECTCLASS")
as we're supposed to).
+ Use 'PQL_CONF_WEBSRV_OC' instead of the faulty 'PQL_ATTR_WEBSRV_OC'.
+ Add define for 'ApacheSectionName', used by the webserver object manager.
- Include 'ApacheSectionName=VirtualHost' when creating a web server object,
othervise mod_ldap_cfg won't get it's virtual hosts...
- If the user logging in can't be found, we must clear the '_POST' value between
attempts, othervise we're trying to authenticate again (and again...)
- When an object class violation occured when adding an attribute to a object,
the combination of the old and the new object classes failed.
- If the root DN don't contain the user reference value, retreival of
domains/branches fails. Use a 'resonable default' (uid).
- If the root DN is a 'dc' object and domain/branch reference is 'ou',
we must use 'organizationalUnit' in the object class filter when retreiving
domains/branches... => 'ou=domain2.tld,dc=domain2,dc=tld'. Ugly, but ok.
GUI layout changes
- Rewrite the way users are listed in the left frame. The attribute 'cn' is
the most obvious to show and the way that's shown is also rewritten.
+ If a user have more than two fields (space separated - 'Ulf Turbo Fredriksson'),
then the _last_ part is the lastname and all the others are first names...
If memory serves me correctly, this isn't true for arabic/chinese names, but...
+ After 'cn' comes 'givenName' and 'sn' and after that comes 'gecos'. Last
chance is the 'user reference attribute' (whatever that might be - it MUST
exists however).
- When creating a 'forwarding account' there are two possibilities. Either with
local delivery (as well as forwarding) or no local delivery (i.e. only forwarding).
Allow this with two radio buttons in the 'Additional account properties' page -
'Copy to' (default) or 'Forward to'.
+ Create objects with real home dirs...
- Include a 'NOT' option for user search. Describe what it does and how it works.
- Add a 'Force no local delivery' checkbox when _creating_ a mail forwarding address.
('Bug fixes' point 3 - mailForwardingAddress creation - above)
- If there is no MAY attributes in the user templates, we must say so (<i>None</i>)
instead of having an empty line.
- Change the sizes of the left frames (QmailLDAP/Controls an ezmlm should be WAY
smaller).
- Change wording from 'Server URL' to 'Server FQDN'.
- Have a resonable default welcome message (phpQLAdmin @ <SERVER NAME>) if
we don't have a PQL_CONF_WHOAREWE define.
- Change/fix the way the USER_HOST session value is set. I'm splitting and
combining in a way that was quite redundant - we ended up with the exact
same value as we started with! Wonder what I was thinking... :)
- Sort the domain/branch list according to the branch name value NOT the
DN. This means we must explode()/split() the DN into parts, recustruct a
new temporary array which we sort and then use that array as a base for
putting the new, correctly sorted array togheter.
+ The function pql_get_domains() is now sorting the domains/branch list better
than asort() can do so no need to call asort() after pql_get_domains().
- Better/More debugging support. I forgot to die() (and not forward to view)
if the file .DEBUG_ME existed in some places.
Schema changes
- Because of the change in the way 'forwarding accounts' where used/created,
I lost all purpose of the 'virtualBaseHomeDir' global attribute/configuration!
Remove all references to it.
- Four new attributes for remote ezmlm lists added to the 'phpQLAdminGlobal'
object class:
ezmlmRemote 1.3.6.1.4.1.8767.3.2.1.21
ezmlmRemoteHost 1.3.6.1.4.1.8767.3.2.4.20
ezmlmRemoteUser 1.3.6.1.4.1.8767.3.2.4.21
ezmlmRemoteRetreiveScript 1.3.6.1.4.1.8767.3.2.2.21
- To be able to remember localy added rcptHosts, I (phpQLAdmin) must put them
in another attribute. This to protected the value(s) from a manual replication.
The example comes from bug #257 - if the QLC host is only _listenening_ ('backup
MX') then there is no branch(es) that have the domain(s) configured as primary
nor additional domainname. If a manual replication takes place, then the information
about the domain(s) can't be found anywhere...
A new object class and a new attribute to add to the QLC object(s):
phpQLAdminMXHostAddition 1.3.6.1.4.1.8767.3.1.8 (object class)
nonPrimaryRcptHosts 1.3.6.1.4.1.8767.3.2.4.22 (attribute)
- Support SimScan configuration (added as MAY to phpQLAdminMXHostAddition and
phpQLAdminGlobal):
useSimScan 1.3.6.1.4.1.8767.3.2.1.22
simScanSpamAssassin 1.3.6.1.4.1.8767.3.2.1.23
simScanClamAntiVirus 1.3.6.1.4.1.8767.3.2.1.24
simScanTrophie 1.3.6.1.4.1.8767.3.2.1.25
simScanSpamAssassinHits 1.3.6.1.4.1.8767.3.2.4.23
simScanAttachmentSuffix 1.3.6.1.4.1.8767.3.2.4.24
+ Configured/enabled in two places:
* Globaly per MX host (in a QmailLDAP/Controls object).
* Per branch object
+ Script to extract and generate the simcontrol file (scripts/extract_simscan.pl)
is only started, not finished!
Documentation changes
- Map the QmailLDAP/Controls manager -> doc/README.QmailLDAP_Controls-GUI.
- Include httpd.conf configuration snippet for web server manager README.
API changes
- Administration of mailinglists located on remote server (i.e. not on the same
host where phpQLAdmin is running).
==> See WARNING.txt! <==
- Native support for Kerberos V, using the php4-kadm5 module (from the URL
http://freshmeat.net/projects/php-kadm5).
+ Do not export variables PQL_KADMIN_* to the support scripts.
+ Closes bug 273.
- New function - pql_format_return_unixtime() - to return current time as
a UNIX timestamp. Good for profiling
- Slight API cleanup. To be able to introduce caching, I need to remove all
calls to the PHP functions ldap_*() and instead use my own wrappers:
ldap_delete() pql_write_del() NEW!
ldap_add() pql_write_add()
- Started fixing the 'stupid URL's bug' (#212).
+ Combind 'submit ==1' and 'action == del' into one if() in websrv_edit_attributes.php.
+ All but domain and user edit is finished.
- Setup PQL_CONF_WEBSRV_OC in include/defaults.inc instead of in
include/config_attributes.inc.
- After using header() one MUST (!) use 'exit' so that the following code
isn't executed! Replace all calls to header() with my own wrapper that
does just that - calls header() (including the URI session value) and
then 'exit'...
- Merging two arrays don't work any more, so new PQL function:
pql_add2array(old, new) which adds the 'new' array to the 'old' via a
foreach() loop.
Misc changes
- Lot's more folding tags added.
- Some more de-globalization (mainly in the ezmlm manager).
- When calling pql_create_ldif(), make sure we know which 'function' that
called it.
+ Additional fourth param: add HTML newline or not.
- Slight rewrite in the user addition.
+ Retreive enryption schemes ONCE (in user_add.php instead of tables/user_add-details.inc)
+ New function pql_user_add_retreive_encryption_schemes() that takes
care of this easier.
+ Allow password/scheme to be entered if password is allowed by the template
in addition to if the default password scheme is empty, or we're running
in advanced mode.
- The attribute 'cn' (common name) is very good/nice to have multi-valued so
this is now supported in the [user]->User data page.
+ This forced a small change to include/pql_formating.inc:pql_format_table_single(),
namely the inclusion of a modify link/text entry (to get the edit button).
+ Use include/pql_formating.inc:pql_format_table_single() in the [user]->User
data page instead of hardcoded HTML table rows etc. Not only was that cleaner,
it gave a nicer look when using/allowing multiple values...
- Add the ACI attribute(s) in the branch object as well.
+ Simplify the ACI attributes - one line is enough.