'--quota -1' gets parsed as two options ("quota" and "1"), but it's
meant to be "quota => -1".
Make sure '-1' is considered as a value, not as an option.
Also get rid of unset()'ing $params[$i] and (now?) superfluous recursive
calls to __parseParams() to make the code less confusing.
This warning was for example
PHP Notice: Undefined variable: CONF in .../languages/en.lang on line 184
and is caused by some texts that include $CONF['admin_name']
dd52a98d43 added honoring POST['lang'] and
COOKIE['lang'] even if $_SERVER['HTTP_ACCEPT_LANGUAGE'] is not set.
This also means we can drop the now-duplicate check in the code section
handling $_SERVER['HTTP_ACCEPT_LANGUAGE'].
The file was a big mess, Turkish exclusive chars were completely corrupted, gramatically wrong words in the translation such as;
Not "Hiçbirşey" but "Hiçbir şey".
Not "eposta" but "e-posta" and/or "E-posta".
Not "Şuanki" but "Şu anki"
Not "ddeðiþtirmek" but "değiştirmek" (Wrong/corrupted Turkish characters)
Not "Yönlendirmen deðiþtir" but "Yönlendirme değiştir" (Wrong/corrupted Turkish characters)
As well as a lot of lines weren't translated -yet-. So here it is.
Regards,
Özgür Kazancci
1. Favicon configuration of the project:
a. Fixed incorrect link to favicon from the subfolder /users/
b. Added ability to set favicon via config
2. Completed translation of all string constants into Russian language.
... by using table_by_key() instead of reading $CONF directly.
Otherwise, $CONF['database_prefix'] gets ignored and the query tries to
use a wrong table name.
This fixes a bug introduced in d809e0fbf7
This reverts c5c42cfbe8 ("remove custom
field separator; just go with the default php behaviour").
That change didn't improve anything on
https://sourceforge.net/p/postfixadmin/bugs/386/ - it "just" changed the
CSV file format which might break existing workflows and/or tools of our
users.
This avoids that users get a 403 error (if DirectoryIndex is disabled)
or a directory listing after updating to 3.2.
This is what likely happened in
https://github.com/postfixadmin/postfixadmin/issues/30 (see the comment
from Apr 24, 2018)
Dropping the -webroot parameter (which basically means hardcoding that
../common.php has to exist) allows to do quite some cleanup.
Also unconditionally require_once('../common.php') to ensure that
everything we expect in the global namespace (like the 'Conf' class) is
there.
This allows even more cleanup. We get rid of __bootstrap() and some
constants, and can simplify parameter handling.
When adding the activeuntil field during the upgrade, it got set to
2000-01-01 which is a bad idea for existing vacation entries - the new
vacation.pl will consider them as outdated.
Introduce a new {DATEFUTURE}, and set the default value for activeuntil
to 2038 (that's the limit in MySQL for 'timestamp' columns, we'll have to
switch to 'datetime' in 20 years ;-)
Note that sqlite doesn't support changing the field default, so sqlite
users will have to live with the wrong default.
Also note that this fix does not change existing vacation entries if you
already have the activeuntil column.
Reported by Christoph Lechleitner on the mailinglist
The high-level db_*() functions (like db_update(), and also
_db_add_field() in upgrade.php) call table_by_key() internally, which
also means the unwrangled table name needs to be handed over to them.
If handing over an already table_by_key()'d table name, it gets modified
again and results in something like prefix_prefix_mailbox.
I found that Mysql 8 don't like table names without `` in requests. So i make changes in function table_by_key in functions.inc.php and in upgrade.php . Now it works. FreeBSD 11.1 Apache/2.4.29 (FreeBSD) PHP/7.1.11 Mysql 8
The improvements are:
- Die with an explicit message when a user is trying to reset his lost password and the option is disabled in config
- Redirect user to main page after password change using relative URL
- Don't leak info whether user exists or has recovery info defined
- Throttle password reset requests to prevent brute force attacks
- Show phone/alt email fields in mailbox/admin edit form only when the password reset option is enabled
- Make database upgrade code compatible with other databases types
- Use the existing password generator to generate OTP. It is now stored in database, unique to each user, valid only for 1 hour and can only by used once.
For some unknown reason, the insecure version of pull request 18 (which
uses easily guessable reset codes) was merged. This commit disables the
password reset until someone makes it secure.
See the comments in https://github.com/postfixadmin/postfixadmin/pull/18
for details.
Using /tmp/ as fallback is insecure (predictible filenames in a
world-writeable directory enable symlink attacks). Better die() with an
useful error message.
Send broadcast message to active users only.
Without "active=1" condition in WHERE will clause a lot of "Recipient address rejected: User unknown in virtual mailbox table."
Unicode support is a much bigger can of worms (see the discussion in #47),
and having just a little part of unicode support in is a bad idea.
You can of course use the xn--whatever notation for unicode domains ;-)
Broadcast improvements:
- allow to send to mailboxes only
- allow to send to only some domains
- allow domain admins to send to their domains - new config option $CONF['sendmail_all_admins']
variables.inc.php is an old hack to save having to declare variables
before using them in pages.
Lots of the variables there are unused (leftovers from the old
create-*.php or edit-*.php scripts) or properly initialized in the file
using them, so there's no need to keep them in variables.inc.php.
The remaining variables in this file should also be dropped after
further investigation.
array('') means to include an empty item, and that results in an invalid
remote specification with a trailing "/"
Using an empty array() fixes this.
Reported by oftc_ftw on IRC.
This replaces the hardcoded "LIMIT 10" with "LIMIT <page_size>".
Patch by Dan <dannyro @SF>, https://sourceforge.net/p/postfixadmin/patches/133/
Additional change on top of Dan's patch:
- wrap $CONF['page_size'] in intval() to avoid that a broken config
setting can break or exploit the query
The previous commit changed vacation_notificatoin.notified,
alias_domain.alias_domain and alias_domain.target_domain to latin1, but
did this only in their original upgrade function.
upgrade_1836_mysql() also applies this change to existing databases.
(It's unlikely that these fields are not latin1 - creating them as utf8
or utf8mb4 would break at the index length, but better safe than sorry ;-)
When trying to create a new database with utf8mb4 as default charset,
upgrade.php fails at various places because of too long indexes.
- no longer run upgrade_1_mysql, upgrade_2_mysql and upgrade_3_mysql
which all affect updates from pre-2.1 database layout
- add {LATIN1} to vacation_notificatoin.notified,
alias_domain.alias_domain and alias_domain.target_domain
Thanks to martinx who reported this on IRC and helped to debug it.
* Make it possible by config option that non global admins can send
broadcast messages to their domains.
* Allow the sender to select the domains the broadcast message should be
delivered to
* Allow the sender to decide if the broadcast message should just be
delivered to mailboxes
The MySQL database layout includes a 'cache' column for historical
reasons, the PostgreSQL database never did.
r1883 removed the 'cache' column from VacationHandler to unbreak
PostgreSQL, and at the same time broke MySQL in strict mode.
This patch re-adds the 'cache' column only for MySQL to fix this
regression.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1890 a1433add-5e2c-0410-b055-b7f2511e0802
set_is_mailbox_extrafrom() restricts the domain list to the domain that
needs to be checked (in normal list-virtual listing one domain), and is
then used to restore the default extrafrom.
This improves the performance for most usecases even for superadmins.
Note: Search mode might still be slow because by default it searches in
all domains available to the admin.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1882 a1433add-5e2c-0410-b055-b7f2511e0802
Simplify hiding the software update check from display. Not really for security. More for aesthetics; and keeping the more basic users from questioning it. Add #update-check {display: none;} to your custom css. See related feature patch: https://sourceforge.net/p/postfixadmin/patches/134/
Doing it in two steps fails, see comment by Gabor 'Morc' KORMOS on
https://sourceforge.net/p/postfixadmin/bugs/5/
Note: This is an exception from the "never change an existing
upgrade_*() function" rule because
a) the result doesn't change for people where it worked and
b) it will continue here anyway for people who had upgrade problems
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1881 a1433add-5e2c-0410-b055-b7f2511e0802
AliasHandler:
- initStruct(): handle __mailbox_username as separate field (needed to
make it searchable)
- split off a condition_ignore_mailboxes() function (used in getList()
and getPagebrowser()) to add '__mailbox_username IS NULL' to the search
condition array. Also, make sure $condition can be an array (preferred)
or a string with a raw query
list-virtual.php:
- hand over a search array instead of a raw query
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1879 a1433add-5e2c-0410-b055-b7f2511e0802
This improves performance on setups with lots of mailboxes.
Well, except for superadmins because restricting to "all domains"
doesn't really help ;-)
Thanks to gygy for reporting this on IRC, and for testing the patch.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1877 a1433add-5e2c-0410-b055-b7f2511e0802
Dovecot password hashes include a {SCHEME} prefix, so it's possible to
switch the scheme while still accepting passwords hashed using the
previous dovecot:* scheme.
This patch adds the code needed to find out the used hashing scheme
from the hash and ensures it gets used to validate the password.
Patch by Aaron Lindsay <aaron AT aclindsay com> (sent to the ML)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1875 a1433add-5e2c-0410-b055-b7f2511e0802
Reported by czbg, https://sourceforge.net/p/postfixadmin/bugs/366/
Note that the original subject will keep the encoding specified in the
mime header (for example iso-8859-15) while we assume it to be utf8
(see "%mail =...").
Nevertheless, a broken character still looks better than having
=?ISO-8858-1?Q?Gr=DFe?= in the subject ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1857 a1433add-5e2c-0410-b055-b7f2511e0802
- add check_db_version() to functions.inc.php
- add $min_db_version (needs to be updated at least before the release)
- call check_db_version in login.php, users/login.php and CLI - they'll
error out if the database layout is outdated
- change setup.php to use check_db_version()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1853 a1433add-5e2c-0410-b055-b7f2511e0802
With the default PHPSESSID cookie name, there are some rare (and hard to
debug) cases that break logging in if a different application on the
domain also uses a PHPSESSID cookie. See
https://sourceforge.net/p/postfixadmin/bugs/314/ for details.
Using 'postfixadmin_session' as cookie name should fix this.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1846 a1433add-5e2c-0410-b055-b7f2511e0802
- add more detailed notes about unsupported dovecot:* encryption types
(after hunting them down with r00t^2 on IRC)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1833 a1433add-5e2c-0410-b055-b7f2511e0802
- 'itemkey' escaping again. I found another corner case that was broken
with |escape:"html". Therefore switch to the exact htmlentities() call
that we use in smarty.inc.php.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1827 a1433add-5e2c-0410-b055-b7f2511e0802
- getting the key from $RAW_item.$id_field turned out to be broken in
corner cases, leading to empty output. The better (and simpler) fix is
to just let the foreach loop set 'itemkey'.
- the example for special handling of a specific table and field
contained a superfluous </tr>
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1826 a1433add-5e2c-0410-b055-b7f2511e0802
list-virtual and viewlog were the last users of select_options()
smarty.inc.php:
- drop (now unused) select_options()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1822 a1433add-5e2c-0410-b055-b7f2511e0802
- base edit, editactive and delete links on $RAW_item to avoid double
escaping ($items is already html-escaped, and we url-escape it for
links). This fixes the remaining part of
http://sourceforge.net/p/postfixadmin/bugs/356/
- simplify displaying "html" fields by using $RAW_item. This also fixes
problems with funny[tm] item names that differ when html-encoded (like
the ' char)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1812 a1433add-5e2c-0410-b055-b7f2511e0802
- gen_show_status(): escape mail addresses in query.
Fixes https://sourceforge.net/p/postfixadmin/bugs/356/
(mostly - the edit/delete/... links in list-virtual are double-escaped)
In theory this could allow SQL injection, in practise the mail address
regex limits this issue to a DOS (creating a mail address with ' caused
an invalid query that broke list-virtual)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1809 a1433add-5e2c-0410-b055-b7f2511e0802
Measure time needed for the nameserver queries, and error_log a warning
if the queries need more than 2 seconds in total.
Inspired by a question from t-ask on IRC, who suffered from a slow
nameserver and had some "fun" to debug it ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1790 a1433add-5e2c-0410-b055-b7f2511e0802
- after creating a superadmin, display a note that the setup is done and
it's possible to login now (idea by t-ask on IRC)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1788 a1433add-5e2c-0410-b055-b7f2511e0802
- split upgrade_1763() into mysql and pgsql versions because pgsql
doesn't support SUBSTRING_INDEX
(reported by darix on IRC)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1786 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): in 'aliases_quot' and '_aliases_quot_percent', use
coalesce(__mailbox_count,0) - without, we always get _0_ aliases if
a domain doesn't have mailboxes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1783 a1433add-5e2c-0410-b055-b7f2511e0802
- display the "Go" button only if javascript is disabled (the dropdowns
have an onchange event defined, which makes the "Go" button superfluous)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1780 a1433add-5e2c-0410-b055-b7f2511e0802
- improve headline:
- in search mode, display the search term instead of the last selected
domain (which isn't useful at all when displaying search results)
- display number of aliases and mailboxes only in domain mode (they
are useless/wrong in search mode)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1779 a1433add-5e2c-0410-b055-b7f2511e0802
list-virtual.php:
- use list.tpl for aliases
- move show_gen_status handling for aliases to AliasHandler
AliasHandler:
- initStruct():
- add 'status' column (hidden by default)
- hide 'created'
- move 'active' after 'modified' to match old list-virtual.php layout
- initMsg: add list_header
- webformConfig(): if $CONF[show_status], set display_in_list for
'status' column. Also set a (whitespace) label to make sure it's
displayed
- db_read_from_db_postprocess(): if 'status' column is requested, call
gen_show_status() for each row
list-virtual.tpl
- remove alias table header and create alias button (which should have
been in list-virtual_alias.tpl)
list-virtual_alias.tpl:
- replace code to generate the alias table with {include 'list.tpl'}
(and some variable assignments)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1777 a1433add-5e2c-0410-b055-b7f2511e0802
- add support for list_header (like ":: Alias" in list-virtual)
PFAHandler:
- add empty default for $msg['list_header']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1776 a1433add-5e2c-0410-b055-b7f2511e0802
- assign(): additionally provide the unsanitized values as RAW_$key
PFAHandler.php:
- document 'html' field type (used for raw html), including a big warning
list.tpl:
- add handling to display raw html fields
This is a preparation to use the status markers with list.tpl without
introducing too big changes.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1775 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): replace (wrong) 'editable' with '_can_edit' and '_can_delete'
- read_from_db_postprocess(): disable _can_edit and _can_delete for
default aliases if special_alias_control is off and not superadmin
list.tpl:
- use $item._can_edit instead of $check_alias_owner
list-virtual.php:
- drop $check_alias_owner variable and check_alias_owner() call
(replaced by the code added in AliasHandler)
- drop unused $sql_domain
functions.inc.php:
- delete no longer used check_alias_owner() function
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1774 a1433add-5e2c-0410-b055-b7f2511e0802
User-visible changes:
- alias domain list can be downloaded as CSV
- no more search highlighting for alias domains
list-virtual.php:
- expect $search to be an array
- change alias domain handling to use list.php instead of
list-virtual_alias_domain.tpl, and move some logic from the template
to list-virtual.php. (The template file is kept as list.tpl wrapper.)
- adopt mailbox and alias search to $search[_]
- adopt pagebrowser to $search[_]
list-virtual_alias_domain.tpl:
- replace custom output generation with {include 'list.php'} and some
variable assignments
PFAHandler.php:
- add $this->id_field to $this->msg (avoids another smarty template
variable)
configs/menu.conf:
- change input name to search[_]
list-virtual_alias.tpl, list-virtual_mailbox.tpl:
- adopt to $search[_] by setting $search in a backwards-compatible way
list.tpl:
- add special handling for aliasdomain.target_domain linking
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1773 a1433add-5e2c-0410-b055-b7f2511e0802
- build_select_query(): add support for $search['_'] (searching if one
of the $this->searchfields contains the search text)
- getList(): make sure '_' is kept in the search parameters
functions.inc.php:
- db_where_clause(): slightly relax checks - if $condition is empty,
only error out if $additional_raw_where is also empty
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1772 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): Adjust columns to match list-virtual.php layout:
- make 'alias_domain' a link
- move 'active' after 'modified'
- don't display 'created'
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1771 a1433add-5e2c-0410-b055-b7f2511e0802
- add protected $searchfields = array(); - list of fields to search by
default, if just a search term is given. This will be done with
$search['_'], but that code is not implemented yet.
- add $this->msg['show_simple_search'] (true if $searchfields is non-empty)
list.tpl:
- display search input box and search overview only if $searchfields is
not empty
AliasdomainHandler:
- add 'alias_domain' and 'target_domain' to $searchfields
MailboxHandler:
- add 'username' to $searchfields
AliasHandler:
- add 'address' and 'goto' to $searchfields
This effectively means that the search input box is no longer displayed
in list.php for admin, domain and fetchmail listings.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1770 a1433add-5e2c-0410-b055-b7f2511e0802
PFAHandler:
- add $msg['can_create'] (true by default)
DomainHandler:
- set $msg['can_create'] based on is_superadmin
list.tpl:
- display 'create' button only if $msg['can_create'] is true
Note: This is only an optical improvement, not a permission check.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1769 a1433add-5e2c-0410-b055-b7f2511e0802
- set(): if errormsg is set for a field, assume it's invalid (even if
the validator functions did not (or forgot to) return False)
In theory this should never happen, but it's a nice safety net against
programming errors in validator functions that don't have an explicit
return False;
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1768 a1433add-5e2c-0410-b055-b7f2511e0802
- upgrade_1762: add 'domain', 'active', 'created' and 'modified' fields
to fetchmail table (used by FetchmailHandler)
- upgrade_1763: fill fetchmail.domain based on mailbox
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1763 a1433add-5e2c-0410-b055-b7f2511e0802
- uses list.php and edit.php instead of the fetchmail-specific template
- replaces fetchmail.php and its template
config.inc.php:
- add $CONF['fetchmail_struct_hook']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1762 a1433add-5e2c-0410-b055-b7f2511e0802
Newer PHP versions (noticed with 5.6.6) don't include empty fields in
$_POST, which means changing a field to empty was broken.
Change edit.php to make sure all !isset() fields are set to ''.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1759 a1433add-5e2c-0410-b055-b7f2511e0802
- add getPagebrowser() (returns an array of pagebrowser keys)
AliasHandler.php:
- change getList() to work with empty $condition
- add getPagebrowser() to filter out mailboxes
list-virtual.php:
- replace $alias_pagebrowser_query and the create_page_browser() call
with $handler->getPagebrowser()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1757 a1433add-5e2c-0410-b055-b7f2511e0802
- split off build_select_query() from read_from_db() as preparation for
using build_select_query() to generate the pagebrowser query
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1756 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct():
- don't display domain_quota if $CONF[quota] == NO or $CONF[domain_quota] is NO
- drop 'total_quota' column which seems to be unused (and had a non-existing label)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1755 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct():
- link username to domain list
- hide superadmin, domain list and created columns in list view
- add label to domain_count to make it visible in list view
- read_from_db_postprocess(): if user is a superadmin, replace domain
count with "superadmin"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1753 a1433add-5e2c-0410-b055-b7f2511e0802
- the 'simulate admin' dropdown doesn't make sense for superadmin-only
modules, therefore don't fill/display it in this case
(usecase: AdminHandler)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1752 a1433add-5e2c-0410-b055-b7f2511e0802
- add support for 'b64p' fields (passwords stored base64-encoded)
as preparation to migrate fetchmail.php to FetchmailHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1750 a1433add-5e2c-0410-b055-b7f2511e0802
- add $msg['confirm'] (confirmation message when attemping to delete an
item, displayed by list.php)
*.lang:
- add various confirm_delete_* texts needed by *Handler
- rename confirm_domain to confirm_delete_domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1749 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct():
- add optical quota indicators for aliases, mailboxes, domain quota
- some adjustments to get nice output with list.php (mostly following
list-domain.php)
- webformConfig(): switch listview to list.php
configs/menu.conf, templates/adminlistadmin.tpl:
- switch list-domain.php to list.php?table=domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1745 a1433add-5e2c-0410-b055-b7f2511e0802
- better formatting in db_quota_text() and db_quota_percent() results
(for example, infinity sign instead of / 0 for unlimited)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1744 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct: set "display in list" to 1 to allow searching for domain
with list.php (nevertheless, the domain won't be displayed because
it doesn't have a column label set)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1735 a1433add-5e2c-0410-b055-b7f2511e0802
- add search support:
- new parameters:
- search[$field] - value to search for
- searchmode[$field] - search mode (=, <, > etc.)
- reset_search - if given, empty $search and $searchmode
- remember $search and $searchmode via session
- display errormsg and infomsg from $handler, if any
list.tpl:
- display current search parameters and a "[x]" link to remove all
search parameters
This change doesn't add a search form, but you can use ?search[field]=
and ?searchmode[field]= URL parameters
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1732 a1433add-5e2c-0410-b055-b7f2511e0802
- read_from_db(), getList():
- add $searchmode parameter (_before_ $limit and $offset!) to be able to
use query different query modes, not only "="
- add a warning that $condition will be changed to array only in the future
- getList(): filter $condition for fields that are available to the user
to avoid information leaks by using search parameters
(filter is only applied if $condition is an array!)
functions.inc.php:
- db_where_clause():
- add $additional_raw_where parameter for additional query parameters
- add $searchmode parameter to be able to use query different
query modes, not only "=" (see $allowed_operators)
- check for allowed operators in $searchmode
- split query into WHERE and HAVING (if a parameter has
$struct[select] set, HAVING is used)
list-virtual.php:
- adopt getList() call to the new syntax
AliasHandler:
- adopt getList() definition and call to the new syntax
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1731 a1433add-5e2c-0410-b055-b7f2511e0802
- add $this->label_field and $this->label (defaults to $this->id_field
and $this->id) to allow nicer messages
- use $this->label in various messages
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1729 a1433add-5e2c-0410-b055-b7f2511e0802
- use smarty-style dropdown for admin dropdown instead of select_options()
- only display admin dropdown if more than one admin is available
(which basically means hiding it for domain admins)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1723 a1433add-5e2c-0410-b055-b7f2511e0802
(will replace list-admin, list-domain etc.)
list.php:
- generic list view, select *Handler with ?table=
list.tpl:
- display list view
- columns based on $struct (every column with display_in_list and
non-empty label will be displayed)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1722 a1433add-5e2c-0410-b055-b7f2511e0802
- pacol():
- add $linkto parameter (if list mode should link to something)
- replace $not_in_db with $multiopt - the remaining parameters can
now be specified as associated array (backwards-compatible)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1719 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct:
- set column write permissions depending on superadmin status
- add _can_edit and _can_delete (also depending on superadmin status)
- webformConfig(): reduce required permissions to 'admin'
- add beforestore() - aborts writing for non-superadmins
- delete: allow deletion only for superadmins
*.lang:
- new text 'no_delete_permissions'
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1718 a1433add-5e2c-0410-b055-b7f2511e0802
Add $can_edit and $can_delete flags. This makes it possible to make
some, but not all items non-editable or non-deletable (based on a
database column/query or read_from_db_postprocess())
- add $can_edit and $can_delete
- after initStruct, check if $struct contains _can_edit and _can_delete.
If not, fill with default values (allowed)
- init(): set $this->can_edit and $this->can_delete (only in view/edit mode)
- set(): abort if !$this->can_edit
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1716 a1433add-5e2c-0410-b055-b7f2511e0802
- automatically skip quot, vnum and vtxt fields in store()
(as if dont_write_to_db == 1)
- document new field types vtxt and quot and mark field types that will
never be stored in db
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1713 a1433add-5e2c-0410-b055-b7f2511e0802
- add functions db_quota_text() and db_quota_percent() to generate
queries for used quota ("x/y" and percentage)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1712 a1433add-5e2c-0410-b055-b7f2511e0802
- add validation for "enma" field type - list of options, must be given
in column "options" as associative array (value => displayed value)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1711 a1433add-5e2c-0410-b055-b7f2511e0802
- displays the database scheme (for usage in upgrade.php)
PFAHandler:
- add "Scheme" to the list of available tasks
postfixadmin-cli.php:
- add "scheme" to help
This is the first patch of a series sponsored by
Bund der Deutschen Landjugend (german rural youth)
http://bdl.landjugend.info/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1710 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): revert the MariaDB workaround because PostfixAdmin now
"thinks" none of the aliases belong to a mailbox (and displays all of
them in the alias list, even the mailbox aliases)
- reverts r1699 + the CHANGELOG entry (part of r1700)
- reopened https://sourceforge.net/p/postfixadmin/bugs/325/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1702 a1433add-5e2c-0410-b055-b7f2511e0802
- add required version of Zend Framework (1.12.x) and a warning that 2.x
won't work (reported by seboulba on IRC)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1699 a1433add-5e2c-0410-b055-b7f2511e0802
- check that $tActiveUntil >= today and $tActiveUntil >= $tActiveFrom
- update header comments
- display "vacation is active" notice also to admins
(based on a patch by J.Kruis @SF,
https://sourceforge.net/p/postfixadmin/patches/122/ )
*.lang:
- add
- pVacation_until_before_today
- pVacation_until_before_from
- reply_once_per_day
- change pUsersVacation_welcome_text to 'Auto response for %s is active!'
- remove "obsolete" marker from pUsersVacation_activefrom and
pUsersVacation_activeuntil, they are still used
nl.lang:
- translation update by J.Kruis @SF
https://sourceforge.net/p/postfixadmin/patches/122/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1697 a1433add-5e2c-0410-b055-b7f2511e0802
- add note that $CONF[vacation_domain] can't be used for "normal" mails
model/DomainHandler.php:
- validate_new_id():
- error out when trying to add $CONF[vacation_domain]
- some whitespace fixes
- remove superfluous comment on initStruct()
*.lang:
- add 'domain_conflict_vacation_domain' error message
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1694 a1433add-5e2c-0410-b055-b7f2511e0802
- change instructions to use /usr/lib/postfixadmin to avoid vacation.pl
has write access to itsself
- replace instructions for /var/spool/vacation/ with instructions for a
log file or directory
- various other changes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1692 a1433add-5e2c-0410-b055-b7f2511e0802
fix logging - log the domain instead of $this->id
- add protected $domain (used for logging)
- add function domain_from_id()
- http://sourceforge.net/p/postfixadmin/bugs/317/
AliasHandler.php:
- add function domain_from_id()
MailboxHandler.php:
- add function domain_from_id()
- init(): use $this->domain instead of splitting $this-id again
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1684 a1433add-5e2c-0410-b055-b7f2511e0802
- change tar command to postfixadmin-$version.tar.gz (instead of 2.2)
- recommend usage of config.local.php (including a basic example how it looks)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1680 a1433add-5e2c-0410-b055-b7f2511e0802
- trim() $fUsername - MySQL thinks "foo" == "foo " (and therefore allows
login as "foo@example.com " - but later we'll get funny "undefined index"
problems in PFAHander->view()) when an admin wants to change the password
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1665 a1433add-5e2c-0410-b055-b7f2511e0802
- execute(): call __handle_params() also if empty args[0] is given
- __interactive(): only ask for id if $id_field is editable
This fixes two issues with a non-editable auto_increment id field
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1661 a1433add-5e2c-0410-b055-b7f2511e0802
We dropped admin/ in 2007 - if someone still didn't notice it, well,
then I'm looking forward for a bugreport I can close as invalid ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1657 a1433add-5e2c-0410-b055-b7f2511e0802
- remove isset() - this re-introduces the risk to produce an "undefined"
notice if someone uses an outdated config.inc.php, but also avoids
<link ... href=""> (notice the empty href) if $CONF[theme_custom_css]
is set, but empty
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1634 a1433add-5e2c-0410-b055-b7f2511e0802
- if the id_field is not displayed in form and not editable,
it's probably an auto_increment. Set it to '' in this case.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1633 a1433add-5e2c-0410-b055-b7f2511e0802
- change {BOOLEAN} to include "default false"
- revert the r1626 changes in upgrade_1283
(BTW: "by default, every admin is a superadmin" is not a good idea ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1632 a1433add-5e2c-0410-b055-b7f2511e0802
- if values[$key] is not set, use the field's default value for smarty->assign
(also avoids an "undefined" warning with read-only fields)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1631 a1433add-5e2c-0410-b055-b7f2511e0802
- change all field names to "value[$key]" instead of just "$key"
to keep the main "namespace" clean
edit.php:
- adjust POST handling code to changed form field names ("value[$key]")
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1629 a1433add-5e2c-0410-b055-b7f2511e0802
- Add capability to include the subject of the original mail in the
subject of the vacation message.
A good vacation subject could be: 'Re: $SUBJECT'
- corrected log entry about "Already informed ..." to show the
$orig_from, not $email
Patch by Christoph Lechleitner <christoph.lechleitner@iteg.at>
http://sourceforge.net/p/postfixadmin/patches/117/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1614 a1433add-5e2c-0410-b055-b7f2511e0802
restrict reply type to a list of options ($CONF[vacation_choice_of_reply]),
remove input field for custom interval
config.inc.php:
- change $CONF['vacation_choice_of_reply'] to [seconds] => [$PALANG label]
(note: reply to every mail is commented by default because it can be
annoying. Admins will have to explicitely add/enable it in their config.)
- remove $CONF[vacation_replytype_default]
- update comment about dovecot:* for $CONF[encrypt]
*.lang:
- add texts for reply types
VacationHandler.php:
- remove reply_type at various places
- set_away(): remove reply_type from list of function parameters
templates/vacation.tpl:
- update reply type dropdown for the changed $CONF['vacation_choice_of_reply']
- remove the input fields for custom reply delay
vacation.php:
- restrict reply type to a list of options ($CONF[vacation_choice_of_reply])
- if vacation is disabled, but old values are stored in the database,
change the activeFrom and activeUntil date to today to avoid users
have to scroll through the calendar a lot
xmlrpc.php:
- update set_away() call to match the removed parameter
upgrade.php:
- comment out upgrade_1345_mysql() which created the reply_type and
interval_time fields in the vacation table in mysql
- add upgrade_1610() to add the vacation.interval_time field
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1610 a1433add-5e2c-0410-b055-b7f2511e0802
- big update with all changes since 2.3.x (about 300 lines!)
- starts with a TL;DR summary ;-)
- still includes some details that need to be checked or finetuned
(search for "***")
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1607 a1433add-5e2c-0410-b055-b7f2511e0802
- change {BIGINT} to include "NOT NULL DEFAULT 0"
- add {INT} (not used anywhere yet)
- upgrade_729:
- quota2 table: change "{BIGINT} NOT NULL DEFAULT 0" to "{BIGINT}" to
match the above change
- note: quota table created with old versions of upgrade.php will not
have explicit "NOT NULL DEFAULT 0" for the "current" field
(shouldn't hurt)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1605 a1433add-5e2c-0410-b055-b7f2511e0802
This commit contains some dummy changes to get a proper changelog
attached to those files.
VacationHandler:
- (r1595) rewrite based on PFAHandler (not useable yet)
- (this commit) add a dummy init() function that calls die()
DOCUMENTS/DOVECOT.txt:
- (r1595) TODO note
- (this commit) remove the TODO note again
CHANGELOG.TXT:
- (r1595) include changes of 2.3.4, 2.3.5 and 2.3.6 (copied from 2.3 branch)
- (r1595) update some notes about SVN version (still far from complete)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1596 a1433add-5e2c-0410-b055-b7f2511e0802
- use prefill values from $_SESSION (if not provided in GET/POST)
- remember prefill values for next usage of the form
list-virtual.php
- set prefill values for edit.php
PFAHandler.php:
- let prefill() store the value in $struct if no prefill_$field()
function exists
This fixes the remaining parts of
http://sourceforge.net/p/postfixadmin/bugs/298/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1594 a1433add-5e2c-0410-b055-b7f2511e0802
- db_query(): do not print out the failed query, error_log() it instead
to avoid information leaks.
- update SF forum URL
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1592 a1433add-5e2c-0410-b055-b7f2511e0802
- only allow @domain as target if $this->id is a catchall
- delete commented out version of delete()
- better error messages
languages/*.lang
- add new texts needed for AliasHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1587 a1433add-5e2c-0410-b055-b7f2511e0802
- new function db_pgsql() to replace lots of
"if ($CONF[database_type] == 'pgsql')) checks
- delete unused function boolconf()
several files:
- use db_pgsql() instead of checking $CONF[database_type]
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1582 a1433add-5e2c-0410-b055-b7f2511e0802
- rename pAdminCreate_admin_username_text to email_address
- rename pAdminEdit_admin_super_admin to super_admin
AdminHandler.php - initStruct():
- adopt to the renamed $PALANG texts
- remove some TODOs
- whitespace changes
setup.php, adminlistadmin.tpl:
- adopt to the renamed $PALANG texts
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1580 a1433add-5e2c-0410-b055-b7f2511e0802
- move mailbox_postdeletion() to MailboxHandler
- move domain_postcreation() and domain_postdeletion() to
DomainHandler
- adopt those functions for usage inside the *Handler (replace
print with $this->errormsg etc.)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1579 a1433add-5e2c-0410-b055-b7f2511e0802
- replace usage of Inflector::camelize() with ucfirst() - for our usage,
it gives the same result with easier understandable code
- remove unused PHP5 define
shells/shell.php:
- remove definition of unused variable $shellKey, which also removes
the last usage of Inflector::underscore
- remove code that was commented out since a while
scripts/inflector.php:
- delete file, no longer needed
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1577 a1433add-5e2c-0410-b055-b7f2511e0802
model/CliHelp.php:
- new class, used for "postfixadmin-cli $module help"
- replaces the PostfixAdmin* classes in scripts/shells/*.php
model/PFAHandler.php
- add public $taskNames with the list of supported CLI commands
scripts/postfixadmin-cli.php - dispatch():
- directly set the classes to load instead of using shell->loadTasks()
- when "postfixadmin-cli $module" is called, display help instead of
error message about "invalid command ''"
- make it more readable by moving error checks to the beginning
(replaces deeply nested if's with return statements)
- remove unused code parts
scripts/shells/*.php:
- remove PostfixAdmin* classes (obsoleted by CliHelp)
- remove $tasks (now in PFAHandler)
- delete alias.php and domain.php because nothing is left
- mailbox.php still contains PasswordTask
scripts/shells/shell.php:
- remove $taskNames (moved to PFAHandler)
- remove loadTasks() (integrated in postfixadmin-cli.php's dispatch())
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1575 a1433add-5e2c-0410-b055-b7f2511e0802
- add some _formatted_*() functions to get a more informative output
(currently only used in CLI)
MailboxHandler.php:
- add TODO for reading used quota from quota/quota2 table and adding
a formatted_quota() function
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1573 a1433add-5e2c-0410-b055-b7f2511e0802
- new file for CLI 'view'
- based on the ViewTask classes in scripts/shells/*.php
- introduces usage of *Handler->_formatted_$field() to get "pretty"
output for a field
(not sure if this is the final solution, but it works ;-)
scripts/shells/*.php
- remove ViewTask, obsoleted by model/CliView.php
scripts/shells/shell.php:
- use CliView instead of ViewTask
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1572 a1433add-5e2c-0410-b055-b7f2511e0802
- new file, handles deleting something with the CLI
(based on DeleteTask in scripts/shells/*.php)
scripts/shells/*.php
- remove DeleteTask, obsoleted by model/CliDelete.php
scripts/shells/shell.php:
- use CliDelete instead of DeleteTask
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1570 a1433add-5e2c-0410-b055-b7f2511e0802
for logout.
This means:
- change logout URL to login.php in menu.conf and users_main.tpl
- delete logout.php and users/logout.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1569 a1433add-5e2c-0410-b055-b7f2511e0802
- delete(): check if the domain is an alias domain target - if yes, do
not allow to delete it
- better error message if domain_postdeletion() fails
*.lang:
- rename pAdminDelete_domain_error to domain_postdel_failed and change
the text
- add delete_domain_aliasdomain_target
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1567 a1433add-5e2c-0410-b055-b7f2511e0802
- new, small script to change the 'active' status
- also include CSRF protection token
edit.php:
- remove handling of 'active' to make it more readable
*list*.tpl:
- change links to use editactive.php, add CSRF token
configs/menu.conf
- add url_editactive
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1566 a1433add-5e2c-0410-b055-b7f2511e0802
- initMsg(): better texts for error_already_exists and error_does_not_exist
*.lang:
- rename pAdminCreate_admin_username_text_error2 to admin_already_exists
and change the text
- add admin_does_not_exist
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1565 a1433add-5e2c-0410-b055-b7f2511e0802
- require token for CSRF protection, see
https://sourceforge.net/p/postfixadmin/bugs/269/
login.php, users/login.php:
- create token and store it in $_SESSION
templates/*:
- add token to all delete.php links
templates/list-virtual_alias_domain.tpl:
- change delete confirmation dialog to contain "from->target"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1564 a1433add-5e2c-0410-b055-b7f2511e0802
- use *Handler for deletion
(which also means delete.php only has 17 lines of code now - 130 lines
less than before :-)
templates/list-virtual_*.tpl:
- remove now superfluous "domain" parameter in delete.php link
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1563 a1433add-5e2c-0410-b055-b7f2511e0802
- rewrite and simplify delete()
- also cleanup fetchmail, quota and quota2 tables
AliasHandler.php:
- update delete() to match the workflow in other classes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1562 a1433add-5e2c-0410-b055-b7f2511e0802
- make error messages in _inp_*() translateable
- make date format in SQL "translateable"
*.lang:
- add the texts needed for the changes listed above
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1556 a1433add-5e2c-0410-b055-b7f2511e0802
- remove unused $CONF['usercontol'] which leaked in with an unrelated
patch in r1374
- fixed some typos in comments
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1551 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): remove description for current password - it doesn't
exist in $PALANG and we don't really need a description here
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1550 a1433add-5e2c-0410-b055-b7f2511e0802
- call Config::write() earlier, because check_language() uses it
- later add $PALANG with Config::write(__LANG)
Thanks to <controlcde> for reporting the results of this bug on IRC
(even if I had to hunt it down to find the reason ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1548 a1433add-5e2c-0410-b055-b7f2511e0802
- move header() calls from index.tpl to smarty.inc.php, which means
we no longer need to use SmartyBC class
- use Smarty instead of SmartyBC class
- eval_size(): use Config::Lang instead of $PALANG
templates/header.tpl:
- move header() calls to smarty.inc.php, and drop {php} usage
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1544 a1433add-5e2c-0410-b055-b7f2511e0802
- use AdminHandler to find out if the logged in user is a superadmin
- add hint about config.local.php in "unconfigured" warning
- move some lines around to match users/login.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1543 a1433add-5e2c-0410-b055-b7f2511e0802
- move "unmaintained" warning to templates/backupwarning.tpl (that's
the easiest way to have working HTML tags)
- remove <p> tag from pgsql error message
templates/backupwarning.tpl
- new file, contains the "unmaintained" warning for backup.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1542 a1433add-5e2c-0410-b055-b7f2511e0802
found out that the 'Config' class is too static - it shares its static
data with the 'Lang' child class.
This caused a conflict because we have $CONF[transport] and
$PALANG[transport], and Config::read('transport') returned the $PALANG
text.
To fix this, all texts are now stored as $CONF[__LANG].
I also dropped the 'Lang' class.
model/Config.php:
- mark the 'Config' class as final to ensure we don't trap into the
"too static" problem again.
- bool(): display and log an error message if a $CONF option does not
contain YES or NO (that would have uncovered this bug much earlier)
- add lang() and lang_f() wrapper functions to get $PALANG texts
- remove unused $__cache and $__objects
model/Lang.php:
- deleted
common.php:
- store $PALANG as $CONF[__LANG]
lots of files:
- replace Lang::read() and Lang::read_f() calls with Config::lang()
and Config::lang_f()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1536 a1433add-5e2c-0410-b055-b7f2511e0802
- getList: change return value to be always true (even if the database
result is an empty array), and die() if the database result is not an
array.
This avoids some if blocks in various files to implement a fallback
to array() on empty results.
functions.inc.php:
- list_admins(): simplify after the *Handler->getList() change
- get_domain_properties(): change a forgotten $handler->return to
$handler->result() (follow-up for r1534)
list-domain, list-virtual.php:
- simplify after the *Handler->getList() change
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1535 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): set default for 'goto' to empty array()
This fixes a problem with the cli when --goto was not specified
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1530 a1433add-5e2c-0410-b055-b7f2511e0802
- pacrypt(), dovecot:* method:
- allow "." in dovecot method (to allow a suffix like ".b64")
- blacklist SCRAM-SHA-1 (needs -u)
- check against list of non-salted methods to be backward compatible
with dovecot < 2.1 again
Thanks to Szilagyi Jozsef <szjozsef AT yahoo DOT com> for providing
the list of non-salted methods etc.
functions.inc.php, scripts/postfixadmin-cli.php:
- drop unused global variables $table_admin and $table_alias_domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1529 a1433add-5e2c-0410-b055-b7f2511e0802
- pacrypt: digest-md5 hashes include the username - until someone
implements it, let's declare it as unsupported and error out
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1525 a1433add-5e2c-0410-b055-b7f2511e0802
- pacrypt(): some small changes after Szilagyi Jozsef's patch:
- comment out unused $crypt_method
- change $dovecotpw default to "doveadm pw" (unrelated to the patch)
- set $dovepasstest to "-t $pw_db" instead of having two similar
command lines, and also shellescapearg() $pw_db
- use "if (empty($dovepasstest))" instead of "if (empty($pw_db))"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1524 a1433add-5e2c-0410-b055-b7f2511e0802
doveadmin pw now has an option "-t $hash" which allows to verify
salted passwords (added in dovecot 2.1 AFAIK)
Also, the {METHOD} part is no longer removed.
Patch by Szilagyi Jozsef <szjozsef [at] yahoo.com> - thanks!
(The schemes which requires also the username -u option is still not supported)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1523 a1433add-5e2c-0410-b055-b7f2511e0802
ADDITIONS/fetchmail.pl
- add sslcertck, sslcertpath and sslfingerprint to fetchmail config
- some whitespace fixes
fetchmail.php
- add sslcertck, sslcertpath, sslfingerprint fields
(sslcertpath and sslfingerprint require $CONF[fetchmail_extra_options]
because they don't have input validation)
languages/*.lang
- add new texts needed for the added fields
templates/fetchmail.tpl:
- add the new fields
- also add extra_options and mda fields - they were not displayed yet
upgrade.php
- fix _db_add_field() to call _db_field_exists() with correct table name
- upgrade_1519(): add sslcertck, sslcertpath, sslfingerprint fields to the
fetchmail table
Most parts of this commit are based on the work of Lars Engelhard
(modified files sent on the mailinglist 2013-07-30)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1519 a1433add-5e2c-0410-b055-b7f2511e0802
- create_mailbox_subfolders(), check_quota():
use class variables instead of parameters
- create_mailbox_subfolders(): remove check for empty $this-id - this can
never happen because it would fail much earlier in the class
- check_quota(), allowed_quota(), mailbox_post_script(),
create_mailbox_subfolders(): mark as protected
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1517 a1433add-5e2c-0410-b055-b7f2511e0802
- new function mailbox_post_script()
- result of merging mailbox_postcreation() and mailbox_postedit(),
replaces those two functions
- drop all parameters, read them from class variables instead
- store warn message in $this->errormsg[] instead of using print
- changed function calls to use mailbox_post_script()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1516 a1433add-5e2c-0410-b055-b7f2511e0802
- check_quota ()
- allowed_quota()
- mailbox_postcreation()
- mailbox_postedit()
- create_mailbox_subfolders()
The code was moved without any changes, except
- added leading whitespace
- removed "TODO: move to MailboxHandler" ;-)
MailboxHandler:
- change function calls for moved functions
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1515 a1433add-5e2c-0410-b055-b7f2511e0802
check_quota()
mailbox_postcreation()
mailbox_postedit()
create_mailbox_subfolders()
- use Config::read() / Config::bool() instead of $CONF
- update comment header
- some minor changes to make the code better readable
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1514 a1433add-5e2c-0410-b055-b7f2511e0802
- use PALANG['last_modified'] everywhere
- get rid of various duplicate texts for "Last modified":
-$PALANG['pOverview_alias_modified']
-$PALANG['pOverview_alias_domain_modified']
-$PALANG['pOverview_mailbox_modified']
-$PALANG['pOverview_get_modified']
-$PALANG['pAdminList_admin_modified']
-$PALANG['pAdminList_virtual_alias_modified']
-$PALANG['pAdminList_virtual_mailbox_modified']
- add a translator note to some *.lang if the texts were not exact duplicates
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1501 a1433add-5e2c-0410-b055-b7f2511e0802
- add TODO note to check for PHP >= 5.2.3 because smarty uses
htmlentities with 4 parameters (4th param added in PHP 5.2.3)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1499 a1433add-5e2c-0410-b055-b7f2511e0802
- replace $PALANG.pUsersLogin_username with $PALANG.pLogin_username
languages/*.lang:
- remove obsolete pUsersLogin_username
- add translator notes in some languages
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1496 a1433add-5e2c-0410-b055-b7f2511e0802
- new file, used for "change password" for admins
configs/menu.conf:
- switch from password.php to edit.php?table=adminpassword
password.php:
- deleted, replaced by AdminpasswordHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1491 a1433add-5e2c-0410-b055-b7f2511e0802
- make login() a non-static function
- login: use $this->db_table and $this->id_field instead of hardcoded names
users/login.php, xmlrpc.php:
- adopt to now non-static MailboxHandler->login()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1484 a1433add-5e2c-0410-b055-b7f2511e0802
- add intbool() - similar to bool(), but returns 1/0 instead of true/false
DomainHandler.php
- initStruct(): use Config::intbool() instead of boolconf()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1473 a1433add-5e2c-0410-b055-b7f2511e0802
- add read_f() - similar to read(), but accepts a second parameter which
is then included in the text using sprintf
- bool(): change parameter name
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1471 a1433add-5e2c-0410-b055-b7f2511e0802
some bugfixes:
- init(): let $domain always base on $this->id (also on $new)
- make mergeId dumber (by removing an error check). This can of course
result in an invalid mail address, but this is handled more gracefully
than an empty $this->id
- updateMaxquota(): use Lang::read_f instead of sprintf
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1469 a1433add-5e2c-0410-b055-b7f2511e0802
- refresh $form_fields after ->set(). This fixes a wrong "allowed quota"
if creating a mailbox ends up with an error message because of invalid
values.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1468 a1433add-5e2c-0410-b055-b7f2511e0802
- move boolconf() to Config::bool()
boolconf() will stay for backwards compability, but new code
should use Config::bool()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1467 a1433add-5e2c-0410-b055-b7f2511e0802
- change $PALANG['pCreate_alias_result_success'] to 'The alias %s has
been created!' (%s added, less technical wording)
nl.lang:
- removed duplicated $PALANG['pVacation_result_added']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1462 a1433add-5e2c-0410-b055-b7f2511e0802
- validate_new_id(): store error message in
$this->errormsg[$this->id_field] instead of $this->errormsg[]
- beforestore(): use first array key instead of [0] to match the
change in validate_new_id()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1461 a1433add-5e2c-0410-b055-b7f2511e0802
- marked camelize(), underscore() and variable() as public static
function to avoid PHP warnings with latest PHP (5.4.x)
- removed unused methods humanize(), tableize(), classify() and slug()
- removed unused function __enclose()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1457 a1433add-5e2c-0410-b055-b7f2511e0802
- move postfixadmin_autoload() and spl_autoload_register upwards
(it's needed earlier after using the Config class in more functions)
- call Config::write earlier (as soon as $CONF is complete)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1454 a1433add-5e2c-0410-b055-b7f2511e0802
- check_domain(), check_email():
use Lang::read and Config::read instead of global variables
(global variables, at least $PALANG, don't seem to work with CLI)
- boolconf():
- use Config::read instead of global $CONF
- drop isset() check - doesn't make sense when using Config::read
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1452 a1433add-5e2c-0410-b055-b7f2511e0802
- check_domain(), check_email(): instead of calling flash_error(),
return string with error message - or empty string if everything is ok
model/AdminHandler.php, model/AliasHandler.php,
model/DomainHandler.php, model/MailboxHandler.php,
sendmail.php, users/edit-alias.php:
- adopt to changed check_domain() and check_email() return value
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1451 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): add some comments
- add calledBy() and protected $called_by - calledBy() should be called if one
*Handler class calls another one (to avoid loops etc.)
AliasHandler.php:
- replace $called_by_MailboxHandler / MailboxAliasConfig() with $called_by
(code moved to PFAHandler->calledBy())
MailboxHandler.php:
- beforestore(): update alias active status on edit
(contains some whitespace changes - basically I removed "if ($this->new)"
around most parts of the code)
- use calledBy() instead of MailboxAliasConfig()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1449 a1433add-5e2c-0410-b055-b7f2511e0802
- implement "update" for all *Handler classes by using CliEdit class
(yes, it's really that easy ;-)
This gives us a working *) CLI for "update" in interactive and
non-interactive mode.
*) TODO: test if everything works ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1447 a1433add-5e2c-0410-b055-b7f2511e0802
- allowed_quota: if $CONF[quota] == NO, just return 0 (unlimited)
list-virtual.php:
- only eval_size($limit['maxquota']) if $CONF[quota] == YES
($limit['maxquota'] is not set if $CONF[quota] == NO)
Both issues (which caused PHP warnings) were found by TigerP on IRC
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1445 a1433add-5e2c-0410-b055-b7f2511e0802
- help(): generate help output based on $handler->struct
It shows all available options/fields, but might need some finetuning
to look better
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1441 a1433add-5e2c-0410-b055-b7f2511e0802
- add __handle_params() to implement non-interactive mode. It
reads, checks and handles the various --* commandline parameters
- __handle():
- replace $this->error() calls with $this->err()
- add missing return on failure
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1440 a1433add-5e2c-0410-b055-b7f2511e0802
- _field_password(): return true if checks are successful
(without this, an empty password might have ended up in the database!)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1438 a1433add-5e2c-0410-b055-b7f2511e0802
- new class for CLI add and edit
- based on AddTask, but big parts of __interactive()) are rewritten to:
- use $struct for the user interface (which means it will automatically
adopt to changes in the *Handler classes)
- check all entered data instantly. If an invalid value was entered,
ask again to give the user a chance to enter valid data.
- CliEdit already replaces all AddTask classes (interactive mode works,
commandline parameter mode not implementated yet)
- will also replace all EditTask classes in the future
scripts/shells/shell.php
- loadTasks(): for add, use new CliEdit instead of AddTask class
- in():
- print additional empty line if $prompt is not empty
- print error message when invalid option is chosen
- always return raw $in to avoid '0' vs. ''. vs NULL problems
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1437 a1433add-5e2c-0410-b055-b7f2511e0802
configs/menu.conf:
- change url_create_mailbox to edit.php?table=mailbox
templates/list-virtual.tpl:
- replace hardcoded create-mailbox.php with {#url_create_mailbox#}
functions.inc.php:
- delete functions that are now part of MailboxHandler:
- check_mailbox()
- multiply_quota()
- add some TODO notes
config.inc.php:
- rewrite a comment that referenced create-mailbox.php
create-mailbox.php:
- delete - no longer needed
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1433 a1433add-5e2c-0410-b055-b7f2511e0802
- add _field_password():
- compare password / password2 field (error message will be displayed
at password2 field)
- autogenerate password if enabled in config and $new
- display password on $new if enabled in config or autogenerated
This means MailboxHandler now has all needed features to replace
create-mailbox.php :-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1432 a1433add-5e2c-0410-b055-b7f2511e0802
edit.php:
- call $handler->prefill for all prefill fields
- refresh $form_fields after handling prefill fields
model/PFAHandler.php:
- add prefill() to handle prefill fields. If $this->_prefill_$field()
exists, it will be called
model/MailboxHandler.php:
- init(): error out early if parent::init fails (no need to check the
available quota if $this->id is invalid ;-)
- move updating the allowed quota to updateMaxquota()
- update the available quota based on the prefill domain. If no prefill
domain is given, default to the first domain.
- new method _prefill_domain()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1426 a1433add-5e2c-0410-b055-b7f2511e0802
(TODO: generating random passwords - when this is done, MailboxHandler
can replace create-mailbox.php)
- initStruct():
- make 'username' a 'mail' field (doesn't really change anything at
the moment)
- make 'maildir' editable on $new
- init(): minor cleanup
- validate_new_id(): error out early if check_email() fails
- beforestore():
- convert quota from MB to bytes - previously in setmore()
- on $new, create mailbox alias
- storemore(): run mailbox_postcreation(), send_welcome_mail() and
create_mailbox_subfolders() on $new
- add send_welcome_mail()
- _field_quota(): return true on success (otherwise it's interpreted
as invalid value)
- add _missing_local_part(), _missing_domain() and _missing_maildir()
to fill those fields on $new
- remove add() because all the code moved to the functions mentioned
above.
Known regression: this breaks CLI create mailbox for now
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1425 a1433add-5e2c-0410-b055-b7f2511e0802
- add MailboxAliasConfig() and $called_by_MailboxHandler for special
handling if called by MailboxHandler
- create_allowed(): always allow creating an alias for a mailbox
- remove _missing_on_vacation() and _missing_active() which returned the
default from $this->struct. This is now done by default, see previous
change in PFAHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1424 a1433add-5e2c-0410-b055-b7f2511e0802
- set(): if a field is not set and there's no _missing_$field() method
for it, take default value from $this->struct
(side effect: this automagically fixes CLI create domain)
- store(): add a beforestore() hook that is called at the beginning of
store()
- add empty beforestore() (will be overwritten by MailboxHandler)
- some comment updates
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1423 a1433add-5e2c-0410-b055-b7f2511e0802
- prefill all $formconf['prefill'] fields from URL parameters (typically
used for the domain)
model/AliasdomainHandler.php:
- allow to prefill alias_domain and target_domain from URL parameters
model/AliasHandler.php:
- allow to prefill domain from URL parameters
- some whitespace changes
- add storemore() with a TODO note
model/MailboxHandler.php:
- allow to prefill domain from URL parameters
- some whitespace changes
- add some TODO notes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1422 a1433add-5e2c-0410-b055-b7f2511e0802
add everything for editing a mailbox
Details:
- include 'maildir' in "display in list" for now (not really
needed/wanted in listview, but needed for the postedit hook)
- display max. allowed quota in quota field description (via init())
- add read_from_db_postprocess() - convert quota to MB and store the
original value in 'quotabytes'
- add setmore() - convert quota from MB to bytes
- add storemore() - call mailbox_postedit()
- add _field_quota() - quota validation
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1415 a1433add-5e2c-0410-b055-b7f2511e0802
- add $PALANG['mb_max'] = 'MB (max: %s)';
- $PALANG['pVacation_reply_type']
$PALANG['pVacation_reply_delay_time']
$PALANG['pVacation_reply_delay_time_text']
was only in en.lang - add it to the translations
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1414 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct():
- pgsql doesn't support group_concat, so we need a database-dependent
query to list the domains :-/
- change some "..." to '...' to make them pgsql-compatible
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1393 a1433add-5e2c-0410-b055-b7f2511e0802
- _pgsql_field_exists(), _mysql_field_exists():
Those functions are always called with the expanded table name - don't
expand it twice. (The better solution would be to change all calling
code to provide non-expanded tablenames, but that's more work.)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1391 a1433add-5e2c-0410-b055-b7f2511e0802
- create_page_browser(): revert r1387 and...
- db_query(): ...replace it with the correct fix ;-) (avoid mysqli
reconnects)
The problem was that db_query() used is_resource() to check if we
already have a database connection, but a mysqli connection is an
object, not a resource.
This resulted in a new database connection for each query. Therefore
mysqli "forgot" the value of SET @row before executing the following
SELECT query (which used a new mysqli connection).
The fix is to also check with is_object() to avoid mysqli reconnects.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1388 a1433add-5e2c-0410-b055-b7f2511e0802
- create_page_browser(): include MOD(idx.row, $page_size) in outer SELECT.
This is needed on some MySQL setups which otherwise return an empty set.
Thanks to f-dens_ on IRC for helping to debug it.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1387 a1433add-5e2c-0410-b055-b7f2511e0802
- change list_admins() to use AdminHandler (code from list-admin.php)
Note: this changes the return value format to include all details,
not only the usernames. Use array_keys(list_admins()) if you need
the previous return format.
list-admin.php:
- replace code with a list_admins() call
list-domain.php:
- adopt to new list_admins() return value
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1386 a1433add-5e2c-0410-b055-b7f2511e0802
- make PFAHandler an "abstract class"
- add functions that must be implemented by every *Handler class
as abstract functions:
- abstract protected function initStruct();
- abstract protected function initMsg();
- abstract public function webformConfig();
- abstract protected function validate_new_id();
- lots of additional comments
AdminHandler, AliasdomainHandler, DomainHandler, MailboxHandler:
- remove comments that are now in PFAHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1385 a1433add-5e2c-0410-b055-b7f2511e0802
- add lots of comments
- sort variables into categories
- public variables (currently only errorMsg)
- must be defined in *Handler classes
- set by methods
- (no "real" code changes)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1383 a1433add-5e2c-0410-b055-b7f2511e0802
- use edit.php to enable/disable aliases (instead of edit-active.php)
- merge/simplify conditions for "editable"/check_alias_owner
- use {#url_create_alias#} instead of hardcoded edit.php
- some whitespace changes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1380 a1433add-5e2c-0410-b055-b7f2511e0802
- hand over $handler->errormsg to flash_error() as array (avoids
various foreach or join calls)
- drop variable $mode, instead set smarty $mode directly based on $new
- comment updates
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1379 a1433add-5e2c-0410-b055-b7f2511e0802
- _flash_string(): also accept an array of messages, not only a string
- comment updates for _flash_info() and flash_error() to reflect this change
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1378 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct() / $struct:
- add various labels
- make local_part and domain editable on $new
- fill domain option list with allowed_domains
- add 'welcome_mail' (bool, not in database) for $new
- webformConfig():
- change $struct to display localpart + domain instead of username on $new
- disable early_init (not needed for mailboxes)
- add function mergeId()
- add function _field_password2 (to compare password/password2)
- drop deprecated function change_pass()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1367 a1433add-5e2c-0410-b055-b7f2511e0802
- set(): call $this->_missing_$fieldname() if a field is not set on $new
- new function set_default_value() - typically called from
_missing_$fieldname to set the default from $struct
AliasHandler:
- set default values on $new:
- on_vacation and active from $struct default
- localpart and domain based on address
scripts/shells/alias.php:
- convert AddTask to *Handler syntax. It was broken before, see
https://sourceforge.net/tracker/?func=detail&aid=3232719&group_id=191583&atid=937964
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1364 a1433add-5e2c-0410-b055-b7f2511e0802
- add function compare_password_fields() - compares if two fields contain
the same password (based on _field_password2() from AdminHandler)
and use pEdit_mailbox_password_text_error as error message because it
doesn't contain "... or empty"
AdminHandler:
- replace _field_password2() with a call to $this->compare_password_fields()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1361 a1433add-5e2c-0410-b055-b7f2511e0802
- start rewrite based on PFAHandler
- add initStruct(), initMsg(), webformConfig(), validate_new_id(),
create_allowed()
- drop old __construct() and view()
- replace $this->username with $this->id
- replace check of old password in change_pw() with $this->login
users/password.php:
- adopt to *Handler syntax
scripts/shells/mailbox.php:
- adopt to *Handler view() syntax
- add TODO - maildir column isn't displayed
xmlrpc.php:
- adopt to *Handler syntax
Note: as usual, the changes in xmlrpc.php are untested ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1360 a1433add-5e2c-0410-b055-b7f2511e0802
- move getVacationAlias to AliasHandler (the only code that uses it)
AliasHandler:
- insert (and rewrite) function getVacationAlias()
- change $vh->getVacationAlias() calls to $this->getVacationAlias.
This also means we don't need to call VacationHandler anymore to get
the vacation alias.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1359 a1433add-5e2c-0410-b055-b7f2511e0802
AliasHandler.php:
- remove obsolete functions update(), is_mailbox_alias(),
is_vacation_address(), hasAliasRecord()
- updated delete() to use new *Handler syntax (most of it should be
moved to PFAHandler, but that's another story ;-)
users/edit-alias.php:
- replace $ah->update with $ah->set / $ah->store
- use 0/1 for $fForward_and_store instead of YES/NO
- use safepost instead of isset()
templates/users_edit-alias.tpl:
- use 0/1 for $fForward_and_store instead of YES/NO
xmlrpc.php:
- replace $ah->update with new *Handler syntax
Note: the changes in xmlrpc.php are untested again ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1358 a1433add-5e2c-0410-b055-b7f2511e0802
- remove deprecated functions get() and hasStoreAndForward()
scripts/shells/alias.php:
- ViewTask: switch to *Handler syntax
- ViewTask: display is_mailbox, goto_mailbox and on_vacation status
users/edit-alias.php:
- replace $ah->get() and $ah->hasStoreAndForward() with *Handler syntax
- remove outdated comment in header
xmlrpc.php:
- switch get() and hasStoreAndForward() to *Handler syntax
Note: the changes in xmlrpc.php are untested!
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1357 a1433add-5e2c-0410-b055-b7f2511e0802
- use new *Handler syntax to add/remove vacation alias
(implemented as function updateAlias() to avoid code duplication)
AliasHandler:
- setmore(): only use $oldvalues if no new on_vacation value is given
- setmore(): fix "undefined index" warning
edit.php:
- only set $values if a field is editable and displayed in the form
- do not set default values in $values
(without those changes, the vacation alias was always removed when
editing an alias)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1356 a1433add-5e2c-0410-b055-b7f2511e0802
- use AliasHandler instead of direct SQL queries
templates/list-virtual_alias.tpl:
- goto is an array now, not a comma-separated string
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1354 a1433add-5e2c-0410-b055-b7f2511e0802
- add support for LIMIT/OFFSET to getList()
AliasHandler:
- overload getList() to only return non-mailbox aliases
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1353 a1433add-5e2c-0410-b055-b7f2511e0802
- use AliasdomainHander instead of doing direct database queries
- add search support for alias domains
- display "create alias domain" button only if this is possible
- always assign $tAliasDomains smarty variable (even if empty) to avoid warnings
- always escape $fDomain (even if it comes from $list_domains)
- rename $SESSID_USERNAME to $admin_username
templates/list-virtual_alias_domain.tpl:
- remove reference to non-existing variable $tTargetDomain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1352 a1433add-5e2c-0410-b055-b7f2511e0802
- setmore(): keep/(re-)add vacation and mailbox alias to goto
- hide 'goto_mailbox' if the alias does not belong to a mailbox
(done in initStruct for $new, otherwise in init())
edit.php:
- set $form_fields and $id_field later (after $hander->init()) - needed
for AliasHandler to decide if goto_mailbox should be displayed
With this commit, AliasHandler is feature-complete for usage with
edit.php. We even get a "deliver to local mailbox" checkbox :-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1348 a1433add-5e2c-0410-b055-b7f2511e0802
- $struct: add is_mailbox (does the alias belong to a mailbox?)
- $struct: add goto_mailbox (if the alias is a mailbox, does it point
to the mailbox or is it forward-only?)
- set goto_mailbox in read_from_db_postprocess()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1347 a1433add-5e2c-0410-b055-b7f2511e0802
- add \n after "Upgrading database" lines - that makes the output readable
if setup.php is called in a console instead a webbrowser
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1345 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): add 'on_vacation'
- read_from_db_postprocess(): split off vacation alias from $goto
and store vacation status in on_vacation (honors the vacation alias
only, not the details from the vacation table)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1344 a1433add-5e2c-0410-b055-b7f2511e0802
- html-escape flash_info() / flash_error() messages to fix XSS if the
message contains user-supplied input
(thanks to Filippo Cavallarin for the report)
Note: This will cause ugly output for some german error messages which
contain ü etc., and the warning message in backup.php (with some
HTML tags included) will also look totally ugly.
Nevertheless, that's still better than XSS attacks ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1331 a1433add-5e2c-0410-b055-b7f2511e0802
- PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin
therefore we have to wrap our function (which fortunately gives the same
results) with function_exists().
Reported by MadOtis on #postfixadmin
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1328 a1433add-5e2c-0410-b055-b7f2511e0802
- deleted, obsoleted by edit.php?table=alias
functions.inc.php:
- drop function check_alias() - it was only used by create-alias.php
(AliasHandler has a similar function create_allowed(), which is a
copy of check_alias() with superfluous {...} removed)
configs/menu.conf
- replace create-alias.php with edit.php?table=alias
- append "?" to url_create_mailbox to avoid temporary change in menu.tpl
(create-mailbox is the only one which still needs ? instead of &)
templates/list-virtual.tpl:
- use {#url_create_alias#} instead of hardcoded create-alias.php
templates/menu.tpl:
- $url_domain: url-escape domain, use & instead of ?
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1317 a1433add-5e2c-0410-b055-b7f2511e0802
- override init() - change '*@domain' -> '@domain', then call parent::init()
- validate_new_id(): allow catchall ('@domain'), check only domain in this case
- create_allowed(): copy of check_alias() from functions.inc.php, with
superfluous { ... } removed
- remove forgotten debugging from mergeId()
- _field_goto():
- allow '@domain' targets (domain-wide forward)
- use an array to collect error messages - that avoids 'uninitialized'
warnings and allows to easily change the join() glue if needed
Overall status:
- create-alias is now fully supported
- handling of vacation and mailbox aliases is still on my TODO list, which
means we still need edit-alias for now
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1316 a1433add-5e2c-0410-b055-b7f2511e0802
- New target prep: Create a needed tar.gz file to build a non-nativ .dpkg
- New target build-package: Call this target to build a shiny new .dpkg file.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1313 a1433add-5e2c-0410-b055-b7f2511e0802
(TODO: catchall handling, mailbox and vacation aliases)
AliasHandler.php
- drop unused $username
- set $domain_field
- initStruct():
- use correct labels
- set 'domain' field options to allowed domains
- add (virtual) 'localpart' field
- add comments for more virtual fields
- add webformConfig() (note: modifies $struct on $new - otherwise we
couldn't use the domain dropdown in the web interface)
- add mergeId to merge localpart and domain to address (called by
edit.php _before_ ->init)
- add validate_new_id() (doesn't work for catchall yet)
- add setmore() to
- fill 'domain' based on 'address'
- convert $values[goto] from array to comma-separated string
- add read_from_db_postprocess to split goto to an array
(TODO: handling of mailbox and vacation aliases)
- add _field_goto() validator
- add empty, commented dummy delete() that will replace the "old"
delete function one day
- make hasAliasRecord() private (only used internally)
- mark all "old" functions as obsolete
edit.php:
- add handling of txtl field (convert textarea to array)
- call $handler->mergeId if $id_field is editable, but not displayed
in form (usecase: merge localpart + domain to address)
editform.tpl:
- add handling of txtl fields (textarea, filled by array)
PFAHandler.php:
- add setmore() hook function - runs at the end of set()
AdminHandler.php:
- add a comment for 'txtl' (array of one line texts, like alias goto)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1311 a1433add-5e2c-0410-b055-b7f2511e0802
- add initStruct() (not the final version, but works for now)
- add initMsg()
- replace $this->username with $this->id everywhere
- drop __construct() - default __construct will be used now
users/edit-alias.php, xmlrpc.php, VacationHandler.php, scripts/shells/alias.php:
- use default init sequence for AliasHandler (new, then ->init())
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1310 a1433add-5e2c-0410-b055-b7f2511e0802
- use edit.php to switch active status for alias domains
edit-active.php:
- remove now superfluous handling of alias domains
configs/menu.conf:
- remove now superfluous url_edit_active (templates for list-mailbox
and list-alias use hardcoded 'edit-active.php')
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1308 a1433add-5e2c-0410-b055-b7f2511e0802
- use edit.php to switch active status for domains
edit-active-admin.php:
- deleted, obsoleted by using edit.php
configs/menu.conf:
- remove now superfluous url_edit_active_admin
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1307 a1433add-5e2c-0410-b055-b7f2511e0802
- use edit.php to switch active status for domains
- display backupmx and active status as yes/no instead of 1/0
edit-active-domain.php
- deleted, obsoleted by using edit.php
configs/menu.conf
- remove now superfluous url_edit_active_domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1306 a1433add-5e2c-0410-b055-b7f2511e0802
- implement switching active status using *Handler
(uses additional 'active' url parameter, which must be 0 or 1)
- document GET parameters
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1305 a1433add-5e2c-0410-b055-b7f2511e0802
- add rewritten function create_admin() (now using AdminHandler,
which means 25 instead of 80 lines)
- various follow-up changes to match the rewritten function create_admin()
functions.inc.php:
- delete function create_admin() - setup.php was the last file calling it
- honor POSTFIXADMIN_SETUP in authentification_get_username() to avoid
a redirect to login.php after creating an admin with setup.php and to
get "SETUP.PHP" for db_log()
model/AdminHandler.php:
- add TODO: implement generate_password
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1301 a1433add-5e2c-0410-b055-b7f2511e0802
- allow log actions create_admin and edit_admin
- add edit_admin_state and delete_admin as comment/reminder that they
should also be logged
*.lang:
- add text for the new "create admin" and "edit admin" log actions
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1298 a1433add-5e2c-0410-b055-b7f2511e0802
- store unchecked input values given to set() in $this->RAWvalues before
running the validation functions. This is needed to make comparing
password and password2 possible.
(uppercase RAW intentional to make usage harder - hopefully hard enough
to give everybody who wants to use it some time to think over secure
programming when working with unchecked input ;-)
AdminHandler.php:
- compare password and password2
This commit means AdminHandler is complete :-)
(Note: db_log can't handle the admin-related log actions yet.)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1297 a1433add-5e2c-0410-b055-b7f2511e0802
- fix field type for skipping password fields (must be 'pass', not 'password')
- implement validation of 'pass' fields with validate_password()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1293 a1433add-5e2c-0410-b055-b7f2511e0802
- add empty no_domain_field() to disable default die() from PFAHandler
- $struct:
- changed 'superadmin' to normal bool field (+ TODO note)
- changed 'password2' to be an alias of password in SELECT
- init 'domains' default with array() and options with list_domains(),
- storemore():
- implement storing domains in domain_admins table
- implement storing ALL in domain_admins table for superadmins to
keep the database backwards-compatible with 2.3.x for now
- add read_from_db_postprocess() to convert the domains list to an array
This makes AdminHandler working with edit.php?table=admin
(Some fine-tuning at various places/files is still missing.)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1291 a1433add-5e2c-0410-b055-b7f2511e0802
- implement handling of 'list' fields (<select> with multiple choices
allowed)
- also include alternative implementation with checkboxes (commented out)
- change {$value_{$key}} to $value_{$key} for 'enum' to stay in sync
with 'list' ('list' fails with the additional {...} because it converts
the array to the string "Array") (seems to be new behaviour in Smarty
3.1.5 - IIRC 3.0.7 required the additional {...})
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1290 a1433add-5e2c-0410-b055-b7f2511e0802
- use SmartyBC (Backwards Compatible) instead of Smarty class to keep
{php} in templates working (do we really need this?)
- remove obsolete allow_php_tag
- config_dir default value is now an array
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1289 a1433add-5e2c-0410-b055-b7f2511e0802
- also include column in SELECT if display_in_form != 0
- call read_from_db_postprocess() hook before returning data
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1287 a1433add-5e2c-0410-b055-b7f2511e0802
- split code to handle domain_field == "" && admin_username != ""
from __construct() to no_domain_field().
Default behaviour stays to die(), but AdminHandler will override it
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1286 a1433add-5e2c-0410-b055-b7f2511e0802
- upgrade_1284(): migrate the ALL domain to the superadmin column
Note: The ALL domain is not (yet) deleted to stay backwards-compatible
for now (will be done in a later upgrade function)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1284 a1433add-5e2c-0410-b055-b7f2511e0802
- upgrade_1283(): add a "superadmin" column to the admin table
This is the first step to get rid of the "ALL" dummy domain.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1283 a1433add-5e2c-0410-b055-b7f2511e0802
- use AdminHandler
- move displaying the superadmin flag to the template
templates/adminlistadmin.tpl:
- update to the fieldnames provided by AdminHandler (name->username)
- move displaying the superadmin flag to the template
functions.inc.php:
- delete function get_admin_properties() (was only used by list-admin
and is not needed anymore) -> 48 lines less :-)
- add TODO to list_admins() to use AdminHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1282 a1433add-5e2c-0410-b055-b7f2511e0802
- add log action 'edit_alias_domain'
- update outdated comment to point to $action_list instead of
maintaining the list as comment _and_ variable
languages/*.lang
- add $PALANG['pViewlog_action_edit_alias_domain']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1278 a1433add-5e2c-0410-b055-b7f2511e0802
(yes, we get edit mode "for free")
model/AliasdomainHandler.php:
- add webformConfig()
configs/menu.conf:
- change url_create_alias_domain to edit.php?table=aliasdomain
templates/list-virtual_alias_domain.tpl
- change ?target_domain to &target_domain
(TODO: this is currently ignored by edit.php)
- add edit link (TODO: add log action to avoid the error message)
create-alias-domain.php:
- deleted :-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1275 a1433add-5e2c-0410-b055-b7f2511e0802
edit.php:
- use ?table= parameter to decide what will be edited
- generate (and validate) Handler classname based on ?table=
- read handler-specific configuration from $handler->webformConfig()
and use it at various places
- add option to run $handler->init() early. Useful for $new in case
of AliasdomainHandler which might fail if all domains are already
aliased.
- always redirect to edit.php?table=$table after adding an item to
ensure correct initialization for next item
templates/editform.tpl:
- add hidden field "table"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1274 a1433add-5e2c-0410-b055-b7f2511e0802
- set $domain_field to enable permission handling (and to get a list of
allowed/available domains)
- fill $this->struct['alias_domain']['options'] and
$this->struct['target_domain']['options'] with available domains that
are not yet used as alias domain
- override init() to get "All domains are already aliased" error message
out as early as possible (and let init() fail in this case)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1269 a1433add-5e2c-0410-b055-b7f2511e0802
- set $domain_field to enable domain permission handling
list-domain.php:
- use permission handling of DomainHandler. This means:
- no need to call list_domains_for_admin()
- no longer hand over SQL sniplets
- much easier handling for superadmins and "simulate admin" mode
- 14 lines less code for permission handling etc.
- remove superfluous/outdated header comments
- move $smarty_assign('select_options') to global section (it's the
same code for domain admins and superadmins)
Note: don't try to read the diff of list-domain.php.
Read the complete file instead ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1267 a1433add-5e2c-0410-b055-b7f2511e0802
allow restriction to an admin's domain permissions
- new protected variables:
$admin_username - if set, restrict $allowed_domains to this admin
$domain_field - column containing the domain
$allowed_domains - if $domain_field is set, this is an array with
the domain list
- __construct: new optional parameter $admin_username to restrict
allowed domains to this admin's permissions
- read_from_db(): handle $allowed_domains
- read_from_db(): fix query if $condition == ""
PS: Yes, I know some people would like to kill me for including
permission stuff in PFAHandler, but it's the best (and shortest,
only +20 lines) way to handle it.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1266 a1433add-5e2c-0410-b055-b7f2511e0802
- rewrite to work for superadmins also (will list all domains now
instead of "ALL"), which means we can drop the admin vs. superadmin
check at various places
- escape_string $username
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1265 a1433add-5e2c-0410-b055-b7f2511e0802
- use PALANG.pAdminEdit_domain_active instead of
PALANG.pCreate_alias_domain_active
languages/*.lang
- mark $PALANG['pCreate_alias_domain_active'] as obsolete
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1263 a1433add-5e2c-0410-b055-b7f2511e0802
- move handling of displaying checkboxes to editform.tpl.
This means: One switch block less in create-domain.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1262 a1433add-5e2c-0410-b055-b7f2511e0802
- AddTask:
- use $values[$field] instead of a short variable name for input
- hand over $values array to __handle as array instead of dozens of variables
- ViewTask: use $struct for printing the output
model/DomainHandler.php:
- use 'created' as label for created
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1259 a1433add-5e2c-0410-b055-b7f2511e0802
- read transport options from $handler->getStruct
(instead of $handler->getTransports())
- convert selected transport to to transport name directly
(instead of using $handler->getTransport)
model/DomainHandler.php:
- init_struct: read transport options with Conf::read directly
(instead of using $this->getTransports()
- delete no longer used functions getTransports() and getTransport()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1256 a1433add-5e2c-0410-b055-b7f2511e0802
- move definition of public and protected variables to DomainHandler.php
- move lots of functions from DomainHandler.php to PFAHandler.php:
- __construct()
- init()
- set()
- store()
- read_from_db()
- view()
- getList()
- getStruct()
- getId_field()
All functions and comments were moved without any modification.
See the history of DomainHandler.php if you need to find out something
about the history of the functions listed above.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1254 a1433add-5e2c-0410-b055-b7f2511e0802
- new file
- generic edit form template that uses $struct to render the form
templates/admin_edit-domain.tpl:
- deleted, obsoleted by editform.tpl
create-domain.php
- use new editform.tpl
- use $errormsg array instead of join't $errortext
- store/move errors related to a display_in_form field in $fielderror
(they will be displayed next to the field)
- display remaining error messages (not related to a field) with
flash_error()
- use "value_$key" instead of "t$Key" as smarty variable name for field
values
model/DomainHandler.php
- store error messages in $this->errormsg[$field] (instead of $this->errormsg[])
- fix label for default_aliases
model/PFAHandler.php:
- store error messages in $this->errormsg[$field] (instead of $this->errormsg[])
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1252 a1433add-5e2c-0410-b055-b7f2511e0802
- initStruct(): fix alias_count ("something - NULL" is always NULL, now
enforces integer 0 for each JOINt in field with NULL value)
- set() now checks if $this->_field_$fieldname exists and calls it as
additional validator
- split store() into store() (stores $this->values in the database) and
storemore() (stores additional things and/or calls scripts)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1249 a1433add-5e2c-0410-b055-b7f2511e0802
- get_domain_properties(): use DomainHandler (function result mostly
unchanged, only difference: instead of quota_sum in bytes it now
returns total_quota in MB)
- allowed_quota(): adopt to slightly changed return value of
get_domain_properties()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1248 a1433add-5e2c-0410-b055-b7f2511e0802
- pacol(): new parameter $dont_write_to_db - needed to skip JOINt in
columns which (of course) aren't available on INSERT or UPDATE
model/DomainHandler.php:
- initStruct(): mark JOINt in columns with the dont_write_to_db flag
- store(): skip columns with the dont_write_to_db flag set (not_in_db
columns are also/still skipped)
In non-technical terms: create-domain works now :-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1244 a1433add-5e2c-0410-b055-b7f2511e0802
- changed pVacation_result_removed from 'Auto response for %s has been
removed!' to '... has been disabled!'
*.lang:
- add %s in pVacation_result_removed and pVacation_result (+ translator note)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1243 a1433add-5e2c-0410-b055-b7f2511e0802
- read_from_db(): provide a working $colformat['ts'] for postgresql
_and_ mysql (the only mysql/pgsql-specific code in DomainHandler,
everything else works with both)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1242 a1433add-5e2c-0410-b055-b7f2511e0802
- assign smarty values only for fields that have the display_in_form flag
model/DomainHandler.php:
- initStruct(): make default_aliases display_in_form dependant on $this->new
(it's useless in edit mode)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1235 a1433add-5e2c-0410-b055-b7f2511e0802
- use a new SELECT query syntax (sub-SELECTs) that gets all needed
information (including alias count, mailbox count and total quota)
in one query and is fast as light.
Better don't ask how long it took me to write this query, and I
seriously hope it works with postgresql. Otherwise...!
- add alias_count, mailbox_count and total_quota (including the required
SQL magic) to $struct
- add support for funny[tm] query tricks in $struct:
- replacement for field name in SELECT statement
- additional SQL after the FROM xy clause - useful for JOINs
- new function getList($condition) to get a list of domains
- order SELECT results by $this->id_field (needed for getList)
- add comment about the values used in $struct[*][type]
functions.inc.php:
- add two more optional parameters to pacrypt(): $select and $extrafrom
scripts/shells/domain.php:
- display number of existing aliases and mailboxes
- display quota sum
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1230 a1433add-5e2c-0410-b055-b7f2511e0802
- split view() into
- read_from_db (with param $condition, can also be used with other
conditions than "domain = $this->username")
- view() - fetches one row
(as preparation before implementing a function to list all domains)
- read_from_db():
- replace $bool_fields with $colformat['bool'] - now the database
results for bool fields are always 0/1 (by using CASE in the query),
and have an additional _$field with yes/no
- resultset is now an array of rows (instead of a single row)
- use db_assoc() instead of db_array()
- view(): use read_from_db()
- store(): change a comment that confused vim autofolding
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1229 a1433add-5e2c-0410-b055-b7f2511e0802
- new function db_where_clause($condition, $struct) to create a WHERE clause.
bool values are converted with db_get_boolean() based on $struct
model/DomainHandler.php - view():
- build WHERE clause with db_where_clause()
- new array $colformat for columns which need special handling in the field list
(that's more readable than tons of elseif on the long term, and allows easier
customization (hook/$CONF value?))
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1228 a1433add-5e2c-0410-b055-b7f2511e0802
- deleted (obsoleted by create-domain.php)
create-domain.php:
- fixed wrong variable name that broke saving an edited domain
configs/menu.conf, templates/adminlistdomain.tpl
- changed to use create-domain.php?edit= instead of edit-domain?domain=
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1226 a1433add-5e2c-0410-b055-b7f2511e0802
create-domain.php:
- add edit mode (use ?edit=example.com)
- use $id_field instead of hardcoded 'domain'
- redirect to list-domain after saving in edit mode
- rename some variables
edit-domain.php:
- rename some smarty variables
templates/admin_edit-domain.tpl:
- rename some smarty variables
- add two hidden fields "edit" and "domain", both contain $tDomain
(only in edit mode)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1225 a1433add-5e2c-0410-b055-b7f2511e0802
- store() can now handle INSERT and UPDATE (depending on $this->new) :-)
- store some texts in $this->msg[] (replaced several $this->variable)
to make functions easier reuseable
- new function initMsg to fill $this->msg[] (can depend on $this->new)
- convert values to a DB-understandable format in store(), not in set()
(affects only bool for now, another candidate is pacrypt()ing passwords)
- check if all fields are set (on new)
- unset all not_in_db fields in $db_values in foreach loop
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1223 a1433add-5e2c-0410-b055-b7f2511e0802
- assign $values to smarty in a foreach loop
edit-domain.php, templates/admin_edit-domain.tpl:
- rename some smarty variables to match column name
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1221 a1433add-5e2c-0410-b055-b7f2511e0802
create-domain.php
- replace old $form_fields with $handler->getStruct()
- rewrite handling POST data to make it easier to understand
- move reading POST input to the section handling POST
- remove condition on POST (we are in the POST block now)
- check if editing of a field is allowed (use default value if not)
- move validation of 'enum' fields to PFAHandler
- allow changing the "active" state (instead of hardcoding it)
model/PFAHandler.php:
- add check for 'enum' fields
model/DomainHandler.php:
- change default for "active" and "default_aliases" to 1
templates/admin_edit-domain.tpl:
- don't hide the "Active" checkbox on new
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1220 a1433add-5e2c-0410-b055-b7f2511e0802
- split __construct to
- __construct($new=0) - init $struct etc. and
- init($username) - validate $username
This allows reading of $struct before doing any check on the username,
and will also avoid problems when I implement a function to list all
domains
- init(): use direct return values instead of $this->return
scripts/shells/domain.php, create-domain.php
- update to use new DomainHandler->init()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1219 a1433add-5e2c-0410-b055-b7f2511e0802
create-domain.php:
- rename "fField" form fields to just "field" to match the column names
in the database
- remove list of template and POST variables in the header - the code is
self-documenting on this, one useless comment block less to maintain ;-)
- rename $default to $field - matches the usage better
- use $values[$key] instead $$key (this also avoids the need to fill
$values before calling $handler->set)
- remove some validation that is already done in DomainHandler
- use $handler->set even if creating $handler results in an error to
make error messages for all fields visible
- set $values to defaults at the end of the file if $error == 0 (and
use a foreach loop) instead of doing it for GET at the beginning and
again after successful POST
- remove some unused variables
- various other changes
edit-domain.php, templates/admin_edit-domain.tpl:
- rename "fField" form fields to just "field" to match the column names
in the database
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1218 a1433add-5e2c-0410-b055-b7f2511e0802
for create-domain.php...
create-domain.php:
- finally: use DomainHandler :-))
edit-domain.php, create-domain.php,
templates/admin_edit-domain.tpl:
- use 0/1 instead of off/on for checkboxes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1217 a1433add-5e2c-0410-b055-b7f2511e0802
- new: public function getStruct()
- make store() public explicitely
- store domain_postcreation error message in $this->errormsg
- use existing error message instead of "invalid domain"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1216 a1433add-5e2c-0410-b055-b7f2511e0802
- init Lang and Config classes in common.php instead of postfixadmin-cli.php -
they need to be available in the web interface also
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1215 a1433add-5e2c-0410-b055-b7f2511e0802
- merge with scripts/common.php
- don't start/use session in CLI mode
- don't load smarty.inc.php in CLI mode
- hardcode language to 'en' in CLI mode (was done in postfixadmin-cli.php before)
scripts/postfixadmin-cli.php - __bootstrap():
- use common.php instead of scripts/common.php
- don't load languages/language.php and languages/en.lang (already
done via common.php)
- don't call language_hook (already done via common.php)
scripts/common.php:
- deleted
- dropped helper functions low(), up(), r() and pr() which were just
shortnames for existing PHP functions
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1214 a1433add-5e2c-0410-b055-b7f2511e0802
- use strtolower()/strtoupper() instead of low()/up() shortnames.
This makes the code slightly longer, but easier to understand because
strtolower()/strtoupper() are well-known function names
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1213 a1433add-5e2c-0410-b055-b7f2511e0802
Class Lang uses exactly the same code as Class Config - therefore
I replaced its code with a simple "extends Config".
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1212 a1433add-5e2c-0410-b055-b7f2511e0802
- *Task / __handle(): check $handler->result after calling "new"
- AddTask / __handle():
- don't set domain in $values - it's already included in the "new" call
- hardcode "active" to 1 - before, it accidently got the value of "aliases"
- use $handler->set() and $handler->store instead of $handler->add()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1211 a1433add-5e2c-0410-b055-b7f2511e0802
- split add() function to
- set() (validate values) and
- store() (write to database)
- set():
- replace $checked with $this->values
- store validation summary in $this->values_valid
PFAHandler.php:
- change _inp_* functions to return true/false if value is (in)valid
instead if the sanitized value. They now also set $this->errormsg[]
(not the final solution, but works for now)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1210 a1433add-5e2c-0410-b055-b7f2511e0802
- view():
- auto-generate field list based on $this->struct
- use date_format() for timestamp fields in the sql query
- convert bool fields to integer 0/1 (postgresql uses t/f internally)
to make the result database independent
- enable "display in list" for "created" column to avoid error in
CLI view domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1209 a1433add-5e2c-0410-b055-b7f2511e0802
- new function db_boolean_to_int() to convert boolean values from the
database to integer (0 or 1)
- db_get_boolean(): error out on unknown $CONF[database_type]
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1208 a1433add-5e2c-0410-b055-b7f2511e0802
- validate $username (domain name in this case) in __construct
(using the new function validate_id)
- make initStruct protected (was private)
- additional parameter for view() to supress error messages
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1207 a1433add-5e2c-0410-b055-b7f2511e0802
various fixes, implemented some TODOs
- move table name into variable $this->db_table
- use correct config option to detect if quota support is enabled
- fix (virtual) column name for default aliases
- use type 'ts' (timestamp) for created and modified
- fill non-editable rows with defaults if $this->new
- read values from $values instead of safepost()
- unset $db_values['default_aliases'] before writing to database
- some other minor changes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1203 a1433add-5e2c-0410-b055-b7f2511e0802
- $PALANG['pCreate_mailbox_mail'] = 'Send welcome mail', but some
translations mean "create mailbox".
Added a note for translators to update it.
Reported by Segeja in #postfixadmin
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1202 a1433add-5e2c-0410-b055-b7f2511e0802
- better error message if no domains exist or a domain admin doesn't
have permissions for any domain. That's less confusing than the
"Invalid parameter" message
*.lang:
- new (error) messages
- $PALANG['no_domains_for_this_admin']
- $PALANG['no_domains_exist']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1195 a1433add-5e2c-0410-b055-b7f2511e0802
- new config option $CONF['password_validation'] - array with regular
expressions to check if a password is valid/good enough.
The default configuration enforces:
- minimum length 5 characters/digits/whatever
- at least 2 characters
- at least 2 digits
- removed $CONF['min_password_length'] - it's now handled in /.{5}/ in
$CONF['password_validation']
functions.inc.php
- new function validate_password to check a given password against
$CONF['password_validation']
- generate_password: generated password is always 8 chars long
(instead of $CONF['min_password_length'])
edit-admin.php, users/password.php, edit-mailbox.php, setup.php:
- use validate_password instead of $CONF['min_password_length']
This implements
https://sourceforge.net/tracker/?func=detail&aid=1785513&group_id=191583&atid=937967
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1192 a1433add-5e2c-0410-b055-b7f2511e0802
- rename $PALANG['pPasswordTooShort'] to $PALANG['password_too_short']
*.lang:
- add $PALANG['password_no_characters'] and $PALANG['password_no_digits']
(will be used by my next commit)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1191 a1433add-5e2c-0410-b055-b7f2511e0802
functions.inc.php:
- create_admin(): use db_insert instead of INSERT queries
(this includes automatic escaping of all values)
create-admin.php:
- use safepost instead of isset($_POST[...])
- don't escape_string post values - it's done inside create_admin now
- remove superfluous emptying of empty $tDomains for GET
- allow htmlentities-escaping for pAdminCreate_admin_username_text
- some whitespace / linebreak changes
setup.php:
- load config.inc.php only once (loading it twice will break if custom
hook functions exist in config.*.php - "can't redefine function ...")
- use safepost instead of isset($_POST[...])
- don't escape_string post values - it's done inside create_admin now
- escape $tUsername with htmlentities() instead of escape_string
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1190 a1433add-5e2c-0410-b055-b7f2511e0802
- several comments for the language_hook function:
- x_* naming policy for custom texts
- note that custom texts must appear in all blocks
- note that translation fixes should be reported in the bugtracker
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1177 a1433add-5e2c-0410-b055-b7f2511e0802
- split off $fDomain from ?username= (admin mode)
- basic sanity check for ?username= (admin mode)
- urlencode $fDomain for $Return_url (admin mode)
- don't split off domain from username in users mode (not needed)
- added various TODO notes
- some whitespace fixes near the end of the file (2*3 lines)
list-virtual_mailbox.tpl
- don't include domain in link to vacation.php (no longer needed)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1172 a1433add-5e2c-0410-b055-b7f2511e0802
vacation.php
- result of merging edit-vacation.php and users/vacation.php
- vacation.php comes with the svn history of edit-vacation.php
- display "vacation already active" (only) in user mode if vacation is active
(would be useful in admin mode too, but needs a text change)
- various comment updates
- add username in $PALANG[pVacation_result_removed] and
$PALANG[pVacation_result_added] using sprintf
- change compared to Jan Kruis' patch:
- set return url for users to main.php instead of users/main.php
- set return url for admins after setting $fDomain. Otherwise the return url
does not contain the domain.
- removed unused variable $tDomain
users/vacation.php:
- require(../vacation.php)
- remove everything else
- whitespace changes in the license header
- note: this is completely different from Jan Kruis' patch - his intention was
to remove this file and use ../vacation.php. However, with his way all links
in the users menu would point to the wrong place/directory
edit-vacation.php:
- deleted
templates/vacation.tpl
- display username only in admin mode
templates/list-virtual_mailbox.tpl
- link changed to merged vacation.php
languages/en.lang
- add username in $PALANG[pVacation_result_removed] and
$PALANG[pVacation_result_added] as sprintf variable
- (comments added by Jan Kruis' patch are not part of this commit)
languages/nl.lang
- translation updates
- already contains the sprintf variable in $PALANG[pVacation_result_removed]
and $PALANG[pVacation_result_added]
(updates for other *.lang files follow in another commit)
The following parts of Jan Kruis' patch are not part of this commit:
- rejected:
- variables.inc.php: don't add $Admin_role and $Return_url
If we initialize them, it should be done directly in (edit-)vacation.php,
but the current code always sets them already in all cases.
- templates/users_main.tpl: do not change url for vacation.php
- postponed:
- added comments in en.lang about obsolete texts
Most parts of this commit (see exceptions above) were provided as patch
by Jan Kruis (jan-kruis@SF), see
https://sourceforge.net/tracker/?func=detail&aid=3383236&group_id=191583&atid=937966
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1169 a1433add-5e2c-0410-b055-b7f2511e0802
- removed superfluous white background in some elements (body already
has white background)
images/mail_bg.gif:
- made background transparent instead of white
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1164 a1433add-5e2c-0410-b055-b7f2511e0802
Prepare merging of edit-vacation.php and users/vacation.php
users/vacation.php, edit-vacation.php:
- first step of merging
- renamed some variables to fit vacation.tpl
- some code sorting and cleanup
- replaced JS redirect on cancel with handling in PHP
users_vacation.tpl, edit-vacation.tpl:
- deleted (merged to vacation.tpl)
vacation.tpl:
- new file, result of merging edit-vacation.tpl and users_vacation.tpl
- display mail address to users also (to be discussed)
Thanks to J.Kruis (jan-kruis@SF) for the patch,
https://sourceforge.net/tracker/?func=detail&aid=3383236&group_id=191583&atid=937966
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1163 a1433add-5e2c-0410-b055-b7f2511e0802
ADDITIONS/squirrelmail-plugin/**/postfixadmin.po:
- whitespace fix: replace DOS line ends with Linux line ends
(no other changes)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1160 a1433add-5e2c-0410-b055-b7f2511e0802
- replace SQL instructions to create a superadmin with a note about setup.php
SECURITY.txt:
- add a note about permissions needed by setup.php
- add note about templates_c directory
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1157 a1433add-5e2c-0410-b055-b7f2511e0802
edit-alias.tpl:
- merge with create-alias.tpl
- added various {if $mode = ...}
- for edit mode: used "multiple targets" help text right of textarea
(instead of having it under the headline)
- use $fGoto instead of array in textarea
create-alias.tpl
- deleted
edit-alias.php:
- fixed $tGoto to contain unmodified $_POST value on error
- dropped $array smarty variable that was used instead of $tGoto
- added mode = edit smarty variable
- add empty pCreate_alias_address_text_error smarty variable to avoid
"undefined" warning
create-alias.php:
- added mode = create smarty variable
- switched to edit-alias template
*.lang
- marked $PALANG['pCreate_alias_address'] as obsolete
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1153 a1433add-5e2c-0410-b055-b7f2511e0802
edit-mailbox.php
- report password errors next to the password field instead of flash_error()
- small changes to smarty variables
create-mailbox.php:
- small changes to smarty variables
edit-mailbox.tpl, create-mailbox.tpl:
- merge as good as possible (everything that is still left will probably
need an {if}
- renamed some smarty variables
- use colspan=3 for buttons
*.lang:
- mark pCreate_mailbox_username, pCreate_mailbox_name, pCreate_mailbox_quota,
pCreate_mailbox_quota_text and pEdit_mailbox_name_text as obsolete
- added some "please check" notes for translators
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1146 a1433add-5e2c-0410-b055-b7f2511e0802
- integrate $defaults in $struct to have everything in one place
- integrate field labels, descriptions etc. in $struct
- $struct now has named keys and is filled with the new pacal() helper function
- replaced TODO comments with new ones ;-)
functions.inc.php:
- new function pacol() to fill $struct with an associative array
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1145 a1433add-5e2c-0410-b055-b7f2511e0802
users/password.php:
- use SESSID_USERNAME instead of USERID_USERNAME to match the smarty
variable name in the password module for admins
- switch to 'password' template
templates/password.tpl:
- display "exit" button if logged in as user
- change form name to something more useful
templates/users_password.tpl:
- deleted
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1140 a1433add-5e2c-0410-b055-b7f2511e0802
- use $authentication_has_role instead of checking if $smarty_template
contains "users_". This makes the code cleaner and avoids problems
when merging templates to names without "users_".
- check for login template without using needle - that's possible after
merging the login and users_login template to login.tpl
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1139 a1433add-5e2c-0410-b055-b7f2511e0802
login.php, users/login.php:
- set logintype=admin/user smarty variable
- cleanup: move smarty assignments outside of GET/POST handling - it's
the same for both
users/login.php:
- do not pre-fill username on failed login
templates/login.tpl:
- merge in users_login.tpl
- add some {if} to handle the differences between admin and user login
templates/users_login.tpl:
- deleted
*.lang:
- mark pUsersLogin_username, pUsersLogin_password, pUsersLogin_language
and pUsersLogin_button as obsolete
- add some notes if pLogin_* and pUsersLogin differ
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1137 a1433add-5e2c-0410-b055-b7f2511e0802
- default aliases were always created, even when unchecking the checkbox
(to be exact: after my last commit yesterday, they were never created)
This bug was introduced in r867 (setting the default to "on") in
combination with isset() falling back to the default value. For an
unchecked checkbox, this means that it always used the default fallback
which was "on" since r867.
(Does _not_ affect the 2.3 branch.)
- replaced two <br> with a TODO ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1135 a1433add-5e2c-0410-b055-b7f2511e0802
- moved some variables from variables.inc.php to the (only) file that
uses them
- removed unused $escaped_string
create-domain.php
- target for $fDefaultaliases and $tDefaultaliases
list-virtual.php
- target for $tDisplay_back, $tDisplay_back_show, $tDisplay_up_show,
$tDisplay_next, $tDisplay_next_show
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1134 a1433add-5e2c-0410-b055-b7f2511e0802
- removed always empty variable $pCreate_mailbox_username_text
- replaced "static" variables $pCreate_mailbox_password_text and
$pCreate_mailbox_quota_text with their PALANG content in the template
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1132 a1433add-5e2c-0410-b055-b7f2511e0802
- use smtp_get_admin_email() to get the sender for the welcome mail
- add a check for empty (shouldn't happen in theory) or 'CLI' username
and use the mailbox address as fallback
This is based on Dale's patch, but completely rewritten (what a big word
for two lines of code ;-) Dale had only added the line
if(empty($fFrom)) $fFrom = $this->username;
My version is tested with CLI with both $CONF[admin_email] set and empty.
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1127 a1433add-5e2c-0410-b055-b7f2511e0802
- redesign login form - now has an image on the right
- change width from 730px to 990px
- change menu :hover background color from green to dark grey
- change button :hover background color from green to light grey
- change table row :hover color in list mode from green to light grey
- add padding to input fields
- remove background color and border in edit form header
- remove border-left from list-virtual submenu (show all / mailboxes / ...)
- change main.php :hover from green left + bottom border to dark grey and
only left border
- removed green background in overview row (the line containing the search box)
- removed table borders (list and edit mode)
- add text-align:right for edit form labels
- some whitespace fixes
images/mail_bg.gif:
- [new file] the image in the login form
This commit is based on Dale's patch, but some styles were moved around
in the CSS file (to keep the diff of this commit somehow readable).
Some of Dale's changes are not yet included in this commit.
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1122 a1433add-5e2c-0410-b055-b7f2511e0802
- removed remaining <br /> in
- $PALANG['pPassword_password_text_error']
- $PALANG['pAdminCreate_admin_password_text_error']
- $PALANG['pAdminEdit_admin_password_text_error']
- $PALANG['pCreate_alias_catchall_text']
- $PALANG['pCreate_mailbox_password_text_error']
- (and some other texts not listed here, but only in one or two languages)
- differences to Dale's patch:
- use a space as replacement for <br /> (instead of nothing)
- added a note that the translation needs to be be beautified to most languages
(except en and de, which are already ok)
- do not change "MB" -> "in MB" in $PALANG['pAdminCreate_domain_maxquota_text']
and PALANG['pAdminEdit_domain_maxquota_text']
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1119 a1433add-5e2c-0410-b055-b7f2511e0802
- some $PALANG texts contained field description and error message in
one $PALANG text. Removed the field descriptions so that the text only
contains the error message.
- affected texts:
- $PALANG['pCreate_alias_goto_text_error']
- $PALANG['pCreate_mailbox_password_text_error']
- $PALANG['pAdminCreate_admin_username_text_error1']
- $PALANG['pAdminCreate_admin_username_text_error2']
- difference to Dale's patch:
- removed the field description in all *.lang files instead of only
removing the <br />. I just did this manually.
(changes in en.lang were part of Dale's patch)
- added a "# check" in some languages where I'm not sure if I removed
the correct part (if the first half of the text differed from the
field description in another $PALANG text)
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1118 a1433add-5e2c-0410-b055-b7f2511e0802
- added $PALANG['pUsersLogin_language']
- difference to Dale's patch:
- NOT added $PALANG['pCreate_alias_help'] to avoid text duplication.
We can use the existing $PALANG['pEdit_alias_help'] instead.
en.lang:
- fixed typo in $PALANG['pCreate_mailbox_quota_text_error']
- fixed typo in $PALANG['pBroadcast_error_empty'] - this also affects
not yet translated texts in some *.lang
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1117 a1433add-5e2c-0410-b055-b7f2511e0802
- removed all <span> tags
- removed several <br> tags
- marked the following stings as obsolete:
- pDelete_postdelete_error
- pDelete_domain_alias_error
- pEdit_alias_address_error
- pEdit_alias_domain_error
- pEdit_mailbox_username_error
- pPassword_admin_text_error
Note: This commit does not contain all *.lang changes from Dale's patch.
There are some interesting[tm] changes left to check/fix.
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1116 a1433add-5e2c-0410-b055-b7f2511e0802
- change <h3> to <th>
list-virtual_alias_domain.tpl
- style "create new" link as button
These changes were forgotten by Dale :-P
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1115 a1433add-5e2c-0410-b055-b7f2511e0802
- renamed $pCreate_mailbox_*_text to $pCreate_mailbox_*_text_error
- replaced $tMessage with flash_error() / flash_info()
templates/create-mailbox.tpl:
- added 4th column for error messaegs
- replaced <h3> with <th>
- marked lables with <label>
- aligned button with input fields
- removed tMessage
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1107 a1433add-5e2c-0410-b055-b7f2511e0802
- fixed syntax error introduced in the last revision
- removed $pCreate_alias_goto_text and $pCreate_alias_address_text
(replaced by PALANG texts in the template)
templates/create-alias.tpl:
- removed colspan to allow helptext in "alias" row
- moved PALANG.pCreate_alias_catchall_text to alias row
- removed pCreate_alias_address_text (always empty)
- replaced PALANG.pCreate_alias_help (empty) with PALANG.pCreate_alias_goto_text
- some whitespace fixes
variables.inc.php
- removed now unused $pCreate_alias_address_text and $pCreate_alias_goto_text
(These changes are _not_ part of Dale's patch ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1105 a1433add-5e2c-0410-b055-b7f2511e0802
- renamed $pCreate_alias_address_text to $pCreate_alias_address_text_error
- replaced $tMessage with flash_error() / flash_info()
- changes compared to Dale's patch:
- do not add $fAddress and $fGoto to $PALANG['pCreate_alias_goto_text_error']
error message
templates/create-alias.tpl:
- added 4th column for error messages
- replace <h3> with <th>
- mark labels with <label>
- aligned button with input fields
- added $PALANG[pCreate_alias_help]
- removed tMessage
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1104 a1433add-5e2c-0410-b055-b7f2511e0802
- renamed $pAdminCreate_domain_domain_text to $pAdminCreate_domain_domain_text_error
- replaced $tMessage with flash_error(), flash_info() and
$pAdminCreate_domain_domain_text_error
- differences to Dale's patch:
- removed now always empty smarty->assign for $pAdminCreate_domain_domain_text
templates/admin_create-domain.tpl:
- added 4th column for error messages
- marked labels as <label>
- aligned button to input fields
- removed tMessage
- differences to Dale's patch:
- removed now unused $pAdminCreate_domain_domain_text
variables.inc.php:
- removed now unused $pAdminCreate_domain_domain_text
(this was not part of Dale's patch)
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1102 a1433add-5e2c-0410-b055-b7f2511e0802
- replace $tMessaeg with flash_error()
- use pEdit_mailbox_quota_text_error instead of pEdit_mailbox_quota_text
for error message
templates/edit-mailbox.tpl:
- added 4th column for error messages
- replaced <h3> with <th>
- marked labels with <label>
- marked non-editable fields with <em>
- aligned buttons with input fields
- removed tMessage
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1101 a1433add-5e2c-0410-b055-b7f2511e0802
- renamed $pAdminCreate_admin_username_text to $pAdminCreate_admin_username_text_error
- renamed $pAdminCreate_admin_password_text to $pAdminCreate_admin_password_text_error
- replaced $tMessage with $infoMessage (displayed via flash_info)
- additional change compared to Dale's patch: removed unused variable
$pAdminCreate_admin_username_text
variables.inc.php:
- removed now unused variables $pAdminCreate_admin_password_text and
$pAdminCreate_admin_username_text
templates/admin_create-admin.tpl:
- added 4th column for error messages
- replaced <h3> with <th>
- marked labels with <label>
- align button with input fields
- remove tMessage
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1099 a1433add-5e2c-0410-b055-b7f2511e0802
- use additional column for error messages
- renamed $pAdminEdit_admin_password_text to $pAdminEdit_admin_password_text_error
- removed $tMessage
variables.inc.php:
- remove now unused $pAdminEdit_admin_password_text
(this change was not contained in Dale's patch)
templates/admin_edit-admin.tpl
- added a 4th column for error messages
- HTML cleanup
- changed <h3> to <th>
- marked labels as <label>
- removed tMessage
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1098 a1433add-5e2c-0410-b055-b7f2511e0802
list-virtual_alias_domain.tpl, password.tpl:
- replaced <h3> with <th>
- marked labels with <label>
- marked non-editable fields with <em>
- align buttons with input fields
- note: removal of tMessage intentionally postponed
password.tpl:
- move error message formatting to template (language changes will follow
in a later commit)
- difference to Dale's patch: use <td class="error_msg"> instead of
<td><span class="error_msg">
edit-vacation.tpl:
- added language="JavaScript to <script> tags
- removed reference to calendar.css (now @import'ed in default.css)
- added class="flat" to activefrom and activeuntil input fields
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1095 a1433add-5e2c-0410-b055-b7f2511e0802
- use smtp_get_admin_email() to determinate the mail sender
- rename $SESSID_USERNAME to $smtp_from_email
- replaced tMessage with flash_error() / flash_info()
sendmail.php:
- changes compared to Dale's patch:
- use flash_info() for $PALANG['pSendmail_result_success']
broadcast-message.php:
- use flash_error() for $PALANG['pBroadcast_error_empty'] instead of
hardcoding it in the template
sendmail.tpl,templates/broadcast-message.tpl:
- replace <h3> with <th>
- replaced $SESSID_USERNAME / $CONF[admin_email] with $smtp_from_email
- mark labels with <label>
- mark non-editable fields with <em>
- align buttons with input fields
- remove tMessage
sendmail.tpl:
- changes compared to Dale's patch:
- fixed colspan for buttons cell
templates/broadcast-message.tpl:
- remove hardcoded error message (see broadcast-message.php change above)
- changes compared to Dale's patch:
- fixed colspan for <th>
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1094 a1433add-5e2c-0410-b055-b7f2511e0802
- change default of $CONF['admin_email'] to '' and updated the comment.
IMPORTANT: If set, this will be used as mail sender for all mails
(2.3.x used the currently logged admin's username in most cases).
$CONF['admin_email'] = '' will match the 2.3.x behaviour.
functions.inc.php:
- new function smtp_get_admin_email() to get mail sender address
($CONF[admin_email] or currently logged in admin if not set)
- changes compared to Dale's patch:
- added @return in comment
- switched to /** comment style
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1093 a1433add-5e2c-0410-b055-b7f2511e0802
- new config option $CONF['theme_custom_css']. This allows to add another
CSS file that is loaded after $CONF['theme_css']. Useful if someone wants to
do some small changes, but doesn't want to edit default.css
templates/header.tpl:
- include $CONF[theme_custom_css] if set
Changes compared to Dale's patch:
- $CONF['theme_custom_css'] is empty by default
- only include $CONF[theme_custom_css] if not empty
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1092 a1433add-5e2c-0410-b055-b7f2511e0802
- replaced <h3> with <th>
- marked labels as <label>
- mark non-editable fields with <em>
- removed tMessage
- aligned buttons with input fields
users_password.tpl:
- put class=error_msg in template (will be removed from $PALANG strings)
- change compared to Dale's patch: use <td class="error_msg"> instead of
<td><span class="error_msg">
users_vacation.tpl:
- added class="flat" to fActiveFrom and fActiveUntil
- added language="JavaScript" to <script>
- removed reference to calendar.css (now included via default.css)
default.css
- added @import calendar.css
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1090 a1433add-5e2c-0410-b055-b7f2511e0802
- changed <h4> to <th>
- mark labels with <label>
- added a label to the language selector
- removed tMessage
languages/*:
- added PALANG[pLogin_language]
changes compared to Dale's patch:
- users_login.tpl:
- do not add the <div class="field_container"> ... </div> wraps
- use PALANG[pLogin_language] instead of PALANG[pUsersLogin_language]
to avoid a superfluous string/translation
- login.tpl:
- removed wrong colspan for language selector and login button
- de.lang: added german translation for PALANG[pLogin_language]
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1089 a1433add-5e2c-0410-b055-b7f2511e0802
- replaced tMessage with flash_error() / flash_info()
users/vacation.php:
- set today as default date if vacation start/end date are empty
users/edit-alias.php:
- removed now superfluous code to join multiple tMessage texts with <br>
- removed a </font> that was appended to $PALANG['pEdit_alias_goto_text_error2']
This commit is part of the huge cleanup patch by Dale Blount (lnxus@SF),
https://sourceforge.net/tracker/?func=detail&atid=937966&aid=3370510&group_id=191583
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1085 a1433add-5e2c-0410-b055-b7f2511e0802
- supress warnings about PHP's date.timezone not set.
The risk of doing this is low IMHO - the worst thing that can happen
is a wrong default date for vacation or a "wrong" tempfile name for
backup.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1076 a1433add-5e2c-0410-b055-b7f2511e0802
- check_vacation() used outdated syntax $ah->get() which nowadays only
returns true/false. Fixed to fetch $ah->result() and added at least
basic error handling.
Indirectly ;-) reported by supa_user on IRC
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1075 a1433add-5e2c-0410-b055-b7f2511e0802
This is a quick&dirty script to remove HTML from the language files.
It will be deleted from SVN again once this job is done.
grep '<' en.lang
will print a TODO list ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1072 a1433add-5e2c-0410-b055-b7f2511e0802
- if dovecotpw does not give the expected output, read stderr and write
it to error_log()
This would have made the debugging session I just had with makomi on IRC
about an hour shorter ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1071 a1433add-5e2c-0410-b055-b7f2511e0802
- replaced last usage of $CONF['postfix_admin_path'] with $incpath
config.inc.php:
- drop (now unused) $CONF['postfix_admin_path'] config variable
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1070 a1433add-5e2c-0410-b055-b7f2511e0802
- do not leave the while loop with break - this could hide some
undeliverable alias targets from being flagged if another alias
target points to a domain in $CONF[show_undeliverable_exceptions]
- do not add a blank $CONF[show_status_text] if
$CONF[show_undeliverable] is disabled - it only wastes space ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1069 a1433add-5e2c-0410-b055-b7f2511e0802
don't show vacation_domain as undeliverable + various code cleanup
- don't show the vacation domain as undeliverable
In theory this should already have worked already, but $stat_vacdomain
missed the first letter of the domain ("xample.com" instead of
"example.com") which broke it.
Fixed by using $stat_domain, which has the same content anyway.
This fixes part (2) of
https://sourceforge.net/tracker/?func=detail&aid=1951926&group_id=191583&atid=937967
- generate the regex for $CONF[recipient_delimiter] at the start of the
function. Besides saving some CPU cycles, this makes the code more
readable.
- generate $stat_domain earlier and in a regex-free way
- drop $stat_catchall - it's nothing else than @ + $stat_domain
- use in_array() to check $CONF[show_undeliverable_exceptions] instead
of a while loop
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1068 a1433add-5e2c-0410-b055-b7f2511e0802
- explicitely check for unlimited maxquota when checking if
$quota > $limit[maxquota]. Without this, $quota was always
considered as being too big (not surprising, everything is >0 ;-)
This fixes https://sourceforge.net/tracker/?func=detail&aid=3306926&group_id=191583&atid=937964
(caused by domain quota patch, therefore not affecting 2.3.x)
- replaced setting $rval with return in some cases if the decision is
final without needing to check domain quota
- added lots of comments to make understanding the function easier
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1065 a1433add-5e2c-0410-b055-b7f2511e0802
$CONF['user_footer_link']. This doesn't really make sense - it should
always be a link to users/main.php.
configs/menu.conf:
- added url_user_main = main.php
templates/users_menu.tpl:
- replaced $CONF.user_footer_link with #url_user_main#
config.inc.php:
- removed (now unused) $CONF['user_footer_link']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1059 a1433add-5e2c-0410-b055-b7f2511e0802
- new texts 'show' and 'all' for list-virtual (see r1054)
- marked 'pOverview_alias_domain_target' as obsolete (no longer needed since r1052)
de.lang:
- added some translations
language-update.sh:
- made --obsolete working
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1055 a1433add-5e2c-0410-b055-b7f2511e0802
new option 'all' to display domain aliases, mailboxes and aliases on
one page (like in 2.3.x)
The question is: what do we want as default?
-> feedback please!
(personally, I'd prefer "all")
templates/list-virtual.tpl:
- new submenu option "all"
- changed subnav to a more lightweight design
css/default.css:
- new style ".subnav p" for submenu
- new style "span.active"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1054 a1433add-5e2c-0410-b055-b7f2511e0802
- lots of whitespace fixes to use 4 spaces everywhere
(which list-virtual.php has in its vim: comment since a long time)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1053 a1433add-5e2c-0410-b055-b7f2511e0802
This fixes
https://sourceforge.net/tracker/?func=detail&aid=2890375&group_id=191583&atid=937967
list-virtual.php:
- merge queries for from and to side of alias domains
- use a mostly common query for MySQL and PgSQL
- move "can create alias domain" logic to PHP
list-virtual_alias_domain.tpl:
- merge "from" and "to" view to one table
- add "To" column to the merged table
- do not link to $fDomain (which would lead to the currently displayed page)
- drop the second table / "is an alias domain for ..."
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1052 a1433add-5e2c-0410-b055-b7f2511e0802
- add index on (domain,timestamp) in log table to make viewlog faster
_add_index():
- fix handling of multi-column aliases in MySQL
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1050 a1433add-5e2c-0410-b055-b7f2511e0802
- add a warning that backup.php is poorly maintained and might contain bugs
- disable HTML escaping for the message - we feed it with HTML tags...
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1049 a1433add-5e2c-0410-b055-b7f2511e0802
Based on a patch from W. Rossmann (W. Rossmann@SF),
https://sourceforge.net/tracker/index.php?func=detail&aid=2974928&group_id=191583&atid=937966
with some modifications, cleanup and adoptions to trunk (especially templates)
config.inc.php:
- new config option $CONF['domain_quota'] to enable/disable domain-level
quota (default: enabled)
- new config option $CONF['domain_quota_default'] (default: 2 GB)
functions.inc.php - check_quota():
- add code to check the quota sum on a domain
- add optional parameter $username (to exclude that username from quota
calculation, used by edit-mailbox)
edit-domain.php, create-domain.php,
admin_edit-domain.tpl, admin_create-domain.tpl:
- add input field and handling for domain-level quota
list-domain.php, overview-get.tpl, adminlistdomain.tpl:
- display allocated and allowed domain quota
- beautify quota and max_quota fields - display "unlimited" instead of "-1"
edit-mailbox.php:
- hand over username to check_quota()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1042 a1433add-5e2c-0410-b055-b7f2511e0802
delete.php:
- replace various $tMessage=... with flash_error()
- always redirect to the relevant page, even if an error happened
- fix error check in delete admin
- removed HTML formatting (<b>, <span>) from some error messages
- replaced check for pgsql + BEGIN/COMMIT/ROLLBACK with db_begin(),
db_commit() and db_rollback()
- the smarty message.tpl is most probably superfluous
languages/*.lang:
- removed HTML (<span>) from messages used by delete.php
fetchmail.php, scripts/snippets/baseclass.php
- remove superfluous </span>
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1036 a1433add-5e2c-0410-b055-b7f2511e0802
- db_delete(): if no row was deleted, return 0 (not true)
This should not affect any existing code, but makes more sense
for future usage.
- whitespace changes in db_delete()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1035 a1433add-5e2c-0410-b055-b7f2511e0802
several text changes to be more clear (see the en.lang diff for details)
This commit implements most changes from Chris H. (dharmachris@SF) posted at
https://sourceforge.net/tracker/?func=detail&aid=3186094&group_id=191583&atid=937964
Related template changes:
templates/admin_edit-admin.tpl:
- use PALANG.save instead of PALANG.pAdminEdit_admin_button
templates/users_edit-alias.tpl, templates/edit-alias.tpl:
- split PALANG.pEdit_alias_welcome - second half is now PALANG.pEdit_alias_help
(this avoids the <br /> in the text)
- use PALANG.save instead of PALANG.pEdit_alias_button
templates/edit-mailbox.tpl:
- use PALANG.save instead of $PALANG.pEdit_mailbox_button
templates/admin_edit-domain.tpl:
- use PALANG.save instead of $PALANG.pAdminEdit_domain_button
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1031 a1433add-5e2c-0410-b055-b7f2511e0802
fully working MySQL version of create_page_browser()
- force $page_size to int and die() if it is < 2
- dropped $item_count parameter - the function now counts itsself
- include last row in the query
- return empty array (= no pagebrowser) if all rows fit in one page
- PgSQL queries are still on my TODO list
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1030 a1433add-5e2c-0410-b055-b7f2511e0802
- new function create_page_browser()
Function to create the page browser index ("a-c, d-h, ...") with light
speed (at least when compared with the current code that can take several
minutes(!) for people with lots of mailboxes or aliases).
At the moment, it only works with MySQL, has several big TODO notes
(including notices how to implement the PostgreSQL query) and is not
yet actively used.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1022 a1433add-5e2c-0410-b055-b7f2511e0802
(as discussed with GingerDog on IRC yesterday).
Also renamed user to mailbox in the CLI.
- renamed model/UserHandler.php to MailboxHandler.php
- renamed scripts/shells/user.php to mailbox.php
- replaced UserHandler / user with MailboxHandler / mailbox in various files
- unrelated cleanup: deleted obsolete scripts/models-ext directory
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1019 a1433add-5e2c-0410-b055-b7f2511e0802
- cleanup: move some vars to password.php and users/password.php
- drop $pPassword_admin_text - was always empty
password.php, users/password.php:
- init $pPassword_password_text and $pPassword_password_current_text
(previously in variables.inc.php)
templates/password.tpl, templates/users_password.tpl:
- drop $pPassword_admin_text - was always empty
These changes should also fix some undefined variable warnings reported
by makomi on IRC.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1004 a1433add-5e2c-0410-b055-b7f2511e0802
- set_away() killed the existing aliases and replaced them with the vacation
alias instead of adding it. Fixed.
- remove array() from db_update calls for vacation table (introduced by valkum
in r981) - the vacation table has created/modified columns since r945
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@988 a1433add-5e2c-0410-b055-b7f2511e0802
*fixed VacationHandler.php
*changed edit-vacation to us VacationHandler
*added todopoint to upgrade.php
*fixed problem in AliasHandler
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@981 a1433add-5e2c-0410-b055-b7f2511e0802
+ implementation of fetchmail with this class.
Note that those files were last edited on Aug 14 2008, so they probably
contain some outdated stuff ;-) Nevertheless the baseclass implementation
and the comments it contains are still useful IMHO.
Feedback welcome ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@979 a1433add-5e2c-0410-b055-b7f2511e0802
easy-to-edit field lists. With lots of inspiration from fetchmail.php
and a base class I started 2.5 years ago.
model/DomainHandler.php
- base on PFAHandler (see below)
- new protected variables
- $id_field (column that contains $username)
- $struct (field list)
- $defaults (default values, option lists)
- $new (switch between new and edit mode)
- change $username to protected (preparation for move to PFAHandler)
- add optional $new parameter to __construct. Targets (not yet implemented):
- early validation of $username (domain name in this case)
- if $new == 1, check that item does NOT exist and is a valid domain
- else: check if item exists. error out if not.
- new function initStruct to fill $id_field, $struct, $defaults
- add():
- use an array as parameter instead of single parameters
Advantage: this makes it easy to add another field
- use _inp_* base validation
- create default aliases only in create mode, not in edit mode
- view(): fix error message
- added various TODO notes. Some affect design questions - feedback welcome ;-)
scripts/shells/domain.php:
- change $handler->add call to array usage
- add some TODO notes
- some whitespace fixes in execute()
model/PFAHandler.php:
- new base class for *Handler classes
- contains only some generic input validation for now
- more code will be moved from DomainHandler to PFAHandler later
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@978 a1433add-5e2c-0410-b055-b7f2511e0802
- set $this->template->allow_php_tag = true instead of editing
smarty/libs/Smarty.class.php after every smarty upgrade
added smarty/smarty_version with:
- a note about the current smarty version
- a note about additional files not part of the smarty package
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@973 a1433add-5e2c-0410-b055-b7f2511e0802
(will be detected by authentication_get_username() instead)
scripts/postfixadmin-cli.php:
- define ("POSTFIXADMIN_CLI", 1) (we have no session running and need a
way to tell authentication_get_username() that this is a CLI access)
functions.inc.php:
- authentication_get_username(): check for POSTFIXADMIN_CLI constant,
return 'CLI' if set
(hmmm, do we need a similar thing for XMLRPC?)
- db_log(): override $username parameter with authentication_get_username()
(removing it from function parameters will be my next big commit)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@965 a1433add-5e2c-0410-b055-b7f2511e0802
- use correct variable name instead of $smarty in __construct()
- everything else in this commit: whitespace changes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@964 a1433add-5e2c-0410-b055-b7f2511e0802
- fix undefined variables (by using $PALANG.* instead)
footer.tpl:
- remove undefined variable because the correct one is already included
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@963 a1433add-5e2c-0410-b055-b7f2511e0802
- implement delete()
Note that this is a dummy function at the moment. It doesn't work,
it just errors out with "not implemented yet" ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@961 a1433add-5e2c-0410-b055-b7f2511e0802
- use $this->username for the domain name (I know the variable name is
confusing, but I'd like to be consistent with the other classes)
- remove $domain parameter in add() and view(), use $this->username instead
- escape domain in view() for select query
- removed unused "global $config" in view()
- remove superfluous created/modified arrays in db_insert calls
- added some TODO notes
- changed db_log to 'CONSOLE' instead of $this-username for consistency
with other classes. Long-term fix is to remove the first parameter of
db_log and let it detect the username automatically.
- various whitespace fixes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@958 a1433add-5e2c-0410-b055-b7f2511e0802
- move initialisation of $smarty->template_dir, compile_dir and
config_dir into __construct() of PFASmarty class
- remove usage of /tmp/postfixadmin_templates_c/ to avoid security
risks (symlink attacks etc.)
- remove __set, __get and __call from PFASmarty class to ensure we
have a clearly documented interface to the template layer
- whitespace changes (mostly in select_options())
- added vim: line
See also the discussion about the r949 commit in postfixadmin-devel
for details.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@957 a1433add-5e2c-0410-b055-b7f2511e0802
- MySQL only allows one column with DEFAULT CURRENT_TIMESTAMP per table
-> introduce {DATE} with DEFAULT 2000-01-01 as workaround
-> GingerDog, please check if the PostgreSQL variant of {DATE} is valid
- disable upgrade_727_mysql because
- function number is too small for upgrades from 2.3.x
- MySQL only
- it creates some tables PostfixAdmin doesn't use
- new function upgrade_946 to add activefrom/activeuntil fields to the
vacation table (previously done in upgrade_727_mysql)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@946 a1433add-5e2c-0410-b055-b7f2511e0802
- fix _pgsql_field_exists and _mysql_field_exists to work with
non-default table names
- new function _db_field_exists as database-independent wrapper for
_*_field_exists
- new function _db_add_field to add a field to a table
- new function printdebug for debug output (grey text)
- define {DATECURRENT} for timestamp fields (avoids lots of duplication)
-> @GingerDog: please check if the PostgreSQL statement is correct!
- upgrade_945: add a 'modified' column to the vacation table
- various small changes (whitespace, comments, TODO notes etc.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@945 a1433add-5e2c-0410-b055-b7f2511e0802
- added several TODO notes
- use db_insert/db_update/db_delete instead of raw queries
- get_details(): error check first (for better readable code),
whitespace fix
- getVacationAlias: str_replace is enough
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@938 a1433add-5e2c-0410-b055-b7f2511e0802
INSTALL.TXT:
- added a note to read the official PostfixAdmin documentation first,
and that "external" HOWTOs on the web are often outdated or incomplete.
That might sound selfish, but would already have saved several users
some time.
- updated some links
- added link to the wiki
- added hint about config.local.php
- added note about write access for templates_c directory for www-data
UPGRADE.txt
- added note about setup.php?debug=1
- added note about postfix config update (alias domains)
- added note about templates_c permissions
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@937 a1433add-5e2c-0410-b055-b7f2511e0802
- with special_alias_control = NO, no alias was editable.
Fixed - only default_aliases should be locked (looks like == instead
of === needs to be used in smarty for bool comparison)
- merged conditions, simplified code
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@936 a1433add-5e2c-0410-b055-b7f2511e0802
- better documentation for $CONF[alias_control], $CONF[alias_control_admin]
and $CONF[special_alias_control] because the existing comments were
confusing (as pointed out by libertytrek in #postfixadmin)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@934 a1433add-5e2c-0410-b055-b7f2511e0802
added user_model.php for user handling
added user_controller.php for controlling user missgin view for output.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@933 a1433add-5e2c-0410-b055-b7f2511e0802
column and value are separate parameters now
functions.inc.php:
- changed function db_update() parameters - column name and value for the WHERE
condition are now two separate parameters. This means we don't need to
escape_string(), add quotes etc. for most UPDATE queries.
Example call: db_update('alias', 'address', $this->username, $values_array)
- the previous db_update() is now called db_update_q()
model/UserHandler.php:
- changed db_update call to the new parameters
- removed now unused variables
- renamed $username to $E_username
- call pacrypt directly when setting the $set array, no need for $new_db_password
model/AliasHandler.php
- changed db_update call to the new parameters
edit-mailbox.php
- switched to db_update_q()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@931 a1433add-5e2c-0410-b055-b7f2511e0802
shells/alias.php:
- execute still called help() instead of __handle()
model/AliasHandler.php - delete():
- remove useless $address parameter from delete() (we have $this->username)
- added error messages
- fixed variable names for db_log
Reason for the "mostly":
The $this->is_mailbox_alias() in delete() always returns true and therefore
forbids deletion.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@930 a1433add-5e2c-0410-b055-b7f2511e0802
- moved scripts/models-ext/DomainHandler.php to model/
- deleted redirect scripts in scripts/models-ext/ (UserHandler.php,
AliasHandler.php)
- changed scripts/common.php to include the files from ../model/
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@925 a1433add-5e2c-0410-b055-b7f2511e0802
- fix example /etc/passwd line (had too many fields)
- moved no_address_mappings to the smtpd on port 25
- removed no_unknown_recipient_checks on port 10025
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@923 a1433add-5e2c-0410-b055-b7f2511e0802
-added alias delete function
-remove silly password function in domain and alias
-changed some $this->err to $this->error
-error ends with stop(1) which returns 1 in *unix shells
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@920 a1433add-5e2c-0410-b055-b7f2511e0802
- if you want to verify the old password, you should compare it against
the OLD and not the NEW password ;-)
- fix database calls
In other words: changing the password in users/password.php works again ;-)
users/password.php:
- switch from obsolete change_pass() to change_pw()
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@916 a1433add-5e2c-0410-b055-b7f2511e0802
- pass $username through strtolower()
- get(): error check first for better readability (avoids long if block)
- get(): fixed a forgotten return behaviour change
- get(): renamed $new_list to $filtered_list (self-explaining code)
- update(): migrated to new return behaviour of get()
- update(): use db_update etc.
- some minor changes
- added various TODO notes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@915 a1433add-5e2c-0410-b055-b7f2511e0802
- changed AliasHandler->get call - it does not need the address as parameter
- adopted to true/false return values
- some minor changes and TODO notes
models-ext/AliasHandler.php
- deleted, replaced with a redirect to ../model/AliasHandler.php
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@913 a1433add-5e2c-0410-b055-b7f2511e0802
changed behaviour of get()
- get() now returns only true (success) / false (failure) instead of
the alias list
(result of partly merging in scripts/models-ext/AliasHandler.php)
- new method result() to get the real result (alias targets)
- added TODO on if(sizeof($addresses) == 0) - this should never happen
model/VacationHandler.php:
- updated for new AliasHandler bevaviour
xmlrpc.php:
- updated for new AliasHandler bevaviour
- switched from obsolete change_pass to change_pw method
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@912 a1433add-5e2c-0410-b055-b7f2511e0802
- prepared for updated AliasHandler from scripts/
- user could cause an empty alias with a trick (or form manipulation).
Checking forward_and_store for != YES instead of == NO fixes this.
- don't replace spaces in the middle of an (BTW: invalid) alias target
- preserve user input on validation error
- allowed displaying of multiple error messages
- removed unused $_POST[fVacation] variable
- some whitespace fixes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@911 a1433add-5e2c-0410-b055-b7f2511e0802
- adopted return value checks to true/false instead of shell-like 0/1
- fixed some messages in interactive mode
- various minor fixes
- added some TODO notes, but didn't do a full proofreading
scripts/models-ext/UserHandler.php:
- deleted, replaced with a redirect to /model/UserHandler.php
scripts/common.php, scripts/shells/shell.php:
- replaced obsolete "... =& new ..." with "... = new ..."
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@909 a1433add-5e2c-0410-b055-b7f2511e0802
- change_pass() now returns the return value of change_pw()
- made most variables un-escaped (as expected by db_insert/db_update/
db_delete). This means they HAVE TO BE ESCAPED when using them in a
hand-written query. (Error messages also need escaping - the
backslashes from escape_string wouldn't help there anyways.)
- escaped variables renamed to $E_whatever
- changed all return values to true (success) and false (failure)
instead of shell-like 0 (success) and 1 (failure)
- removed unused global $config at various places
- removed timestamp columns from db_insert and db_update call where they
match the default
- added db_log() for some (but not all) failures
- honor $CONF[maildir_name_hook] when creating a mailbox
- splitting a mail address is now done with list(...) = explode(...)
- switched to db_begin(), db_commit(), db_rollback()
- let smtp_mail create the mail header
- added missing db_commit in delete()
- various minor fixes, code cleanup, comments and TODO notes
To sum it up: all code in UserHandler.php that does not have a TODO
attached should be fine :-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@908 a1433add-5e2c-0410-b055-b7f2511e0802
- smtp_mail(): added another (currently optional) parameter.
It can now be called with subject and body, no need to build the mail
header in every script that needs to send a mail.
- db_delete() did not use table_by_key. Fixed, backport queued for
2.3 branch
- db_insert() now has array(created,modified) as default for timestamp
columns so that most calls can be done without that parameter
- db_update() now has array(modified) as default for timestamp column
so that most calls can be done without that parameter
- new functions db_begin / db_commit / db_rollback - BEGIN / COMMIT /
ROLLBACK wrapped in a check for $CONF['database_type'] == "pgsql".
One more step to get rid of database-specific code in all files.
- db_log():
- migrated to db_insert. This should also fix some missing quoting.
- sorted $action_list to make it more readable
- backport queued for 2.3 branch for both changes
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@907 a1433add-5e2c-0410-b055-b7f2511e0802
- check_domain(): don't trim() the domain - whitespace is an error.
This catches "foo@ domain.com" that wasn't catched before.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@902 a1433add-5e2c-0410-b055-b7f2511e0802
some small fixes that came up while integrating the multiple alias
target patch from anexius (r898 [2.3]/r900 [trunk]):
- replace spaces only at the start and end of a line, not in the
middle of an (BTW: invalid) mail address
- prevent input data loss on validation errors
- allow multiple error messages (separated by <br />)
- removed some obsolete comments
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@901 a1433add-5e2c-0410-b055-b7f2511e0802
- merged in all new functions and changes (by valkum + some bugfixes
and notes from me) - for details see r831, r888 and r891 of
scripts/models-ext/UserHandler.php
- re-added change_pass() function (was removed/renamed by valkum) for
backward compatibility.
IMPORTANT: change_pass will only exist temporarily and is deprecated.
Besides that, the new implementation has different return values etc.
so existing code might break already.
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@896 a1433add-5e2c-0410-b055-b7f2511e0802
- db_insert and db_delete need the default table name as parameter
('alias', not $table_alias aka table_by_key('alias') )
DomainHandler.php
- removed now unused $table_domain and $table_alias
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@891 a1433add-5e2c-0410-b055-b7f2511e0802
some changes after using perlcritic.org - in detail:
- removed unused variable $spam
- use ':encoding(UTF-8)' instead of ':utf8' to validate input against
invalid utf8 sequences
- foreach creates its own instance of $item - marking it with "my $item"
- replaced lots of "..." with '...'
BTW: Thanks to the nice guy who recommended perlcritic.org at the
openSUSE conference!
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@881 a1433add-5e2c-0410-b055-b7f2511e0802
- fix displaying of 'modified' column for aliases when using postgres
(bugreport mailed by Dominic, neocoretech @SF)
- drop MySQL variant of the alias query, the fixed postgres variant works for
both
- fixed wrong position of $sql_where (search string) - must be outside
the sub-query
- escape search string in page browser - even if it is unlikely that enough
mail adresses contain funny chars to let the pagebrowser appear ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@874 a1433add-5e2c-0410-b055-b7f2511e0802
- store language in session variable
(BTW: storing it only at login instead of calling check_language() on
every page would save some processor cycles ;-)
templates/header.tpl:
- add class="lang-XY" (where XY is the language to the body tag.
This allows language-specific CSS code: .lang-XY table {...}
This commit implements the feature request from J.Kruis (jan-kruis)
https://sourceforge.net/tracker/?func=detail&aid=2903088&group_id=191583&atid=937967
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@872 a1433add-5e2c-0410-b055-b7f2511e0802
- change edit form to XHTML
(and BTW: the whole form is produced by fetchmail_edit_row() and
handed over to smarty in a single variable. Should be converted to
a generic "edit form" smarty template...)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@871 a1433add-5e2c-0410-b055-b7f2511e0802
list-virtual.php. We now have two file less to maintain without loosing
functionality :-)
Only remaining bug: in search mode, no page browser is displayed.
This means that you'll only see the first $CONF['page_size'] search results
*without* the possibility to see the next page of results.
(BTW: search.php simply ignored $CONF['page_size'] ;-)
search.php, templates/search.tpl:
- deleted, RIP ;-)
configs/menu.conf:
- change search form to use list-virtual.php instead of search.php
list-virtual.php:
- added TODO note about the "no page browser in search mode" bug
templates/list-virtual.tpl:
- hand over $search to all tabs
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@869 a1433add-5e2c-0410-b055-b7f2511e0802
- hand over $search to smarty templates
templates/list-virtual_alias.tpl, templates/list-virtual_alias_domain.tpl:
- add search result highlighting
templates/list-virtual_mailbox.tpl:
- add search result highlighting
- move output of "Mailbox" / "Forward only" outside the foreach loop
(was displayed once per mailbox alias target)
css/default.css:
- add style for ".searchresult"
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@868 a1433add-5e2c-0410-b055-b7f2511e0802
- function upgrade_1_mysql(): change default charset of vacation table to
latin1. Otherwise table creation breaks with MySQL 6.
Fields that need to be utf-8 are changed to utf-8 later anyways.
(Found by mechno on #postfixadmin)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@790 a1433add-5e2c-0410-b055-b7f2511e0802
- fix delete link for alias domains (when on target domain - delete link
must contain the "from" domain)
Reported by roe_ on #postfixadmin, also affects 2.3
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@789 a1433add-5e2c-0410-b055-b7f2511e0802
- add in_array check to avoid that superadmins can enter invalid domains
- the check_owner check is probably obsolete after this change. I left it
in (with a clear message) until I'm 100% sure that it's really unneeded.
- move sticky domain code below error checking - the session should only
include valid domains ;-)
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@779 a1433add-5e2c-0410-b055-b7f2511e0802
functions.inc.php:
- added error message if the check_owner query returns more than one result.
This can happen with old databases (pre-2.3) where the domain_admins table
contains "ALL" _and_ a domain for a superadmin - which results in the
superadmin not able to edit mailboxes etc. for this domain.
(Error message not translatable - this is a corner case.)
list-virtual.php:
- add "invalid parameter" error message before redirecting to list-domain
if the user doesn't have permissions for a domain
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@778 a1433add-5e2c-0410-b055-b7f2511e0802
list-virtual.php:
- merge search functionality into list-virtual.php (even more performant
for domain admins now - search.php checked domain ownership after
querying all domains...)
(Use list-virtual.php?search=searchterm to test searching)
- allow to display mailbox alias targets in mailbox list
Fields added to the mailbox list array:
* goto_mailbox (mailbox (=1) or forward-only (=0))
* goto_other (array with aliases not pointing to the mailbox)
* (vacation alias is skipped)
open question: is $display_mailbox_aliases = boolconf('special_alias_control')
correct? I'm slightly confused with alias_control, alias_control_admin
and special_alias_control...
- build mailbox query step by step instead of having several variants
which overlap 90% (and include a high bug potential, as already
demonstrated by me ;-)
templates/list-virtual.php
- added search result highlighting
- added displaying of mailbox aliases (goto_mailbox and goto_other)
- removed ?domain= parameter for edit-alias.php, other edit-*.php have
to follow (otherwise we'll have to extract the domain from the address
to avoid incorrect parameters in search mode)
functions.inc.php
- added db_in_clause() which builds a "field in(x, y)" clause for
database queries
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@751 a1433add-5e2c-0410-b055-b7f2511e0802
- get domain name by splitting address parameter instead of relying
on the domain GET/POST parameter.
This makes linking to edit-alias easier.
- simplify reading $_GET/$_POST['address']
git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@749 a1433add-5e2c-0410-b055-b7f2511e0802
NOTE: This plugin is _not compatible_ with Zend Framework version 2.x.
Installation :
==============
- Copy this code into the Squirrelmail plugins directory - your life will be easiest if it's in a directory called 'postfixadmin'
- Install Zend Framework (see above under Requirements for example)
- Edit config.php and specify the remote URL for the Postfixadmin XmlRpc service.
- Edit common.php and (if you need to) change the include path(s) so they are correct.
- Edit the remote Postfixadmin's XmlRpc service config file and ensure 'xmlrpc_enabled' is set to boolean true.
- Enable the plugin through 'squirrelmail-configure' or 'config/conf.pl'.
Choose option 8 and move the plugin from the "Available Plugins"
category to the "Installed Plugins" category. Save and exit.
Security :
==========
- The XmlRpc client needs to get the user's mailbox password before it will be able to connect to the
XmlRpc server (postfixadmin). The plugin prompts the user for their mailbox password, and caches it in their session
($_SESSION['password']). This password is then sent once on every page load to the remote XmlRpc server.
- You should consider doing any of the following :
- Using https if the server and client are on seperate servers. This will probably require a signed certificate etc, and may require changes to the Zend_XmlRpc_Client's HttpClient.
- Using something like stunnel to encrypt traffic between server(s).
The Postfixadmin SquirrelMail plugin let users change their virtual alias,
vacation status/message and password
Your users can therefore use this plugin within Squirrelmail to :
* Turn vacation on/off
* Change their email password
* Setup forwarding rules
Note, this plugin does not require access to the Postfixadmin database. It communicates with Postfixadmin using the XMLRPC protocol.
## Notes
* We now depend upon the Zend Framework (preferably v1.9.x at the time of writing) (Download from http://framework.zend.com/download/latest - the minimal one should be sufficient)
* Traffic to the XmlRpc interface needs encrypting (e.g. https) - this is something _you_ need to do
* When trying to use the plugin, the user will be prompted to enter their mailbox password - this is necessary to authenticate with the remote XmlRpc? interface
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "A jelszavak nem egyeznek!<br />Vagy üresen hagytad a mezõket!"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "A jelszó megváltoztatása sikertelen!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Az aktuális jelszó nem megfelelõ!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "A jelszó változtatása sikeres volt!"
msgid "Password current"
msgstr "Aktuális jelszó"
msgid "Password new"
msgstr "Új jelszó"
msgid "Password new again"
msgstr "Új jelszó mégegyszer"
msgid "Please sign out and log back again with your new password!"
msgstr "Kérjük, jelentkezzen ki, majd újra be az új jelszavával!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Házonkívül leszek <date> és <date> között. Sürgõs esetben értesítendõ: <contact person>."
msgid "One copy always goes to"
msgstr "Egy másolat mindig ide"
msgid "Another copy also goes to"
msgstr "További másolatok ide"
msgid "Enter an email address (or addresses) where you would like an additional copy of messages addressed to you sent.<br> Enter only one address per line."
msgstr "Sorolja fel azokat az e-mail címeket, amelyekre az Önhöz érkezõ leveleket továbbítani szeretné.<br>Soronként csak egy címet adjon meg!"
msgid "A copy of each message will go to both your mailbox and the forwarded address(es)."
msgstr "Minden Önnek címzett levél meg fog érkezni a saját postafiókjába és a továbbított e-mail címekre is."
msgid "To remove a Forward, simply delete its line from the text box."
msgstr "Ahhoz, hogy töröljön egy továbbítást, ki kell törölnie az adott sort a felsorolásból."
msgstr "* L'inoltro ad un alias aggiuntivo comporta l'invio del messaggio in BCC!"
msgid "Alias successfully changend!"
msgstr "Alias modificato correttamente!"
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Risponditore automatico"
msgid "Going Away"
msgstr "Going Away"
msgid "Coming Back"
msgstr "Coming Back"
msgid "Options"
msgstr "Opzioni"
msgid "Out of Office"
msgstr "Out of Office/Assente"
msgid "Subject"
msgstr "Oggetto"
msgid "Body"
msgstr "Messaggio"
msgid "Your auto response has been removed!"
msgstr "Il risponditore automatico è stato disattivato!"
msgid "Your auto response has been set!"
msgstr "Il risponditore automatico è stato configurato!"
msgid "You already have an auto response configured!"
msgstr "Hai gia configurato il risponditore automatico !"
#: postfixadmin_changepass.php:81
#: postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Le password inserite non coincidono!<br />O i campi sono vuoti!"
#: postfixadmin_forward.php:70
#: postfixadmin_forward.php:152
msgid "To"
msgstr "A"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Impossibile modificare la password"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Non hai indicato la password attuale!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "La tua password è stata modificata!"
msgid "Password current"
msgstr "Password attuale"
msgid "Password new"
msgstr "Nuova password"
msgid "Password new again"
msgstr "Insierisci nuovamente la nuova password"
msgid "Please sign out and log back again with your new password!"
msgstr "Per favore fai log out e riaccedi alla tua mail con la nuova password!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Mi dispiace sarò assente dal <date> al <date>. Per richieste urgenti vi prego di contattare <nome e indirizzo email>. I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "*Wszystkie dodatkowe adresy zawsze odbieraj± wiadomo¶ci przesy³ane jako BCC! Ca³a poczta jest przekazywana i nie jest przechowywana na koncie podstawowym!"
msgid "Alias successfully changend!"
msgstr "Zmiana zachowana!"
msgid "To remove an alias, simply delete it's line from the text box."
msgstr "¯eby wy³±czyæ forward na dane konto po prostu usuñ liniê z adresem na który nie chcesz ju¿ przekazywaæ poczty."
#: postfixadmin_vacation.php
msgid "Auto Response"
msgstr "Autoodpowied¼"
msgid "Going Away"
msgstr "W³±cz autoodpowied¼"
msgid "Coming Back"
msgstr "Wy³±cz autoodpowied¼"
msgid "Options"
msgstr "Opcje"
msgid "Out of Office"
msgstr "Autoodpowied¼"
msgid "Subject"
msgstr "Temat"
msgid "Body"
msgstr "Tre¶æ"
msgid "Your auto response has been removed!"
msgstr "Twoja autoodpowied¼ zosta³a wy³±czona!"
msgid "Your auto response has been set!"
msgstr "Twoja autoodpowied¼ zosta³a w³±czona!"
msgid "You already have an auto response configured!"
msgstr "Masz ju¿ skonfigurowan± autoodpowied¼!"
#: postfixadmin_changepass.php:81
#: postfixadmin_changepass.php:87
msgid "The passwords that you supplied don't match!<br />Or are empty!"
msgstr "Has³a które poda³e¶ nie pasuj± lub s± puste!"
#: postfixadmin_forward.php:70
#: postfixadmin_forward.php:152
msgid "To"
msgstr "Do"
#: postfixadmin_changepass.php:101
msgid "Unable to change your password!"
msgstr "Nie mo¿na zmieniæ has³a!"
#: postfixadmin_changepass.php:75
msgid "You didn't supply your current password!"
msgstr "Nie poda³e¶ aktualnego has³a!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Twoje has³o zosta³o zmienione!"
msgid "Password current"
msgstr "Bie¿±ce has³o"
msgid "Password new"
msgstr "Nowe has³o"
msgid "Password new again"
msgstr "Powtórz nowe has³o"
msgid "Please sign out and log back again with your new password!"
msgstr "Wyloguj siê i zaloguj z nowym has³em!"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Nie bêdê odbieraæ poczty pomiêdzy <data> a <data>. W sprawach pilnych proszê kontaktowaæ siê z <osoba kontaktowa>"
msgstr "Você não forneceu a sua senha atual!"
#: postfixadmin_changepass.php:96
msgid "Your password has been changed!"
msgstr "Sua senha foi alterada com sucesso!"
msgid "Password current"
msgstr "senha atual"
msgid "Password new"
msgstr "Nova senha"
msgid "Password new again"
msgstr "Confirme a nova senha"
msgid "Please sign out and log back again with your new password!"
msgstr "Por favor, saia e entre novamente no webmail com a nova senha"
msgid "I will be away from <date> until <date>. For urgent matters you can contact <contact person>."
msgstr "Estarei fora do escritório entre os dias <data> e <data> do mês de <mês>.<br /> Qualquer mensagem urgente, favor enviar para o email <email>."
- Encryption improvements (see: php_crypt / encrypt_difficulty in sample config)
- Sqlite improvements (see https://github.com/postfixadmin/postfixadmin/issues/177 and https://github.com/postfixadmin/postfixadmin/issues/176 )
- MySQL 8 compatibility (see https://github.com/postfixadmin/postfixadmin/pull/175 )
- Internally the database functions have been refactored to use PDO rather than the lower level mysql_, mysqli_, pg_ etc functions. ( see: https://github.com/postfixadmin/postfixadmin/pull/231 )
- Usage of dovecot deliver as fetchmail mda
Version 3.2 - 2018/05/02
-------------------------------------------------
- move public facing stuff into public/, this allows us to stop exposing
templates_c/ etc. to the world (but also means you'll need to adjust your
webserver config)
- enable users to reset their passwords by mail or SMS
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' ::proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u'
for PostgreSQL:
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid, 'dict:storage=' || floor(quota/1000) || '::proxy::quota' as quota FROM mailbox WHERE username = '%u' AND active='1'
# Also set the config.inc.php setting transport=YES
# and add the transport choices to transport_options.
# if you let postfix store your mails directly (without using maildrop, dovecot deliver etc.)
virtual_mailbox_base = /var/mail/vmail
# or whereever you want to store the mails
Where you chose to store the .cf files doesn't really matter, but they will
have database passwords stored in plain text so they should be readable only
@ -40,10 +45,21 @@ autoreply features.
Contents of the files
These are examples only, you will likely have to and want to make some
cumtomizations. You will also want to consider the config.inc.php
customizations. You will also want to consider the config.inc.php
settings for domain_path and domain_in_mailbox. These examples
use values of domain_path=YES and domain_in_mailbox=NO
You can create these files (with your values for user, password, hosts and
dbname) automatically by executing this file (sh POSTFIX_CONF.txt).
Please note that the generated files are for use with MySQL.
If you are using PostgreSQL, you'll need to do some changes to the queries:
- PostgreSQL uses a different implementation for boolean values, which means
you'll need to change active='1' to active='t' in all queries
- PostgreSQL does not have a concat() function, instead use e.g.
.... alias.address = '%u' || '@' || alias_domain.target_domain AND ....
mysql_virtual_alias_maps.cf:
user = postfix
password = password
@ -57,9 +73,7 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
(Note: PostgreSQL does not have a concat() function, instead use e.g. .... alias.address = '%u' || '@' || alias_domain.target_domain AND ....)
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
mysql_virtual_alias_domain_catchall_maps.cf:
# handles catch-all settings of target-domain
@ -67,7 +81,7 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active='1' AND alias_domain.active='1'
(See above note re Concat + PostgreSQL)
@ -80,6 +94,8 @@ query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#optional query to use for transport map support
#query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' AND NOT (transport LIKE 'smtp%%' OR transport LIKE 'relay%%')
#expansion_limit = 100
mysql_virtual_mailbox_maps.cf:
@ -95,14 +111,28 @@ user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active='1' AND alias_domain.active='1'
mysql_relay_domains.cf:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' AND (transport LIKE 'smtp%%' OR transport LIKE 'relay%%')
mysql_transport_maps.cf:
user = postfix
password = password
hosts = localhost
dbname = postfix
query = SELECT transport FROM domain WHERE domain='%s' AND active = '1'
(See above note re Concat + PostgreSQL)
# For quota support
mysql-virtual-mailbox-limit-maps.cf:
mysql_virtual_mailbox_limit_maps.cf:
user = postfix
password = password
hosts = localhost
@ -116,4 +146,47 @@ query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
This extension adds support for password expiration.
It is designed to have expiration on users passwords. An email is sent when the password is expiring in 30 days, then 14 days, then 7 days.
It is strongly inspired by https://abridge2devnull.com/posts/2014/09/29/dovecot-user-password-expiration-notifications-updated-4122015/, and adapted to fit with Postfix Admin & Roundcube's password plugin
Expiration unit is day
Expiration value for domain is set through Postfix Admin GUI
*Installation
Perform the following changes:
**Changes in MySQL/MariaDB mailbox table (as defined in $CONF['database_tables'] from config.inc.php):
You are invited to backup your DB first, and ensure the table name is correct.
Execute the attached SQL script (password_expiration.sql) that will add the required columns. The expiration value for existing users will be set to 90 days. If you want a different value, edit line 2 in the script and replace 90 by the required value.
**Changes in Postfix Admin :
To enable password expiration, add the following to your config.inc.php file:
$CONF['password_expiration'] = 'YES';
All my tests are performed using $CONF['encrypt'] = 'md5crypt';
**If you are using Roundcube's password plugin, you should also adapt the $config['password_query'] value.
of cource you may adapt to the expected expiration value
All my tests are performed using $config['password_algorithm'] = 'md5-crypt';
**Changes in Dovecot (adapt if you use another LDA)
Edit dovecot-mysql.conf file, and replace the user_query (and only this one) by this query:
password_query = SELECT username as user, password, concat('/var/vmail/', maildir) as userdb_var, concat('maildir:/var/vmail/', maildir) as userdb_mail, 20001 as userdb_uid, 20001 as userdb_gid, m.domain FROM mailbox m, domain d where d.domain = m.domain and m.username = '%u' AND m.active = '1' AND (m.password_expiry > now() or d.password_expiry = 0)
Of course you may require to adapt the uid, gid, maildir and table to your setup
**Changes in system
You need to have a script running on a daily basis to check password expiration and send emails 30, 14 and 7 days before password expiration (script attached: check_mailpass_expiration.sh).
Edit the script to adapt the variables to your setup.
This script is using postfixadmin.my.cnf to read credentials. Edit this file to enter a DB user that is allowed to access (read-write) your database. This file should be protected from any user (chmod 400).
Make sure that you are in your WWW directory and then unarchive the
Postfix Admin archive (whatever the filename is):
$ tar -zxvf postfixadmin-2.2.0.tgz
(if you installed PostfixAdmin as RPM or DEB package, you can obviously skip this step.)
Assuming we are installing Postfixadmin into /srv/postfixadmin, then something like this should work. Please check https://github.com/postfixadmin/postfixadmin/releases to get the latest stable release first (the 3.2.4 version/url below is probably stale)
my$query=qq{INSERT into vacation_notification (on_vacation,notified) values (?,?)};
my$query;
# delete old notifications
if($db_typeeq'Pg'){
$query=qq{DELETE FROM vacation_notification USING vacation WHERE vacation.email = vacation_notification.on_vacation AND on_vacation = ? AND notified = ? AND notified_at < vacation.activefrom;};
}else{# mysql
$query=qq{DELETE vacation_notification.* FROM vacation_notification LEFT JOIN vacation ON vacation.email = vacation_notification.on_vacation WHERE on_vacation = ? AND notified = ? AND notified_at < vacation.activefrom};
}
my$stm=$dbh->prepare($query);
if(!$stm){
$logger->error("Could not prepare query (trying to delete old vacation notifications) :'$query' to: $to, from:$from");
return1;
}
$stm->execute($to,$from);
$query=qq{INSERT into vacation_notification (on_vacation,notified) values (?,?)};
$stm=$dbh->prepare($query);
if(!$stm){
$logger->error("Could not prepare query '$query' to: $to, from:$from");
return1;
@ -268,15 +267,22 @@ sub already_notified {
if(!$stm->execute($to,$from)){
my$e=$dbh->errstr;
# Violation of a primay key constraint may happen here, and that's
# Violation of a primary key constraint may happen here, and that's
# fine. All other error conditions are not fine, however.
if($e!~/(?:_pkey|^Duplicate entry)/){
$logger->error("Failed to insert into vacation_notification table (to:$to from:$from error:'$e' query:'$query')");
# Let's play safe and notify anyway
return1;
}
$interval=get_interval($to);
if($interval){
$query=qq{SELECT NOW()-notified_at FROM vacation_notification WHERE on_vacation=? AND notified=?};
if($db_typeeq'Pg'){
$query=qq{SELECT extract( epoch from (NOW()-notified_at))::int FROM vacation_notification WHERE on_vacation=? AND notified=?};
}else{# mysql
$query=qq{SELECT UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(notified_at) FROM vacation_notification WHERE on_vacation=? AND notified=?};
# Change this list to change notification times and when ...
for INTERVAL in 30147
do
LOWER=$(($INTERVAL-1))
QUERY="SELECT username,password_expiry FROM mailbox WHERE password_expiry > now() + interval $LOWER DAY AND password_expiry < NOW() + interval $INTERVAL DAY"
mysql --defaults-extra-file="$MYSQL_CREDENTIALS_FILE""$POSTFIX_DB" -B -e "$QUERY"|whileread -a RESULT ;do
echo -e "Dear User, \n Your password will expire on ${RESULT[1]}"| mail -s "Password 30 days before expiration notication" -r $REPLY_ADDRESS${RESULT[0]}
$language = 'en'; # TODO: make configurable or autodetect from locale settings
} else {
$language = check_language(); # TODO: storing the language only at login instead of calling check_language() on every page would save some processor cycles ;-)
//If enabled, mailbox passwords have a password_expiry field set, which is updated each time the password is changed, based on the parent domain's password_expiry (days) value.
//More details in README.password_expiration
$CONF['password_expiration'] = 'YES';
// If you want to keep most settings at default values and/or want to ensure
// that future updates work without problems, you can use a separate config
// file (config.local.php) instead of editing this file and override some
// settings there.
if (file_exists(dirname(__FILE__) . '/config.local.php')) {